home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 5 / CD_Magazyn_EXEC_nr_5.iso / Programy / Programowanie / BASIC / clockita.lha / Orologio.text < prev    next >
Encoding:
Text File  |  2001-01-01  |  25.7 KB  |  1,004 lines

  1. ;-> Orologio by Stefano Regattin
  2. ;d> 9 ottobre 1998 da Clock
  3. ;m> 10,11,16,17,19,24,29 ottobre 1998
  4. ;m> 4,6 novembre 1998
  5. ;m> 13,14,23 dicembre 1998
  6. ;m> 3 gennaio 1999
  7. ;m> 9,12 marzo 1999
  8. ;m> 25,26 settembre 1999
  9. ;m> 1,2,3,5,6,7,8,9,10,11,22,27,28 febbraio 2000
  10. ;m> 2,3,4,6,9,10,30,31 marzo 2000
  11. ;m> 6,9,16,25,30 aprile 2000
  12. ;m> 1,7,9,21 maggio 2000
  13. ;m> 2,15 giugno 2000
  14. ;m> 12,13 agosto 2000
  15. ;m> 16 novembre 2000
  16. ;m> 1 gennaio 2001
  17. ;------------------
  18. #HaiCambiatoLeDimensioniDellaFinestra=2
  19. #HaiPremutoUnTastoDelTopo=8
  20. #HaiRilasciatoUnGadget=$40
  21. #HaiChiusoLaFinestra=$200
  22.  
  23. DEFTYPE .l RastPortFinestra
  24.  
  25. DEFTYPE .b AltezzaFont,AltezzaFontRegistrata
  26. DEFTYPE .b NumeroToolType,StatoAllarme,ToolTypeScritti
  27.  
  28. DEFTYPE .w
  29.  
  30. Statement AggiustaDimensioniFinestraZero{}
  31. SHARED Angolo$
  32. SHARED LunXFinestraZero
  33. SHARED LunXSchermo
  34. SHARED LunYFinestraZero
  35. SHARED PosXFinestraZero
  36. SHARED PosXFinestraZeroAngoloOpposto
  37. SHARED PosYFinestraZero
  38. SHARED PosYFinestraZeroAngoloOpposto
  39.  Select Angolo$
  40.  Case "TOP-RIGHT"
  41.   If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroAngoloOpposto
  42.    PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  43.   EndIf
  44.  Case "BOTTOM-RIGHT"
  45.   If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroAngoloOpposto
  46.    PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  47.   EndIf
  48.   If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroAngoloOpposto
  49.    PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  50.   EndIf
  51.  Case "BOTTOM-LEFT"
  52.   If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroAngoloOpposto
  53.    PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  54.   EndIf
  55.  End Select
  56.  If LunXFinestraZero>LunXSchermo Then LunXFinestraZero=LunXSchermo
  57.  If PosXFinestraZero+LunXFinestraZero-1>LunXSchermo Then PosXFinestraZero=LunXSchermo-LunXFinestraZero
  58.  If PosXFinestraZero<0 Then PosXFinestraZero=0
  59.  If LunYFinestraZero>WBHeight Then LunYFinestraZero=WBHeight
  60.  If PosYFinestraZero+LunYFinestraZero-1>WBHeight Then PosYFinestraZero=WBHeight-LunYFinestraZero
  61.  If PosYFinestraZero<AltezzaFontSchermo+3 Then PosYFinestraZero=AltezzaFontSchermo+3
  62. End Statement
  63.  
  64. Statement ApriFinestraZero{}
  65. SHARED ColoreSfondo
  66. SHARED LunXFinestraZero
  67. SHARED LunYFinestraZero
  68. SHARED PosXFinestraZero
  69. SHARED PosYFinestraZero
  70. SHARED RastPortFinestra
  71.  Window 0,PosXFinestraZero,PosYFinestraZero,LunXFinestraZero,LunYFinestraZero,$40F,"",1,2
  72.  WTitle "Orologio","by Stefano Regattin e-mail->stefano.regattin@tin.it"
  73.  RastPortFinestra=RastPort(0)
  74.  WindowFont 0
  75.  Menus Off
  76.  WCls ColoreSfondo
  77. End Statement
  78.  
  79. Statement LeggiToolType{}
  80. SHARED Angolo$
  81. SHARED AngoloRegistrato$
  82. SHARED ColoreSfondo
  83. SHARED ColoreSfondoRegistrato
  84. SHARED ColoreTesto
  85. SHARED ColoreTestoRegistrato
  86. SHARED FontOrologio$
  87. SHARED FontOrologioRegistrato$
  88. SHARED IconaOrologio$
  89. SHARED AltezzaFont
  90. SHARED AltezzaFontRegistrata
  91. SHARED PosXFinestraZero
  92. SHARED PosXFinestraZeroRegistrata
  93. SHARED PosYFinestraZero
  94. SHARED PosYFinestraZeroRegistrata
  95.  ToolTypeLetti.l=GetIconObject(IconaOrologio$)
  96.  If ToolTypeLetti>0
  97.   NuovoFontOrologio$=FindToolValue("FONTNAME")
  98.   NuovaAltezzaFont$=FindToolValue("FONTSIZE")
  99.   NuovaPosXFinestraZero$=FindToolValue("WINDOWX")
  100.   NuovaPosYFinestraZero$=FindToolValue("WINDOWY")
  101.   NuovoAngolo$=FindToolValue("ANGLE")
  102.   NuovoColoreTesto$=FindToolValue("TEXTCOLOR")
  103.   NuovoColoreSfondo$=FindToolValue("BACKCOLOR")
  104.  
  105.   If NuovoFontOrologio$<>""
  106.    FontOrologioRegistrato$=NuovoFontOrologio$
  107.    FontOrologio$=NuovoFontOrologio$
  108.   EndIf
  109.  
  110.   If NuovaAltezzaFont$<>""
  111.    AltezzaFontRegistrata=Val(NuovaAltezzaFont$)
  112.    AltezzaFont=Val(NuovaAltezzaFont$)
  113.   EndIf
  114.  
  115.   If NuovaPosXFinestraZero$<>""
  116.    PosXFinestraZeroRegistrata=Val(NuovaPosXFinestraZero$)
  117.    PosXFinestraZero=Val(NuovaPosXFinestraZero$)
  118.   EndIf
  119.  
  120.   If NuovaPosYFinestraZero$<>""
  121.    PosYFinestraZeroRegistrata=Val(NuovaPosYFinestraZero$)
  122.    PosYFinestraZero=Val(NuovaPosYFinestraZero$)
  123.   EndIf
  124.  
  125.   If NuovoAngolo$<>""
  126.    AngoloRegistrato$=NuovoAngolo$
  127.    Angolo$=NuovoAngolo$
  128.   EndIf
  129.  
  130.   If NuovoColoreTesto$<>""
  131.    ColoreTestoRegistrato=Val(NuovoColoreTesto$)
  132.    ColoreTesto=Val(NuovoColoreTesto$)
  133.   EndIf
  134.  
  135.   If NuovoColoreSfondo$<>""
  136.    ColoreSfondoRegistrato=Val(NuovoColoreSfondo$)
  137.    ColoreSfondo=Val(NuovoColoreSfondo$)
  138.   EndIf
  139.  
  140.   FreeIconObject
  141.  
  142.  EndIf
  143. End Statement
  144.  
  145. Statement ScriviToolType{}
  146. SHARED Angolo$
  147. SHARED AngoloRegistrato$
  148. SHARED ColoreSfondo
  149. SHARED ColoreSfondoRegistrato
  150. SHARED ColoreTesto
  151. SHARED ColoreTestoRegistrato
  152. SHARED FontOrologio$
  153. SHARED FontOrologioRegistrato$
  154. SHARED IconaOrologio$
  155. SHARED AltezzaFont
  156. SHARED AltezzaFontRegistrata
  157. SHARED PosXFinestraZero
  158. SHARED PosXFinestraZeroAngoloOpposto
  159. SHARED PosXFinestraZeroRegistrata
  160. SHARED PosYFinestraZero
  161. SHARED PosYFinestraZeroAngoloOpposto
  162. SHARED PosYFinestraZeroRegistrata
  163. SHARED ToolTypeScritti
  164.  ToolTypeLetti.l=GetIconObject(IconaOrologio$)
  165.  If ToolTypeLetti>0
  166.   If FindToolType("DONOTWAIT")=False Then NewToolType "DONOTWAIT",""
  167.  
  168.   If FindToolType("FONTNAME")=True
  169.    SetToolValue "FONTNAME",FontOrologio$
  170.   Else
  171.    NewToolType "FONTNAME",FontOrologio$
  172.   EndIf
  173.  
  174.   If FindToolType("FONTSIZE")=True
  175.    SetToolValue "FONTSIZE",Str$(AltezzaFont)
  176.   Else
  177.    NewToolType "FONTSIZE",Str$(AltezzaFont)
  178.   EndIf
  179.  
  180.   Select Angolo$
  181.   Case "TOP-LEFT"
  182.    If FindToolType("WINDOWX")=True
  183.     SetToolValue "WINDOWX",Str$(PosXFinestraZero)
  184.    Else
  185.     NewToolType "WINDOWX",Str$(PosXFinestraZero)
  186.    EndIf
  187.  
  188.    If FindToolType("WINDOWY")=True
  189.     SetToolValue "WINDOWY",Str$(PosYFinestraZero)
  190.    Else
  191.     NewToolType "WINDOWY",Str$(PosYFinestraZero)
  192.    EndIf
  193.   Case "TOP-RIGHT"
  194.    If FindToolType("WINDOWX")=True
  195.     SetToolValue "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  196.    Else
  197.     NewToolType "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  198.    EndIf
  199.  
  200.    If FindToolType("WINDOWY")=True
  201.     SetToolValue "WINDOWY",Str$(PosYFinestraZero)
  202.    Else
  203.     NewToolType "WINDOWY",Str$(PosYFinestraZero)
  204.    EndIf
  205.   Case "BOTTOM-RIGHT"
  206.    If FindToolType("WINDOWX")=True
  207.     SetToolValue "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  208.    Else
  209.     NewToolType "WINDOWX",Str$(PosXFinestraZeroAngoloOpposto)
  210.    EndIf
  211.  
  212.    If FindToolType("WINDOWY")=True
  213.     SetToolValue "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  214.    Else
  215.     NewToolType "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  216.    EndIf
  217.   Case "BOTTOM-LEFT"
  218.    If FindToolType("WINDOWX")=True
  219.     SetToolValue "WINDOWX",Str$(PosXFinestraZero)
  220.    Else
  221.     NewToolType "WINDOWX",Str$(PosXFinestraZero)
  222.    EndIf
  223.  
  224.    If FindToolType("WINDOWY")=True
  225.     SetToolValue "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  226.    Else
  227.     NewToolType "WINDOWY",Str$(PosYFinestraZeroAngoloOpposto)
  228.    EndIf
  229.   End Select
  230.  
  231.   If FindToolType("ANGLE")=True
  232.    SetToolValue "ANGLE",Angolo$
  233.   Else
  234.    NewToolType "ANGLE",Angolo$
  235.   EndIf
  236.  
  237.   If FindToolType("TEXTCOLOR")=True
  238.    SetToolValue "TEXTCOLOR",Str$(ColoreTesto)
  239.   Else
  240.    NewToolType "TEXTCOLOR",Str$(ColoreTesto)
  241.   EndIf
  242.  
  243.   If FindToolType("BACKCOLOR")=True
  244.    SetToolValue "BACKCOLOR",Str$(ColoreSfondo)
  245.   Else
  246.    NewToolType "BACKCOLOR",Str$(ColoreSfondo)
  247.   EndIf
  248.  
  249.   ToolTypeScritti=PutIconObject(IconaOrologio$)
  250.   If ToolTypeScritti=True
  251.    FontOrologioRegistrato$=FontOrologio$
  252.    AltezzaFontRegistrata=AltezzaFont
  253.    AngoloRegistrato$=Angolo$
  254.    Select Angolo$
  255.    Case "TOP-LEFT"
  256.     PosXFinestraZeroRegistrata=PosXFinestraZero
  257.     PosYFinestraZeroRegistrata=PosYFinestraZero
  258.    Case "TOP-RIGHT"
  259.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngoloOpposto
  260.     PosYFinestraZeroRegistrata=PosYFinestraZero
  261.    Case "BOTTOM-RIGHT"
  262.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngoloOpposto
  263.     PosYFinestraZeroRegistrata=PosYFinestraZeroAngoloOpposto
  264.    Case "BOTTOM-LEFT"
  265.     PosXFinestraZeroRegistrata=PosXFinestraZeroAngolo
  266.     PosYFinestraZeroRegistrata=PosYFinestraZeroAngoloOpposto
  267.    End Select
  268.    ColoreTestoRegistrato=ColoreTesto
  269.    ColoreSfondoRegistrato=ColoreSfondo
  270.   EndIf
  271.  
  272.   FreeIconObject
  273.  
  274.  EndIf
  275. End Statement
  276.  
  277. Statement CercaFont{}
  278. SHARED FontOrologio$
  279. SHARED AltezzaFont
  280.  NEWTYPE .FontInfo
  281.   Nome$
  282.   Altezza.w
  283.   Stile.b
  284.   Segnalatori
  285.   PennaUno
  286.   PennaDue
  287.   ModoDisegno
  288.   Pad
  289.  End NEWTYPE
  290.  
  291.  *Font.FontInfo=ASLFontRequest(0)
  292.  
  293.  If *Font<>0
  294.   FontOrologio$=*Font\Nome
  295.   AltezzaFont=*Font\Altezza
  296.  EndIf
  297. End Statement
  298.  
  299. Statement CambiaColori{}
  300. SHARED ColoreSfondo
  301. SHARED ColoreTesto
  302. SHARED LunXSchermo
  303.  ColoriWB=2^WBDepth
  304.  SpazioColori=Max(ColoriWB/16,1)*8
  305.  PosXFinestraDue=WindowX
  306.  PosYFinestraDue=WindowY
  307.  LunXFinestraDue=WLeftOff+16*8+4
  308.  LunYFinestraDue=WTopOff+SpazioColori+1+13+12+4
  309.  
  310.  If PosXFinestraDue+LunXFinestraDue>LunXSchermo Then PosXFinestraDue=LunXSchermo-LunXFinestraDue
  311.  If PosYFinestraDue+LunYFinestraDue>WBHeight Then PosYFinestraDue=WBHeight-LunYFinestraDue
  312.  
  313.  Window 2,PosXFinestraDue,PosYFinestraDue,LunXFinestraDue,LunYFinestraDue,$140E,"",-1,-1,1
  314.  WTitle "Colori","Cambia i colori dell'orologio"
  315.  WindowFont 1
  316.  Menus Off
  317.  
  318.  XFinaleBordo=InnerWidth-8
  319.  GadgetBorder 4,SpazioColori+3,XFinaleBordo,8
  320.  GadgetBorder 4,SpazioColori+16,XFinaleBordo,8
  321.  
  322.  For Colore=0 To ColoriWB-1
  323.   XColore=(Colore MOD 16)*8
  324.   YColore=(Colore/16)*8
  325.   WBox XColore,YColore,XColore+7,YColore+7,Colore
  326.  Next
  327.  
  328.  Repeat
  329.   WBox 4,SpazioColori+3,XFinaleBordo+3,SpazioColori+10,ColoreTesto
  330.   WBox 4,SpazioColori+16,XFinaleBordo+3,SpazioColori+23,ColoreSfondo
  331.  
  332.   EventoFinestraDue.l=WaitEvent
  333.  
  334.   Select EventoFinestraDue
  335.   Case #HaiPremutoUnTastoDelTopo
  336.    If WMouseX>-1 AND WMouseY>-1 AND WMouseX<128 AND WMouseY<SpazioColori
  337.     Colore=WMouseY/8*16+WMouseX/8
  338.     Select MButtons
  339.     Case 1
  340.      If Colore<>ColoreSfondo Then ColoreTesto=Colore
  341.     Case 2
  342.      If Colore<>ColoreTesto Then ColoreSfondo=Colore
  343.     End Select
  344.    EndIf
  345.   End Select
  346.  Until EventoFinestraDue=#HaiChiusoLaFinestra
  347.  CloseWindow 2
  348.  Use Window 1
  349. End Statement
  350.  
  351. Statement Parametri{}
  352. SHARED Angolo$
  353. SHARED AngoloRegistrato$
  354. SHARED ColoreSfondo
  355. SHARED ColoreSfondoRegistrato
  356. SHARED ColoreTesto
  357. SHARED ColoreTestoRegistrato
  358. SHARED OraAllarme$
  359. SHARED OraDiOggi$
  360. SHARED FontOrologio$
  361. SHARED FontOrologioRegistrato$
  362. SHARED AltezzaFont
  363. SHARED AltezzaFontRegistrata
  364. SHARED LunXFinestraZero
  365. SHARED LunYFinestraZero
  366. SHARED LunXSchermo
  367. SHARED PosXFinestraZero
  368. SHARED PosXFinestraZeroAngoloOpposto
  369. SHARED PosXFinestraZeroRegistrata
  370. SHARED PosYFinestraZero
  371. SHARED PosYFinestraZeroAngoloOpposto
  372. SHARED PosYFinestraZeroRegistrata
  373. SHARED StatoAllarme
  374. SHARED ToolTypeScritti
  375.  Dim Freccia(5)
  376.  BitMap 0,32,16,2
  377.  Freccia(0)=0:Freccia(1)=0
  378.  Freccia(2)=7:Freccia(3)=0
  379.  Freccia(4)=0:Freccia(5)=7
  380.  Polyf 3,&Freccia(0),1
  381.  GetaShape 0,0,0,8,8
  382.  XFlip 0
  383.  Blit 0,8,0
  384.  GetaShape 0,0,0,8,8
  385.  GetaShape 1,8,0,8,8
  386.  YFlip 1
  387.  Blit 1,16,0
  388.  GetaShape 1,8,0,8,8
  389.  GetaShape 2,16,0,8,8
  390.  XFlip 2
  391.  Blit 2,24,0
  392.  GetaShape 2,16,0,8,8
  393.  GetaShape 3,24,0,8,8
  394.  Freccia(0)=0:Freccia(1)=8
  395.  Freccia(2)=7:Freccia(3)=8
  396.  Freccia(4)=0:Freccia(5)=15
  397.  Polyf 3,&Freccia(0),2
  398.  GetaShape 4,0,8,8,8
  399.  XFlip 4
  400.  Blit 4,8,8
  401.  GetaShape 4,0,8,8,8
  402.  GetaShape 5,8,8,8,8
  403.  YFlip 5
  404.  Blit 5,16,8
  405.  GetaShape 5,8,8,8,8
  406.  GetaShape 6,16,8,8,8
  407.  XFlip 6
  408.  Blit 6,24,8
  409.  GetaShape 6,16,8,8,8
  410.  GetaShape 7,24,8,8,8
  411.  
  412.  Free BitMap 0
  413.  
  414.  Use IntuiFont 1
  415.  StringGadget 0,  1, 1,  0, 0,6,6*8
  416.  StringGadget 0,  1,14,  0, 1,25,106
  417.  StringGadget 0, 75, 1,  0, 2,4,4*8
  418.  StringGadget 0,  9,27,  0, 3,5,5*8
  419.  StringGadget 0, 67,27,  0, 4,5,5*8
  420.  StringGadget 0,  9,62,  0, 5,5,5*8
  421.  StringGadget 0, 67,62,  0, 6,5,5*8
  422.  ShapeGadget  0, 92,42,512, 7,0,4
  423.  ShapeGadget  0,103,42,512, 8,1,5
  424.  ShapeGadget  0,103,51,512, 9,2,6
  425.  ShapeGadget  0, 92,51,512,10,3,7
  426.  TextGadget   0, 58, 1,  1,11,"A"
  427.  TextGadget   0,  1,75,  0,12,"    Colori   "
  428.  TextGadget   0,  1,87,  1,13,"*** Salva ***"
  429.  
  430.  PosXFinestraZero=WindowX-WLeftOff
  431.  PosYFinestraZero=WindowY-WTopOff
  432.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  433.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  434.  
  435.  PosXFinestraUno=WindowX
  436.  PosYFinestraUno=WindowY
  437.  LunXFinestraUno=124
  438.  LunYFinestraUno=WTopOff+105
  439.  
  440.  If PosXFinestraUno+LunXFinestraUno>LunXSchermo Then PosXFinestraUno=LunXSchermo-LunXFinestraUno
  441.  If PosYFinestraUno+LunYFinestraUno>WBHeight Then PosYFinestraUno=WBHeight-LunYFinestraUno
  442.  
  443.  Window 1,PosXFinestraUno,PosYFinestraUno,LunXFinestraUno,LunYFinestraUno,$140E,"",-1,-1,0
  444.  WTitle "Parametri","Imposta i parametri dell'orologio"
  445.  WColour 1,0
  446.  WindowFont 1
  447.  Menus Off
  448.  
  449.  GadgetBorder 92,42,19,17
  450.  WLocate  0,29:Print "X"
  451.  WLocate 58,29:Print "Y"
  452.  WLocate  1,43:Print"Angolo"
  453.  WLocate 40,52:Print"fisso>"
  454.  WLocate  0,64:Print "X"
  455.  WLocate 58,64:Print "Y"
  456.  
  457.  Toggle 0,11,StatoAllarme
  458.  Redraw 1,11
  459.  
  460.  Select Angolo$
  461.  Case "TOP-LEFT"
  462.   Enable  0,3
  463.   Enable  0,4
  464.   Disable 0,5
  465.   Disable 0,6
  466.   Toggle  0,7,On
  467.   Redraw 1,7
  468.  Case "TOP-RIGHT"
  469.   Enable  0,3
  470.   Disable 0,4
  471.   Disable 0,5
  472.   Enable  0,6
  473.   Toggle  0,8,On
  474.   Redraw 1,8
  475.  Case "BOTTOM-RIGHT"
  476.   Disable 0,3
  477.   Disable 0,4
  478.   Enable  0,5
  479.   Enable  0,6
  480.   Toggle  0,9,On
  481.   Redraw 1,9
  482.  Case "BOTTOM-LEFT"
  483.   Disable 0,3
  484.   Enable  0,4
  485.   Enable  0,5
  486.   Disable 0,6
  487.   Toggle  0,10,On
  488.   Redraw 1,10
  489.  End Select
  490.  
  491.  Redraw 1,3
  492.  Redraw 1,4
  493.  Redraw 1,5
  494.  Redraw 1,6
  495.  
  496.  If OraAllarme$="" Then OraAllarme$=UnLeft$(OraDiOggi$,3)
  497.  
  498.  Repeat
  499.   SetString 0,0,OraAllarme$
  500.   Redraw 1,0
  501.   SetString 0,1,FontOrologio$
  502.   Redraw 1,1
  503.   SetString 0,2,Str$(AltezzaFont)
  504.   Redraw 1,2
  505.   SetString 0,3,Str$(PosXFinestraZero)
  506.   Redraw 1,3
  507.   SetString 0,4,Str$(PosYFinestraZero)
  508.   Redraw 1,4
  509.   SetString 0,5,Str$(PosXFinestraZeroAngoloOpposto)
  510.   Redraw 1,5
  511.   SetString 0,6,Str$(PosYFinestraZeroAngoloOpposto)
  512.   Redraw 1,6
  513.  
  514.   ValoriCambiati.b=False
  515.   If FontOrologio$<>FontOrologioRegistrato$ Then ValoriCambiati=True
  516.   If AltezzaFont<>AltezzaFontRegistrata Then ValoriCambiati=True
  517.   Select Angolo$
  518.   Case "TOP-LEFT"
  519.    If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  520.    If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  521.   Case "TOP-RIGHT"
  522.    If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  523.    If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  524.   Case "BOTTOM-RIGHT"
  525.    If PosXFinestraZero+(LunXFinestraZero-1)<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  526.    If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  527.   Case "BOTTOM-LEFT"
  528.    If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  529.    If PosYFinestraZero+(LunYFinestraZero-1)<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  530.   End Select
  531.   If Angolo$<>AngoloRegistrato$ Then ValoriCambiati=True
  532.   If ColoreTesto<>ColoreTestoRegistrato Then ValoriCambiati=True
  533.   If ColoreSfondo<>ColoreSfondoRegistrato Then ValoriCambiati=True
  534.   If ValoriCambiati=True Then Enable 0,13 Else Toggle 0,13,Off:Disable 0,13
  535.   Redraw 1,13
  536.  
  537.   EventoFinestraUno.l=WaitEvent
  538.  
  539.   Select EventoFinestraUno
  540.   Case #HaiRilasciatoUnGadget
  541.    If GadgetHit<7 Then ActivateString 1,GadgetHit
  542.    Select GadgetHit
  543.    Case 0
  544.     OraAllarme$=StringText$(0,0)
  545.    Case 1
  546.     NuovoFontOrologio$=StringText$(0,1)
  547.     If NuovoFontOrologio$="" Then CercaFont{}
  548.     If Right$(NuovoFontOrologio$,5)<>".font" Then NuovoFontOrologio$+".font"
  549.     If Len(NuovoFontOrologio$)>0
  550.      If Exists("FONTS:"+NuovoFontOrologio$)
  551.       FontOrologio$=NuovoFontOrologio$
  552.      EndIf
  553.     EndIf
  554.    Case 2
  555.     AltezzaFont=Val(StringText$(0,2))
  556.     AltezzaFont=Max(AltezzaFont,6)
  557.    Case 3
  558.     PosXFinestraZero=Val(StringText$(0,3))
  559.    Case 4
  560.     PosYFinestraZero=Val(StringText$(0,4))
  561.    Case 5
  562.     PosXFinestraZeroAngoloOpposto=Val(StringText$(0,5))
  563.    Case 6
  564.     PosYFinestraZeroAngoloOpposto=Val(StringText$(0,6))
  565.    Case 7
  566.     If GadgetStatus(0,7)=True Then Angolo$="TOP-LEFT"
  567.    Case 8
  568.     If GadgetStatus(0,8)=True Then Angolo$="TOP-RIGHT"
  569.    Case 9
  570.     If GadgetStatus(0,9)=True Then Angolo$="BOTTOM-RIGHT"
  571.    Case 10
  572.     If GadgetStatus(0,10)=True Then Angolo$="BOTTOM-LEFT"
  573.    Case 11
  574.     StatoAllarme=GadgetStatus(0,11)
  575.    Case 12
  576.     CambiaColori{}
  577.     Toggle 0,12,Off
  578.    Case 13
  579.     ScriviToolType{}
  580.     If ToolTypeScritti=True
  581.      Toggle 0,13,Off
  582.      Disable 0,13
  583.      Redraw 1,13
  584.     Else
  585.      Toggle 0,13,On
  586.     EndIf
  587.    End Select
  588.  
  589.    Select Angolo$
  590.    Case "TOP-LEFT"
  591.     PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  592.     PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  593.     Enable  0,3
  594.     Enable  0,4
  595.     Disable 0,5
  596.     Disable 0,6
  597.    Case "TOP-RIGHT"
  598.     PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  599.     PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  600.     Disable 0,3
  601.     Enable  0,4
  602.     Enable  0,5
  603.     Disable 0,6
  604.    Case "BOTTOM-RIGHT"
  605.     PosXFinestraZero=PosXFinestraZeroAngoloOpposto-(LunXFinestraZero-1)
  606.     PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  607.     Disable 0,3
  608.     Disable 0,4
  609.     Enable  0,5
  610.     Enable  0,6
  611.    Case "BOTTOM-LEFT"
  612.     PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  613.     PosYFinestraZero=PosYFinestraZeroAngoloOpposto-(LunYFinestraZero-1)
  614.     Enable  0,3
  615.     Disable 0,4
  616.     Disable 0,5
  617.     Enable  0,6
  618.    End Select
  619.  
  620.   End Select
  621.  Until EventoFinestraUno=#HaiChiusoLaFinestra
  622.  CloseWindow 1
  623.  Use Window 0
  624. End Statement
  625.  
  626. Statement DataDiOggi{}
  627. SHARED Allarme$
  628. SHARED DataDiOggi$
  629. SHARED LunghezzaDataDiOggi
  630. SHARED LunghezzaScrittaAllarme
  631. SHARED RastPortFinestra
  632.  Giorni.l=SystemDate
  633.  Select WeekDay
  634.  Case 0
  635.   GiornoDellaSettimana$="Dom"
  636.  Case 1
  637.   GiornoDellaSettimana$="Lun"
  638.  Case 2
  639.   GiornoDellaSettimana$="Mar"
  640.  Case 3
  641.   GiornoDellaSettimana$="Mer"
  642.  Case 4
  643.   GiornoDellaSettimana$="Gio"
  644.  Case 5
  645.   GiornoDellaSettimana$="Ven"
  646.  Case 6
  647.   GiornoDellaSettimana$="Sab"
  648.  End Select
  649.  If Giorni>8400
  650.   Giorni-8400
  651.   Repeat
  652.    If Anno MOD 4=3
  653.     AnnoBisestile=True
  654.     If Giorni>365 Then Giorni-366 Else FineCicloInfinito=True
  655.    Else
  656.     AnnoBisestile=False
  657.     If Giorni>364 Then Giorni-365 Else FineCicloInfinito=True
  658.    EndIf
  659.    Anno+1
  660.    If FineCicloInfinito=True Pop Repeat:Goto FineCicloInfinito
  661.   Until False
  662.   FineCicloInfinito
  663.   Anno$=StripLead$(Str$(2000+Anno),32)
  664.   If AnnoBisestile=True
  665.    If Giorni>0 AND Giorni<32
  666.     Giorno$=StripLead$(Str$(Giorni),32)
  667.     Mese$="gennaio"
  668.    EndIf
  669.    If Giorni>31 AND Giorni<61
  670.     Giorno$=StripLead$(Str$(Giorni-31),32)
  671.     Mese$="febbraio"
  672.    EndIf
  673.    If Giorni>60 AND Giorni<92
  674.     Giorno$=StripLead$(Str$(Giorni-60),32)
  675.     Mese$="marzo"
  676.    EndIf
  677.    If Giorni>91 AND Giorni<122
  678.     Giorno$=StripLead$(Str$(Giorni-91),32)
  679.     Mese$="aprile"
  680.    EndIf
  681.    If Giorni>121 AND Giorni<153
  682.     Giorno$=StripLead$(Str$(Giorni-121),32)
  683.     Mese$="maggio"
  684.    EndIf
  685.    If Giorni>152 AND Giorni<183
  686.     Giorno$=StripLead$(Str$(Giorni-152),32)
  687.     Mese$="giugno"
  688.    EndIf
  689.    If Giorni>182 AND Giorni<214
  690.     Giorno$=StripLead$(Str$(Giorni-182),32)
  691.     Mese$="luglio"
  692.    EndIf
  693.    If Giorni>213 AND Giorni<245
  694.     Giorno$=StripLead$(Str$(Giorni-213),32)
  695.     Mese$="agosto"
  696.    EndIf
  697.    If Giorni>244 AND Giorni<275
  698.     Giorno$=StripLead$(Str$(Giorni-244),32)
  699.     Mese$="settembre"
  700.    EndIf
  701.    If Giorni>274 AND Giorni<306
  702.     Giorno$=StripLead$(Str$(Giorni-274),32)
  703.     Mese$="ottobre"
  704.    EndIf
  705.    If Giorni>305 AND Giorni<336
  706.     Giorno$=StripLead$(Str$(Giorni-305),32)
  707.     Mese$="novembre"
  708.    EndIf
  709.    If Giorni>335 AND Giorni<367
  710.     Giorno$=StripLead$(Str$(Giorni-335),32)
  711.     Mese$="dicembre"
  712.    EndIf
  713.   Else
  714.    If Giorni>0 AND Giorni<32
  715.     Giorno$=StripLead$(Str$(Giorni),32)
  716.     Mese$="gennaio"
  717.    EndIf
  718.    If Giorni>31 AND Giorni<60
  719.     Giorno$=StripLead$(Str$(Giorni-31),32)
  720.     Mese$="febbraio"
  721.    EndIf
  722.    If Giorni>59 AND Giorni<91
  723.     Giorno$=StripLead$(Str$(Giorni-59),32)
  724.     Mese$="marzo"
  725.    EndIf
  726.    If Giorni>90 AND Giorni<121
  727.     Giorno$=StripLead$(Str$(Giorni-90),32)
  728.     Mese$="aprile"
  729.    EndIf
  730.    If Giorni>120 AND Giorni<152
  731.     Giorno$=StripLead$(Str$(Giorni-120),32)
  732.     Mese$="maggio"
  733.    EndIf
  734.    If Giorni>151 AND Giorni<182
  735.     Giorno$=StripLead$(Str$(Giorni-151),32)
  736.     Mese$="giugno"
  737.    EndIf
  738.    If Giorni>181 AND Giorni<213
  739.     Giorno$=StripLead$(Str$(Giorni-181),32)
  740.     Mese$="luglio"
  741.    EndIf
  742.    If Giorni>212 AND Giorni<244
  743.     Giorno$=StripLead$(Str$(Giorni-212),32)
  744.     Mese$="agosto"
  745.    EndIf
  746.    If Giorni>243 AND Giorni<274
  747.     Giorno$=StripLead$(Str$(Giorni-243),32)
  748.     Mese$="settembre"
  749.    EndIf
  750.    If Giorni>273 AND Giorni<305
  751.     Giorno$=StripLead$(Str$(Giorni-273),32)
  752.     Mese$="ottobre"
  753.    EndIf
  754.    If Giorni>304 AND Giorni<335
  755.     Giorno$=StripLead$(Str$(Giorni-304),32)
  756.     Mese$="novembre"
  757.    EndIf
  758.    If Giorni>334 AND Giorni<366
  759.     Giorno$=StripLead$(Str$(Giorni-334),32)
  760.     Mese$="dicembre"
  761.    EndIf
  762.   EndIf
  763.  Else
  764.   Giorno$=Str$(Days)
  765.   Select Months
  766.   Case 1
  767.    Mese$="gennaio"
  768.   Case 2
  769.    Mese$="febbraio"
  770.   Case 3
  771.    Mese$="marzo"
  772.   Case 4
  773.    Mese$="aprile"
  774.   Case 5
  775.    Mese$="maggio"
  776.   Case 6
  777.    Mese$="giugno"
  778.   Case 7
  779.    Mese$="luglio"
  780.   Case 8
  781.    Mese$="agosto"
  782.   Case 9
  783.    Mese$="settembre"
  784.   Case 10
  785.    Mese$="ottobre"
  786.   Case 11
  787.    Mese$="novembre"
  788.   Case 12
  789.    Mese$="dicembre"
  790.   End Select
  791.   Anno$=Str$(Years)
  792.  EndIf
  793.  DataDiOggi$=" "+GiornoDellaSettimana$+", "+Giorno$+" "+Mese$+" "+Anno$+" "
  794.  LunghezzaDataDiOggi.w=TextLength_(RastPortFinestra,&DataDiOggi$,Len(DataDiOggi$))
  795. End Statement
  796.  
  797. ;*********************************************
  798. ;Fine delle procedure ed inizio del programma
  799. ;Procedures end and program start
  800. ;*********************************
  801.  
  802. WBStartup
  803.  
  804. WbToScreen 0
  805.  
  806. IndirizzoSchermo.l=Peek.l(Addr Screen(0))
  807. LunXSchermo=Peek.w(IndirizzoSchermo+12)
  808.  
  809. FontOrologio$="Data70.font"
  810. AltezzaFont=13
  811.  
  812. AltezzaFontSchermo.b=8
  813. OpenFontPrefs
  814.  AltezzaFontSchermo=DefaultFontHeight(2)
  815. CloseFontPrefs
  816.  
  817. IconaOrologio$=ProgPath$+".info"
  818.  
  819. PosXFinestraZero=0
  820. PosYFinestraZero=AltezzaFontSchermo+3
  821. LunXFinestraZero=70
  822. LunYFinestraZero=30
  823. Angolo$="TOP-LEFT"
  824. ColoreTesto=1
  825. ColoreSfondo=0
  826.  
  827. LeggiToolType{}
  828.  
  829. LoadFont 0,FontOrologio$,AltezzaFont
  830.  
  831. LoadFont 1,"topaz.font",8
  832.  
  833. Select Angolo$
  834. Case "TOP-RIGHT"
  835.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero
  836.  PosXFinestraZero-(LunXFinestraZero-1)
  837. Case "BOTTOM-RIGHT"
  838.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero
  839.  PosXFinestraZero-(LunXFinestraZero-1)
  840.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero
  841.  PosYFinestraZero-(LunYFinestraZero-1)
  842. Case "BOTTOM-LEFT"
  843.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero
  844.  PosYFinestraZero-(LunYFinestraZero-1)
  845. End Select
  846.  
  847. AggiustaDimensioniFinestraZero{}
  848. ApriFinestraZero{}
  849.  
  850. DataDiOggi$=Date$(SystemDate)
  851. DataDiOggi{}
  852.  
  853. LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+WTopOff+4
  854. LunYFinestraZero=WTopOff+AltezzaFont*2+4
  855.  
  856. Select Angolo$
  857. Case "TOP-LEFT"
  858.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  859.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  860. Case "TOP-RIGHT"
  861.  PosXFinestraZero=PosXFinestraZeroAngoloOpposto
  862.  PosXFinestraZero-(LunXFinestraZero-1)
  863.  PosYFinestraZeroAngoloOpposto=PosYFinestraZero+(LunYFinestraZero-1)
  864. Case "BOTTOM-RIGHT"
  865.  PosXFinestraZero=PosXFinestraZeroAngoloOpposto
  866.  PosXFinestraZero-(LunXFinestraZero-1)
  867.  PosYFinestraZero=PosYFinestraZeroAngoloOpposto
  868.  PosYFinestraZero-(LunYFinestraZero-1)
  869. Case "BOTTOM-LEFT"
  870.  PosXFinestraZeroAngoloOpposto=PosXFinestraZero+(LunXFinestraZero-1)
  871.  PosYFinestraZero=PosYFinestraZeroAngoloOpposto
  872.  PosYFinestraZero-(LunYFinestraZero-1)
  873. End Select
  874.  
  875. CloseWindow 0
  876.  
  877. AggiustaDimensioniFinestraZero{}
  878. ApriFinestraZero{}
  879.  
  880. XAllarme=InnerWidth-1-AltezzaFont/2
  881. YAllarme=InnerHeight-1-AltezzaFont/2
  882. RaggioMassimoCerchio=AltezzaFont/2
  883. SetZone 0,XAllarme,YAllarme,RaggioMassimoCerchio
  884.  
  885. Repeat
  886.  EventoFinestraZero.l=Event
  887.  
  888.  Select EventoFinestraZero
  889.  Case #HaiCambiatoLeDimensioniDellaFinestra
  890.   AltezzaFont=InnerHeight/2
  891.   If AltezzaFont<4 Then AltezzaFont=4
  892.   LunXFinestraZero=WindowWidth
  893.   LunYFinestraZero=WindowHeight
  894.   RaggioMassimoCerchio=AltezzaFont/2
  895.   LoadFont 0,FontOrologio$,AltezzaFont
  896.   WindowFont 0
  897.   WCls ColoreSfondo
  898.   XAllarme=InnerWidth-1-AltezzaFont/2
  899.   YAllarme=InnerHeight-1-AltezzaFont/2
  900.   RaggioMassimoCerchio=AltezzaFont/2
  901.   RaggioCerchio=RaggioMassimoCerchio
  902.   SetZone 0,XAllarme,YAllarme,RaggioMassimoCerchio
  903.  Case #HaiPremutoUnTastoDelTopo
  904.   Select MButtons
  905.   Case 1
  906.    If StatoAllarme=On AND Zone(WMouseX,WMouseY)=0
  907.     StatoAllarme=Off
  908.    Else
  909.     PrecedenteFontOrologio$=FontOrologio$
  910.     PrecedenteAltezzaFont.b=AltezzaFont
  911.     PrecedenteColoreSfondo=ColoreSfondo
  912.  
  913.     Parametri{}
  914.  
  915.     Use Window 0
  916.  
  917.     FinestraZeroAggiornata.b=False
  918.     If FontOrologio$<>PrecedenteFontOrologio$ OR AltezzaFont<>PrecedenteAltezzaFont
  919.      LoadFont 0,FontOrologio$,AltezzaFont
  920.      WindowFont 0
  921.  
  922.      DataDiOggi{}
  923.  
  924.      LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+WTopOff+2
  925.      LunYFinestraZero=WTopOff+AltezzaFont*2+4
  926.  
  927.      CloseWindow 0
  928.  
  929.      AggiustaDimensioniFinestraZero{}
  930.      ApriFinestraZero{}
  931.  
  932.      FinestraZeroAggiornata=True
  933.     EndIf
  934.     If FinestraZeroAggiornata=False
  935.      If PosXFinestraZero<>WindowX-WLeftOff OR PosYFinestraZero<>WindowY-WTopOff
  936.       CloseWindow 0
  937.  
  938.       AggiustaDimensioniFinestraZero{}
  939.       ApriFinestraZero{}
  940.      EndIf
  941.     EndIf
  942.     XAllarme=InnerWidth-1-AltezzaFont/2
  943.     YAllarme=InnerHeight-1-AltezzaFont/2
  944.     RaggioMassimoCerchio=AltezzaFont/2
  945.     RaggioCerchio=RaggioMassimoCerchio
  946.     SetZone 0,XAllarme,YAllarme,RaggioMassimoCerchio
  947.    EndIf
  948.    If ColoreSfondo<>PrecedenteColoreSfondo Then WCls ColoreSfondo
  949.   End Select
  950.   FlushEvents #HaiPremutoUnTastoDelTopo
  951.  End Select
  952.  
  953.  DataDiOggi$=Date$(SystemDate)
  954.  
  955.  DataDiOggi{}
  956.  
  957.  XData.w=(InnerWidth-LunghezzaDataDiOggi)/2
  958.  WColour ColoreTesto,ColoreSfondo
  959.  WLocate XData,0
  960.  Print DataDiOggi$
  961.  
  962.  OraDiOggi$="  "+Str$(Hours/10)
  963.  OraDiOggi$+Str$(Hours MOD 10)+":"
  964.  OraDiOggi$+Str$(Mins/10)
  965.  OraDiOggi$+Str$(Mins MOD 10)+":"
  966.  OraDiOggi$+Str$(Secs/10)
  967.  OraDiOggi$+Str$(Secs MOD 10)+"  "
  968.  LunghezzaOraDiOggi.w=TextLength_(RastPortFinestra,&OraDiOggi$,Len(OraDiOggi$))
  969.  XOra.w=(InnerWidth-LunghezzaOraDiOggi)/2
  970.  WLocate XOra,AltezzaFont
  971.  Print OraDiOggi$
  972.  
  973.  OraDiOggi$=StripTrail$(StripLead$(OraDiOggi$,32),32)
  974.  
  975.  Minuti.b=Val(Mid$(OraDiOggi$,4,2))
  976.  If Minuti=0
  977.   If OraSuonata.b=False
  978.    Ora.b=Val(Left$(OraDiOggi$,2)) MOD 12
  979.    If Ora=0 Then Ora=12
  980.   EndIf
  981.   If Ora>0
  982.    BeepScreen 0
  983.    Ora-1
  984.    OraSuonata=True
  985.   EndIf
  986.  Else
  987.   If OraSuonata=True Then OraSuonata=False
  988.  EndIf
  989.  
  990.  If StatoAllarme=On
  991.   If Left$(OraDiOggi$,5)=OraAllarme$ Then BeepScreen 0
  992.   WCircle XAllarme,YAllarme,RaggioCerchio,ColoreTesto
  993.  EndIf
  994.  
  995.  If EventoFinestraZero<>#HaiChiusoLaFinestra Then Delay_ 50
  996.  
  997.  If StatoAllarme=On
  998.   WCircle XAllarme,YAllarme,RaggioCerchio,ColoreSfondo
  999.   RaggioCerchio+1
  1000.   If RaggioCerchio>RaggioMassimoCerchio Then RaggioCerchio=1
  1001.  EndIf
  1002. Until EventoFinestraZero=#HaiChiusoLaFinestra
  1003. End
  1004.