def edit_line(self, line): dialog = OptionsDialog(line) try: response = dialog.run() if response == gtk.RESPONSE_ACCEPT: ul = UndoList("Edit Line") dialog.check_out(undolist=ul) #uwrap.emit_last(self.backend, 'redraw', undolist=ul) self.project.journal.append(ul) return dialog.owner else: raise error.UserCancel finally: dialog.destroy()
def plot_postscript(app, project, plot): # # request filename # filename = PostscriptTerminal.build_filename('ps', project, plot) chooser = gtk.FileChooserDialog( title="PostScript Export", action=gtk.FILE_CHOOSER_ACTION_SAVE, buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) chooser.set_default_response(gtk.RESPONSE_OK) chooser.set_select_multiple(False) chooser.set_current_folder(os.path.abspath(os.path.dirname(filename))) chooser.set_current_name(os.path.basename(filename)) filter = gtk.FileFilter() filter.set_name("All files") filter.add_pattern("*") chooser.add_filter(filter) filter = gtk.FileFilter() filter.set_name("Postscript (.ps; .eps)") filter.add_pattern("*.ps") filter.add_pattern("*.eps") chooser.add_filter(filter) chooser.set_filter(filter) # default filter response = chooser.run() try: if response == gtk.RESPONSE_OK: filename = chooser.get_filename() else: raise error.UserCancel finally: chooser.destroy() # # request export options # dialog = OptionsDialog(PostscriptTerminal(), title="Options Postscript Export", parent=app.window) #dialog.set_size_request(320,520) # determine requested postscript mode (ps or eps) from extension path, ext = os.path.splitext(filename) ext = ext.lower() if ext == '.eps': dialog.owner.mode = 'eps' elif ext == '.ps': dialog.owner.mode = 'landscape' try: result = dialog.run() if result == gtk.RESPONSE_ACCEPT: dialog.check_out() else: return terminal = dialog.owner finally: dialog.destroy() # # now check if mode and filename extension match # def fix_filename(filename, mode): msg = "The postscript mode you selected (%s) does not match the given filename extension (%s). Do you want to adjust the filename to match the mode? " % (mode, os.path.splitext(filename)[1]) dialog = gtk.MessageDialog(type = gtk.MESSAGE_QUESTION, message_format = msg) dialog.add_button("Keep Filename", gtk.RESPONSE_NO) btn_default = dialog.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) dialog.add_button("Adjust Filename", gtk.RESPONSE_YES) btn_default.grab_focus() response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: # yes = yes, adjust filename if mode == '.eps': new_ext = '.eps' else: new_ext = '.ps' path, ext = os.path.splitext(filename) return path + new_ext elif response == gtk.RESPONSE_NO: # no = no, keep filename return filename else: # everything else -> abort action raise error.UserCancel if (terminal.mode == 'eps' and ext != '.eps') or \ (terminal.mode != 'eps' and ext != '.ps'): filename = fix_filename(filename, terminal.mode) # # construct backend for output # backend = globals.BackendRegistry['gnuplot']( project=project, plot=plot, filename=filename, terminal=terminal) try: backend.draw() finally: backend.disconnect()