def on_open_clicked(widget, window, box):
dialog=gtk.FileChooserDialog(title="?? Flash ??", action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
swf_filter=gtk.FileFilter()
swf_filter.set_name("Flash ??(*.swf)")
swf_filter.add_pattern("*.[Ss][Ww][Ff]")
dialog.add_filter(swf_filter)
response = dialog.run()
if response == gtk.RESPONSE_OK:
filename = dialog.get_filename()
dialog.destroy()
window.remove(box)
play_args = pre_play(filename)
display_html(window, play_args)
dialog.destroy()
python类FileChooserDialog()的实例源码
def importFile(self, *args):
fn = gtk.FileChooserDialog(title="Import File",
action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
_filter = gtk.FileFilter()
_filter.set_name("C++ Files")
_filter.add_pattern("*.cpp")
_filter.add_pattern("*.h")
fn.add_filter(_filter)
_filter = gtk.FileFilter()
_filter.set_name("All Files")
_filter.add_pattern("*")
fn.add_filter(_filter)
fn.show()
resp = fn.run()
if resp == gtk.RESPONSE_OK:
text = open(fn.get_filename()).read()
self.addNotebookPage(os.path.basename(fn.get_filename()), text)
fn.destroy()
def _choose_mplayer_path(self, btn):
d = gtk.FileChooserDialog("Select MPlayer binary",
buttons=DEF_DIALOG_BUTTONS)
d.set_local_only(True)
d.set_select_multiple(False)
d.set_current_folder(catota.client.DEF_BIN_PATH)
p = self.player_path.get_text()
if p:
d.set_filename(p)
d.show()
r = d.run()
d.hide()
if r == gtk.RESPONSE_ACCEPT:
p = d.get_filename()
if p:
self.player_path.set_text(p)
# _choose_mplayer_path()
def on_open(self, action):
chooser = gtk.FileChooserDialog(title="Open dot File",
action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,
gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN,
gtk.RESPONSE_OK))
chooser.set_default_response(gtk.RESPONSE_OK)
chooser.set_current_folder(self.last_open_dir)
filter = gtk.FileFilter()
filter.set_name("Graphviz dot files")
filter.add_pattern("*.dot")
chooser.add_filter(filter)
filter = gtk.FileFilter()
filter.set_name("All files")
filter.add_pattern("*")
chooser.add_filter(filter)
if chooser.run() == gtk.RESPONSE_OK:
filename = chooser.get_filename()
self.last_open_dir = chooser.get_current_folder()
chooser.destroy()
self.open_file(filename)
else:
chooser.destroy()
def keep_list_dialog(self, w):
chooser = gtk.FileChooserDialog('Open..', None, gtk.FILE_CHOOSER_ACTION_OPEN,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
chooser.set_select_multiple(True)
chooser.set_default_response(gtk.RESPONSE_OK)
chooser.set_size_request(640,480)
filter = gtk.FileFilter()
filter.set_name("All Files")
filter.add_pattern("*")
chooser.add_filter(filter)
response = chooser.run()
if response == gtk.RESPONSE_OK:
self.keep_list = chooser.get_filenames()
chooser.destroy()
if self.keep_list is not None:
Thread(target=self._announce_keep_list).start()
def connectionLost(self, reason):
if len(self.buffer) == 0:
dialog = gtk.MessageDialog(self, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
gtk.MESSAGE_ERROR, gtk.BUTTONS_OK,
"An error occurred; file could not be retrieved.")
dialog.run()
dialog.destroy()
return
fd = gtk.FileChooserDialog(title=None, action=gtk.FILE_CHOOSER_ACTION_SAVE,
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_SAVE,gtk.RESPONSE_OK))
fd.set_default_response(gtk.RESPONSE_OK)
fd.set_current_name(self.filename)
response = fd.run()
if response == gtk.RESPONSE_OK:
destfilename = fd.get_filename()
f = open(destfilename, 'w')
f.write(self.buffer)
f.close()
fd.destroy()
def action_save_ngc(self, *arg) :
filechooserdialog = gtk.FileChooserDialog(_("Save as ngc..."), None,
gtk.FILE_CHOOSER_ACTION_SAVE,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OK, gtk.RESPONSE_OK))
try :
filt = gtk.FileFilter()
filt.set_name("NGC")
filt.add_mime_type("text/ngc")
filt.add_pattern("*.ngc")
filechooserdialog.add_filter(filt)
filechooserdialog.set_current_folder(NGC_DIR)
filechooserdialog.set_keep_above(True)
filechooserdialog.set_transient_for(self.get_toplevel())
if filechooserdialog.run() == gtk.RESPONSE_OK:
gcode = self.to_gcode()
filename = filechooserdialog.get_filename()
if filename[-4] != ".ngc" not in filename :
filename += ".ngc"
with open(filename, "wb") as f:
f.write(self.to_gcode())
f.close()
finally :
filechooserdialog.destroy()
def action_loadCfg(self, *arg) :
filechooserdialog = gtk.FileChooserDialog(_("Open a cfg file"), 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(_("Config files"))
filt.add_mime_type("text/xml")
filt.add_pattern("*.cfg")
filechooserdialog.add_filter(filt)
filechooserdialog.set_current_folder(os.path.join(NCAM_DIR, CUSTOM_DIR))
filechooserdialog.set_keep_above(True)
filechooserdialog.set_transient_for(self.get_toplevel())
if filechooserdialog.run() == gtk.RESPONSE_OK:
self.add_feature(None, filechooserdialog.get_filename())
finally :
filechooserdialog.destroy()
def on_open(self, action):
chooser = gtk.FileChooserDialog(title="Open dot File",
action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,
gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN,
gtk.RESPONSE_OK))
chooser.set_default_response(gtk.RESPONSE_OK)
filter = gtk.FileFilter()
filter.set_name("Graphviz dot files")
filter.add_pattern("*.dot")
chooser.add_filter(filter)
filter = gtk.FileFilter()
filter.set_name("All files")
filter.add_pattern("*")
chooser.add_filter(filter)
if chooser.run() == gtk.RESPONSE_OK:
filename = chooser.get_filename()
chooser.destroy()
self.open_file(filename)
else:
chooser.destroy()
def on_open(self, action):
chooser = gtk.FileChooserDialog(title="Open dot File",
action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,
gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN,
gtk.RESPONSE_OK))
chooser.set_default_response(gtk.RESPONSE_OK)
chooser.set_current_folder(self.last_open_dir)
filter = gtk.FileFilter()
filter.set_name("Graphviz dot files")
filter.add_pattern("*.dot")
chooser.add_filter(filter)
filter = gtk.FileFilter()
filter.set_name("All files")
filter.add_pattern("*")
chooser.add_filter(filter)
if chooser.run() == gtk.RESPONSE_OK:
filename = chooser.get_filename()
self.last_open_dir = chooser.get_current_folder()
chooser.destroy()
self.open_file(filename)
else:
chooser.destroy()
def on_open(self, action):
chooser = gtk.FileChooserDialog(title="Open dot File",
action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,
gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN,
gtk.RESPONSE_OK))
chooser.set_default_response(gtk.RESPONSE_OK)
chooser.set_current_folder(self.last_open_dir)
filter = gtk.FileFilter()
filter.set_name("Graphviz dot files")
filter.add_pattern("*.dot")
chooser.add_filter(filter)
filter = gtk.FileFilter()
filter.set_name("All files")
filter.add_pattern("*")
chooser.add_filter(filter)
if chooser.run() == gtk.RESPONSE_OK:
filename = chooser.get_filename()
self.last_open_dir = chooser.get_current_folder()
chooser.destroy()
self.open_file(filename)
else:
chooser.destroy()
def on_open(self, action):
chooser = gtk.FileChooserDialog(title="Open dot File",
action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,
gtk.RESPONSE_CANCEL,
gtk.STOCK_OPEN,
gtk.RESPONSE_OK))
chooser.set_default_response(gtk.RESPONSE_OK)
filter = gtk.FileFilter()
filter.set_name("Graphviz dot files")
filter.add_pattern("*.dot")
chooser.add_filter(filter)
filter = gtk.FileFilter()
filter.set_name("All files")
filter.add_pattern("*")
chooser.add_filter(filter)
if chooser.run() == gtk.RESPONSE_OK:
filename = chooser.get_filename()
chooser.destroy()
self.open_file(filename)
else:
chooser.destroy()
gnome_connection_manager.py 文件源码
项目:gnome-connection-manager
作者: mjun
项目源码
文件源码
阅读 26
收藏 0
点赞 0
评论 0
def show_open_dialog(parent, title, action):
dlg = gtk.FileChooserDialog(title=title, parent=parent, action=action)
dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
dlg.add_button(gtk.STOCK_SAVE if action==gtk.FILE_CHOOSER_ACTION_SAVE else gtk.STOCK_OPEN, gtk.RESPONSE_OK)
dlg.set_do_overwrite_confirmation(True)
if not hasattr(parent,'lastPath'):
parent.lastPath = os.path.expanduser("~")
dlg.set_current_folder( parent.lastPath )
if dlg.run() == gtk.RESPONSE_OK:
filename = dlg.get_filename()
parent.lastPath = os.path.dirname(filename)
else:
filename = None
dlg.destroy()
return filename
gnome_connection_manager.py 文件源码
项目:gnome-connection-manager
作者: mjun
项目源码
文件源码
阅读 19
收藏 0
点赞 0
评论 0
def show_save_buffer(self, terminal):
dlg = gtk.FileChooserDialog(title=_("Guardar como"), parent=self.wMain, action=gtk.FILE_CHOOSER_ACTION_SAVE)
dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
dlg.add_button(gtk.STOCK_SAVE, gtk.RESPONSE_OK)
dlg.set_do_overwrite_confirmation(True)
dlg.set_current_name( os.path.basename("gcm-buffer-%s.txt" % (time.strftime("%Y%m%d%H%M%S")) ))
if not hasattr(self,'lastPath'):
self.lastPath = os.path.expanduser("~")
dlg.set_current_folder( self.lastPath )
if dlg.run() == gtk.RESPONSE_OK:
filename = dlg.get_filename()
self.lastPath = os.path.dirname(filename)
try:
buff = terminal.get_text_range(0, 0, terminal.get_property('scrollback-lines')-1, terminal.get_column_count()-1, lambda *args: True, None, None ).strip()
f = open(filename, "w")
f.write(buff)
f.close()
except:
dlg.destroy()
msgbox("%s: %s" % (_("No se puede abrir archivo para escritura"), filename) )
return
dlg.destroy()
def gui_select_dir(self, start_dir=None):
"""Prompt the user to pick a directory"""
import gtk
if not start_dir:
start_dir = self._last_dir
dlg = gtk.FileChooserDialog("Choose folder",
None,
gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_SAVE, gtk.RESPONSE_OK))
if start_dir and os.path.isdir(start_dir):
dlg.set_current_folder(start_dir)
res = dlg.run()
fname = dlg.get_filename()
dlg.destroy()
if res == gtk.RESPONSE_OK and os.path.isdir(fname):
self._last_dir = fname
return fname
else:
return None
def __output_png_cb(self, widget):
dialog = gtk.FileChooserDialog("Output Png", self.__window,
gtk.FILE_CHOOSER_ACTION_SAVE, ("Save", 1))
self.__dialog = dialog
dialog.set_default_response(1)
dialog.connect("response", self.__dialog_response_cb)
dialog.show()
return
def _get_export_file_name(self):
sel = gtk.FileChooserDialog("Save...", self.canvas.get_toplevel(),
gtk.FILE_CHOOSER_ACTION_SAVE,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_SAVE, gtk.RESPONSE_OK))
sel.set_default_response(gtk.RESPONSE_OK)
sel.set_local_only(True)
sel.set_do_overwrite_confirmation(True)
sel.set_current_name("Unnamed.pdf")
filter = gtk.FileFilter()
filter.set_name("Embedded PostScript")
filter.add_mime_type("image/x-eps")
sel.add_filter(filter)
filter = gtk.FileFilter()
filter.set_name("Portable Document Graphics")
filter.add_mime_type("application/pdf")
sel.add_filter(filter)
filter = gtk.FileFilter()
filter.set_name("Scalable Vector Graphics")
filter.add_mime_type("image/svg+xml")
sel.add_filter(filter)
resp = sel.run()
if resp != gtk.RESPONSE_OK:
sel.destroy()
return None
file_name = sel.get_filename()
sel.destroy()
return file_name
def select_folder(self, event):
dialog_select_folder = gtk.FileChooserDialog()
dialog_select_folder.set_title("Export To")
dialog_select_folder.set_transient_for(self)
dialog_select_folder.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
dialog_select_folder.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)
dialog_select_folder.set_current_folder(self.entry_selected_folder.get_text())
response = dialog_select_folder.run()
if response == gtk.RESPONSE_OK:
self.entry_selected_folder.set_text(dialog_select_folder.get_filename())
dialog_select_folder.destroy()
def select_file(self, event, entry_filepath):
dialog_select_folder = gtk.FileChooserDialog()
dialog_select_folder.set_title("Select File")
dialog_select_folder.set_transient_for(self)
dialog_select_folder.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)
dialog_select_folder.set_filename(entry_filepath.get_text())
response = dialog_select_folder.run()
if response == gtk.RESPONSE_OK:
entry_filepath.set_text(dialog_select_folder.get_filename())
dialog_select_folder.destroy()
def select_folder(self, event, entry_filepath):
dialog_select_folder = gtk.FileChooserDialog()
dialog_select_folder.set_title("Select Folder")
dialog_select_folder.set_transient_for(self)
dialog_select_folder.set_action(gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
dialog_select_folder.add_buttons(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK)
dialog_select_folder.set_current_folder(entry_filepath.get_text())
response = dialog_select_folder.run()
if response == gtk.RESPONSE_OK:
entry_filepath.set_text(dialog_select_folder.get_filename())
dialog_select_folder.destroy()
def openFile(self, *args):
if (not self.getModified()) or self.ask("There are unsaved files.\nContinue?"):
fn = gtk.FileChooserDialog(title="Save File",
action=gtk.FILE_CHOOSER_ACTION_OPEN,
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
_filter = gtk.FileFilter()
_filter.set_name("Micro:Pi Files")
_filter.add_pattern("*.%s" % SETTINGS['fileExtention'])
fn.add_filter(_filter)
_filter = gtk.FileFilter()
_filter.set_name("All Files")
_filter.add_pattern("*")
fn.add_filter(_filter)
fn.show()
resp = fn.run()
if resp == gtk.RESPONSE_OK:
try:
#text = open(fn.get_filename()).read()
#try:
#d = text.replace("\n", "")
#d = base64.b64decode(d)
#data = pickle.loads(d)
#except:
#data = pickle.loads(text)
data = self.loadFilesFromFile(fn.get_filename())
mw = MainWin(data)
yes = True
mw.saveLocation = fn.get_filename()
mw.setSaved()
OPENWINDOWS.append(mw)
except Exception as e:
yes = False
fn.destroy()
if resp == gtk.RESPONSE_OK and not yes:
self.message("File is not a Micro:Pi File")
def saveAs(self, *args):
self.saveInternalOpenFiles()
fn = gtk.FileChooserDialog(title="Save File As",
action=gtk.FILE_CHOOSER_ACTION_SAVE,
buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_SAVE,gtk.RESPONSE_OK))
_filter = gtk.FileFilter()
_filter.set_name("Micro:Pi Files")
_filter.add_pattern("*.%s" % SETTINGS['fileExtention'])
fn.add_filter(_filter)
_filter = gtk.FileFilter()
_filter.set_name("All Files")
_filter.add_pattern("*")
fn.add_filter(_filter)
fn.show()
resp = fn.run()
#files = []
#for f in self.notebook:
#fin = self.notebook.get_tab_label(f).get_children()[0].get_label()
#tb = f.get_child().get_buffer()
#txt = tb.get_text(*tb.get_bounds())
#files.append([fin, txt])
#data = base64.b64encode(pickle.dumps(files))
#data = "".join(data[i:i+64]+"\n" for i in xrange(0, len(data), 64))
if resp == gtk.RESPONSE_OK:
fp = fn.get_filename()
if fp[-(len(SETTINGS["fileExtention"])+1):] != "." + SETTINGS["fileExtention"]:
fp += "." + SETTINGS["fileExtention"]
#open(fp, 'w').write(data)
self.saveLocation = fp
self.save()
self.setSaved()
fn.destroy()
def openFile(self, widget=None, default=False):
"""Reads from a config file. If default=True, open the tint2 default config."""
self.new()
if not default:
chooser = gtk.FileChooserDialog("Open Config File", self, gtk.FILE_CHOOSER_ACTION_OPEN, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_OPEN, gtk.RESPONSE_OK))
chooser.set_default_response(gtk.RESPONSE_OK)
if self.curDir != None:
chooser.set_current_folder(self.curDir)
chooserFilter = gtk.FileFilter()
chooserFilter.set_name("All files")
chooserFilter.add_pattern("*")
chooser.add_filter(chooserFilter)
chooser.show()
response = chooser.run()
if response == gtk.RESPONSE_OK:
self.filename = chooser.get_filename()
self.curDir = os.path.dirname(self.filename)
else:
chooser.destroy()
return
chooser.destroy()
else:
self.filename = os.path.expandvars("$HOME/.config/tint2/tint2rc")
self.curDir = os.path.expandvars("$HOME/.config/tint2")
self.readTint2Config()
self.generateConfig()
self.updateStatusBar()
def saveAs(self, widget=None, event=None):
"""Prompts the user to select a file and then saves the generated config file."""
self.generateConfig()
chooser = gtk.FileChooserDialog("Save Config File As...", self, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK))
chooser.set_default_response(gtk.RESPONSE_OK)
if self.curDir != None:
chooser.set_current_folder(self.curDir)
chooserFilter = gtk.FileFilter()
chooserFilter.set_name("All files")
chooserFilter.add_pattern("*")
chooser.add_filter(chooserFilter)
chooser.show()
response = chooser.run()
if response == gtk.RESPONSE_OK:
self.filename = chooser.get_filename()
if os.path.exists(self.filename):
overwrite = confirmDialog(self, "This file already exists. Overwrite this file?")
if overwrite == gtk.RESPONSE_YES:
self.writeFile()
chooser.destroy()
return True
else:
self.filename = None
chooser.destroy()
return False
else:
self.writeFile()
chooser.destroy()
return True
else:
self.filename = None
chooser.destroy()
return False
def browseDirectory(self, sender, dirPathFunc):
fd = gtk.FileChooserDialog(title='Choose directory to share...', action=gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER, buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OK,gtk.RESPONSE_OK))
fd.set_default_response(gtk.RESPONSE_OK)
path = dirPathFunc().strip()
if len(path):
fd.set_current_folder(path)
response = fd.run()
if response == gtk.RESPONSE_OK:
self.entryDir.set_text(fd.get_filename())
fd.destroy()
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 action_save_project(self, *arg) :
global CURRENT_PROJECT
filechooserdialog = gtk.FileChooserDialog(_("Save project as..."), None,
gtk.FILE_CHOOSER_ACTION_SAVE, (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)
d, fname = os.path.split(CURRENT_PROJECT)
filechooserdialog.set_current_folder(os.path.join(NCAM_DIR, CATALOGS_DIR, self.catalog_dir, PROJECTS_DIR))
filechooserdialog.set_current_name(fname)
filechooserdialog.set_do_overwrite_confirmation(True)
filechooserdialog.set_keep_above(True)
filechooserdialog.set_transient_for(self.get_toplevel())
if filechooserdialog.run() == gtk.RESPONSE_OK:
xml = self.treestore_to_xml()
CURRENT_PROJECT = filechooserdialog.get_filename()
if CURRENT_PROJECT[-4] != ".xml" not in CURRENT_PROJECT :
CURRENT_PROJECT += ".xml"
etree.ElementTree(xml).write(CURRENT_PROJECT, pretty_print = True)
self.file_changed = False
finally:
self.display_proj_name()
filechooserdialog.destroy()
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 gui_save_file(self, start_dir=None, default_name=None, types=[]):
"""Prompt the user to pick a filename to save"""
import gtk
if not start_dir:
start_dir = self._last_dir
dlg = gtk.FileChooserDialog("Save file as",
None,
gtk.FILE_CHOOSER_ACTION_SAVE,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_SAVE, gtk.RESPONSE_OK))
if start_dir and os.path.isdir(start_dir):
dlg.set_current_folder(start_dir)
if default_name:
dlg.set_current_name(default_name)
extensions = {}
for desc, ext in types:
ff = gtk.FileFilter()
ff.set_name(desc)
ff.add_pattern("*.%s" % ext)
extensions[desc] = ext
dlg.add_filter(ff)
res = dlg.run()
fname = dlg.get_filename()
ext = extensions[dlg.get_filter().get_name()]
if fname and not fname.endswith(".%s" % ext):
fname = "%s.%s" % (fname, ext)
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()