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()
评论列表
文章目录