Skip to content

Commit 9f8e53f

Browse files
committed
Required bugfix, was saving the first character only - Add total characters counter (needs work) #4
1 parent fb9fd51 commit 9f8e53f

File tree

2 files changed

+40
-5
lines changed

2 files changed

+40
-5
lines changed

main.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from tkinter import colorchooser, messagebox
44
from ast import literal_eval
55

6-
version = '0.0.1.5'
6+
version = '0.0.1.6'
77

88
print('Starting Fedit', version)
99
print('Home dir:', os.path.expanduser('~'))
@@ -40,7 +40,7 @@ def load_config_file():
4040
config_file_obj.write(str(data.content, encoding='ascii'))
4141
config_file_obj.close()
4242
load_config_file()
43-
print(config)
43+
themes = literal_eval(config['Themes'])
4444

4545
## Main text editor
4646
frame_maintextedit = tk.Frame(root)
@@ -63,15 +63,27 @@ def load_config_file():
6363
## Main text editor
6464
widget_maintextedit.pack(expand=1, fill='both')
6565

66+
## LabelBar
67+
frame_labelbar = tk.Frame(root)
68+
labelbar = tktools.LabelBar(frame_labelbar)
69+
70+
labelbar.add_label('chars', '0')
71+
labelbar.grid_label('chars', row=0)
72+
labelbar.config_label('chars', bg=themes[False]['buttons'], fg=themes[False]['buttons_text'])
73+
74+
def update_labelbar_chars(*args, **kwargs):
75+
labelbar.config_label('chars', text=str(len(widget_maintextedit.widget_raw().get(0.0, 'end'))-1))
76+
widget_maintextedit.widget_raw().bind('<Any-KeyRelease>', update_labelbar_chars)
77+
6678
## Theme
6779
theme_current = False #False=Light True=Dark
68-
themes = literal_eval(config['Themes'])
6980

7081
def update_theme(theme, text_theme, button_theme, button_text_theme, custom=0):
7182
print('Custom:', custom, 'BG:', theme, 'FG:', text_theme)
7283
root.config(bg=theme)
7384
widget_maintextedit.config(bg=theme, fg=text_theme, insertbackground=text_theme)
7485
frame_menubar.config(bg=theme)
86+
frame_labelbar.config(bg=theme)
7587
for button in menubar.buttons:
7688
menubar.buttons[button]['raw'].config(bg=button_theme, fg=button_text_theme)
7789

@@ -124,6 +136,7 @@ def changing_theme_func():
124136
## Packing
125137
frame_menubar.pack(side='top', expand=1, fill='both')
126138
frame_maintextedit.pack(expand=1, fill='both')
139+
frame_labelbar.pack(side='bottom', expand=1, fill='both')
127140

128141
## Complete exit
129142
def complete_exit():

tktools.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,18 +98,20 @@ def save_file(self, *args, **kwargs):
9898
else:
9999
#No file currently open
100100
self.saveas_file()
101+
self.__updatetitle__()
101102
def saveas_file(self, *args, **kwargs):
102103
## Asks for a file to save the contents of the text widget
103104
## in and saves it there
104105
#args and kwargs to this function are thrown away
105106
f_name = tkfd.asksaveasfilename(filetypes=self.ftypes, initialdir=self.initial_dir)
106107
if not verify_f_name(f_name):
107108
return 0
108-
self.__savefiledata__(f_name, self.get_text(0.0))
109+
self.__savefiledata__(f_name, self.get_text(0.0, 'end'))
109110
return 1
111+
self.__updatetitle__()
110112
def new_file(self, *args, **kwargs):
111113
## Clears the text widget
112-
dscn = tkmb.askyesnocancel('Save file?', 'Do you want to save the file already open?') #dscn = Desicion
114+
dscn = tkmb.askyesnocancel('Save file?', 'Do you want to save the file already open?')
113115
if dscn == True: #User said yes
114116
if self.save_file() == 0:
115117
self.new_file()
@@ -146,6 +148,26 @@ def raw_button(self, button_name):
146148
def config_button(self, button_name, *args, **kwargs):
147149
self.buttons[button_name]['raw'].config(args, kwargs)
148150

151+
class LabelBar:
152+
def __init__(self, parent):
153+
## Init
154+
self.parent = parent
155+
self.labels = {}
156+
def add_label(self, label_name, text):
157+
## Add a label
158+
label = tk.Label(self.parent, text=text)
159+
self.labels[label_name] = {'text': text, 'raw': label}
160+
def pack_label(self, label_name, *args, **kwargs):
161+
## Pack a label
162+
self.labels[label_name]['raw'].pack(args, kwargs)
163+
def grid_label(self, label_name, *args, **kwargs):
164+
## Grid a label
165+
self.labels[label_name]['raw'].grid(kwargs)
166+
def raw_label(self, label_name):
167+
## Returns the raw Tk label widget
168+
return self.labels[label_name]['raw']
169+
def config_label(self, label_name, *args, **kwargs):
170+
self.labels[label_name]['raw'].config(kwargs)
149171

150172

151173
if __name__=='__main__':

0 commit comments

Comments
 (0)