def _save_as_dialog_callback(dialog, response_id): if response_id == gtk.RESPONSE_ACCEPT: filenames = dialog.get_filenames() PROJECT().last_save_path = filenames[0] PROJECT().name = os.path.basename(filenames[0]) updater.set_info_icon(gtk.STOCK_SAVE) if len( PROJECT().events ) == 0: # Save as... with 0 project events is considered Project creation p_event = projectdata.ProjectEvent( projectdata.EVENT_CREATED_BY_SAVING, PROJECT().last_save_path) PROJECT().events.append(p_event) else: p_event = projectdata.ProjectEvent( projectdata.EVENT_SAVED_AS, (PROJECT().name, PROJECT().last_save_path)) PROJECT().events.append(p_event) persistance.save_project(PROJECT(), PROJECT().last_save_path) #<----- HERE app.stop_autosave() app.start_autosave() global save_icon_remove_event_id save_icon_remove_event_id = gobject.timeout_add(500, remove_save_icon) global save_time save_time = time.clock() gui.editor_window.window.set_title(PROJECT().name + " - Flowblade") gui.editor_window.uimanager.get_widget( "/MenuBar/FileMenu/Save").set_sensitive(False) gui.editor_window.uimanager.get_widget( "/MenuBar/EditMenu/Undo").set_sensitive(False) gui.editor_window.uimanager.get_widget( "/MenuBar/EditMenu/Redo").set_sensitive(False) editorpersistance.add_recent_project_path(PROJECT().last_save_path) editorpersistance.fill_recents_menu_widget( gui.editor_window.uimanager.get_widget( '/MenuBar/FileMenu/OpenRecent'), open_recent_project) projectinfogui.update_project_info() dialog.destroy() else: dialog.destroy()
def _save_as_dialog_callback(dialog, response_id): if response_id == Gtk.ResponseType.ACCEPT: filenames = dialog.get_filenames() PROJECT().last_save_path = filenames[0] PROJECT().name = unicode(os.path.basename(filenames[0]), "utf-8") updater.set_info_icon(Gtk.STOCK_SAVE) try: persistance.save_project(PROJECT(), PROJECT().last_save_path) #<----- HERE except IOError as ioe: dialog.destroy() updater.set_info_icon(None) primary_txt = "I/O error({0})".format(ioe.errno) secondary_txt = ioe.strerror + "." dialogutils.warning_message(primary_txt, secondary_txt, gui.editor_window.window, is_info=False) return if len(PROJECT().events) == 0: # Save as... with 0 project events is considered Project creation p_event = projectdata.ProjectEvent(projectdata.EVENT_CREATED_BY_SAVING, PROJECT().last_save_path) PROJECT().events.append(p_event) else: p_event = projectdata.ProjectEvent(projectdata.EVENT_SAVED_AS, (PROJECT().name, PROJECT().last_save_path)) PROJECT().events.append(p_event) app.stop_autosave() app.start_autosave() global save_icon_remove_event_id save_icon_remove_event_id = GObject.timeout_add(500, remove_save_icon) global save_time save_time = time.clock() gui.editor_window.window.set_title(PROJECT().name + " - Flowblade") gui.editor_window.uimanager.get_widget("/MenuBar/FileMenu/Save").set_sensitive(False) gui.editor_window.uimanager.get_widget("/MenuBar/EditMenu/Undo").set_sensitive(False) gui.editor_window.uimanager.get_widget("/MenuBar/EditMenu/Redo").set_sensitive(False) editorpersistance.add_recent_project_path(PROJECT().last_save_path) editorpersistance.fill_recents_menu_widget(gui.editor_window.uimanager.get_widget('/MenuBar/FileMenu/OpenRecent'), open_recent_project) projectinfogui.update_project_info() dialog.destroy() else: dialog.destroy()
def _save_as_dialog_callback(dialog, response_id): if response_id == gtk.RESPONSE_ACCEPT: filenames = dialog.get_filenames() PROJECT().last_save_path = filenames[0] PROJECT().name = os.path.basename(filenames[0]) updater.set_info_icon(gtk.STOCK_SAVE) if len(PROJECT().events) == 0: # Save as... with 0 project events is considered Project creation p_event = projectdata.ProjectEvent(projectdata.EVENT_CREATED_BY_SAVING, PROJECT().last_save_path) PROJECT().events.append(p_event) else: p_event = projectdata.ProjectEvent(projectdata.EVENT_SAVED_AS, (PROJECT().name, PROJECT().last_save_path)) PROJECT().events.append(p_event) persistance.save_project(PROJECT(), PROJECT().last_save_path) #<----- HERE app.stop_autosave() app.start_autosave() global save_icon_remove_event_id save_icon_remove_event_id = gobject.timeout_add(500, remove_save_icon) global save_time save_time = time.clock() gui.editor_window.window.set_title(PROJECT().name + " - Flowblade") gui.editor_window.uimanager.get_widget("/MenuBar/FileMenu/Save").set_sensitive(False) gui.editor_window.uimanager.get_widget("/MenuBar/EditMenu/Undo").set_sensitive(False) gui.editor_window.uimanager.get_widget("/MenuBar/EditMenu/Redo").set_sensitive(False) editorpersistance.add_recent_project_path(PROJECT().last_save_path) editorpersistance.fill_recents_menu_widget(gui.editor_window.uimanager.get_widget('/MenuBar/FileMenu/OpenRecent'), open_recent_project) projectinfogui.update_project_info() dialog.destroy() else: dialog.destroy()
def run(self): Gdk.threads_enter() updater.set_info_icon(Gtk.STOCK_OPEN) dialog = dialogs.load_dialog() persistance.load_dialog = dialog Gdk.threads_leave() ticker = utils.Ticker(_load_pulse_bar, 0.15) ticker.start_ticker() old_project = editorstate.project try: editorstate.project_is_loading = True project = persistance.load_project(self.filename) sequence.set_track_counts(project) editorstate.project_is_loading = False except persistance.FileProducerNotFoundError as e: print "did not find file:", e self._error_stop(dialog, ticker) primary_txt = _("Media asset was missing!") secondary_txt = _("Path of missing asset:") + "\n <b>" + e.value + "</b>\n\n" + \ _("Relative search for replacement file in sub folders of project file failed.") + "\n\n" + \ _("To load the project you will need to either:") + "\n" + \ u"\u2022" + " " + _("Use 'Media Linker' tool to relink media assets to new files, or") + "\n" + \ u"\u2022" + " " + _("Place a file with the same exact name and path on the hard drive") dialogutils.warning_message(primary_txt, secondary_txt, None, is_info=False) editorstate.project = old_project # persistance.load_project() changes this, # we simply change it back as no GUI or other state is yet changed return except persistance.ProjectProfileNotFoundError as e: self._error_stop(dialog, ticker) primary_txt = _("Profile with Description: '") + e.value + _("' was not found on load!") secondary_txt = _("It is possible to load the project by creating a User Profile with exactly the same Description\nas the missing profile. ") + "\n\n" + \ _("User Profiles can be created by selecting 'Edit->Profiles Manager'.") dialogutils.warning_message(primary_txt, secondary_txt, None, is_info=False) editorstate.project = old_project # persistance.load_project() changes this, # we simply change it back as no GUI or other state is yet changed return Gdk.threads_enter() dialog.info.set_text(_("Opening")) Gdk.threads_leave() time.sleep(0.3) Gdk.threads_enter() app.open_project(project) if self.block_recent_files: # naming flipped ???? editorpersistance.add_recent_project_path(self.filename) editorpersistance.fill_recents_menu_widget(gui.editor_window.uimanager.get_widget('/MenuBar/FileMenu/OpenRecent'), open_recent_project) Gdk.threads_leave() Gdk.threads_enter() updater.set_info_icon(None) dialog.destroy() Gdk.threads_leave() ticker.stop_ticker()
def _save_as_dialog_callback(dialog, response_id): if response_id == Gtk.ResponseType.ACCEPT: filenames = dialog.get_filenames() PROJECT().last_save_path = filenames[0] PROJECT().name = unicode(os.path.basename(filenames[0]), "utf-8") updater.set_info_icon(Gtk.STOCK_SAVE) try: persistance.save_project(PROJECT(), PROJECT().last_save_path) #<----- HERE except IOError as ioe: dialog.destroy() updater.set_info_icon(None) primary_txt = "I/O error({0})".format(ioe.errno) secondary_txt = ioe.strerror + "." dialogutils.warning_message(primary_txt, secondary_txt, gui.editor_window.window, is_info=False) return if len( PROJECT().events ) == 0: # Save as... with 0 project events is considered Project creation p_event = projectdata.ProjectEvent( projectdata.EVENT_CREATED_BY_SAVING, PROJECT().last_save_path) PROJECT().events.append(p_event) else: p_event = projectdata.ProjectEvent( projectdata.EVENT_SAVED_AS, (PROJECT().name, PROJECT().last_save_path)) PROJECT().events.append(p_event) app.stop_autosave() app.start_autosave() global save_icon_remove_event_id save_icon_remove_event_id = GObject.timeout_add(500, remove_save_icon) global save_time save_time = time.clock() gui.editor_window.window.set_title(PROJECT().name + " - Flowblade") gui.editor_window.uimanager.get_widget( "/MenuBar/FileMenu/Save").set_sensitive(False) gui.editor_window.uimanager.get_widget( "/MenuBar/EditMenu/Undo").set_sensitive(False) gui.editor_window.uimanager.get_widget( "/MenuBar/EditMenu/Redo").set_sensitive(False) editorpersistance.add_recent_project_path(PROJECT().last_save_path) editorpersistance.fill_recents_menu_widget( gui.editor_window.uimanager.get_widget( '/MenuBar/FileMenu/OpenRecent'), open_recent_project) projectinfogui.update_project_info() dialog.destroy() else: dialog.destroy()