def generate_tab(self): self._username = user_services.get_current_user().username with simple.tab(name=self.tab_name, parent=self.tab_parent): if self.tab_name == "Workout": self.generate_workout_tab() elif self.tab_name == "Records": self.generate_records_table() self.generate_charts()
def init_ui(self): """Initialize the container's UI""" # the monitor profile is in a tab with dpg_simple.tab(self._tab_id, parent=self.parent, no_tooltip=True): # Create 2 groups and put them on the same line with dpg_simple.group(self._left_panel_id, parent=self._tab_id): # The grid input dpg_core.add_input_int2( self._input_id, parent=self._left_panel_id, callback=self.input_callback, default_value=[1, 1], ) # snap button dpg_core.add_button(self._snap_id, parent=self._left_panel_id, callback=self.snap) # Customize grid with the plot dpg_core.add_plot( self._plot_id, parent=self._left_panel_id, height=-1, xaxis_lock_min=True, xaxis_lock_max=True, y2axis_lock_min=True, y2axis_lock_max=True, yaxis_no_tick_marks=True, yaxis_no_tick_labels=True, xaxis_no_tick_marks=True, xaxis_no_tick_labels=True, xaxis_no_gridlines=True, yaxis_no_gridlines=True, ) # Ensure the plot's limits are the work area dpg_core.set_plot_xlimits(self._plot_id, xmin=self.monitor.work.left, xmax=self.monitor.work.right) dpg_core.set_plot_ylimits(self._plot_id, ymin=self.monitor.work.top, ymax=self.monitor.work.bottom) # Put the application table on the right dpg_core.add_same_line(parent=self._tab_id) with dpg_simple.group(self._right_panel_id, parent=self._tab_id): self._app_table = AppTable(parent=self._right_panel_id)
def add_tab(self, *args, **kwargs): """Add a profile tab""" dpg_core.log_debug("Adding profile tab...") label = f"{self._tab_number}##MainWindow-tab{self._tab_number}" with dpg_simple.tab(label, parent="##MainWindow-tabbar", closable=False, no_tooltip=True): profile = Profile(label, self._monitors) self._profiles[label] = profile self._tab_number += 1 # If we previously only had one tab then we need to make the first tab closable if len(self._profiles) == 2: label = list(self._profiles)[0] # get the label of the first tab dpg_core.configure_item(label, closable=dpg_core.get_value(label)) dpg_core.log_info(f"Profile {label} successfully added") return profile
def generate(self): with simple.tab(name=self.tab_name, parent=self.parent): if self.tab_name == "Exercises": core.add_spacing(count=10) core.add_group(name="workout_execution_group") core.add_group(name="workout_composition_group") core.add_combo( "Equipment##widget", items=get_criterias_by_name("Equipment"), parent="workout_composition_group", ) core.add_spacing(count=4, parent="workout_composition_group") core.add_combo( "Exercise Type##widget", items=get_criterias_by_name("Exercise Type"), parent="workout_composition_group", ) core.add_spacing(count=4, parent="workout_composition_group") core.add_combo( "Muscle Group##widget", items=get_criterias_by_name("Major Muscle"), parent="workout_composition_group", ) core.add_spacing(count=4, parent="workout_composition_group") core.add_button( "Compose Workout##widget", parent="workout_composition_group", callback=self.compose_workout, ) core.add_text( "Fill all the inputs, please.", color=[255, 0, 0], parent="workout_composition_group", ) simple.hide_item("Fill all the inputs, please.") else: core.add_text(f"text 2")
def open_help_window(sender, data): """ Opens new window with help annotations """ with simple.window('Help##window', width=1000, height=600, on_close=delete_items(['Help##window'])): with simple.tab_bar("Help tabs"): with simple.tab('Architectures##help'): core.add_drawing('armonk', width=72, height=75) core.draw_image('armonk', './backends/armonk.png', [72, 72]) core.add_text('ibmq_armonk: 1 qubit.') core.add_spacing(name='##space10', count=10) core.add_drawing('athens', width=518, height=75) core.draw_image('athens', './backends/athens-santiago.png', [0, 72]) core.add_text('ibmq_athens and ibmq_santiago: 5 qubits.') core.add_spacing(name='##space12', count=10) core.add_drawing('yorktown', width=373, height=400) core.draw_image('yorktown', './backends/ibmqx2.png', [0, 400]) core.add_text('ibmqx2: 5 qubits.') core.add_spacing(name='##space13', count=10) core.add_drawing('melb', width=1000, height=196) core.draw_image('melb', './backends/melbourne.png', [0, 196]) core.add_text('ibmq_16_melbourne: 15 qubits.') core.add_spacing(name='##space14', count=10) with simple.tab('Instructions##help'): core.add_text( '1. In the Selector block a user can select optimization parameters:' ) core.add_spacing(name='##text_spacing1', count=5) core.add_text( '* the level of optimization provided by IBM Q (ranging from 0 to 3)' ) core.add_text( '* IBM Original layout or advanced SWAP placement') core.add_text('* location of placement') core.add_text('* number of iterations.') core.add_spacing(name='##text_spacing2', count=5) core.add_text( '2. In the Hardware & Circuit block choose between testing the circuit on a quantum computer (IBM Q) and simulator (Qasm).', wrap=900) core.add_spacing(name='##text_spacing3', count=5) core.add_text( '3. Choose quantum coupling (quantum computer architecture) - IBM Q or Qasm.', wrap=900) core.add_spacing(name='##text_spacing4', count=5) core.add_text( '4. Upload an input file. After selection, the file name will be displayed in the Hardware & Circuit block and the circuit representation will be displayed in the Circuit before the reduction block.', wrap=900) core.add_spacing(name='##text_spacing5', count=5) core.add_text( '5. When pressing on the Process button the tool will find the optimal mapping of the circuit onto the quantum computer architecture.', wrap=900) core.add_spacing(name='##text_spacing6', count=5) core.add_text( '6. The resulting mapping will appear in the Circuit after the reduction block.', wrap=900)
def render(self, page, page_data=None): self.page = page with simple.tab( name=f"tab{self.id}", closable=True, parent=self.parent, label=self.tab_name ): page.render(page_data)
def create_convert_window(self, payload: Payload): """ Creates a convert window. This window represents a file. From this window you can convert the file to text. Then translate the text. And finally you can save it to a file. The window has 3 tabs. The first tab contains all the controls for: - converting the file - translated the converted file - save the text to disk - save ethe translation to disk :param payload: Payload object :return: """ unique_id = self._get_uid() window_title = f'{payload.file_name}_{str(unique_id)}' convert_window = simple.window(window_title, width=450, height=600, y_pos=0 + (20 * unique_id), x_pos=200 + (20 * unique_id)) with convert_window: # widget ids top_spacer = f'top_{unique_id}' bottom_spacer = f'bottom_{unique_id}' convert_button = f'convert_{unique_id}' translate_button = f'translate_{unique_id}' save_text_button = f'save_text_{unique_id}' save_translation_button = f'save_translation_{unique_id}' text_spacer = f'text_spacer_{unique_id}' translated_text_spacer = f'translated_text_spacer_{unique_id}' tab_bar_name = f'tab_bar_{unique_id}' tab_names = [ f'controls_{unique_id}', f'text_{unique_id}', f'translated_{unique_id}' ] tabs = [] text_value_name = f'text_{unique_id}' # the name of the value holding the text gathered from OCR source_lang_combo_name = f'text_language{unique_id}' destination_lang_combo_name = f'destination_language{unique_id}' translated_text_value_name = f'translated_text_{unique_id}' # the name of the value holding the translation core.add_value(text_value_name, '') # the value that stores the OCR text core.add_value(translated_text_value_name, '') # the value that stores the translated text # Creating widgets tab_bar = simple.tab_bar(tab_bar_name) with tab_bar: tabs += [simple.tab(tab_names[0], label="Controls")] tabs += [simple.tab(tab_names[1], label="Text")] tabs += [simple.tab(tab_names[2], label="Translation")] # creating the control tab with tabs[0]: core.add_text(payload.file_name) core.add_spacing(count=1, name=top_spacer) core.add_spacing(count=1, name=bottom_spacer) language_list = list(lang.keys()) core.add_combo(source_lang_combo_name, label='Source Language', items=language_list, default_value=core.get_value( 'default_source_language')) core.add_combo(destination_lang_combo_name, label='Destination Language', items=language_list, default_value=core.get_value( 'default_destination_language')) # Creating payload for the convert button convert_payload = Payload() convert_payload.value_name = text_value_name convert_payload.file_path = payload.file_path convert_payload.parent = window_title convert_payload.disable = [convert_button] convert_payload.enable = [ translate_button, save_text_button ] core.add_button(convert_button, label='Convert to Text', callback=self.convert_file, callback_data=convert_payload) translate_payload = Payload() translate_payload.value_name = text_value_name translate_payload.destination_value_name = translated_text_value_name translate_payload.source_language_value = source_lang_combo_name translate_payload.destination_language_value = destination_lang_combo_name translate_payload.disable = [translate_button] translate_payload.enable = [ translate_button, save_translation_button ] core.add_button(translate_button, label='Translate Text', enabled=False, callback=self.translate_text, callback_data=translate_payload) save_text_payload = Payload() save_text_payload.value_name = text_value_name core.add_button(save_text_button, label='Save Text', callback=self.save_prompt, callback_data=save_text_payload, enabled=False) save_translation_payload = Payload() save_translation_payload.value_name = translated_text_value_name core.add_button(save_translation_button, label='Save Translation', callback=self.save_prompt, callback_data=save_translation_payload, enabled=False) # creating the Text tab with tabs[1]: core.add_text('File Text:') core.add_spacing(count=1, name=text_spacer) # this is the text box that holds the text extracted with OCR core.add_text(f'text_box_{unique_id}', source=text_value_name) # creating the Translation tab with tabs[2]: core.add_text('Translated text:') core.add_spacing(count=1, name=translated_text_spacer) # this is the text box that holds the translated text response core.add_text(f'translated_text_box_{unique_id}', source=translated_text_value_name) # add the window to the window list self.convert_window_list += [convert_window]