99"""
1010import sys
1111from os .path import abspath , join , expanduser
12- #! from os import getenv # Not useful right now, but could be useful if translations are available
12+ # from os import getenv #! DOESN'T SEEM TO WORK IN EXE MODE
1313import json
1414from random import choice , randint
1515from string import ascii_letters , digits
7878 settings [key ] = True
7979except FileNotFoundError :
8080 settings = {
81- "version" : "'Encryptext Offline Mode'" ,
81+ "version" : "'Encryptext Travel Mode'" ,
8282 "recentFilePaths" : [],
8383 "maxRecentFiles" : 0 ,
8484 "otherSettings" : {
@@ -95,7 +95,7 @@ except FileNotFoundError:
9595 }
9696 }
9797
98- version = settings [" version" ]
98+ version = f" { '.' . join ( settings [' version' ]. split ( '.' )[ 0 : - 1 ]) } (build { settings [ 'version' ]. split ( '.' )[ - 1 ] } )"
9999font_scale_factor = settings ["otherSettings" ]["fontScaleFactor" ]
100100
101101"""
@@ -111,7 +111,6 @@ class TextLineNumbers(tk.Canvas):
111111 self .textwidget = text_widget
112112
113113 def redraw (self , * args ):
114- '''redraw line numbers'''
115114 self .delete ("all" )
116115
117116 i = self .textwidget .index ("@0,0" )
@@ -157,7 +156,6 @@ class CustomText(tk.Text):
157156
158157# https://www.reddit.com/r/learnpython/comments/6dndqz/comment/di42keo/
159158class WrappedLabel (ttk .Label ):
160- """a type of Label that automatically adjusts the wrap to the size"""
161159 def __init__ (self , master = None , ** kwargs ):
162160 ttk .Label .__init__ (self , master , ** kwargs )
163161 self .bind ("<Configure>" , lambda e : self .config (wraplength = self .winfo_width ()))
@@ -213,7 +211,10 @@ class PreferenceWindow(tk.Toplevel):
213211 # Language picker
214212 self .selected_language = tk .StringVar (value = settings ["otherSettings" ]["language" ])
215213 self .language_label = WrappedLabel (self .pref_window , text = "Display language: " , font = (settings ["otherSettings" ]["fontStyle" ], int (round (11 * font_scale_factor ))))
216- #! getenv("LANG").split(".")[0] # Can be useful to get the user's default language
214+ # Get the user's default language and also display that in the list
215+ # It doesn't change anything right now, but maybe it will in the future.
216+ #! DOESN'T SEEM TO WORK IN EXE MODE
217+ # getenv("LANG").split(".")[0]
217218 lang_options = ["en_US" ]
218219 self .language_val = ttk .Combobox (self .language_label , textvariable = self .selected_language , values = lang_options , state = "readonly" , font = (settings ["otherSettings" ]["fontStyle" ], int (round (11 * font_scale_factor ))))
219220
@@ -457,10 +458,14 @@ def quitApp(Event=None):
457458 with open (settings_path , "w" ) as file :
458459 settings = str (settings ).replace ("'" , '"' ).replace ("False" , "false" ).replace ("True" , "true" )
459460 file .write (str (settings ))
460- except FileNotFoundError : pass
461+ except FileNotFoundError or NameError as e :
462+ if debug :
463+ messagebox .askokcancel ("ERROR" , f"Error: { e } " )
464+ except Exception as e :
465+ messagebox .askokcancel ("ERROR" , f"Error: { e } " )
461466
462467 try :
463- md_preview_window .destroy ()
468+ preview_window .destroy ()
464469 pref_window .closeWindow ()
465470 finally :
466471 root .destroy ()
@@ -483,10 +488,14 @@ def quitApp(Event=None):
483488 with open (settings_path , "w" ) as file :
484489 settings = str (settings ).replace ("'" , '"' ).replace ("False" , "false" ).replace ("True" , "true" )
485490 file .write (str (settings ))
486- except FileNotFoundError : pass
491+ except FileNotFoundError or NameError as e :
492+ if debug :
493+ messagebox .showerror ("ERROR" , f"Error: { e } " )
494+ except Exception :
495+ messagebox .showerror ("Error" , "Unknown error. If this problem persists, please contact the developer at 'https://github.com/WhenLifeHandsYouLemons/Encryptext'." )
487496
488497 try :
489- md_preview_window .destroy ()
498+ preview_window .destroy ()
490499 pref_window .closeWindow ()
491500 finally :
492501 root .destroy ()
@@ -673,9 +682,9 @@ def openFile(Event=None, current=False, file_path=None):
673682 recent_files .pop ()
674683 createMenuBar ()
675684 if file_extensions [current_tab ] == "md" :
676- global md_preview_window
685+ global preview_window
677686 try :
678- md_preview_window .deiconify ()
687+ preview_window .deiconify ()
679688 updatePreview ()
680689 except :
681690 preview_window .__init__ ()
@@ -729,14 +738,16 @@ def newFile(Event=None):
729738
730739 updatePreview ()
731740
732- def saveFile (Event = None ):
741+ def saveFile (Event = None , auto_save = False ):
733742 current_tab = getCurrentTab ()
734743 if current_tab == - 1 :
735744 return None
736745
737746 # If it's a new file
738747 if file_save_locations [current_tab ] == "" :
739- saveFileAs ()
748+ # If it's being saved manually, then try save as
749+ if not auto_save :
750+ saveFileAs ()
740751 else :
741752 # Get the text from the current textbox
742753 text = textboxes [current_tab ].get ("1.0" , tk .END )
@@ -1239,7 +1250,7 @@ def addNewTab(Event=None):
12391250 textboxes [- 1 ].bindtags ((bindtags [2 ], bindtags [0 ], bindtags [1 ], bindtags [3 ]))
12401251
12411252 # Track document changes and update markdown preview
1242- textboxes [- 1 ].bind ('<Key >' , trackChanges )
1253+ textboxes [- 1 ].bind ('<<Change> >' , trackChanges )
12431254 if settings ["otherSettings" ]["showLineNumbers" ] == True and settings ["otherSettings" ]["highlightActiveLine" ] == True :
12441255 textboxes [- 1 ].bind ("<<Change>>" , updateHighlightAndNumbers )
12451256 textboxes [- 1 ].bind ("<Configure>" , updateHighlightAndNumbers )
@@ -1286,6 +1297,9 @@ def closeCurrentTab(Event=None):
12861297 file_format_tags .pop (current_tab )
12871298 file_format_tag_nums .pop (current_tab )
12881299 saved .pop (current_tab )
1300+ frames .pop (current_tab )
1301+ if settings ["otherSettings" ]["showLineNumbers" ] == True :
1302+ line_number_areas .pop (current_tab )
12891303
12901304 updatePreview ()
12911305
@@ -1325,6 +1339,8 @@ def captureSpecialKeys(Event=None):
13251339 cur_key = Event .keysym
13261340 mod_key = Event .state
13271341
1342+ # print(Event, cur_key, mod_key)
1343+
13281344 # Run function based on what key was pressed
13291345 if cur_key == "s" :
13301346 saveFile ()
0 commit comments