From 29f1266f8d65764818ab85327c555b0349240def Mon Sep 17 00:00:00 2001 From: gryf Date: Thu, 8 May 2008 16:57:28 +0000 Subject: [PATCH] * Change of behavoiur of standard filechooser dialogs. Now it would for default open last location, where katalog file was written. If user changes location for some other file, then it stick to that directory. --- src/ctrls/c_main.py | 12 ++++++++++-- src/views/v_dialogs.py | 21 ++++++++++++++++----- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/ctrls/c_main.py b/src/ctrls/c_main.py index ff29e23..14ae37f 100644 --- a/src/ctrls/c_main.py +++ b/src/ctrls/c_main.py @@ -616,7 +616,11 @@ class MainController(Controller): def on_save_as_activate(self, widget): """Save database to file under different filename.""" - path = Dialogs.ChooseDBFilename().run() + initial_path = None + if self.model.config.recent[0]: + initial_path = os.path.dirname(self.model.config.recent[0]) + + path = Dialogs.ChooseDBFilename(initial_path).run() if path: ret, err = self.model.save(path) if ret: @@ -651,8 +655,12 @@ class MainController(Controller): if not obj.run(): return + initial_path = None + if self.model.config.recent[0]: + initial_path = os.path.dirname(self.model.config.recent[0]) + if not path: - path = Dialogs.LoadDBFile().run() + path = Dialogs.LoadDBFile(initial_path).run() # cleanup files and details try: diff --git a/src/views/v_dialogs.py b/src/views/v_dialogs.py index 54e8153..c8badfc 100644 --- a/src/views/v_dialogs.py +++ b/src/views/v_dialogs.py @@ -260,9 +260,10 @@ class SelectDirectory(object): class ChooseDBFilename(object): """Sepcific dialog for quering user for selecting filename for database""" - URI="file://"+os.path.abspath(os.path.curdir) + URI=None - def __init__(self): + def __init__(self, path=None): + self.path = path self.dialog = gtk.FileChooserDialog( title="Save catalog as...", action=gtk.FILE_CHOOSER_ACTION_SAVE, @@ -289,6 +290,10 @@ class ChooseDBFilename(object): def run(self): if self.URI: self.dialog.set_current_folder_uri(self.URI) + elif self.path and os.path.exists(self.path): + self.path = "file://"+os.path.abspath(self.path) + self.dialog.set_current_folder_uri(self.path) + response = self.dialog.run() if response == gtk.RESPONSE_OK: filename = self.dialog.get_filename() @@ -311,9 +316,11 @@ class LoadDBFile(object): """Specific class for displaying openFile dialog. It has veryfication for file existence.""" - URI="file://"+os.path.abspath(os.path.curdir) + URI=None - def __init__(self): + def __init__(self, path=None): + self.path = path + self.dialog = gtk.FileChooserDialog( title="Open catalog", action=gtk.FILE_CHOOSER_ACTION_OPEN, @@ -324,7 +331,7 @@ class LoadDBFile(object): gtk.RESPONSE_OK)) self.dialog.set_default_response(gtk.RESPONSE_OK) - + f = gtk.FileFilter() f.set_name("Catalog files") f.add_pattern("*.pgt") @@ -350,6 +357,10 @@ class LoadDBFile(object): def run(self): if self.URI: self.dialog.set_current_folder_uri(self.URI) + elif self.path and os.path.exists(self.path): + self.path = "file://"+os.path.abspath(self.path) + self.dialog.set_current_folder_uri(self.path) + res,filename = self.show_dialog() ch = True while ch: