示例#1
0
 def _recent_files_menu(self):
     preferences = UIPreferences()
     recent_menu = tk.Menu(self._controller._filemenu,tearoff=False)
     for file in preferences.get_recent_files():
         recent_menu.add_command(label=file,command=lambda f=file: self._open_recent_file(f))
 
     recent_menu.add_separator()
     recent_menu.add_command(label='Clear',command=self._clear_recent)
     self._controller._filemenu.entryconfig(2,menu=recent_menu)
    def body(self, parent, options):
        preferences = Preferences()
        logging_config = preferences.get_logging_config()
        if logging_config is not None:
            set_logger_config(logging_config)

        uipreferences = UIPreferences()
        populate = uipreferences.get_populate_defaults(True)
        self._populateDefaults.set(1 if populate else 0)

        qiskitGroup = ttk.LabelFrame(parent,
                                     text='QISKit Configuration',
                                     padding=(6, 6, 6, 6),
                                     borderwidth=4,
                                     relief=tk.GROOVE)
        qiskitGroup.grid(padx=(7, 7), pady=6, row=0, column=0, sticky='nsew')
        self._qconfigview = QconfigView(qiskitGroup)

        defaultsGroup = ttk.LabelFrame(parent,
                                       text='Defaults',
                                       padding=(6, 6, 6, 6),
                                       borderwidth=4,
                                       relief=tk.GROOVE)
        defaultsGroup.grid(padx=(7, 7), pady=6, row=1, column=0, sticky='nsw')
        defaultsGroup.columnconfigure(1, pad=7)

        self._checkButton = ttk.Checkbutton(defaultsGroup,
                                            text="Populate on file new/open",
                                            variable=self._populateDefaults)
        self._checkButton.grid(row=0, column=1, sticky='nsw')

        loggingGroup = ttk.LabelFrame(parent,
                                      text='Logging Configuration',
                                      padding=(6, 6, 6, 6),
                                      borderwidth=4,
                                      relief=tk.GROOVE)
        loggingGroup.grid(padx=(7, 7), pady=6, row=2, column=0, sticky='nsw')
        loggingGroup.columnconfigure(1, pad=7)

        levels = get_logger_levels_for_names(
            ['qiskit_acqua_chemistry', 'qiskit_acqua'])
        loglevel = levels[0]

        ttk.Label(loggingGroup, text="Level:", borderwidth=0,
                  anchor=tk.E).grid(row=0, column=0, sticky='nsew')
        self._levelCombo = ttk.Combobox(
            loggingGroup,
            exportselection=0,
            state='readonly',
            values=list(PreferencesDialog._LOG_LEVELS.values()))
        index = list(PreferencesDialog._LOG_LEVELS.keys()).index(loglevel)
        self._levelCombo.current(index)
        self._levelCombo.grid(row=0, column=1, sticky='nsw')

        self.entry = self._qconfigview.initial_focus
        return self.entry  # initial focus
示例#3
0
 def _open_file(self):
     preferences = UIPreferences()
     filename = tkfd.askopenfilename(parent=self,
                                     title='Open Chemistry File',
                                     initialdir=preferences.get_openfile_initialdir())
     if filename and self._controller.open_file(filename):
         preferences.add_recent_file(filename)
         preferences.set_openfile_initialdir(os.path.dirname(filename))
         preferences.save()
示例#4
0
 def load_file(self,filename):
     if filename is None:
         return []
     try:
         self._parser = InputParser(filename)
         self._parser.parse()
         uipreferences = UIPreferences()
         if uipreferences.get_populate_defaults(True):
             self._parser.validate_merge_defaults()
             self._parser.commit_changes()
             
         return self._parser.get_section_names()   
     except:
         self._parser = None
         raise
示例#5
0
 def _save_file_as(self):
     if self._controller.is_empty():
         self._controller._outputView.write_line("No data to save.")
         return
     
     preferences = UIPreferences()
     filename = tkfd.asksaveasfilename(parent=self,
                                       title='Save Chemistry File',
                                       initialdir=preferences.get_savefile_initialdir())
     if filename and self._controller.save_file_as(filename):
         preferences.add_recent_file(filename)
         preferences.set_savefile_initialdir(os.path.dirname(filename))
         preferences.save()
示例#6
0
 def new(self):
     try:
         dict = {}
         jsonfile = os.path.join(os.path.dirname(__file__), 'input_template.json')
         with open(jsonfile) as json_file:
             dict = json.load(json_file)
             
         self._parser = InputParser(dict)
         self._parser.parse()
         uipreferences = UIPreferences()
         if uipreferences.get_populate_defaults(True):
             self._parser.validate_merge_defaults()
             self._parser.commit_changes()
             
         return self._parser.get_section_names()   
     except:
         self._parser = None
         raise
    def apply(self):
        try:
            level_name = self._levelCombo.get()
            levels = [
                key for key, value in PreferencesDialog._LOG_LEVELS.items()
                if value == level_name
            ]
            loglevel = levels[0]
            logging_config = build_logging_config(
                ['qiskit_acqua_chemistry', 'qiskit_acqua'], loglevel)

            preferences = Preferences()
            self._qconfigview.apply(preferences)
            preferences.set_logging_config(logging_config)
            preferences.save()
            set_logger_config(logging_config)

            uipreferences = UIPreferences()
            populate = self._populateDefaults.get()
            uipreferences.set_populate_defaults(False if populate ==
                                                0 else True)
            uipreferences.save()

            self._controller.get_available_backends()
        except Exception as e:
            self.controller.outputview.write_line(str(e))
示例#8
0
    def apply(self):
        level_name = self._levelCombo.get()
        levels = [
            key for key, value in PreferencesDialog._LOG_LEVELS.items()
            if value == level_name
        ]
        loglevel = levels[0]
        logging_config = build_logging_config(
            ['qiskit_acqua_chemistry', 'qiskit_acqua'], loglevel)

        token = self._apiToken.get().strip()
        url = self._url.get().strip()
        hub = self._hub.get().strip()
        group = self._group.get().strip()
        project = self._project.get().strip()

        preferences = Preferences()
        preferences.set_token(token if len(token) > 0 else None)
        preferences.set_url(url if len(url) > 0 else None)
        preferences.set_hub(hub if len(hub) > 0 else None)
        preferences.set_group(group if len(group) > 0 else None)
        preferences.set_project(project if len(project) > 0 else None)
        preferences.set_logging_config(logging_config)
        preferences.save()
        set_logger_config(logging_config)

        uipreferences = UIPreferences()
        populate = self._populateDefaults.get()
        uipreferences.set_populate_defaults(False if populate == 0 else True)
        uipreferences.save()

        self._controller.get_available_backends()
示例#9
0
 def _export_dictionary_to_file(self):
     if self._controller.is_empty():
         self._controller._outputView.write_line("No data to export.")
         return
     
     preferences = UIPreferences()
     filename = tkfd.asksaveasfilename(parent=self,
                                       title='Export Chemistry Input',
                                       initialdir=preferences.get_savefile_initialdir())
     if filename and self._controller.export_dictionary_to_file(filename):
         preferences.set_savefile_initialdir(os.path.dirname(filename))
         preferences.save()
    def quit(self):
        if tkmb.askyesno('Verify quit', 'Are you sure you want to quit?'):
            preferences = UIPreferences()
            preferences.set_geometry(self.master.winfo_geometry())
            preferences.save()
            self._controller.stop()
            ttk.Frame.quit(self)
            return True

        return False
示例#11
0
    def toggle(self):
        if self._model.is_empty():
            self._outputView.write_line("Missing Input")
            return

        self._start_button.state(['disabled'])
        self._filemenu.entryconfig(0, state='disabled')
        self._filemenu.entryconfig(1, state='disabled')
        self._filemenu.entryconfig(2, state='disabled')
        self._view.after(100, self._process_thread_queue)
        try:
            if self._command is Controller._START:
                self._outputView.clear()
                filename = None
                if self._save_algo_json.get() != 0:
                    preferences = UIPreferences()
                    filename = tkfd.asksaveasfilename(
                        parent=self._view,
                        title='Algorithm Input',
                        initialdir=preferences.get_savefile_initialdir())
                    if not filename:
                        self._thread_queue.put(None)
                        self._start_button.state(['!disabled'])
                        self._filemenu.entryconfig(0, state='normal')
                        self._filemenu.entryconfig(1, state='normal')
                        self._filemenu.entryconfig(2, state='normal')
                        return

                    preferences.set_savefile_initialdir(
                        os.path.dirname(filename))
                    preferences.save()

                self._thread = ACQUAChemistryThread(self._model,
                                                    self._outputView,
                                                    self._thread_queue,
                                                    filename)
                self._thread.daemon = True
                self._thread.start()
            else:
                self.stop()
        except Exception as e:
            self._thread = None
            self._thread_queue.put(None)
            self._outputView.write_line("Failure: {}".format(str(e)))
            self._start_button.state(['!disabled'])
            self._filemenu.entryconfig(0, state='normal')
            self._filemenu.entryconfig(1, state='normal')
            self._filemenu.entryconfig(2, state='normal')
def main():
    if sys.platform == 'darwin':
        from Foundation import NSBundle
        bundle = NSBundle.mainBundle()
        if bundle:
            info = bundle.localizedInfoDictionary() or bundle.infoDictionary()
            info['CFBundleName'] = 'QISkit ACQUA Chemistry'

    root = tk.Tk()
    root.withdraw()
    root.update_idletasks()

    preferences = UIPreferences()
    geometry = preferences.get_geometry()
    if geometry is None:
        ws = root.winfo_screenwidth()
        hs = root.winfo_screenheight()
        w = int(ws / 1.3)
        h = int(hs / 1.3)
        x = int(ws / 2 - w / 2)
        y = int(hs / 2 - h / 2)
        geometry = '{}x{}+{}+{}'.format(w, h, x, y)
        preferences.set_geometry(geometry)
        preferences.save()

    root.geometry(geometry)

    preferences = Preferences()
    if preferences.get_logging_config() is None:
        logging_config = build_logging_config(
            ['qiskit_acqua_chemistry', 'qiskit_acqua'], logging.INFO)
        preferences.set_logging_config(logging_config)
        preferences.save()

    set_logger_config(preferences.get_logging_config())

    MainView(root)
    root.after(0, root.deiconify)
    root.mainloop()
 def _clear_recent(self):
     preferences = UIPreferences()
     preferences.clear_recent_files()
     preferences.save()
示例#14
0
    def body(self, parent, options):
        preferences = Preferences()
        logging_config = preferences.get_logging_config()
        if logging_config is not None:
            set_logger_config(logging_config)

        self._apiToken.set(preferences.get_token(''))
        self._url.set(preferences.get_url(Preferences.URL))
        self._hub.set(preferences.get_hub(''))
        self._group.set(preferences.get_group(''))
        self._project.set(preferences.get_project(''))
        self._config_path.set(preferences.get_qconfig_path(''))
        uipreferences = UIPreferences()
        populate = uipreferences.get_populate_defaults(True)
        self._populateDefaults.set(1 if populate else 0)

        qiskitGroup = ttk.LabelFrame(parent,
                                     text='QISKit Configuration',
                                     padding=(6, 6, 6, 6),
                                     borderwidth=4,
                                     relief=tk.GROOVE)
        qiskitGroup.grid(padx=(7, 7), pady=6, row=0, column=0, sticky='nsew')
        qiskitGroup.columnconfigure(0, weight=1)
        qiskitGroup.columnconfigure(1, pad=7)
        ttk.Label(qiskitGroup, text="Token:", borderwidth=0,
                  anchor=tk.E).grid(row=0, column=0, sticky='nsew')
        self._apiTokenEntry = EntryCustom(qiskitGroup,
                                          textvariable=self._apiToken,
                                          width=120,
                                          state=tk.NORMAL)
        self._apiTokenEntry.grid(row=0, column=1, sticky='nsew')
        ttk.Label(qiskitGroup, text="URL:", borderwidth=0,
                  anchor=tk.E).grid(row=1, column=0, sticky='nsew')
        self._urlEntry = EntryCustom(qiskitGroup,
                                     textvariable=self._url,
                                     width=60,
                                     state=tk.NORMAL)
        self._urlEntry.grid(row=1, column=1, sticky='nsw')
        ttk.Label(qiskitGroup, text="Hub:", borderwidth=0,
                  anchor=tk.E).grid(row=2, column=0, sticky='nsew')
        self._hubEntry = EntryCustom(qiskitGroup,
                                     textvariable=self._hub,
                                     state=tk.NORMAL)
        self._hubEntry.grid(row=2, column=1, sticky='nsw')
        ttk.Label(qiskitGroup, text="Group:", borderwidth=0,
                  anchor=tk.E).grid(row=3, column=0, sticky='nsew')
        self._groupEntry = EntryCustom(qiskitGroup,
                                       textvariable=self._group,
                                       state=tk.NORMAL)
        self._groupEntry.grid(row=3, column=1, sticky='nsw')
        ttk.Label(qiskitGroup, text="Project:", borderwidth=0,
                  anchor=tk.E).grid(row=4, column=0, sticky='nsew')
        self._projectEntry = EntryCustom(qiskitGroup,
                                         textvariable=self._project,
                                         state=tk.NORMAL)
        self._projectEntry.grid(row=4, column=1, sticky='nsw')
        ttk.Label(qiskitGroup, text="Path:", borderwidth=0,
                  anchor=tk.E).grid(row=5, column=0, sticky='nsew')
        ttk.Label(qiskitGroup,
                  textvariable=self._config_path,
                  borderwidth=0,
                  anchor=tk.W).grid(row=5, column=1, sticky='nsw')

        defaultsGroup = ttk.LabelFrame(parent,
                                       text='Defaults',
                                       padding=(6, 6, 6, 6),
                                       borderwidth=4,
                                       relief=tk.GROOVE)
        defaultsGroup.grid(padx=(7, 7), pady=6, row=1, column=0, sticky='nsw')
        defaultsGroup.columnconfigure(1, pad=7)

        self._checkButton = ttk.Checkbutton(defaultsGroup,
                                            text="Populate on file new/open",
                                            variable=self._populateDefaults)
        self._checkButton.grid(row=0, column=1, sticky='nsw')

        loggingGroup = ttk.LabelFrame(parent,
                                      text='Logging Configuration',
                                      padding=(6, 6, 6, 6),
                                      borderwidth=4,
                                      relief=tk.GROOVE)
        loggingGroup.grid(padx=(7, 7), pady=6, row=2, column=0, sticky='nsw')
        loggingGroup.columnconfigure(1, pad=7)

        levels = get_logger_levels_for_names(
            ['qiskit_acqua_chemistry', 'qiskit_acqua'])
        loglevel = levels[0]

        ttk.Label(loggingGroup, text="Level:", borderwidth=0,
                  anchor=tk.E).grid(row=0, column=0, sticky='nsew')
        self._levelCombo = ttk.Combobox(
            loggingGroup,
            exportselection=0,
            state='readonly',
            values=list(PreferencesDialog._LOG_LEVELS.values()))
        index = list(PreferencesDialog._LOG_LEVELS.keys()).index(loglevel)
        self._levelCombo.current(index)
        self._levelCombo.grid(row=0, column=1, sticky='nsw')

        self._label_text = tk.StringVar()
        self._label = ttk.Label(parent,
                                foreground='red',
                                textvariable=self._label_text,
                                borderwidth=0)
        self._label.grid(padx=(7, 7), pady=6, row=2, column=0)
        self._label.grid_remove()

        self.entry = self._apiTokenEntry
        return self.entry  # initial focus