11from tkinter import *
2+ from tkinter import ttk
23
34
4- class ScreenBlockerFrame (Frame ):
5- def __init__ (self , master , controller , time_options_manager , mobber_manager , countdown_manager , ** kwargs ):
5+ class ScreenBlockerFrame (ttk .Frame ):
6+ def __init__ (self , master , controller , time_options_manager , mobber_manager , countdown_manager , settings_manager ,
7+ ** kwargs ):
68 super ().__init__ (master , ** kwargs )
9+
710 self .master = master
811 self .controller = controller
912 self .countdown_manager = countdown_manager
1013 self .time_options_manager = time_options_manager
1114 self .mobber_manager = mobber_manager
15+ self .settings_manager = settings_manager
1216 self .build_window_content ()
1317 self .time_options_manager .subscribe_to_timechange (self .time_change_callback )
1418 self .mobber_manager .subscribe_to_mobber_list_change (self .mobber_list_change_callback )
1519
16-
17- def mobber_list_change_callback ( self , mobber_list , driver_index , navigator_index ):
18- self .names_list .delete (0 , END )
20+ def mobber_list_change_callback ( self , mobber_list , driver_index , navigator_index ):
21+ for i in self . names_list . get_children ( ):
22+ self .names_list .delete (i )
1923 for index in range (0 , mobber_list .__len__ ()):
2024 name = mobber_list [index ]
2125 if index == driver_index :
22- name += " <= Current Driver "
26+ name += " <= Current"
2327 if index == navigator_index :
24- name += " <= Next Driver "
25- self .names_list .insert (END , name )
28+ name += " <= Next"
29+ self .names_list .insert ('' , END , text = name )
2630
2731 def time_change_callback (self , time , minutes , seconds ):
2832 self .label_minutes ['text' ] = "{0:0>2}" .format (minutes )
@@ -35,100 +39,113 @@ def toggle_geometry(self, event):
3539 self ._geom = geom
3640
3741 def build_window_content (self ):
38- center_frame = self
42+ center_frame = Frame (self )
43+ center_frame .grid (row = 0 , column = 0 )
44+ center_frame .grid_columnconfigure (0 , weight = 1 )
45+ center_frame .grid_columnconfigure (1 , weight = 0 )
46+ center_frame .grid_columnconfigure (2 , weight = 0 )
47+ center_frame .grid_columnconfigure (3 , weight = 0 )
48+ center_frame .grid_columnconfigure (4 , weight = 1 )
3949
4050 row_index = 0
41- title = Label (center_frame , text = "Mobbing Timer" , font = "Helvetica 40 bold italic" )
42- title .grid (row = row_index , columnspan = 3 , padx = 30 , pady = 30 , sticky = N + W + E )
51+ title = ttk . Label (center_frame , text = "Mobbing Timer" , font = "Helvetica 40 bold italic" )
52+ title .grid (row = row_index , columnspan = 5 , padx = 30 , pady = 50 )
4353 row_index += 1
4454
45- title = Label (center_frame , text = "Left Click to Increase, Right Click to Decrease" , font = "Helvetica 16 bold" )
46- title .grid (row = row_index , columnspan = 3 , padx = 30 , pady = 0 , sticky = N )
55+ title = ttk .Label (center_frame , text = "Left Click to Increase, Right Click to Decrease" ,
56+ font = "Helvetica 16 bold" )
57+ title .grid (row = row_index , columnspan = 5 , padx = 30 , pady = 0 )
4758 row_index += 1
4859
49- self .label_minutes = Label (center_frame , text = "10" , font = "Helvetica 180 bold" )
50- self .label_minutes .grid (row = row_index , column = 0 , sticky = E )
60+
61+
62+ self .label_minutes = ttk .Label (center_frame , text = "10" , font = "Helvetica 180 bold" )
63+ self .label_minutes .grid (row = row_index , column = 1 , sticky = E )
5164 self .label_minutes .bind ("<Button-1>" , lambda event : self .time_options_manager .increment_minutes ())
5265 self .label_minutes .bind ("<Button-3>" , lambda event : self .time_options_manager .decrement_minutes ())
5366
54- label_colon = Label (center_frame , text = ":" , font = "Helvetica 180 bold" )
55- label_colon .grid (row = row_index , column = 1 , sticky = N )
67+ label_colon = ttk . Label (center_frame , text = ":" , font = "Helvetica 180 bold" )
68+ label_colon .grid (row = row_index , column = 2 , sticky = N )
5669
57- self .label_seconds = Label (center_frame , text = "30" , font = "Helvetica 180 bold" )
58- self .label_seconds .grid (row = row_index , column = 2 , sticky = W )
70+ self .label_seconds = ttk . Label (center_frame , text = "30" , font = "Helvetica 180 bold" )
71+ self .label_seconds .grid (row = row_index , column = 3 , sticky = W )
5972 self .label_seconds .bind ("<Button-1>" , lambda event : self .time_options_manager .increment_seconds ())
6073 self .label_seconds .bind ("<Button-3>" , lambda event : self .time_options_manager .decrement_seconds ())
6174 row_index += 1
6275
63- self .add_mobber_entry = Entry (center_frame , text = "Add Mobber" , font = "Helvetica 16 bold" )
64- self .add_mobber_entry .grid (row = row_index , columnspan = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
76+ self .add_mobber_entry = ttk . Entry (center_frame , text = "Add Mobber" , font = "Helvetica 16 bold" )
77+ self .add_mobber_entry .grid (row = row_index , column = 1 , columnspan = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
6578 self .add_mobber_entry .bind ("<Return>" , self .add_mobber_left_click )
79+ self .add_mobber_entry .bind ("<Control-Return>" , self .launch_transparent_countdown )
6680
67- add_mobber_button = Button (center_frame , text = "Add Mobber" )
68- add_mobber_button .grid (row = row_index , column = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
81+ add_mobber_button = ttk . Button (center_frame , text = "Add Mobber" )
82+ add_mobber_button .grid (row = row_index , column = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
6983 add_mobber_button .bind ("<Button-1>" , self .add_mobber_left_click )
7084 row_index += 1
7185
72- self .names_list = Listbox (center_frame , font = "Helvetica 16 bold" )
73- self .names_list .grid (row = row_index , rowspan = 6 , columnspan = 2 , column = 0 , padx = 10 , pady = 10 , sticky = N + E + W )
86+ self .names_list = ttk . Treeview (center_frame )
87+ self .names_list .grid (row = row_index , rowspan = 6 , columnspan = 2 , column = 1 , padx = 10 , pady = 10 , sticky = N + E + W )
7488
75- remove_mobber_button = Button (center_frame , text = "Remove Mobber" )
76- remove_mobber_button .grid (row = row_index , column = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
89+ remove_mobber_button = ttk . Button (center_frame , text = "Remove Mobber" )
90+ remove_mobber_button .grid (row = row_index , column = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
7791 remove_mobber_button .bind ("<Button-1>" , lambda event : self .mobber_manager .remove_mobber (
78- int (self .names_list .curselection ()[ 0 ] )))
92+ int (self .names_list .index ( self . names_list . selection ()) )))
7993 row_index += 1
8094
81- move_mobber_up_button = Button (center_frame , text = "Move Mobber Up" )
82- move_mobber_up_button .grid (row = row_index , column = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
95+ move_mobber_up_button = ttk . Button (center_frame , text = "Move Mobber Up" )
96+ move_mobber_up_button .grid (row = row_index , column = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
8397 move_mobber_up_button .bind ("<Button-1>" , self .move_mobber_up_left_click )
8498 row_index += 1
8599
86- move_mobber_down_button = Button (center_frame , text = "Move Mobber Down" )
87- move_mobber_down_button .grid (row = row_index , column = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
100+ move_mobber_down_button = ttk . Button (center_frame , text = "Move Mobber Down" )
101+ move_mobber_down_button .grid (row = row_index , column = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
88102 move_mobber_down_button .bind ("<Button-1>" , self .move_mobber_down_left_click )
89103 row_index += 1
90104
91- clear_mobbers_button = Button (center_frame , text = "Clear Mobbers" )
92- clear_mobbers_button .grid (row = row_index , column = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
105+ clear_mobbers_button = ttk . Button (center_frame , text = "Clear Mobbers" )
106+ clear_mobbers_button .grid (row = row_index , column = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
93107 clear_mobbers_button .bind ("<Button-1>" , lambda event : self .mobber_manager .clear ())
94108 row_index += 1
95109
96- clear_mobbers_button = Button (center_frame , text = "Skip Driver" )
97- clear_mobbers_button .grid (row = row_index , column = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
110+ clear_mobbers_button = ttk . Button (center_frame , text = "Skip Driver" )
111+ clear_mobbers_button .grid (row = row_index , column = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
98112 clear_mobbers_button .bind ("<Button-1>" , lambda event : self .mobber_manager .switch_navigator_driver ())
99113 row_index += 1
100114
101- clear_mobbers_button = Button (center_frame , text = "Rewind Driver" )
102- clear_mobbers_button .grid (row = row_index , column = 2 , sticky = N + E + W , padx = 10 , pady = 10 )
115+ clear_mobbers_button = ttk . Button (center_frame , text = "Rewind Driver" )
116+ clear_mobbers_button .grid (row = row_index , column = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
103117 clear_mobbers_button .bind ("<Button-1>" , lambda event : self .mobber_manager .rewind_driver ())
104118 row_index += 1
105119
106- start_button = Button (center_frame , text = "Start Mobbing!" , font = "Helvetica 30 bold " )
107- start_button .grid (row = row_index , columnspan = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
120+ start_button = ttk . Button (center_frame , text = "Start Mobbing!" )
121+ start_button .grid (row = row_index , column = 1 , columnspan = 3 , sticky = N + E + W , padx = 10 , pady = 10 )
108122 start_button .bind ("<Button-1>" , self .launch_transparent_countdown )
109123 row_index += 1
110124
111- start_button = Button (center_frame , text = "Quit Mobbing!" , font = "Helvetica 10 bold " )
112- start_button .grid (row = row_index , columnspan = 3 , sticky = N + E + W , padx = 50 , pady = 10 )
125+ start_button = ttk . Button (center_frame , text = "Quit Mobbing!" )
126+ start_button .grid (row = row_index , column = 1 , columnspan = 3 , sticky = N + E + W , padx = 50 , pady = 10 )
113127 start_button .bind ("<Button-1>" , lambda event : self .controller .quit_and_destroy_session ())
114128 row_index += 1
115129
116130 center_frame .grid (row = 0 , column = 0 , sticky = "nsew" )
117131
118132 def launch_transparent_countdown (self , event ):
119- self .countdown_manager .set_countdown_duration (self .time_options_manager .minutes , self .time_options_manager .seconds )
133+ self .countdown_manager .set_countdown_duration (self .time_options_manager .minutes ,
134+ self .time_options_manager .seconds )
120135 self .controller .show_transparent_countdown_frame ()
121136
122137 def move_mobber_down_left_click (self , event ):
123- selected_index = int (self .names_list .curselection ()[0 ])
138+ selected_items = self .names_list .selection ()
139+ selected_index = int (int (self .names_list .index (selected_items )))
124140 self .mobber_manager .move_mobber_down (selected_index )
125- self .names_list .select_set ((selected_index + 1 ) % self .mobber_manager .mobber_count ())
141+ self .names_list .selection_set (
142+ self .names_list .get_children ()[(selected_index + 1 ) % self .mobber_manager .mobber_count ()])
126143
127144 def move_mobber_up_left_click (self , event ):
128- selected_index = int (self .names_list .curselection ()[ 0 ] )
145+ selected_index = int (int ( self .names_list .index ( self . names_list . selection ())) )
129146 self .mobber_manager .move_mobber_up (selected_index )
130147 count = self .mobber_manager .mobber_count ()
131- self .names_list .select_set (( count + selected_index - 1 ) % count )
148+ self .names_list .selection_set ( self . names_list . get_children ()[(( count + selected_index - 1 ) % count )] )
132149
133150 def add_mobber_left_click (self , event ):
134151 self .mobber_manager .add_mobber (self .add_mobber_entry .get ())
0 commit comments