@@ -15,7 +15,10 @@ class PytimerWindow(Adw.ApplicationWindow):
1515 time_label = Gtk .Template .Child ('time_label' )
1616 minutes_spin = Gtk .Template .Child ('minutes_spin' )
1717 header_bar = Gtk .Template .Child ('header_bar' )
18- button_box = Gtk .Template .Child ('button_box' )
18+ reset_button = Gtk .Template .Child ('reset_button' )
19+ start_button = Gtk .Template .Child ('start_button' )
20+ reset_revealer = Gtk .Template .Child ('reset_revealer' ) # Added
21+ #reset_button_revealer = Gtk.Template.Child('reset_button_revealer') # Removed
1922
2023 def __init__ (self , ** kwargs ):
2124 super ().__init__ (** kwargs )
@@ -27,42 +30,43 @@ def __init__(self, **kwargs):
2730 self .elapsed_time = 0
2831 self .start_time = 0
2932 self .timeout_id = None
30-
31- # Create buttons programmatically
32- self .start_button = Gtk .Button ()
33- self .start_button .set_icon_name ("media-playback-start-symbolic" )
34- self .start_button .add_css_class ("circular" )
35- self .start_button .add_css_class ("raised" )
36- self .start_button .connect ('clicked' , self ._on_start_clicked )
37-
38- self .reset_button = Gtk .Button ()
39- self .reset_button .set_icon_name ("edit-undo-symbolic" )
40- self .reset_button .add_css_class ("circular" )
41- self .reset_button .add_css_class ("small" )
42- self .reset_button .add_css_class ("destructive-action" )
43- self .reset_button .set_visible (False )
44- self .reset_button .connect ('clicked' , self ._on_reset_clicked )
45-
46- # Add buttons to GtkFixed and set positions
47- self .button_box .put (self .start_button , 15 , 0 )
48- self .button_box .put (self .reset_button , 65 , 0 )
33+ self .timer_paused_once = False
4934
5035 # Connect signals
5136 self .minutes_spin .connect ('value-changed' , self ._on_minutes_changed )
37+ self .start_button .connect ('clicked' , self ._on_start_clicked )
38+ self .reset_button .connect ('clicked' , self ._on_reset_clicked )
5239
5340 # Set up drawing area
5441 self .progress_circle .set_draw_func (self .draw_timer_arc , None )
5542
5643 # Add CSS for styling
5744 css_provider = Gtk .CssProvider ()
58- css_provider . load_from_data ( b"""
59- .timer-label { font-size: 48px; font-weight: 300 ; }
45+ css_data = b"""
46+ .timer-label { font-size: 48px; font-weight: 600 ; }
6047 .button-box { min-width: 300px; }
6148 button.circular { padding: 4px; margin: 2px; border-radius: 9999px; }
6249 button.small { padding: 2px; }
6350 headerbar { padding: 0; min-height: 24px; box-shadow: none; border-bottom: none; }
6451 window { margin: 0; }
65- """ )
52+
53+ /* Add margin to the right side of the headerbar's end button */
54+ headerbar .end button {
55+ margin-right: 12px;
56+ }
57+
58+ /* Make the reset button REALLY smaller */
59+ .small-reset-button {
60+ padding: 0px; /* Reduce padding even more */
61+ min-width: 25px; /* Override min-width */
62+ min-height: 25px; /* Override min-height */
63+ font-size: 0.6em; /* Reduce font size even more */
64+ border-width: 0px; /* Remove border */
65+ margin: 0px; /* Remove margin */
66+ }
67+ """
68+ css_provider .load_from_data (css_data )
69+
6670 Gtk .StyleContext .add_provider_for_display (
6771 Gdk .Display .get_default (),
6872 css_provider ,
@@ -78,10 +82,14 @@ def _on_reset_clicked(self, button):
7882 self .total_seconds = 0
7983 self .elapsed_time = 0
8084 self ._update_time_label ()
81- self .reset_button . set_visible (False )
85+ # self.reset_button_revealer.set_reveal_child (False) #Removed
8286 self .minutes_spin .set_sensitive (True )
8387 self .progress_circle .queue_draw ()
8488 self ._update_start_button_state ()
89+ self .timer_paused_once = False
90+ self .reset_revealer .set_reveal_child (False )
91+ self .start_button .set_icon_name ("media-playback-start-symbolic" )
92+
8593
8694 def _on_start_clicked (self , button ):
8795 if not self .timer_running :
@@ -98,11 +106,9 @@ def _on_start_clicked(self, button):
98106 self .remaining_seconds = self .total_seconds
99107 self .start_time = time .time () - self .elapsed_time
100108 self ._start_timer ()
101- button .set_icon_name ("media-playback-stop-symbolic" )
102109 else :
103110 self ._stop_timer ()
104- button .set_icon_name ("media-playback-start-symbolic" )
105- self .reset_button .set_visible (True )
111+ #self.reset_button_revealer.set_reveal_child(False) #Removed
106112
107113 def draw_timer_arc (self , area , cr , width , height , data ):
108114 center_x = width / 2
@@ -135,7 +141,8 @@ def _start_timer(self):
135141 self .timer_running = True
136142 self .timeout_id = GLib .timeout_add (16 , self ._update_timer ) # Update every ~16ms for 60fps
137143 self .minutes_spin .set_sensitive (False )
138- self .reset_button .set_visible (False )
144+ self .start_button .set_icon_name ("media-playback-pause-symbolic" ) # Set icon to pause
145+ self .reset_revealer .set_reveal_child (False ) # Ensure reset button is hidden
139146
140147 def _stop_timer (self ):
141148 self .timer_running = False
@@ -145,6 +152,8 @@ def _stop_timer(self):
145152 self .elapsed_time = time .time () - self .start_time # Save the elapsed time
146153 self .minutes_spin .set_sensitive (False ) # Disable minutes_spin when paused
147154 self ._update_start_button_state ()
155+ self .start_button .set_icon_name ("media-playback-start-symbolic" ) # Set icon to start
156+ self .reset_revealer .set_reveal_child (True ) # Always reveal reset button on pause
148157
149158 def _update_timer (self ):
150159 if self .remaining_seconds > 0 :
@@ -157,9 +166,6 @@ def _update_timer(self):
157166 else :
158167 self ._timer_finished ()
159168 return False
160- else :
161- self ._timer_finished ()
162- return False
163169
164170 def _update_time_label (self ):
165171 if self .remaining_seconds < 0 :
@@ -170,10 +176,8 @@ def _update_time_label(self):
170176
171177 def _timer_finished (self ):
172178 self .timer_running = False
173- self .start_button .set_icon_name ("media-playback-start-symbolic" )
179+ self .start_button .set_icon_name ("media-playback-start-symbolic" ) # Set icon to start
174180 self .minutes_spin .set_sensitive (True )
175181 self ._update_start_button_state ()
176182 self .elapsed_time = 0 # Reset elapsed time when the timer finishes
177-
178- def on_close_button_clicked (self , button ):
179- self .close ()
183+ self .reset_revealer .set_reveal_child (False ) # Ensure reset button is hidden
0 commit comments