[pitivi] project: Add revert to saved option (Bug 586023)
- From: Edward Hervey <edwardrv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] project: Add revert to saved option (Bug 586023)
- Date: Sat, 19 Jun 2010 11:19:30 +0000 (UTC)
commit 5a9361c023524ce24a5bade6be16b90e35f9e9f4
Author: Pier Carteri <pier carteri gmail com>
Date: Sun Jun 6 10:56:20 2010 +0200
project: Add revert to saved option (Bug 586023)
pitivi/projectmanager.py | 16 ++++++++++++++++
pitivi/ui/mainwindow.py | 34 +++++++++++++++++++++++++++++++++-
pitivi/ui/mainwindow.xml | 1 +
3 files changed, 50 insertions(+), 1 deletions(-)
---
diff --git a/pitivi/projectmanager.py b/pitivi/projectmanager.py
index a9c1780..1fcca6e 100644
--- a/pitivi/projectmanager.py
+++ b/pitivi/projectmanager.py
@@ -77,6 +77,7 @@ class ProjectManager(Signallable, Loggable):
"closing-project": ["project"],
"project-closed": ["project"],
"missing-uri": ["formatter", "uri", "factory"],
+ "reverting-to-saved":["project"],
}
def __init__(self):
@@ -183,6 +184,21 @@ class ProjectManager(Signallable, Loggable):
return True
+ def revertToSavedProject(self):
+ """ discard all unsaved changes and reload current open project """
+ #no running project or
+ #project has not been modified
+ if self.current is None \
+ or not self.current.hasUnsavedModifications():
+ return True
+
+ if not self.emit("reverting-to-saved", self.current):
+ return False
+ uri = self.current.uri
+ self.current.setModificationState(False)
+ self.closeRunningProject()
+ self.loadProject(uri)
+
def _getFormatterForUri(self, uri):
return get_formatter_for_uri(uri)
diff --git a/pitivi/ui/mainwindow.py b/pitivi/ui/mainwindow.py
index 5823d2e..e526345 100644
--- a/pitivi/ui/mainwindow.py
+++ b/pitivi/ui/mainwindow.py
@@ -192,6 +192,8 @@ class PitiviMainWindow(gtk.Window, Loggable):
self._projectManagerProjectSavedCb)
self.app.projectManager.connect("closing-project",
self._projectManagerClosingProjectCb)
+ self.app.projectManager.connect("reverting-to-saved",
+ self._projectManagerRevertingToSavedCb)
self.app.projectManager.connect("project-closed",
self._projectManagerProjectClosedCb)
self.app.projectManager.connect("missing-uri",
@@ -254,6 +256,8 @@ class PitiviMainWindow(gtk.Window, Loggable):
None, _("Save the current project"), self._saveProjectCb),
("SaveProjectAs", gtk.STOCK_SAVE_AS, None,
None, _("Save the current project"), self._saveProjectAsCb),
+ ("RevertToSavedProject", gtk.STOCK_REVERT_TO_SAVED, None,
+ None, _("Reload the current project"), self._revertToSavedProjectCb),
("ProjectSettings", gtk.STOCK_PROPERTIES, _("Project Settings"),
None, _("Edit the project settings"), self._projectSettingsCb),
("RenderProject", 'pitivi-render' , _("_Render project"),
@@ -342,13 +346,15 @@ class PitiviMainWindow(gtk.Window, Loggable):
"SecondForward", "SecondBackward", "EdgeForward",
"EdgeBackward", "Preferences"]:
action.set_sensitive(True)
- elif action_name in ["NewProject", "SaveProjectAs", "OpenProject"]:
+ elif action_name in ["NewProject", "SaveProjectAs", "OpenProject",
+ "RevertToSavedProject"]:
if instance.settings.fileSupportEnabled:
action.set_sensitive(True)
elif action_name == "SaveProject":
if instance.settings.fileSupportEnabled:
action.set_sensitive(True)
action.props.is_important = True
+ action.props.is_important = True
elif action_name == "Undo":
action.set_sensitive(True)
action.props.is_important = True
@@ -578,6 +584,10 @@ class PitiviMainWindow(gtk.Window, Loggable):
return False
+ def _revertToSavedProjectCb(self, unused_action):
+ return self.app.projectManager.revertToSavedProject()
+
+
def _projectSettingsCb(self, unused_action):
from projectsettings import ProjectSettingsDialog
ProjectSettingsDialog(self, self.app.current).show()
@@ -815,6 +825,28 @@ class PitiviMainWindow(gtk.Window, Loggable):
project.seeker.disconnect_by_func(self._timelineSeekCb)
return False
+ def _projectManagerRevertingToSavedCb(self, projectManager, project):
+ if project.hasUnsavedModifications():
+ dialog = gtk.MessageDialog(self,
+ gtk.DIALOG_MODAL,
+ gtk.MESSAGE_WARNING,
+ gtk.BUTTONS_YES_NO,
+ _("Do you want to reload current project?")
+ )
+ dialog.set_icon_name("pitivi")
+ dialog.set_title(_("Revert to saved project"))
+ dialog.set_resizable(False)
+ dialog.set_property("secondary-text",
+ _("All unsaved changes will be lost")
+ )
+ dialog.set_default_response(gtk.RESPONSE_NO)
+ response = dialog.run()
+ dialog.destroy()
+ if response <> gtk.RESPONSE_YES:
+ return False
+ return True
+
+
def _projectManagerNewProjectFailedCb(self, projectManager, uri, exception):
# ungrey UI
dialog = gtk.MessageDialog(self,
diff --git a/pitivi/ui/mainwindow.xml b/pitivi/ui/mainwindow.xml
index 9642553..1673fcf 100644
--- a/pitivi/ui/mainwindow.xml
+++ b/pitivi/ui/mainwindow.xml
@@ -5,6 +5,7 @@
<menuitem action="OpenProject" />
<menuitem action="SaveProject" />
<menuitem action="SaveProjectAs" />
+ <menuitem action="RevertToSavedProject" />
<separator />
<menuitem action="Quit" />
</menu>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]