def tree(flat_simulation_list, program_list, tree_items, base_dir, level, path, var_to_change, value_to_change): param_list = scan_items_get_list() print level, tree_items i = tree_items[1][level] words = i.split() pass_var_to_change = var_to_change + " " + str(scan_items_index_item(tree_items[0][level])) print pass_var_to_change for ii in words: cur_dir = os.path.join(path, ii) if not os.path.exists(cur_dir): os.makedirs(cur_dir) pass_value_to_change = value_to_change + " " + ii if (level + 1) < len(tree_items[0]): tree( flat_simulation_list, program_list, tree_items, base_dir, level + 1, cur_dir, pass_var_to_change, pass_value_to_change, ) else: flat_simulation_list.append(cur_dir) new_values = pass_value_to_change.split() pos = pass_var_to_change.split() config_file = os.path.join(cur_dir, "sim.opvdm") if os.path.isfile(config_file) == False: # Don't build a simulation over something that exists already copy_simulation(base_dir, cur_dir) os.chdir(cur_dir) for i in range(0, len(pos)): inp_update_token_value( param_list[int(pos[i])].filename, param_list[int(pos[i])].token, new_values[i], param_list[int(pos[i])].line, ) tree_apply_constant(program_list) tree_apply_python_script(program_list) tree_apply_mirror(program_list) inp_update_token_value("materialsdir.inp", "#materialsdir", os.path.join(base_dir, "materials"), 1) inp_update_token_value("dump.inp", "#plot", "0", 1) if level == 0: f = open(os.path.join(cur_dir, "scan.inp"), "w") f.write("data") f.close()
def update(self): self.tab.clear() root = QTreeWidgetItem(self.tab, [_("Simulation parameters")]) root.setExpanded(True) param_list=scan_items_get_list() i=0 for item in range(0, len(param_list)): div_str=param_list[item].name.replace("\\", "/") div_str=div_str.split("/") piter=None self.make_entry(root,div_str)
def tree_apply_constant(program_list): param_list = scan_items_get_list() for i in range(0, len(program_list)): if program_list[i][2] == "constant": pos_mirror_dest = scan_items_index_item(program_list[i][0]) inp_update_token_value( param_list[pos_mirror_dest].filename, param_list[pos_mirror_dest].token, program_list[i][1], param_list[pos_mirror_dest].line, )
def update(self): old="" self.treestore.clear() param_list=scan_items_get_list() for item in range(0, len(param_list)): split=os.path.split(param_list[item].name) main=split[0] sub=split[1] if main!=old: piter = self.treestore.append(None, [main]) old=main if main==old: self.treestore.append(piter, [sub])
def tree_apply_python_script(program_list): param_list = scan_items_get_list() for i in range(0, len(program_list)): if program_list[i][2] == "python_code": pos_mirror_dest = scan_items_index_item(program_list[i][0]) ret = "" exec (program_list[i][1]) inp_update_token_value( param_list[pos_mirror_dest].filename, param_list[pos_mirror_dest].token, ret, param_list[pos_mirror_dest].line, ) print os.getcwd() print "Replace", param_list[pos_mirror_dest].filename, param_list[pos_mirror_dest].token, program_list[i][ 1 ], ret
def copy_simulation(base_dir, cur_dir): param_list = scan_items_get_list() cache = int(inp_get_token_value("server.inp", "#use_cache")) if cache == True: cache_path = get_cache_path(cur_dir) d = os.path.dirname(cache_path) if os.path.isdir(cache_path) == True: shutil.rmtree(cache_path) # if there is something in the cache with this name remove it if not os.path.exists(cache_path): os.makedirs(cache_path) # make the folder in the cache if os.path.isdir(cur_dir): os.rmdir(cur_dir) # if the target exists remove it print cache_path, cur_dir os.symlink(cache_path, cur_dir) # copy fit dirs fit_file = os.path.join(base_dir, "fit.inp") if os.path.isfile(fit_file): fit_array = inp_get_token_array(fit_file, "#fitnames") do_fit = inp_get_token_array(fit_file, "#do_fit") if (int(fit_array[0]) > 0) and (do_fit == 1): exp_dir = os.path.join(cur_dir, "exp") if not os.path.exists(exp_dir): os.makedirs(exp_dir) for i in range(1, len(fit_array)): shutil.copytree(os.path.join(base_dir, "exp", fit_array[i]), os.path.join(exp_dir, fit_array[i])) f_list = glob.iglob(os.path.join(base_dir, "*.inp")) for inpfile in f_list: shutil.copy(inpfile, cur_dir) shutil.copy(os.path.join(base_dir, "sim.opvdm"), cur_dir)
def tree_apply_mirror(program_list): param_list = scan_items_get_list() for i in range(0, len(program_list)): for ii in range(0, len(program_list)): if program_list[i][2] == program_list[ii][0]: # I have found two matching IDs pos_mirror_src = scan_items_index_item(program_list[i][2]) pos_mirror_dest = scan_items_index_item(program_list[i][0]) src_value = inp_get_token_value(param_list[pos_mirror_src].filename, param_list[pos_mirror_src].token) # pull out of the file the value if program_list[i][1] != "mirror": # find value in list orig_list = program_list[i][1].split() look_up = program_list[ii][1].split() src_value = orig_list[look_up.index(src_value.rstrip())] inp_update_token_value( param_list[pos_mirror_dest].filename, param_list[pos_mirror_dest].token, src_value, param_list[pos_mirror_dest].line, )
def __init__(self, myserver, status_bar, scan_root_dir, sim_name): QWidget.__init__(self) self.main_vbox = QVBoxLayout() self.tokens = tokens() self.sim_name = sim_name self.myserver = myserver self.status_bar = status_bar self.param_list = scan_items_get_list() #self.tab_label=tab_label self.sim_dir = os.path.join(scan_root_dir, sim_name) self.select_param_window = select_param() self.select_param_window.set_save_function(self.save_combo) toolbar = QToolBar() toolbar.setIconSize(QSize(32, 32)) self.tb_add = QAction(QIcon_load("list-add"), _("Add parameter to scan"), self) self.tb_add.triggered.connect(self.callback_add_item) toolbar.addAction(self.tb_add) self.tb_minus = QAction(QIcon_load("list-remove"), _("Delete item"), self) self.tb_minus.triggered.connect(self.callback_delete_item) toolbar.addAction(self.tb_minus) self.tb_down = QAction(QIcon_load("go-down"), _("Move down"), self) self.tb_down.triggered.connect(self.callback_move_down) toolbar.addAction(self.tb_down) self.tb_up = QAction(QIcon_load("go-up"), _("Move up"), self) self.tb_up.triggered.connect(self.callback_move_up) toolbar.addAction(self.tb_up) #self.tb_notes = QAction(QIcon_load("go-down.png"), _("Notes"), self) #self.tb_notes.triggered.connect(self.callback_notes) #toolbar.addAction(self.tb_notes) #self.tb_notes = QAction(QIcon_load("select"), _("Select parameter to change"), self) #self.tb_notes.triggered.connect(self.callback_show_list) #toolbar.addAction(self.tb_notes) self.tb_command = QAction(QIcon_load("utilities-terminal"), _("Insert python command"), self) self.tb_command.triggered.connect(self.callback_insert_command) toolbar.addAction(self.tb_command) self.main_vbox.addWidget(toolbar) self.tab = QTableWidget() #self.tab.resizeColumnsToContents() self.tab.verticalHeader().setVisible(False) self.select_param_window.init(self.tab) self.tab.setColumnCount(5) #if enable_betafeatures()==False: # self.tab.setColumnHidden(0, True) # self.tab.setColumnHidden(1, True) self.tab.setSelectionBehavior(QAbstractItemView.SelectRows) self.tab.setColumnWidth(2, 300) self.tab.setColumnWidth(3, 200) self.load() self.tab.cellChanged.connect(self.tab_changed) self.main_vbox.addWidget(self.tab) self.popMenu = QMenu(self) #self.mp_show_list=QAction(_("Select parameter to scan"), self) #self.mp_show_list.triggered.connect(self.callback_show_list) #self.popMenu.addAction(self.mp_show_list) self.popMenu.addSeparator() self.mp_delete = QAction(_("Delete item"), self) self.mp_delete.triggered.connect(self.callback_delete_item) self.popMenu.addAction(self.mp_delete) self.mp_copy = QAction(_("Copy"), self) self.mp_copy.triggered.connect(self.callback_copy_item) self.popMenu.addAction(self.mp_copy) self.mp_paste = QAction(_("Paste"), self) self.mp_paste.triggered.connect(self.callback_paste_item) self.popMenu.addAction(self.mp_paste) self.popMenu.addSeparator() self.mp_add = QAction(_("Add item"), self) self.mp_add.triggered.connect(self.callback_add_item) self.popMenu.addAction(self.mp_add) self.mp_down = QAction(_("Move down"), self) self.mp_down.triggered.connect(self.callback_move_down) self.popMenu.addAction(self.mp_down) self.mp_down = QAction(_("Move down"), self) self.mp_down.triggered.connect(self.callback_move_down) self.popMenu.addAction(self.mp_down) self.popMenu.addSeparator() self.setMinimumSize(700, 500) self.setLayout(self.main_vbox)
def init(self,myserver,tooltips,status_bar,context_id,tab_label,scan_root_dir,sim_name): self.tokens=tokens() self.config=config() self.sim_name=sim_name self.clipboard = gtk.clipboard_get(gtk.gdk.SELECTION_CLIPBOARD) self.popup_menu = gtk.Menu() menu_item = gtk.MenuItem(_("Select parameter to scan")) menu_item.connect("activate", self.callback_show_list) self.popup_menu.append(menu_item) self.popup_menu.show_all() menu_item = gtk.SeparatorMenuItem() self.popup_menu.append(menu_item) self.popup_menu.show_all() menu_item = gtk.MenuItem(_("Delete item")) menu_item.connect("activate", self.callback_delete_item) self.popup_menu.append(menu_item) self.popup_menu.show_all() menu_item = gtk.MenuItem(_("Add item")) menu_item.connect("activate", self.callback_add_item) self.popup_menu.append(menu_item) self.popup_menu.show_all() menu_item = gtk.MenuItem(_("Move down")) menu_item.connect("activate", self.callback_move_down) self.popup_menu.append(menu_item) self.popup_menu.show_all() menu_item = gtk.SeparatorMenuItem() self.popup_menu.append(menu_item) self.popup_menu.show_all() menu_item = gtk.MenuItem(_("Copy")) menu_item.connect("activate", self.callback_copy_item) self.popup_menu.append(menu_item) menu_item = gtk.MenuItem(_("Paste")) menu_item.connect("activate", self.callback_paste_item) self.popup_menu.append(menu_item) menu_item = gtk.MenuItem(_("Delete")) menu_item.connect("activate", self.callback_delete_item) self.popup_menu.append(menu_item) self.popup_menu.show_all() self.myserver=myserver self.tooltips=tooltips self.status_bar=status_bar self.context_id=context_id self.param_list=scan_items_get_list() self.tab_label=tab_label self.liststore_op_type = gtk.ListStore(str) self.sim_dir=os.path.join(scan_root_dir,sim_name) self.tab_name=os.path.basename(os.path.normpath(self.sim_dir)) self.status_bar.push(self.context_id, self.sim_dir) self.set_tab_caption(self.tab_name) toolbar = gtk.Toolbar() toolbar.set_style(gtk.TOOLBAR_ICONS) toolbar.set_size_request(-1, 50) pos=0 image = gtk.Image() image.set_from_file(os.path.join(get_image_file_path(),"add.png")) add = gtk.ToolButton(image) add.connect("clicked", self.callback_add_item) self.tooltips.set_tip(add, _("Add parameter to scan")) toolbar.insert(add, pos) pos=pos+1 remove = gtk.ToolButton(gtk.STOCK_CLEAR) remove.connect("clicked", self.callback_delete_item) self.tooltips.set_tip(remove, _("Delete item")) toolbar.insert(remove, pos) pos=pos+1 move = gtk.ToolButton(gtk.STOCK_GO_DOWN) move.connect("clicked", self.callback_move_down) self.tooltips.set_tip(move, _("Move down")) toolbar.insert(move, pos) pos=pos+1 notes = gtk.ToolButton(gtk.STOCK_EDIT) notes.connect("clicked", self.callback_notes) self.tooltips.set_tip(notes, _("Edit notes")) toolbar.insert(notes, pos) pos=pos+1 image = gtk.Image() image.set_from_file(os.path.join(get_image_file_path(),"select.png")) quick = gtk.ToolButton(image) quick.connect("clicked", self.callback_show_list) self.tooltips.set_tip(quick, _("Select parameter to change")) toolbar.insert(quick, pos) pos=pos+1 sep = gtk.SeparatorToolItem() sep.set_draw(True) sep.set_expand(False) toolbar.insert(sep, pos) pos=pos+1 image = gtk.Image() image.set_from_file(os.path.join(get_image_file_path(),"forward.png")) tb_simulate = gtk.ToolButton(image) tb_simulate.connect("clicked", self.callback_run_simulation) self.tooltips.set_tip(tb_simulate, _("Run simulation")) toolbar.insert(tb_simulate, pos) pos=pos+1 image = gtk.Image() image.set_from_file(os.path.join(get_image_file_path(),"pause.png")) self.stop = gtk.ToolButton(image) self.tooltips.set_tip(self.stop, _("Stop the simulation")) self.stop.connect("clicked", self.callback_stop_simulation) toolbar.insert(self.stop, pos) pos=pos+1 sep = gtk.SeparatorToolItem() sep.set_draw(True) sep.set_expand(False) toolbar.insert(sep, pos) pos=pos+1 image = gtk.Image() image.set_from_file(os.path.join(get_image_file_path(),"plot.png")) plot_select = gtk.MenuToolButton(image,"hello") plot_select.connect("clicked", self.callback_gen_plot_command) self.tooltips.set_tip(plot_select, _("Find a file to plot")) self.plotted_graphs = used_files_menu() self.plotted_graphs.init(self.sim_dir,self.callback_last_menu_click) plot_select.set_menu(self.plotted_graphs.menu) toolbar.insert(plot_select, pos) pos=pos+1 image = gtk.Image() image.set_from_file(self.icon_theme.lookup_icon("view-refresh", 32, 0).get_filename()) self.plot_open = gtk.ToolButton(image) self.plot_open.connect("clicked", self.callback_plot_results) self.plot_open.set_sensitive(False) self.tooltips.set_tip(self.plot_open, "Replot the graph") toolbar.insert(self.plot_open, pos) pos=pos+1 image = gtk.Image() image.set_from_file(os.path.join(get_image_file_path(),"plot_time.png")) self.examine = gtk.ToolButton(image) self.tooltips.set_tip(self.examine, _("Examine results in time domain")) self.examine.connect("clicked", self.callback_examine) toolbar.insert(self.examine, pos) pos=pos+1 sep = gtk.SeparatorToolItem() sep.set_draw(True) sep.set_expand(False) toolbar.insert(sep, pos) pos=pos+1 image = gtk.Image() image.set_from_file(os.path.join(get_image_file_path(),"command.png")) insert_command = gtk.ToolButton(image) insert_command.connect("clicked", self.callback_insert_command) self.tooltips.set_tip(insert_command, _("Insert python command")) toolbar.insert(insert_command, pos) pos=pos+1 #reopen_xy = gtk.ToolButton(gtk.STOCK_SELECT_COLOR) #reopen_xy.connect("clicked", self.callback_reopen_xy_window) #self.tooltips.set_tip(reopen_xy, "Reopen xy window selector") #toolbar.insert(reopen_xy, pos) #pos=pos+1 toolbar.show_all() self.pack_start(toolbar, False, False, 0)#.add() liststore_manufacturers = gtk.ListStore(str) for i in range(0,len(self.param_list)): liststore_manufacturers.append([self.param_list[i].name]) self.liststore_combobox = gtk.ListStore(str, str, str, bool) self.config.load(self.sim_dir) self.visible=self.config.get_value("#visible",True) self.reload_liststore() self.treeview = gtk.TreeView(self.liststore_combobox) self.treeview.get_selection().set_mode(gtk.SELECTION_MULTIPLE) self.treeview.connect("button-press-event", self.on_treeview_button_press_event) self.select_param_window=select_param() self.select_param_window.init(self.liststore_combobox,self.treeview) column_text = gtk.TreeViewColumn(_("Values")) column_combo = gtk.TreeViewColumn(_("Parameter to change")) column_mirror = gtk.TreeViewColumn(_("Opperation")) cellrenderer_combo = gtk.CellRendererCombo() cellrenderer_combo.set_property("editable", True) cellrenderer_combo.set_property("model", liststore_manufacturers) cellrenderer_combo.set_property("text-column", 0) cellrenderer_combo.connect("edited", self.combo_changed, self.liststore_combobox) column_combo.pack_start(cellrenderer_combo, False) column_combo.set_min_width(240) column_combo.add_attribute(cellrenderer_combo, "text", 0) cellrenderer_mirror = gtk.CellRendererCombo() cellrenderer_mirror.set_property("editable", True) self.rebuild_liststore_op_type() cellrenderer_mirror.set_property("model", self.liststore_op_type) cellrenderer_mirror.set_property("text-column", 0) cellrenderer_mirror.connect("edited", self.combo_mirror_changed, self.liststore_combobox) column_mirror.pack_start(cellrenderer_mirror, True) column_mirror.set_min_width(200) column_mirror.add_attribute(cellrenderer_mirror, "text", 2) cellrenderer_text = gtk.CellRendererText() cellrenderer_text.set_property("editable", True) cellrenderer_text.connect("edited", self.text_changed, self.liststore_combobox) cellrenderer_text.props.wrap_width = 400 cellrenderer_text.props.wrap_mode = gtk.WRAP_WORD column_text.pack_start(cellrenderer_text, False) column_text.set_min_width(400) column_text.add_attribute(cellrenderer_text, "text", 1) renderer_enable = gtk.CellRendererToggle() #renderer_enable.set_property("activatable", True) renderer_enable.set_activatable(True) renderer_enable.connect("toggled", self.toggled_cb, self.liststore_combobox) column_enable = gtk.TreeViewColumn(_("Enabled"),renderer_enable) column_enable.set_max_width(50) column_enable.set_visible(False) column_enable.add_attribute(renderer_enable, "active", 3) column_enable.pack_start(renderer_enable, False) self.treeview.append_column(column_combo) self.treeview.append_column(column_text) self.treeview.append_column(column_mirror) self.treeview.append_column(column_enable) #window.connect("destroy", lambda w: gtk.main_quit()) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS) scrolled_window.add(self.treeview) scrolled_window.set_size_request(1000, 500) #scrolled_window.set_min_content_height(200) self.pack_start(scrolled_window, True, True, 0) self.treeview.show() self.show_all() if self.visible==False: self.hide()
def __init__(self,myserver,status_bar,scan_root_dir,sim_name): QWidget.__init__(self) self.main_vbox = QVBoxLayout() self.tokens=tokens() self.sim_name=sim_name self.myserver=myserver self.status_bar=status_bar self.param_list=scan_items_get_list() #self.tab_label=tab_label self.sim_dir=os.path.join(scan_root_dir,sim_name) self.tab_name=os.path.basename(os.path.normpath(self.sim_dir)) self.select_param_window=select_param() toolbar=QToolBar() toolbar.setIconSize(QSize(48, 48)) self.tb_add = QAction(QIcon(os.path.join(get_image_file_path(),"add.png")), _("Add parameter to scan"), self) self.tb_add.triggered.connect(self.callback_add_item) toolbar.addAction(self.tb_add) self.tb_minus = QAction(QIcon(os.path.join(get_image_file_path(),"minus.png")), _("Delete item"), self) self.tb_minus.triggered.connect(self.callback_delete_item) toolbar.addAction(self.tb_minus) self.tb_down = QAction(QIcon(os.path.join(get_image_file_path(),"down.png")), _("Move down"), self) self.tb_down.triggered.connect(self.callback_move_down) toolbar.addAction(self.tb_down) #self.tb_notes = QAction(QIcon(os.path.join(get_image_file_path(),"down.png")), _("Notes"), self) #self.tb_notes.triggered.connect(self.callback_notes) #toolbar.addAction(self.tb_notes) #self.tb_notes = QAction(QIcon(os.path.join(get_image_file_path(),"select.png")), _("Select parameter to change"), self) #self.tb_notes.triggered.connect(self.callback_show_list) #toolbar.addAction(self.tb_notes) self.tb_simulate = QAction(QIcon(os.path.join(get_image_file_path(),"forward.png")), _("Run simulation"), self) self.tb_simulate.triggered.connect(self.callback_run_simulation) toolbar.addAction(self.tb_simulate) self.tb_stop = QAction(QIcon(os.path.join(get_image_file_path(),"pause.png")), _("Stop the simulation"), self) self.tb_stop.triggered.connect(self.callback_stop_simulation) toolbar.addAction(self.tb_stop) self.tb_plot = QAction(QIcon(os.path.join(get_image_file_path(),"plot.png")), _("Find a file to plot"), self) self.tb_plot.triggered.connect(self.callback_gen_plot_command) toolbar.addAction(self.tb_plot) self.tb_plot_time = QAction(QIcon(os.path.join(get_image_file_path(),"plot_time.png")), _("Examine results in time domain"), self) self.tb_plot_time.triggered.connect(self.callback_examine) toolbar.addAction(self.tb_plot_time) self.tb_command = QAction(QIcon(os.path.join(get_image_file_path(),"command.png")), _("Insert python command"), self) self.tb_command.triggered.connect(self.callback_insert_command) toolbar.addAction(self.tb_command) self.main_vbox.addWidget(toolbar) self.tab = QTableWidget() #self.tab.resizeColumnsToContents() self.tab.verticalHeader().setVisible(False) self.select_param_window.init(self.tab) self.tab.setColumnCount(5) #if enable_betafeatures()==False: # self.tab.setColumnHidden(0, True) # self.tab.setColumnHidden(1, True) self.tab.setSelectionBehavior(QAbstractItemView.SelectRows) self.tab.setColumnWidth(2, 200) self.tab.setColumnWidth(3, 200) self.load() self.tab.cellChanged.connect(self.tab_changed) self.main_vbox.addWidget(self.tab) self.popMenu = QMenu(self) #self.mp_show_list=QAction(_("Select parameter to scan"), self) #self.mp_show_list.triggered.connect(self.callback_show_list) #self.popMenu.addAction(self.mp_show_list) self.popMenu.addSeparator() self.mp_delete=QAction(_("Delete item"), self) self.mp_delete.triggered.connect(self.callback_delete_item) self.popMenu.addAction(self.mp_delete) self.mp_copy=QAction(_("Copy"), self) self.mp_copy.triggered.connect(self.callback_copy_item) self.popMenu.addAction(self.mp_copy) self.mp_paste=QAction(_("Paste"), self) self.mp_paste.triggered.connect(self.callback_paste_item) self.popMenu.addAction(self.mp_paste) self.popMenu.addSeparator() self.mp_add=QAction(_("Add item"), self) self.mp_add.triggered.connect(self.callback_add_item) self.popMenu.addAction(self.mp_add) self.mp_down=QAction(_("Move down"), self) self.mp_down.triggered.connect(self.callback_move_down) self.popMenu.addAction(self.mp_down) self.mp_down=QAction(_("Move down"), self) self.mp_down.triggered.connect(self.callback_move_down) self.popMenu.addAction(self.mp_down) self.popMenu.addSeparator() self.setMinimumSize(700,500) self.setLayout(self.main_vbox)