summaryrefslogtreecommitdiff
path: root/grc/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'grc/src/gui')
-rw-r--r--grc/src/gui/ActionHandler.py9
-rw-r--r--grc/src/gui/MainWindow.py2
-rw-r--r--grc/src/gui/NotebookPage.py9
3 files changed, 17 insertions, 3 deletions
diff --git a/grc/src/gui/ActionHandler.py b/grc/src/gui/ActionHandler.py
index 7558d16ae..cc41e937c 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 b86ec4cbd..95a362688 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 a25243b18..e2e627a2d 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.