def cancel(self, btn):
self.dlg.response(gtk.RESPONSE_CANCEL)
python类RESPONSE_CANCEL的实例源码
def focus_out(self, widget, event):
if vkb_cancel_on_out:
self.dlg.response(gtk.RESPONSE_CANCEL)
else :
self.dlg.response(gtk.RESPONSE_OK)
def list_out(self, widget, event):
self.list_window.response(gtk.RESPONSE_CANCEL)
def action_importXML(self, *arg) :
filechooserdialog = gtk.FileChooserDialog(_("Import project"), None, \
gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, \
gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
try:
filt = gtk.FileFilter()
filt.set_name(_("NativeCAM projects"))
filt.add_mime_type("text/xml")
filt.add_pattern("*.xml")
filechooserdialog.add_filter(filt)
filt = gtk.FileFilter()
filt.set_name(_("All files"))
filt.add_pattern("*")
filechooserdialog.add_filter(filt)
filechooserdialog.set_current_folder(os.path.join(NCAM_DIR, CATALOGS_DIR, self.catalog_dir, PROJECTS_DIR))
filechooserdialog.set_keep_above(True)
filechooserdialog.set_transient_for(self.get_toplevel())
if filechooserdialog.run() == gtk.RESPONSE_OK:
fname = filechooserdialog.get_filename()
try :
xml = self.update_features(etree.parse(fname).getroot())
self.import_xml(xml)
self.file_changed = True
except etree.ParseError as err :
mess_dlg(err, _("Import project"))
finally:
filechooserdialog.destroy()
# will update with new features version and keep the previous values
def change_poster_select_file(self, number, handler = update_image):
filename = gutils.file_chooser(_("Select image"),
action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,
gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN,
gtk.RESPONSE_OK),
name='',
folder=self.locations['desktop'],
picture=True)
if filename and filename[0]:
filename = filename[0].decode('UTF-8')
if handler:
return handler(self, number, filename)
return False
def cover_image(self,number):
filename = gutils.file_chooser(_("Select image"), \
action=gtk.FILE_CHOOSER_ACTION_OPEN, \
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, \
gtk.STOCK_OPEN, gtk.RESPONSE_OK))
if filename[0]:
cover_image_process(self, filename[0], number)
def run(self):
basedir = None
if self.config is not None:
basedir = self.config.get('export_dir', None, section='export-csv')
if not basedir:
filename = gutils.file_chooser(_("Export a %s document")%"CSV", action=gtk.FILE_CHOOSER_ACTION_SAVE, \
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK), name='griffith_list.csv')
else:
filename = gutils.file_chooser(_("Export a %s document")%"CSV", action=gtk.FILE_CHOOSER_ACTION_SAVE, \
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE,gtk.RESPONSE_OK), name='griffith_list.csv', folder=basedir)
if filename and filename[0]:
if self.config is not None and filename[1]:
self.config.set('export_dir', filename[1], section='export-csv')
self.config.save()
overwrite = None
if os.path.isfile(filename[0]):
if gutils.question(_("File exists. Do you want to overwrite it?"), self.parent_window):
overwrite = True
else:
overwrite = False
if overwrite or overwrite is None:
movies = self.get_query().execute()
writer = csv.writer(file(filename[0], 'w'), dialect=csv.excel)
# write column header row
writer.writerow(self.fields_to_export)
# write data rows
for movie in movies:
t = []
for s in self.exported_columns:
t.append(movie[s])
writer.writerow(t)
gutils.info(_("%s file has been created.") % "CSV", self.parent_window)
def __init__(self,title="Config",parent=None,config = None):
gtk.Dialog.__init__(self,title,parent, gtk.DIALOG_DESTROY_WITH_PARENT,
('Apply',gtk.RESPONSE_APPLY,'Cancel',gtk.RESPONSE_CANCEL))
self.set_keep_above(True)
self.set_position(gtk.WIN_POS_CENTER)
self.last_config= config # settings
self.atual_config = config
# setup all widgets
self._setup_widgets()
def _do_manual_select(self, filename):
radiolist = {}
for drv, radio in directory.DRV_TO_RADIO.items():
if not issubclass(radio, chirp_common.CloneModeRadio):
continue
radiolist["%s %s" % (radio.VENDOR, radio.MODEL)] = drv
lab = gtk.Label("""<b><big>Unable to detect model!</big></b>
If you think that it is valid, you can select a radio model below to
force an open attempt. If selecting the model manually works, please
file a bug on the website and attach your image. If selecting the model
does not work, it is likely that you are trying to open some other type
of file.
""")
lab.set_justify(gtk.JUSTIFY_FILL)
lab.set_line_wrap(True)
lab.set_use_markup(True)
lab.show()
choice = miscwidgets.make_choice(sorted(radiolist.keys()), False,
sorted(radiolist.keys())[0])
d = gtk.Dialog(title="Detection Failed",
buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
d.vbox.pack_start(lab, 0, 0, 0)
d.vbox.pack_start(choice, 0, 0, 0)
d.vbox.set_spacing(5)
choice.show()
d.set_default_size(400, 200)
# d.set_resizable(False)
r = d.run()
d.destroy()
if r != gtk.RESPONSE_OK:
return
try:
rc = directory.DRV_TO_RADIO[radiolist[choice.get_active_text()]]
return rc(filename)
except:
return
def __init__(self, **kwargs):
if "buttons" not in kwargs.keys():
kwargs["buttons"] = (gtk.STOCK_OK, gtk.RESPONSE_OK,
gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
self.__fields = {}
self.set_default_response(gtk.RESPONSE_OK)
gtk.Dialog.__init__(self, **kwargs)
def __init__(self, filename):
gtk.Dialog.__init__(self,
buttons=(_("Overwrite"), gtk.RESPONSE_OK,
gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
self.set_property("text", _("File Exists"))
text = \
_("The file {name} already exists. "
"Do you want to overwrite it?").format(name=filename)
self.format_secondary_text(text)
def gui_open_file(self, start_dir=None, types=[]):
"""Prompt the user to pick a file to open"""
import gtk
if not start_dir:
start_dir = self._last_dir
dlg = gtk.FileChooserDialog("Select a file to open",
None,
gtk.FILE_CHOOSER_ACTION_OPEN,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN, gtk.RESPONSE_OK))
if start_dir and os.path.isdir(start_dir):
dlg.set_current_folder(start_dir)
for desc, spec in types:
ff = gtk.FileFilter()
ff.set_name(desc)
ff.add_pattern(spec)
dlg.add_filter(ff)
res = dlg.run()
fname = dlg.get_filename()
dlg.destroy()
if res == gtk.RESPONSE_OK:
self._last_dir = os.path.dirname(fname)
return fname
else:
return None
def action_open_project(self, *arg):
global CURRENT_PROJECT
if arg[1][0] == 0 : # user project
dlg_title = _("Open project")
flt_name = _("NativeCAM projects")
dir_ = os.path.join(NCAM_DIR, CATALOGS_DIR, self.catalog_dir, PROJECTS_DIR)
else : # example
dlg_title = _("Open example project")
flt_name = _("NativeCAM example projects")
dir_ = os.path.join(NCAM_DIR, CATALOGS_DIR, self.catalog_dir, PROJECTS_DIR, EXAMPLES_DIR)
filechooserdialog = gtk.FileChooserDialog(dlg_title, None,
gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, \
gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
try:
filt = gtk.FileFilter()
filt.set_name(flt_name)
if arg[1][0] == 0 :
filt.add_mime_type("text/xml")
filt.add_pattern("*.xml")
else :
filt.add_pattern("*.*")
filechooserdialog.add_filter(filt)
filechooserdialog.set_current_folder(dir_)
filechooserdialog.set_keep_above(True)
filechooserdialog.set_transient_for(self.get_toplevel())
if filechooserdialog.run() == gtk.RESPONSE_OK:
filename = filechooserdialog.get_filename()
src_data = open(filename).read()
if src_data.find(XML_TAG) != 1 :
subprocess.call(["xdg-open '%s'" % filename], shell = True)
else :
xml = etree.fromstring(src_data)
xml = self.update_features(xml)
self.treestore_from_xml(xml)
self.expand_and_select(self.path_to_old_selected)
self.clear_undo()
CURRENT_PROJECT = filename
self.file_changed = False
self.action(xml)
finally:
self.display_proj_name()
filechooserdialog.destroy()
def file_chooser(title, action=None, buttons=None, name='', folder=os.path.expanduser('~'), picture=False, backup=False):
if mac:
if "SAVE" in str(action):
if backup:
status, filename, path = macutils.saveDialog(['zip'])
else:
status, filename, path = macutils.saveDialog()
else:
status, filename, path = macutils.openDialog(['zip'])
if status:
if filename.lower().endswith('.zip'):
pass
else:
filename = filename+".zip"
return filename, path
else:
return False
else:
dialog = gtk.FileChooserDialog(title=title, action=action, buttons=buttons)
dialog.set_default_response(gtk.RESPONSE_OK)
if name:
dialog.set_current_name(name)
if folder:
dialog.set_current_folder(folder)
mfilter = gtk.FileFilter()
if picture:
preview = gtk.Image()
dialog.set_preview_widget(preview)
dialog.connect("update-preview", update_preview_cb, preview)
mfilter.set_name(_("Images"))
mfilter.add_mime_type("image/png")
mfilter.add_mime_type("image/jpeg")
mfilter.add_mime_type("image/gif")
mfilter.add_pattern("*.[pP][nN][gG]")
mfilter.add_pattern("*.[jJ][pP][eE]?[gG]")
mfilter.add_pattern("*.[gG][iI][fF]")
mfilter.add_pattern("*.[tT][iI][fF]{1,2}")
mfilter.add_pattern("*.[xX][pP][mM]")
dialog.add_filter(mfilter)
elif backup:
mfilter.set_name(_('backups'))
mfilter.add_pattern('*.[zZ][iI][pP]')
mfilter.add_pattern('*.[gG][rR][iI]')
mfilter.add_pattern('*.[dD][bB]')
dialog.add_filter(mfilter)
mfilter = gtk.FileFilter()
mfilter.set_name(_("All files"))
mfilter.add_pattern("*")
dialog.add_filter(mfilter)
response = dialog.run()
if response == gtk.RESPONSE_OK:
filename = dialog.get_filename()
elif response == gtk.RESPONSE_CANCEL:
filename = None
else:
return False
path = dialog.get_current_folder()
dialog.destroy()
return filename, path
def _clicked(self, widget, event=None, data=None):
if widget == self.b_cancel:
self.gtk.get_widget('d_import').hide()
self.gtk.get_widget('d_import').response(gtk.RESPONSE_CANCEL)
if widget == self.b_back:
if self.nb_pages.get_current_page() == 1:
self.nb_pages.prev_page()
if widget == self.b_next:
if self.nb_pages.get_current_page() == 0:
self.nb_pages.get_nth_page(1).show()
self.nb_pages.next_page()
else:
if self.nb_pages.get_current_page() == 1:
# test if at least one field is assigned
if self.ls_assigned.get_iter_first() is not None:
# prepare tabelle for import
self.create_import_table()
# hide everything
self.gtk.get_widget('d_import').hide()
self.gtk.get_widget('d_import').response(gtk.RESPONSE_OK)
else:
gutils.info(_("Please assign at least one field first!"), self.gtk.get_widget('d_import'))
if widget == self.b_add:
iterator = self.ls_assigned.append()
self.ls_assigned.set_value(iterator, 0, "%s > %s" % (self.selected_csv, self.fields[self.selected_griffith]))
# add information for the import tabelle
self.ls_assigned.set_value(iterator, 1, self.selected_griffith)
self.ls_assigned.set_value(iterator, 2, str(self.csv_header.index(self.selected_csv)))
self.ls_griffith.remove(self.iter_griffith)
self.selected_griffith = None
self.b_add.set_sensitive(False)
if widget == self.b_del:
# re-add field to griffith
field_name = self.ls_assigned.get_value(self.iter_assigned, 1)
iterator = self.ls_griffith.append()
self.ls_griffith.set_value(iterator, 0, field_name)
self.ls_griffith.set_value(iterator, 1, self.fields[field_name])
# remove assigned row
self.ls_assigned.remove(self.iter_assigned)
self.b_del.set_sensitive(False)
def do_close(self, tab_child=None):
if tab_child:
eset = tab_child
else:
eset = self.get_current_editorset()
if not eset:
return False
if eset.is_modified():
dlg = miscwidgets.YesNoDialog(
title=_("Save Changes?"), parent=self,
buttons=(gtk.STOCK_YES, gtk.RESPONSE_YES,
gtk.STOCK_NO, gtk.RESPONSE_NO,
gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
dlg.set_text(_("File is modified, save changes before closing?"))
res = dlg.run()
dlg.destroy()
if res == gtk.RESPONSE_YES:
self.do_save(eset)
elif res != gtk.RESPONSE_NO:
raise ModifiedError()
eset.rthread.stop()
eset.rthread.join()
eset.prepare_close()
if eset.radio.pipe:
eset.radio.pipe.close()
if isinstance(eset.radio, chirp_common.LiveRadio):
action = self.menu_ag.get_action("openlive")
if action:
action.set_sensitive(True)
page = self.tabs.page_num(eset)
if page is not None:
self.tabs.remove_page(page)
return True
def do_columns(self):
eset = self.get_current_editorset()
driver = directory.get_driver(eset.rthread.radio.__class__)
radio_name = "%s %s %s" % (eset.rthread.radio.VENDOR,
eset.rthread.radio.MODEL,
eset.rthread.radio.VARIANT)
d = gtk.Dialog(title=_("Select Columns"),
parent=self,
buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
vbox = gtk.VBox()
vbox.show()
sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
sw.add_with_viewport(vbox)
sw.show()
d.vbox.pack_start(sw, 1, 1, 1)
d.set_size_request(-1, 300)
d.set_resizable(False)
labelstr = _("Visible columns for {radio}").format(radio=radio_name)
label = gtk.Label(labelstr)
label.show()
vbox.pack_start(label)
fields = []
memedit = eset.get_current_editor() # .editors["memedit"]
unsupported = memedit.get_unsupported_columns()
for colspec in memedit.cols:
if colspec[0].startswith("_"):
continue
elif colspec[0] in unsupported:
continue
label = colspec[0]
visible = memedit.get_column_visible(memedit.col(label))
widget = gtk.CheckButton(label)
widget.set_active(visible)
fields.append(widget)
vbox.pack_start(widget, 1, 1, 1)
widget.show()
res = d.run()
selected_columns = []
if res == gtk.RESPONSE_OK:
for widget in fields:
colnum = memedit.col(widget.get_label())
memedit.set_column_visible(colnum, widget.get_active())
if widget.get_active():
selected_columns.append(widget.get_label())
d.destroy()
CONF.set(driver, ",".join(selected_columns), "memedit_columns")
def __init__(self, src_radio, dst_radio, parent=None):
gtk.Dialog.__init__(self,
buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL),
title=self.TITLE,
parent=parent)
self.col_import = 0
self.col_nloc = 1
self.col_oloc = 2
self.col_name = 3
self.col_freq = 4
self.col_comm = 5
self.col_okay = 6
self.col_tmsg = 7
self.caps = {
self.col_import: self.ACTION,
self.col_nloc: _("To"),
self.col_oloc: _("From"),
self.col_name: _("Name"),
self.col_freq: _("Frequency"),
self.col_comm: _("Comment"),
}
self.tips = {
self.col_nloc: _("Location memory will be imported into"),
self.col_oloc: _("Location of memory in the file being imported"),
}
self.types = {
self.col_import: gobject.TYPE_BOOLEAN,
self.col_oloc: gobject.TYPE_INT,
self.col_nloc: gobject.TYPE_INT,
self.col_name: gobject.TYPE_STRING,
self.col_freq: gobject.TYPE_STRING,
self.col_comm: gobject.TYPE_STRING,
self.col_okay: gobject.TYPE_BOOLEAN,
self.col_tmsg: gobject.TYPE_STRING,
}
self.src_radio = src_radio
self.dst_radio = dst_radio
self.used_list = []
self.not_used_list = []
self.build_ui()
self.set_default_size(600, 400)
self.ww = WaitWindow(_("Preparing memory list..."), parent=parent)
self.ww.show()
self.ww.grind()
self.populate_list()
self.ww.hide()