10
10
import typing
11
11
12
12
from scrollframe import ScrollFrame
13
+ from settings import Settings
13
14
14
15
class About (tk .Toplevel ):
15
16
def __init__ (
@@ -174,22 +175,23 @@ def addProgress(self, value):
174
175
def close (self ):
175
176
self .window .destroy ()
176
177
177
- class settings_dialog ():
178
- def __init__ (self , root , settings : dict , page = 0 ) -> None :
179
- self .window = tk .Toplevel ()
180
- self ._settings = copy .deepcopy (settings )
181
- self .settings = copy .deepcopy (settings )
178
+ class SettingsDialog (tk .Toplevel ):
179
+ def __init__ (self , root , settings : Settings , page = 0 ) -> None :
180
+ super ().__init__ (root )
181
+
182
+ self ._settings = copy .deepcopy (settings .settings )
183
+ self .settings = settings
182
184
self .page = page
183
185
184
- self .window . geometry ('500x400' )
186
+ self .geometry ('500x400' )
185
187
186
- self .notebook = ttk .Notebook (self . window )
188
+ self .notebook = ttk .Notebook (self )
187
189
self .tabs = {}
188
190
self .load_tabs ()
189
191
self .notebook .pack (fill = 'both' , expand = True )
190
192
191
193
self .confirm = {
192
- 'frame' : ttk .Frame (self . window )
194
+ 'frame' : ttk .Frame (self )
193
195
}
194
196
195
197
self .confirm ['ok' ] = ttk .Button (self .confirm ['frame' ], text = 'Ok' , command = lambda : self .close (True ))
@@ -199,17 +201,20 @@ def __init__(self, root, settings: dict, page=0) -> None:
199
201
self .confirm ['cancel' ].pack (side = 'right' , padx = 2 , pady = 2 )
200
202
201
203
self .confirm ['frame' ].pack (anchor = 's' , fill = 'x' )
204
+
205
+ self .protocol ("WM_DELETE_WINDOW" , lambda * args : self .close (False ))
202
206
203
- self .window . transient (root )
204
- self .window . wait_window ()
207
+ self .transient (root )
208
+ self .wait_window ()
205
209
206
210
def close (self , saveSettings = True ):
207
- print (self .settings )
208
- print (self ._settings )
211
+ # print(self.settings)
212
+ # print(self._settings)
209
213
if not saveSettings :
210
- self .settings = self ._settings
214
+ self .settings .settings = self ._settings
215
+ self .settings .save ()
211
216
212
- self .window . destroy ()
217
+ self .destroy ()
213
218
214
219
def load_tabs (self ):
215
220
# self.paths()
@@ -234,30 +239,28 @@ def browse(entry, type='file', **kwargs):
234
239
'frame' : ttk .Frame (self .notebook ),
235
240
'contents' : {
236
241
'gamepaths' : {
237
- 'wmw' : {
238
- 'var' : tk .StringVar (value = self .settings ['gamedir' ])
239
- }
242
+ 'var' : tk .StringVar (value = self .settings .get ('game.gamepath' ))
240
243
},
241
244
'level' : {
242
245
'image' : {
243
- 'var' : tk .StringVar (value = self .settings [ ' default_level' ][ ' image'] )
246
+ 'var' : tk .StringVar (value = self .settings . get ( 'game. default_level. image') )
244
247
},
245
248
'xml' : {
246
- 'var' : tk .StringVar (value = self .settings [ ' default_level' ][ ' xml'] )
249
+ 'var' : tk .StringVar (value = self .settings . get ( 'game. default_level. xml') )
247
250
}
248
251
}
249
252
}
250
253
}
251
254
252
255
self .paths ['contents' ]['gamepaths' ]['frame' ] = ttk .LabelFrame (self .paths ['frame' ], text = 'Game paths' )
253
256
# self.paths['contents']['gamepaths']['wmw']['frame'] = ttk.Frame(self.paths['contents']['gamepaths']['frame'])
254
- self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' label' ] = ttk .Label (self .paths ['contents' ]['gamepaths' ]['frame' ], text = "Where's My Water?" )
255
- self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' entry' ] = ttk .Entry (self .paths ['contents' ]['gamepaths' ]['frame' ], textvariable = self .paths ['contents' ]['gamepaths' ][ 'wmw ' ]['var' ])
256
- self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' button' ] = ttk .Button (self .paths ['contents' ]['gamepaths' ]['frame' ], text = 'Browse' , command = lambda : browse (
257
- self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' entry' ],
257
+ self .paths ['contents' ]['gamepaths' ]['label' ] = ttk .Label (self .paths ['contents' ]['gamepaths' ]['frame' ], text = "Where's My Water?" )
258
+ self .paths ['contents' ]['gamepaths' ]['entry' ] = ttk .Entry (self .paths ['contents' ]['gamepaths' ]['frame' ], textvariable = self .paths ['contents' ]['gamepaths' ]['var' ])
259
+ self .paths ['contents' ]['gamepaths' ]['button' ] = ttk .Button (self .paths ['contents' ]['gamepaths' ]['frame' ], text = 'Browse' , command = lambda : browse (
260
+ self .paths ['contents' ]['gamepaths' ]['entry' ],
258
261
'dir' ,
259
262
title = 'Choose game directory' ,
260
- initialdir = self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' var' ].get ()
263
+ initialdir = self .paths ['contents' ]['gamepaths' ]['var' ].get ()
261
264
)
262
265
)
263
266
@@ -298,11 +301,11 @@ def browse(entry, type='file', **kwargs):
298
301
)
299
302
)
300
303
301
- self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' label' ].grid (row = 0 , column = 0 , sticky = 'e' , padx = 2 , pady = 2 )
302
- self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' entry' ].grid (row = 0 , column = 1 , sticky = 'ew' , padx = 2 , pady = 2 )
303
- self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' button' ].grid (row = 0 , column = 2 , padx = 2 , pady = 2 )
304
+ self .paths ['contents' ]['gamepaths' ]['label' ].grid (row = 0 , column = 0 , sticky = 'e' , padx = 2 , pady = 2 )
305
+ self .paths ['contents' ]['gamepaths' ]['entry' ].grid (row = 0 , column = 1 , sticky = 'ew' , padx = 2 , pady = 2 )
306
+ self .paths ['contents' ]['gamepaths' ]['button' ].grid (row = 0 , column = 2 , padx = 2 , pady = 2 )
304
307
305
- self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' var' ].trace ('w' , lambda name , index , mode : self .updateSettings ())
308
+ self .paths ['contents' ]['gamepaths' ]['var' ].trace ('w' , lambda name , index , mode : self .updateSettings ())
306
309
307
310
self .paths ['contents' ]['level' ]['image' ]['label' ].grid (row = 0 , column = 0 , sticky = 'e' , padx = 2 , pady = 2 )
308
311
self .paths ['contents' ]['level' ]['image' ]['entry' ].grid (row = 0 , column = 1 , sticky = 'ew' , padx = 2 , pady = 2 )
@@ -327,43 +330,54 @@ def browse(entry, type='file', **kwargs):
327
330
self .notebook .add (self .paths ['frame' ], text = 'Paths' , sticky = 'nsew' )
328
331
329
332
def updateSettings (self ):
330
- self .settings [ 'gamedir' ] = self .paths ['contents' ]['gamepaths' ]['wmw' ][ ' var' ].get ()
331
- self .settings [ ' default_level' ][ ' image'] = self .paths ['contents' ]['level' ]['image' ]['var' ].get ()
332
- self .settings [ ' default_level' ][ ' xml'] = self .paths ['contents' ]['level' ]['xml' ]['var' ].get ()
333
+ self .settings . set ( 'game.gamepath' , self .paths ['contents' ]['gamepaths' ]['var' ].get () )
334
+ self .settings . set ( 'game. default_level. image', self .paths ['contents' ]['level' ]['image' ]['var' ].get () )
335
+ self .settings . set ( 'game. default_level. xml', self .paths ['contents' ]['level' ]['xml' ]['var' ].get () )
333
336
334
337
if __name__ == '__main__' :
338
+ test = 'settings'
335
339
336
- __version__ = '2.0.0'
337
- __author__ = 'ego-lay-atman-bay'
338
- __credits__ = [
339
- {
340
- 'name' : 'wmwpy' ,
341
- 'url' : 'https://github.com/wmw-modding/wmwpy' ,
342
- 'description' : "Where's My Editor? uses wmwpy to read and modify Where's My Water? data, e.g. levels."
343
- },
344
- {
345
- 'name' : 'rubice!' ,
346
- 'url' : 'https://www.youtube.com/channel/UCsY-c5mJYWnK6PhrkHqPwig' ,
347
- 'description' : 'Thanks to @rubice for creating the logo.'
348
- },
349
- {
350
- 'name' : 'campbellsonic' ,
351
- 'url' : 'https://github.com/campbellsonic' ,
352
- 'description' : 'Thanks to @campbellsonic for helping to read waltex images.'
353
- }
354
- ]
340
+ if test == 'about' :
341
+ __version__ = '2.0.0'
342
+ __author__ = 'ego-lay-atman-bay'
343
+ __credits__ = [
344
+ {
345
+ 'name' : 'wmwpy' ,
346
+ 'url' : 'https://github.com/wmw-modding/wmwpy' ,
347
+ 'description' : "Where's My Editor? uses wmwpy to read and modify Where's My Water? data, e.g. levels."
348
+ },
349
+ {
350
+ 'name' : 'rubice!' ,
351
+ 'url' : 'https://www.youtube.com/channel/UCsY-c5mJYWnK6PhrkHqPwig' ,
352
+ 'description' : 'Thanks to @rubice for creating the logo.'
353
+ },
354
+ {
355
+ 'name' : 'campbellsonic' ,
356
+ 'url' : 'https://github.com/campbellsonic' ,
357
+ 'description' : 'Thanks to @campbellsonic for helping to read waltex images.'
358
+ }
359
+ ]
355
360
356
361
357
- app = tk .Tk ()
358
- about = About (
359
- app ,
360
- title = "About" ,
361
- author = __author__ ,
362
- program = "Where's My Editor?" ,
363
- version = __version__ ,
364
- description = """Where's My Editor? is a level editor for the Where's My Water? game series.""" ,
365
- credits = __credits__ ,
366
- logo = Image .open ('assets/images/WME_logo.png' ),
367
- )
368
-
369
- app .mainloop ()
362
+ app = tk .Tk ()
363
+ about = About (
364
+ app ,
365
+ title = "About" ,
366
+ author = __author__ ,
367
+ program = "Where's My Editor?" ,
368
+ version = __version__ ,
369
+ description = """Where's My Editor? is a level editor for the Where's My Water? game series.""" ,
370
+ credits = __credits__ ,
371
+ logo = Image .open ('assets/images/WME_logo.png' ),
372
+ )
373
+
374
+ app .mainloop ()
375
+
376
+ elif test == 'settings' :
377
+ settings = Settings ('settings.json' )
378
+
379
+ app = tk .Tk ()
380
+ dialog = SettingsDialog (
381
+ app ,
382
+ settings = settings
383
+ )
0 commit comments