From 5bc7e8d906438a9b3809d4ce3be4a5c016a13bbf Mon Sep 17 00:00:00 2001 From: jblum Date: Wed, 8 Oct 2008 20:17:18 +0000 Subject: [PATCH] read-only aware git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@9751 221aa14e-8319-0410-a670-987f0aec2ac5 --- grc/src/gui/ActionHandler.py | 9 ++++++--- grc/src/gui/MainWindow.py | 2 ++ grc/src/gui/NotebookPage.py | 9 +++++++++ grc/todo.txt | 1 - 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/grc/src/gui/ActionHandler.py b/grc/src/gui/ActionHandler.py index 7558d16a..cc41e937 100644 --- a/grc/src/gui/ActionHandler.py +++ b/grc/src/gui/ActionHandler.py @@ -328,7 +328,10 @@ class ActionHandler: elif state == Actions.FLOW_GRAPH_CLOSE: self.main_window.close_page() elif state == Actions.FLOW_GRAPH_SAVE: - if not self.get_page().get_file_path(): self.handle_states(Actions.FLOW_GRAPH_SAVE_AS) + #read-only or undefines file path, do save-as + if self.get_page().get_read_only() or not self.get_page().get_file_path(): + self.handle_states(Actions.FLOW_GRAPH_SAVE_AS) + #otherwise try to save else: try: ParseXML.to_file(self.get_flow_graph().export_data(), self.get_page().get_file_path()) @@ -338,12 +341,12 @@ class ActionHandler: self.get_page().set_saved(False) elif state == Actions.FLOW_GRAPH_SAVE_AS: file_path = SaveFlowGraphFileDialog(self.get_page().get_file_path()).run() - if file_path != None: + if file_path is not None: self.get_page().set_file_path(file_path) self.handle_states(Actions.FLOW_GRAPH_SAVE) elif state == Actions.FLOW_GRAPH_SCREEN_CAPTURE: file_path = SaveImageFileDialog(self.get_page().get_file_path()).run() - if file_path != None: + if file_path is not None: pixmap = self.get_flow_graph().get_drawing_area().pixmap width, height = pixmap.get_size() pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, 0, 8, width, height) diff --git a/grc/src/gui/MainWindow.py b/grc/src/gui/MainWindow.py index b86ec4cb..95a36268 100644 --- a/grc/src/gui/MainWindow.py +++ b/grc/src/gui/MainWindow.py @@ -246,6 +246,7 @@ class MainWindow(gtk.Window): ' - Editing: ', (self.get_page().get_file_path() or NEW_FLOGRAPH_TITLE), (self.get_page().get_saved() and ' ' or '*'), #blank must be non empty + (self.get_page().get_read_only() and ' (read-only)' or ''), ) ) else: title = MAIN_WINDOW_PREFIX + ' - Editor ' @@ -262,6 +263,7 @@ class MainWindow(gtk.Window): page.set_text(''.join(( (title or NEW_FLOGRAPH_TITLE), (page.get_saved() and ' ' or '*'), #blank must be non empty + (page.get_read_only() and ' (ro)' or ''), ) ) ) diff --git a/grc/src/gui/NotebookPage.py b/grc/src/gui/NotebookPage.py index a25243b1..e2e627a2 100644 --- a/grc/src/gui/NotebookPage.py +++ b/grc/src/gui/NotebookPage.py @@ -135,6 +135,15 @@ class NotebookPage(gtk.HBox): """ return self._flow_graph + def get_read_only(self): + """ + Get the read-only state of the file. + Always false for empty path. + @return true for read-only + """ + if not self.get_file_path(): return False + return not os.access(self.get_file_path(), os.W_OK) + def get_file_path(self): """ Get the file path for the flow graph. diff --git a/grc/todo.txt b/grc/todo.txt index bce1028e..97c59f1e 100644 --- a/grc/todo.txt +++ b/grc/todo.txt @@ -32,7 +32,6 @@ -dont hide vlen controller when vlen > 1 -dont generate py files in .grc file dir -save/restore cwd --check for .grc file readonly, ro message in window, no save option ################################################## # External -- 2.30.2