def load_settings(self):
        """
        Load settings to init UI
        """
        s = vex_settings.EditorSettingsClass()
        data = s.get_settings()

        # ui config
        self.font_size_spb.setMaximum(data.get('font_size_min',vex_settings.default_data['font_size_min']))
        self.font_size_spb.setMaximum(data.get('font_size_max',vex_settings.default_data['font_size_max']))
        self.font_size_sld.setMaximum(data.get('font_size_min',vex_settings.default_data['font_size_min']))
        self.font_size_sld.setMaximum(data.get('font_size_max',vex_settings.default_data['font_size_max']))
        # parms
        self.font_size_spb.setValue(data.get('font_size',vex_settings.default_data['font_size']))
        self.font_name_cbb.setCurrentFont(QFont(data.get('font_name',vex_settings.default_data['font_name'])))
        self.auto_update_parameters_cbx.setChecked(data.get('auto_update_parms',vex_settings.default_data['auto_update_parms']))
        self.create_parms_on_top.setChecked(data.get('create_parms_on_top',vex_settings.default_data['create_parms_on_top']))
        self.auto_save_tabs_cbx.setChecked(data.get('auto_save_tabs',vex_settings.default_data['auto_save_tabs']))
        self.create_backup_cbx.setChecked(data.get('create_backups',vex_settings.default_data['create_backups']))
        self.show_whitespaces_cbx.setChecked(data.get('show_whitespaces',vex_settings.default_data['show_whitespaces']))
        self.show_toolbar_cbx.setChecked(data.get('show_toolbar',vex_settings.default_data['show_toolbar']))
        self.use_online_manual_cbx.setChecked(data.get('use_online_manual',vex_settings.default_data['use_online_manual']))
        self.use_external_browser_cbx.setChecked(data.get('use_external_browser',vex_settings.default_data['use_external_browser']))
        self.aurocompleter_cbx.setChecked(data.get('autocompleter',vex_settings.default_data['autocompleter']))
        # self.help_window_cbx.setChecked(data.get('helpwindow',vex_settings.default_data['helpwindow']))
        # preview
        self.update_font_preview()
 def save_settings(self):
     """
     Store settings from UI
     """
     s = vex_settings.EditorSettingsClass()
     data = s.get_settings()
     data.update(self.get_ui_data())
     s.save_settings(data)
     self.optionsChangedSignal.emit()
     self.accept()
    def __init__(self, parent=None, theme=None):
        super(TemplateEditorTextClass, self).__init__(parent)
        self.setAcceptRichText(False)
        self.setWordWrapMode(QTextOption.NoWrap)
        self.colors = design.getColors(theme)
        self.s = vex_settings.EditorSettingsClass()
        self.fs = 16
        self.setTheme(self.colors)

        metrics = QFontMetrics(self.document().defaultFont())
        self.setTabStopWidth(4 * metrics.width(' '))
        self.setFontSize()

        option = self.document().defaultTextOption()
        option.setFlags(option.flags() | QTextOption.ShowTabsAndSpaces)
        option.setFlags(option.flags()
                        | QTextOption.AddSpaceForLineAndParagraphSeparators)
        self.document().setDefaultTextOption(option)
    def __init__(self):
        super(VEXEditorPanelClass, self).__init__()
        self.setupUi(self)
        ver = check_version.get_current_version()
        self.version = 'v%s.%s.%s' % (ver[0], ver[1], ver[2])
        # settings
        self.settings = vex_settings.EditorSettingsClass()
        self.theme = ''
        self.theme_colors = {}
        # self.use_help_window = False
        self.load_settings()
        self.hstyle = hqt.get_h14_style(self.theme)
        # build ui
        self.errors = error_browser.ErrorBrowserWidget()
        self.error_browser_ly.addWidget(self.errors)
        self.errors.hide()

        self.help_wd = help_window.HelpWindow(self)
        self.help_ly.addWidget(self.help_wd)
        # self.help_wd.hide()

        self.tab = tab_widget.VEXEditorTabWidget(self)
        self.tab_ly.addWidget(self.tab)
        self.tab.update_infoSignal.connect(self.set_tab_info)
        self.tab.messageSignal.connect(self.show_status_message)
        self.tab.lastClosedSignal.connect(self.last_tab_closed)
        self.tab.currentChanged.connect(self.update_help_window)

        # self.help_btn = QPushButton('H')
        # self.help_btn.setMaximumSize(QSize(20,20))

        # def toggle_help_window():
        #     res = self.help_wd.toggle_visible()
        # self.splitter.setEnabled(res)
        # if res:
        #     self.splitter.setSizes([10000,200])
        # else:
        #     self.splitter.setSizes([10000,0])
        # self.help_btn.clicked.connect(toggle_help_window)
        self.splitter.setSizes([10000, 0])
        # self.splitter.setEnabled(False)
        # self.statusBar().addPermanentWidget( self.help_btn)

        #icons
        for btn in self.load_from_file_btn, self.load_from_selected_extra_btn, self.save_current_btn, self.reload_current_btn,\
                self.blank_tab_btn, self.load_from_selected_btn:
            btn.setIconSize(QSize(30, 30))
        self.load_from_file_btn.setText('')
        self.load_from_file_btn.setIcon(QIcon(icons['header']))

        self.load_from_selected_extra_btn.setText('')
        self.load_from_selected_extra_btn.setIcon(QIcon(icons['vopnode_list']))

        self.load_from_selected_btn.setText('')
        self.load_from_selected_btn.setIcon(QIcon(icons['wrangle']))

        self.save_current_btn.setText('')
        self.save_current_btn.setIcon(QIcon(icons['save']))

        self.reload_current_btn.setText('')
        self.reload_current_btn.setIcon(QIcon(icons['reload_sourse']))

        self.blank_tab_btn.setText('')
        self.blank_tab_btn.setIcon(QIcon(icons['blank']))

        # connects
        self.load_from_selected_extra_btn.clicked.connect(self.create_parm_tab)
        self.load_from_selected_btn.clicked.connect(
            lambda: self.create_parm_tab(True))
        self.create_from_node_act.triggered.connect(self.create_parm_tab)
        self.load_from_file_btn.clicked.connect(self.create_file_tab)
        self.create_from_file_act.triggered.connect(self.create_file_tab)
        self.reload_current_btn.clicked.connect(self.tab.reload_source)
        self.reload_source_act.triggered.connect(self.tab.reload_source)
        self.save_current_btn.clicked.connect(self.tab.save_current)
        self.save_to_new_act.triggered.connect(self.tab.save_as_current)
        self.save_section_act.triggered.connect(self.tab.save_current)
        self.show_sourse_btn.clicked.connect(self.tab.select_tab_node)
        self.show_sourse_btn_2.clicked.connect(self.tab.open_tab_file)
        self.blank_tab_btn.clicked.connect(self.create_empty_tab)
        self.create_empty_act.triggered.connect(self.create_empty_tab)
        self.context_help_act.triggered.connect(self.tab.show_context_help)
        self.vex_manual_act.triggered.connect(self.tab.open_VEX_manual)
        self.manual_act.triggered.connect(
            lambda: self.open_url(vex_settings.help_url))
        self.about_act.triggered.connect(self.show_about)
        # self.save_tabs_in_hip_act.triggered.connect(self.tab.save_tabs_to_hip)
        self.load_tabs_from_hip_act.triggered.connect(
            self.tab.restore_tabs_from_hip)
        self.clear_tabs_act.triggered.connect(self.tab.clear_tabs_node)
        self.check_new_version_act.triggered.connect(
            check_version.check_version)
        for act in self.auto_create_parms_act, self.save_tabs_in_hip_act, self.use_hou_browser_act, self.help_window_act:
            act.triggered.connect(self.save_settings)
        # self.set_font_size_act.triggered.connect(self.set_font_size)
        self.live_template_editor_act.triggered.connect(
            self.open_live_template_editor)
        self.options_act.triggered.connect(self.open_options_dialog)
        self.menu_tabs.aboutToShow.connect(self.update_backup_menu)
        self.open_backup_folder_act.triggered.connect(
            lambda: webbrowser.open(vex_settings.backup_folder()))
        self.clear_backups_act.triggered.connect(self.clear_backup)
        self.open_theme_editor_act.triggered.connect(self.open_theme_editor)
        self.open_settings_folder_act.triggered.connect(
            self.open_settings_folder)
        self.find_replace_act.triggered.connect(self.tab.update_replace_dialog)

        # default visibility
        self.file_info_wd.setVisible(0)
        self.node_info_wd.setVisible(0)
        self.reload_current_btn.setEnabled(0)
        self.save_current_btn.setEnabled(0)

        # temp ui state
        # menu
        self.theme_menu()
        # save main widget to main namespace
        main['vexeditor'] = self

        # start
        self.check_tabs_exists()
        self.update_templates_menu()
        QTimer.singleShot(50, lambda: self.set_theme(self.theme))
        vex_parser.generate()