def create_visual_elements(self): hbox = gtk.HBox(False, 6) self.vbox.pack_start(hbox, expand=False, fill=False) entry = gtk.Entry() entry.set_text(self.image_folder) table = gtk.Table(1, 10, True) table.set_size_request(560, -1) hbox.pack_start(table, expand=False, fill=False) table.attach(entry, 0, 9, 0, 1) image = gtk.Image() image.set_from_stock(gtk.STOCK_OPEN, gtk.ICON_SIZE_BUTTON) open_button = gtk.Button() open_button.set_image(image) open_button.connect("clicked", self.select_path_cb, self, entry) table.attach(open_button, 9, 10, 0, 1) self.image_table = HobViewTable(self.__columns__, "Images") self.image_table.set_size_request(-1, 300) self.image_table.connect("toggled", self.toggled_cb) self.image_table.connect_group_selection(self.table_selected_cb) self.image_table.connect("row-activated", self.row_actived_cb) self.vbox.pack_start(self.image_table, expand=True, fill=True) self.show_all()
def create_visual_elements(self): self.eventbox = self.add_onto_top_bar(None, 73) self.pack_start(self.eventbox, expand=False, fill=False) self.pack_start(self.group_align, expand=True, fill=True) # set visible members self.ins = HobNotebook() self.tables = [] # we need modify table when the dialog is shown search_names = [] search_tips = [] # append the tabs in order for page in self.pages: columns = page['columns'] name = page['name'] tab = HobViewTable(columns, name) search_names.append(page['search']) search_tips.append(page['searchtip']) filter = page['filter'] sort_model = self.recipe_model.tree_model(filter, initial=True) tab.set_model(sort_model) tab.connect("toggled", self.table_toggled_cb, name) if name == "Included recipes": tab.connect("button-release-event", self.button_click_cb) tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include) if name == "Package Groups": tab.connect("button-release-event", self.button_click_cb) tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include) if name == "All recipes": tab.connect("button-release-event", self.button_click_cb) tab.connect("cell-fadeinout-stopped", self.button_click_cb) self.ins.append_page(tab, page['name'], page['tooltip']) self.tables.append(tab) self.ins.set_entry(search_names, search_tips) self.ins.search.connect("changed", self.search_entry_changed) # add all into the window self.box_group_area.pack_start(self.ins, expand=True, fill=True) button_box = gtk.HBox(False, 6) self.box_group_area.pack_end(button_box, expand=False, fill=False) self.build_packages_button = HobButton('Build packages') #self.build_packages_button.set_size_request(205, 49) self.build_packages_button.set_tooltip_text( "Build selected recipes into packages") self.build_packages_button.set_flags(gtk.CAN_DEFAULT) self.build_packages_button.grab_default() self.build_packages_button.connect("clicked", self.build_packages_clicked_cb) button_box.pack_end(self.build_packages_button, expand=False, fill=False) self.back_button = HobAltButton('Cancel') self.back_button.connect("clicked", self.back_button_clicked_cb) button_box.pack_end(self.back_button, expand=False, fill=False)
def create_visual_elements(self): self.label = gtk.Label( "Packages included: 0\nSelected packages size: 0 MB") self.eventbox = self.add_onto_top_bar(self.label, padding=15) self.pack_start(self.eventbox, expand=False, fill=False) self.pack_start(self.group_align, expand=True, fill=True) # set visible members self.ins = HobNotebook() self.tables = [] # we need to modify table when the dialog is shown search_names = [] search_tips = [] # append the tab page = self.pages[0] columns = page['columns'] name = page['name'] self.tab = HobViewTable(columns, name) search_names.append(page['search']) search_tips.append(page['searchtip']) self.ins.set_entry(search_names, search_tips) self.ins.search.connect("changed", self.search_entry_changed) filter = page['filter'] sort_model = self.package_model.tree_model(filter, initial=True) self.tab.set_model(sort_model) self.tab.connect("toggled", self.table_toggled_cb, name) self.tab.connect("button-release-event", self.button_click_cb) self.tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include, filter) #self.tab.set_size_request(-1, 350) self.ins.append_page(self.tab, page['name'], page['tooltip']) self.tables.append(self.tab) # add all into the dialog self.box_group_area.pack_start(self.ins, expand=True, fill=True) self.button_box = gtk.HBox(False, 6) self.box_group_area.pack_start(self.button_box, expand=False, fill=False) self.build_image_button = HobButton('Build image') self.build_image_button.set_tooltip_text("Build your image") self.build_image_button.set_flags(gtk.CAN_DEFAULT) self.build_image_button.grab_default() self.build_image_button.connect("clicked", self.build_image_clicked_cb) self.button_box.pack_end(self.build_image_button, expand=False, fill=False) self.back_button = HobAltButton('Cancel') self.back_button.connect("clicked", self.back_button_clicked_cb) self.button_box.pack_end(self.back_button, expand=False, fill=False)
def create_visual_elements(self): self.label = gtk.Label( "Packages included: 0\nSelected packages size: 0 MB") self.eventbox = self.add_onto_top_bar(self.label, 73) self.pack_start(self.eventbox, expand=False, fill=False) self.pack_start(self.group_align, expand=True, fill=True) # set visible members self.ins = HobNotebook() self.tables = [] # we need to modify table when the dialog is shown # append the tab for page in self.pages: columns = page['columns'] tab = HobViewTable(columns) filter = page['filter'] tab.set_model(self.package_model.tree_model(filter)) tab.connect("toggled", self.table_toggled_cb, page['name']) if page['name'] == "Included packages": tab.connect("button-release-event", self.button_click_cb) tab.connect("cell-fadeinout-stopped", self.after_fadeout_checkin_include) self.ins.append_page(tab, page['name'], page['tooltip']) self.tables.append(tab) self.ins.set_entry("Search packages:") # set the search entry for each table for tab in self.tables: search_tip = "Enter a package name to find it" self.ins.search.set_tooltip_text(search_tip) self.ins.search.props.has_tooltip = True tab.set_search_entry(0, self.ins.search) # add all into the dialog self.box_group_area.pack_start(self.ins, expand=True, fill=True) self.button_box = gtk.HBox(False, 6) self.box_group_area.pack_start(self.button_box, expand=False, fill=False) self.build_image_button = HobButton('Build image') #self.build_image_button.set_size_request(205, 49) self.build_image_button.set_tooltip_text("Build target image") self.build_image_button.set_flags(gtk.CAN_DEFAULT) self.build_image_button.grab_default() self.build_image_button.connect("clicked", self.build_image_clicked_cb) self.button_box.pack_end(self.build_image_button, expand=False, fill=False) self.back_button = HobAltButton('Cancel') self.back_button.connect("clicked", self.back_button_clicked_cb) self.button_box.pack_end(self.back_button, expand=False, fill=False)
def show_page(self, step): build_succeeded = (step == self.builder.IMAGE_GENERATED) image_addr = self.builder.parameters.image_addr image_names = self.builder.parameters.image_names if build_succeeded: machine = self.builder.configuration.curr_mach base_image = self.builder.recipe_model.get_selected_image() layers = self.builder.configuration.layers pkg_num = "%s" % len(self.builder.package_model.get_selected_packages()) else: pkg_num = "N/A" # remove for button_id, button in self.button_ids.items(): button.disconnect(button_id) self._remove_all_widget() # repack self.pack_start(self.details_top_buttons, expand=False, fill=False) self.pack_start(self.group_align, expand=True, fill=True) self.build_result = None if build_succeeded: # building is the previous step icon = gtk.Image() pixmap_path = hic.ICON_INDI_CONFIRM_FILE color = HobColors.RUNNING pix_buffer = gtk.gdk.pixbuf_new_from_file(pixmap_path) icon.set_from_pixbuf(pix_buffer) varlist = [""] vallist = ["Your image is ready"] self.build_result = self.DetailBox(varlist=varlist, vallist=vallist, icon=icon, color=color) self.box_group_area.pack_start(self.build_result, expand=False, fill=False) # create the buttons at the bottom first because the buttons are used in apply_button_per_image() if build_succeeded: self.buttonlist = ["Build new image", "Save as template", "Run image", "Deploy image"] else: # get to this page from "My images" self.buttonlist = ["Build new image", "Run image", "Deploy image"] # Name self.image_store.clear() default_toggled = False default_image_size = 0 i = 0 for image_name in image_names: image_size = HobPage._size_to_string(os.stat(os.path.join(image_addr, image_name)).st_size) if not default_toggled: default_toggled = (self.test_type_runnable(image_name) and self.test_mach_runnable(image_name)) \ or self.test_deployable(image_name) if i == (len(image_names) - 1): default_toggled = True self.image_store.set(self.image_store.append(), 0, image_name, 1, image_size, 2, default_toggled) if default_toggled: default_image_size = image_size self.create_bottom_buttons(self.buttonlist, image_name) else: self.image_store.set(self.image_store.append(), 0, image_name, 1, image_size, 2, False) i = i + 1 image_table = HobViewTable(self.__columns__) image_table.set_model(self.image_store) image_table.connect("toggled", self.toggled_cb) view_files_button = HobAltButton("View files") view_files_button.connect("clicked", self.view_files_clicked_cb, image_addr) view_files_button.set_tooltip_text("Open the directory containing the image files") self.image_detail = self.DetailBox(widget=image_table, button=view_files_button) self.box_group_area.pack_start(self.image_detail, expand=True, fill=True) # Machine, Base image and Layers layer_num_limit = 15 varlist = ["Machine: ", "Base image: ", "Layers: "] vallist = [] self.setting_detail = None if build_succeeded: vallist.append(machine) vallist.append(base_image) i = 0 for layer in layers: varlist.append(" - ") if i > layer_num_limit: break i += 1 vallist.append("") i = 0 for layer in layers: if i > layer_num_limit: break elif i == layer_num_limit: vallist.append("and more...") else: vallist.append(layer) i += 1 edit_config_button = HobAltButton("Edit configuration") edit_config_button.set_tooltip_text("Edit machine, base image and recipes") edit_config_button.connect("clicked", self.edit_config_button_clicked_cb) self.setting_detail = self.DetailBox(varlist=varlist, vallist=vallist, button=edit_config_button) self.box_group_area.pack_start(self.setting_detail, expand=False, fill=False) # Packages included, and Total image size varlist = ["Packages included: ", "Total image size: "] vallist = [] vallist.append(pkg_num) vallist.append(default_image_size) if build_succeeded: edit_packages_button = HobAltButton("Edit packages") edit_packages_button.set_tooltip_text("Edit the packages included in your image") edit_packages_button.connect("clicked", self.edit_packages_button_clicked_cb) else: # get to this page from "My images" edit_packages_button = None self.package_detail = self.DetailBox(varlist=varlist, vallist=vallist, button=edit_packages_button) self.box_group_area.pack_start(self.package_detail, expand=False, fill=False) # pack the buttons at the bottom, at this time they are already created. self.box_group_area.pack_end(self.details_bottom_buttons, expand=False, fill=False) self.show_all()