11
11
import os
12
12
import argparse
13
13
14
+ from datetime import datetime
15
+ import logging
16
+ import logging .handlers
17
+
14
18
import urllib .request
15
19
import webbrowser
16
20
46
50
if not configPath .is_dir ():
47
51
os .mkdir (configLoc )
48
52
49
- print (configLoc )
50
-
51
-
52
53
class ComModes :
53
54
BAT , List = range (2 )
54
55
@@ -60,13 +61,47 @@ class ComModes:
60
61
class WinContextApp (QMainWindow , app .Ui_MainWindow ):
61
62
def __init__ (self , direct ):
62
63
super (self .__class__ , self ).__init__ ()
64
+
65
+ logging .basicConfig (
66
+ format = '%(asctime)s %(message)s' , datefmt = '[%H:%M:%S]' )
67
+ format = logging .Formatter (
68
+ '%(asctime)s %(message)s' , datefmt = '[%H:%M:%S]' )
69
+
70
+ self .logger = logging .getLogger ("debug_log" )
71
+ self .logger .setLevel (logging .DEBUG )
72
+
73
+ handler = logging .handlers .RotatingFileHandler (
74
+ configLoc + "\\ debug.log" , backupCount = 5 )
75
+
76
+ self .logger .addHandler (handler )
77
+ handler .setFormatter (format )
78
+
79
+ self .logger .debug (
80
+ "Running pyWinContext v" + versionNumber
81
+ + " at " + datetime .now ().ctime ())
82
+ self .logger .debug ("Config Directory: " + configLoc )
83
+
84
+ sys .excepthook = self .logException
85
+
63
86
self .direct = direct
64
87
self .hasChanges = False
65
88
self .setupUi (self )
66
89
self .treeWidget .setSortingEnabled (False )
67
90
self .load ()
68
91
self .initUI ()
69
92
93
+ def logException (self , exctype , value , tb ):
94
+ self .logger .debug ("An Error Has Occured" )
95
+ self .logger .debug ("Type: " + exctype .__name__ )
96
+ self .logger .debug ("Value: " + str (value ))
97
+ self .logger .debug ("Trace: " + str (tb ))
98
+ QMessageBox .critical (
99
+ self , "An Unexpected Error Has Occured" ,
100
+ "pyWinContext has encountered an unexpected error.\n \n "
101
+ + "Error: " + exctype .__name__ + "\n \n "
102
+ + str (value ) + "\n " + str (tb )
103
+ )
104
+
70
105
def closeEvent (self , event ):
71
106
if self .hasChanges :
72
107
resBtn = QMessageBox .question (
@@ -218,13 +253,14 @@ def initUI(self):
218
253
self .treeWidget .itemSelectionChanged .connect (self .action_select )
219
254
self .comboBox .currentIndexChanged .connect (self .after_change )
220
255
self .pushButton .clicked .connect (self .add_custom_filetype )
221
- self .show ()
222
256
self .statusBar ().showMessage ('Ready' )
223
257
self .progress = QProgressBar (self )
224
258
self .progress .setEnabled (False )
225
259
self .progress .setTextVisible (False )
226
260
self .statusBar ().addPermanentWidget (self .progress )
227
261
262
+ self .logger .debug ("Loading Complete" )
263
+
228
264
def load (self ):
229
265
config = Path (configLoc + "\\ config.json" )
230
266
if config .is_file ():
@@ -263,11 +299,15 @@ def set_progress(self, num):
263
299
self .progress .repaint ()
264
300
265
301
def action_save (self ):
302
+ self .logger .debug ("Attempting Save" )
303
+
266
304
self .setEnabled (False )
267
305
self .progress .setEnabled (True )
268
306
self .set_progress (0 )
269
307
data = self .get_save_data ()
308
+ self .logger .debug ("Retrieved Save Data" )
270
309
self .set_progress (5 )
310
+
271
311
oldData = None
272
312
config = Path (configLoc + "\\ config.json" )
273
313
configBak = Path (configLoc + "\\ config.json.bak" )
@@ -276,22 +316,32 @@ def action_save(self):
276
316
oldData = json .loads (oldFile .read (), object_pairs_hook = OrderedDict )
277
317
oldFile .close ()
278
318
config .replace (configBak )
319
+ self .logger .debug ("Backed Up Config Data" )
320
+
279
321
file = open (configLoc + "\\ config.json" , 'w' )
280
322
file .write (json .dumps (data , indent = 4 ))
281
323
file .close ()
282
324
output .configLoc = configLoc
283
325
output .ComModes = ComModes
284
326
self .set_progress (10 )
327
+
328
+ self .logger .debug ("Starting Save..." )
329
+ output .logger = self .logger
330
+
285
331
if self .direct :
286
332
output .direct_save (data , oldData , self )
287
333
else :
288
334
output .reg_save (data , oldData , self )
335
+
289
336
self .hasChanges = False
290
337
self .setWindowTitle ('pyWinContext' )
291
338
self .set_progress (100 )
292
339
self .progress .setEnabled (False )
293
340
self .set_progress (0 )
294
341
self .setEnabled (True )
342
+
343
+ self .logger .debug ("Save Successful" )
344
+
295
345
return True
296
346
297
347
def action_import (self ):
@@ -301,13 +351,16 @@ def action_export(self):
301
351
pass
302
352
303
353
def check_updates (self ):
354
+ self .logger .debug ("Checking for updates..." )
304
355
release = self .find_later_release ()
305
356
if release is False :
357
+ self .logger .debug ("Latest release" )
306
358
QMessageBox .information (
307
359
self , "Check for Updates" ,
308
360
"There are no new updates at this time."
309
361
)
310
362
else :
363
+ self .logger .debug ("Version " + release + " is available" )
311
364
box = QMessageBox (self )
312
365
box .setText (
313
366
"An update is available! It is available at\n "
0 commit comments