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