Skip to content

Commit f0ea26c

Browse files
committed
Added "Save As" button and functionality
1 parent 377911d commit f0ea26c

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

__pycache__/tktools.cpython-37.pyc

390 Bytes
Binary file not shown.

main.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import tktools
2-
from tktools import *
2+
from tktools import os, tk
33

44
version = '0.0.0.2'
55

66

7-
print('Starting Fedit '+version)
7+
print('Starting Fedit', version)
8+
print('Home dir:', os.path.expanduser('~'))
89

910
root = tktools.Window('Fedit ('+str(version)+')').window_raw()
1011

@@ -18,11 +19,13 @@
1819

1920
menubar.add_button('open', widget_maintextedit.open_file, 'Open')
2021
menubar.add_button('save', widget_maintextedit.save_file, 'Save')
22+
menubar.add_button('saveas', widget_maintextedit.saveas_file, 'Save As')
2123
menubar.add_button('new', widget_maintextedit.new_file, 'New')
2224

2325
menubar.grid_button('open', row=0, column=0)
2426
menubar.grid_button('save', row=0, column=1)
25-
menubar.grid_button('new', row=0, column=2)
27+
menubar.grid_button('saveas', row=0, column=2)
28+
menubar.grid_button('new', row=0, column=3)
2629

2730
## Main text editor
2831
widget_maintextedit.pack(expand=1, fill='both')

tktools.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@ def __init__(self, parent):
4040
('Text files', '*.txt'),
4141
]
4242
self.initial_dir = os.path.expanduser('~')
43+
self.curr_file = None
44+
def __savefiledata__(self, f_name, data):
45+
print('Saving', f_name)
46+
self.initial_dir = os.path.dirname(f_name)
47+
f_obj = open(f_name, 'w')
48+
f_obj.write(data)
49+
f_obj.close()
50+
self.curr_file = f_name
4351
def widget_raw(self):
4452
## Return the raw Tk text widget
4553
return self.widget
@@ -63,28 +71,29 @@ def get_text(self, *args, **kwargs):
6371
def open_file(self, *args, **kwargs):
6472
## Asks for a file to open and shows it in text widget
6573
#args and kwargs to this function are thrown away
66-
global initial_dir
6774
f_name = tkfd.askopenfilename(filetypes=self.ftypes, initialdir=self.initial_dir)
6875
if not verify_f_name(f_name):
6976
return
7077
print('Opening', f_name)
7178
self.initial_dir = os.path.dirname(f_name)
7279
f_text = open(f_name, 'r').read()
7380
self.set_text(text=f_text)
81+
self.curr_file = f_name
7482
def save_file(self, *args, **kwargs):
83+
if verify_f_name(self.curr_file):
84+
#Save file as currently open file
85+
self.__savefiledata__(self.curr_file, self.get_text(0.0))
86+
else:
87+
#No file currently open
88+
self.saveas_file()
89+
def saveas_file(self, *args, **kwargs):
7590
## Asks for a file to save the contents of the text widget
7691
## in and saves it there
7792
#args and kwargs to this function are thrown away
78-
global initial_dir
7993
f_name = tkfd.asksaveasfilename(filetypes=self.ftypes, initialdir=self.initial_dir)
8094
if not verify_f_name(f_name):
8195
return 0
82-
print('Saving', f_name)
83-
self.initial_dir = os.path.dirname(f_name)
84-
text = self.get_text(0.0)
85-
f_obj = open(f_name, 'w')
86-
f_obj.write(text)
87-
f_obj.close()
96+
self.__savefiledata__(f_name, self.get_text(0.0))
8897
return 1
8998
def new_file(self, *args, **kwargs):
9099
## Clears the text widget
@@ -97,6 +106,7 @@ def new_file(self, *args, **kwargs):
97106
return
98107
#User has saved/pressed no
99108
self.clear_text(0.0, 'end')
109+
self.curr_file = None
100110

101111

102112
class MenuBar:

0 commit comments

Comments
 (0)