def __init__(self, parent):
        super().__init__(parent)

        self.main = wordless_misc.find_wordless_main(parent)

        self.setWidgetResizable(True)
        self.setBackgroundRole(QPalette.Light)
Exemple #2
0
    def __init__(self, parent):
        super().__init__(parent)

        self.main = wordless_misc.find_wordless_main(parent)

        self.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.setEditTriggers(QAbstractItemView.DoubleClicked
                             | QAbstractItemView.SelectedClicked)
        self.setDragEnabled(True)
        self.setAcceptDrops(True)
        self.setDragDropMode(QAbstractItemView.InternalMove)

        self.itemChanged.connect(self.item_changed)
        self.itemSelectionChanged.connect(self.selection_changed)

        self.button_add = QPushButton(self.tr('Add'), self)
        self.button_remove = QPushButton(self.tr('Remove'), self)
        self.button_clear = QPushButton(self.tr('Clear'), self)
        self.button_import = QPushButton(self.tr('Import'), self)
        self.button_export = QPushButton(self.tr('Export'), self)

        self.button_add.clicked.connect(self.add_item)
        self.button_remove.clicked.connect(self.remove_item)
        self.button_clear.clicked.connect(self.clear_list)
        self.button_import.clicked.connect(self.import_list)
        self.button_export.clicked.connect(self.export_list)

        self.clear_list()
Exemple #3
0
    def __init__(self, parent):
        super().__init__(parent)

        self.main = wordless_misc.find_wordless_main(parent)

        self.setMaxVisibleItems(20)
        self.setFocusPolicy(Qt.StrongFocus)
Exemple #4
0
    def __init__(self, parent):
        super().__init__(parent)

        self.main = wordless_misc.find_wordless_main(parent)

        self.setOpenExternalLinks(True)
        self.setContentsMargins(3, 3, 3, 3)
    def __init__(self, orientation, parent):
        super().__init__(orientation, parent)

        self.main = wordless_misc.find_wordless_main(parent)

        self.setHandleWidth(0)
        self.setChildrenCollapsible(False)
def wordless_widgets_settings_measures(parent, tab):
    main = wordless_misc.find_wordless_main(parent)

    label_settings_measures = QLabel(parent.tr('Advanced Settings:'), parent)
    button_settings_measures = QPushButton(parent.tr('Settings...'), parent)

    button_settings_measures.clicked.connect(lambda: main.wordless_settings.load(tab = tab))

    return label_settings_measures, button_settings_measures
def wordless_widgets_measure_adjusted_freq(parent):
    main = wordless_misc.find_wordless_main(parent)

    label_measure_adjusted_freq = QLabel(parent.tr('Measure of Adjusted Frequency:'), parent)
    combo_box_measure_adjusted_freq = wordless_box.Wordless_Combo_Box(parent)

    combo_box_measure_adjusted_freq.addItems(list(main.settings_global['measures_adjusted_freq'].keys()))

    return (label_measure_adjusted_freq,
            combo_box_measure_adjusted_freq)
def wordless_widgets_measure_dispersion(parent):
    main = wordless_misc.find_wordless_main(parent)

    label_measure_dispersion = QLabel(parent.tr('Measure of Dispersion:'), parent)
    combo_box_measure_dispersion = wordless_box.Wordless_Combo_Box(parent)

    combo_box_measure_dispersion.addItems(list(main.settings_global['measures_dispersion'].keys()))

    return (label_measure_dispersion,
            combo_box_measure_dispersion)
    def __init__(self, parent, orientation='Horizontal'):
        super().__init__(parent)

        self.main = wordless_misc.find_wordless_main(parent)

        if orientation == 'Horizontal':
            self.setFrameShape(QFrame.HLine)
        else:
            self.setFrameShape(QFrame.VLine)

        self.setStyleSheet('color: #D0D0D0;')
    def __init__(self, text, parent):
        main = wordless_misc.find_wordless_main(parent)

        super().__init__(
            f'''
                {main.settings_global["styles"]["style_dialog"]}
                <body>
                    {text}
                </body>
            ''', parent)

        self.setWordWrap(True)
def wordless_widgets_context_settings(parent, tab):
    main = wordless_misc.find_wordless_main(parent)

    label_context_settings = QLabel(parent.tr('Context Settings:'), parent)
    button_context_settings = QPushButton(parent.tr('Settings...'), parent)

    dialog_context_settings = wordless_dialog_context_settings.Wordless_Dialog_Context_Settings(main,
                                                                                                tab = tab)
    main.__dict__[f'wordless_context_settings_{tab}'] = dialog_context_settings

    button_context_settings.clicked.connect(main.__dict__[f'wordless_context_settings_{tab}'].exec_)

    return label_context_settings, button_context_settings
Exemple #12
0
    def __init__(self, parent):
        super().__init__(parent)

        self.FONT_SIZES = {
            'Extra Small': 8,
            'Small': 10,
            'Medium (Recommended)': 12,
            'Large': 14,
            'Extra Large': 16
        }

        self.main = wordless_misc.find_wordless_main(parent)

        self.addItems(list(self.FONT_SIZES))
def wordless_widgets_filter_measures(parent,
                                     filter_min=-10000,
                                     filter_max=10000):
    def min_changed():
        if spin_box_min.value() > spin_box_max.value():
            spin_box_max.setValue(spin_box_min.value())

    def max_changed():
        if spin_box_min.value() > spin_box_max.value():
            spin_box_min.setValue(spin_box_max.value())

    def precision_changed():
        precision = main.settings_custom['data']['precision_decimal']

        spin_box_min.setDecimals(precision)
        spin_box_max.setDecimals(precision)

        spin_box_min.setSingleStep(0.1**precision)
        spin_box_max.setSingleStep(0.1**precision)

    main = wordless_misc.find_wordless_main(parent)

    label_min = QLabel(parent.tr('From'), parent)
    (spin_box_min,
     checkbox_min_no_limit) = wordless_widgets_no_limit(parent, double=True)

    label_max = QLabel(parent.tr('To'), parent)
    (spin_box_max,
     checkbox_max_no_limit) = wordless_widgets_no_limit(parent, double=True)

    spin_box_min.setRange(filter_min, filter_max)
    spin_box_max.setRange(filter_min, filter_max)

    spin_box_min.valueChanged.connect(min_changed)
    spin_box_max.valueChanged.connect(max_changed)

    main.wordless_settings.wordless_settings_changed.connect(precision_changed)

    min_changed()
    max_changed()

    precision_changed()

    return (label_min, spin_box_min, checkbox_min_no_limit, label_max,
            spin_box_max, checkbox_max_no_limit)
    def __init__(self, parent):
        super().__init__(parent)

        self.main = wordless_misc.find_wordless_main(parent)

        self.setObjectName('wordless-wrapper')
        self.setStyleSheet('''
            QWidget#wordless-wrapper {
                background-color: #FFF;
            }
        ''')

        self.wrapper_table = QWidget(self)

        self.wrapper_table.setLayout(Wordless_Layout())
        self.wrapper_table.layout().setContentsMargins(8, 8, 6, 6)

        self.wrapper_right = QWidget(self)
        self.wrapper_right.setFixedWidth(340)

        self.scroll_area_settings = Wordless_Scroll_Area(self)
        self.button_reset_settings = wordless_button.Wordless_Button_Reset_Settings(
            self)

        self.wrapper_settings = QWidget(self)
        self.wrapper_settings.setLayout(Wordless_Layout())

        self.wrapper_settings.layout().setContentsMargins(6, 4, 6, 4)

        self.scroll_area_settings.setWidget(self.wrapper_settings)

        self.wrapper_right.setLayout(Wordless_Layout())
        self.wrapper_right.layout().addWidget(self.scroll_area_settings, 0, 0)
        self.wrapper_right.layout().addWidget(self.button_reset_settings, 1, 0)

        self.wrapper_right.layout().setContentsMargins(0, 8, 8, 6)

        self.setLayout(Wordless_Layout())
        self.layout().addWidget(self.wrapper_table, 0, 0)
        self.layout().addWidget(self.wrapper_right, 0, 1)

        self.layout().setContentsMargins(0, 0, 0, 0)
Exemple #15
0
    def __init__(self, parent):
        super().__init__(parent)

        self.main = wordless_misc.find_wordless_main(parent)

        self.setMaxVisibleItems(25)
    def __init__(self, text, parent):
        super().__init__(text, parent)

        self.main = wordless_misc.find_wordless_main(parent)
    def __init__(self, parent):
        super().__init__(parent)

        self.main = wordless_misc.find_wordless_main(parent)

        self.currentChanged.connect(self.current_changed)
def wordless_widgets_fig_settings(parent):
    def graph_type_changed():
        if combo_box_graph_type.currentText() == parent.tr('Line Chart'):
            combo_box_use_file.setEnabled(False)

            use_data_changed()
        elif combo_box_graph_type.currentText() == parent.tr('Word Cloud'):
            combo_box_use_file.setEnabled(True)

            checkbox_use_pct.setEnabled(False)
            checkbox_use_cumulative.setEnabled(False)

    def use_data_changed():
        if combo_box_graph_type.currentText() == parent.tr('Line Chart'):
            if combo_box_use_data.currentText() == parent.tr('Frequency'):
                checkbox_use_pct.setEnabled(True)
                checkbox_use_cumulative.setEnabled(True)
            else:
                checkbox_use_pct.setEnabled(False)
                checkbox_use_cumulative.setEnabled(False)

    def wordless_files_changed():
        if combo_box_use_file.count() == 1:
            use_file_old = ''
        else:
            use_file_old = combo_box_use_file.currentText()

        combo_box_use_file.clear()

        for file in main.wordless_files.get_selected_files():
            combo_box_use_file.addItem(file['name'])

        combo_box_use_file.addItem(parent.tr('Total'))

        if use_file_old and combo_box_use_file.findText(use_file_old) > -1:
            combo_box_use_file.setCurrentText(use_file_old)

    main = wordless_misc.find_wordless_main(parent)

    label_graph_type = QLabel(parent.tr('Graph Type:'), parent)
    combo_box_graph_type = wordless_box.Wordless_Combo_Box(parent)
    label_use_file = QLabel(parent.tr('Use File:'), parent)
    combo_box_use_file = wordless_box.Wordless_Combo_Box(parent)
    label_use_data = QLabel(parent.tr('Use Data:'), parent)
    combo_box_use_data = wordless_box.Wordless_Combo_Box(parent)

    # Clip long file names
    combo_box_use_file.setSizeAdjustPolicy(QComboBox.AdjustToMinimumContentsLengthWithIcon)

    checkbox_use_pct = QCheckBox(parent.tr('Use Percentage Data'), parent)
    checkbox_use_cumulative = QCheckBox(parent.tr('Use Cumulative Data'), parent)

    combo_box_graph_type.addItems([parent.tr('Line Chart'),
                                   parent.tr('Word Cloud')])

    combo_box_graph_type.currentTextChanged.connect(graph_type_changed)
    combo_box_use_data.currentTextChanged.connect(use_data_changed)

    main.wordless_files.table.itemChanged.connect(wordless_files_changed)

    combo_box_use_file.wordless_files_changed = wordless_files_changed

    graph_type_changed()
    use_data_changed()
    wordless_files_changed()

    return (label_graph_type, combo_box_graph_type,
            label_use_file, combo_box_use_file,
            label_use_data, combo_box_use_data,
            checkbox_use_pct, checkbox_use_cumulative)
    def __init__(self,
                 parent,
                 headers,
                 header_orientation='horizontal',
                 cols_stretch=[],
                 drag_drop_enabled=False):
        self.main = wordless_misc.find_wordless_main(parent)
        self.headers = headers
        self.header_orientation = header_orientation
        self.cols_stretch = cols_stretch
        self.settings = self.main.settings_custom

        if header_orientation == 'horizontal':
            super().__init__(1, len(self.headers), parent)

            self.setHorizontalHeaderLabels(self.headers)
        else:
            super().__init__(len(self.headers), 1, parent)

            self.setVerticalHeaderLabels(self.headers)

        self.horizontalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents)
        self.verticalHeader().setSectionResizeMode(
            QHeaderView.ResizeToContents)

        for col in self.find_col(cols_stretch):
            self.horizontalHeader().setSectionResizeMode(
                col, QHeaderView.Stretch)

        self.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.setSelectionBehavior(QAbstractItemView.SelectRows)

        if drag_drop_enabled:
            self.setDragEnabled(True)
            self.setAcceptDrops(True)
            self.viewport().setAcceptDrops(True)
            self.setDragDropMode(QAbstractItemView.InternalMove)
            self.setDragDropOverwriteMode(False)

        self.horizontalHeader().setHighlightSections(False)
        self.verticalHeader().setHighlightSections(False)

        self.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)
        self.setHorizontalScrollMode(QAbstractItemView.ScrollPerPixel)

        if self.header_orientation == 'horizontal':
            self.setStyleSheet(''' 
                                   QTableView {
                                       outline: none;
                                       color: #292929;
                                   }

                                   QTableView::item:hover {
                                       background-color: #EEE;
                                       color: #292929;
                                   }
                                   QTableView::item:selected {
                                       background-color: #EEE;
                                       color: #292929;
                                   }

                                   QHeaderView::section {
                                       color: #FFF;
                                       font-weight: bold;
                                   }

                                   QHeaderView::section:horizontal {
                                       background-color: #5C88C5;
                                   }
                                   QHeaderView::section:horizontal:hover {
                                       background-color: #3265B2;
                                   }
                                   QHeaderView::section:horizontal:pressed {
                                       background-color: #3265B2;
                                   }

                                   QHeaderView::section:vertical {
                                       background-color: #737373;
                                   }
                                   QHeaderView::section:vertical:hover {
                                       background-color: #606060;
                                   }
                                   QHeaderView::section:vertical:pressed {
                                       background-color: #606060;
                                   }
                               ''')
        else:
            self.setStyleSheet('''

                                   QTableView {
                                       outline: none;
                                       color: #292929;
                                   }

                                   QTableView::item:hover {
                                       background-color: #EEE;
                                   }
                                   QTableView::item:selected {
                                       background-color: #EEE;
                                       color: #292929;
                                   }

                                   QHeaderView::section {
                                       color: #FFF;
                                       font-weight: bold;
                                   }

                                   QHeaderView::section:horizontal {
                                       background-color: #888;
                                   }
                                   QHeaderView::section:horizontal:hover {
                                       background-color: #777;
                                   }
                                   QHeaderView::section:horizontal:pressed {
                                       background-color: #666;
                                   }

                                   QHeaderView::section:vertical {
                                       background-color: #5C88C5;
                                   }
                                   QHeaderView::section:vertical:hover {
                                       background-color: #3265B2;
                                   }
                                   QHeaderView::section:vertical:pressed {
                                       background-color: #264E8C;
                                   }
                               ''')

        self.itemChanged.connect(self.item_changed)
def wordless_widgets_search_settings(parent, tab):
    def multi_search_mode_changed():
        if checkbox_multi_search_mode.isChecked():
            label_search_term.setText(parent.tr('Search Terms:'))

            if line_edit_search_term.text() and list_search_terms.count() == 0:
                list_search_terms.load_items([line_edit_search_term.text()])

            stacked_widget_search_term.setCurrentIndex(1)
        else:
            label_search_term.setText(parent.tr('Search Term:'))

            stacked_widget_search_term.setCurrentIndex(0)

    def match_tags_changed():
        if checkbox_match_tags.isChecked():
            checkbox_match_inflected_forms.setEnabled(False)

            stacked_widget_ignore_tags.setCurrentIndex(1)
            stacked_widget_ignore_tags_type.setCurrentIndex(1)
        else:
            checkbox_match_inflected_forms.setEnabled(True)
            
            stacked_widget_ignore_tags.setCurrentIndex(0)
            stacked_widget_ignore_tags_type.setCurrentIndex(0)

    def token_settings_changed():
        token_settings = main.settings_custom[tab]['token_settings']
        
        if line_edit_search_term.isEnabled() == True:
            if token_settings['use_tags']:
                checkbox_match_tags.setEnabled(False)
                checkbox_match_tags.setChecked(True)

                if token_settings['ignore_tags_tags']:
                    stacked_widget_ignore_tags.setEnabled(False)
                    stacked_widget_ignore_tags_type.setEnabled(False)
                else:
                    stacked_widget_ignore_tags.setEnabled(True)
                    stacked_widget_ignore_tags_type.setEnabled(True)
            else:
                checkbox_match_tags.setChecked(False)

                if token_settings['ignore_tags']:
                    if token_settings['ignore_tags_type'] == parent.tr('All'):
                        stacked_widget_ignore_tags.setEnabled(False)
                        stacked_widget_ignore_tags_type.setEnabled(False)
                        checkbox_match_tags.setEnabled(False)
                    else:
                        if checkbox_match_tags.isChecked():
                            stacked_widget_ignore_tags.setEnabled(False)
                            stacked_widget_ignore_tags_type.setEnabled(False)
                        else:
                            stacked_widget_ignore_tags.setEnabled(True)
                            stacked_widget_ignore_tags_type.setEnabled(True)
                            
                        checkbox_match_tags.setEnabled(True)
                else:
                    stacked_widget_ignore_tags.setEnabled(True)
                    stacked_widget_ignore_tags_type.setEnabled(True)
                    checkbox_match_tags.setEnabled(True)

            if checkbox_match_tags.isEnabled():
                match_tags_changed()

    main = wordless_misc.find_wordless_main(parent)

    label_search_term = QLabel(parent.tr('Search Term:'), parent)
    checkbox_multi_search_mode = QCheckBox(parent.tr('Multi-search Mode'), parent)
    line_edit_search_term = QLineEdit(parent)
    list_search_terms = wordless_list.Wordless_List_Search_Terms(parent)
    label_separator = wordless_label.Wordless_Label_Hint(parent.tr('* Use space to separate multiple tokens'), parent)

    checkbox_ignore_case = QCheckBox(parent.tr('Ignore case'), parent)
    checkbox_match_inflected_forms = QCheckBox(parent.tr('Match all inflected forms'), parent)
    checkbox_match_whole_words = QCheckBox(parent.tr('Match whole words only'), parent)
    checkbox_use_regex = QCheckBox(parent.tr('Use regular expression'), parent)

    checkbox_ignore_tags = QCheckBox(parent.tr('Ignore'), parent)
    checkbox_ignore_tags_tags = QCheckBox(parent.tr('Ignore'), parent)
    combo_box_ignore_tags = wordless_box.Wordless_Combo_Box(parent)
    combo_box_ignore_tags_tags = wordless_box.Wordless_Combo_Box(parent)
    label_ignore_tags = QLabel(parent.tr('tags'), parent)
    checkbox_match_tags = QCheckBox(parent.tr('Match tags only'), parent)

    combo_box_ignore_tags.addItems([
        parent.tr('all'),
        parent.tr('POS'),
        parent.tr('non-POS')
    ])

    combo_box_ignore_tags_tags.addItems([
        parent.tr('POS'),
        parent.tr('non-POS')
    ])

    wrapper_search_terms = QWidget(parent)

    wrapper_search_terms.setLayout(wordless_layout.Wordless_Layout())
    wrapper_search_terms.layout().addWidget(list_search_terms, 0, 0, 5, 1)
    wrapper_search_terms.layout().addWidget(list_search_terms.button_add, 0, 1)
    wrapper_search_terms.layout().addWidget(list_search_terms.button_remove, 1, 1)
    wrapper_search_terms.layout().addWidget(list_search_terms.button_clear, 2, 1)
    wrapper_search_terms.layout().addWidget(list_search_terms.button_import, 3, 1)
    wrapper_search_terms.layout().addWidget(list_search_terms.button_export, 4, 1)

    wrapper_search_terms.layout().setContentsMargins(0, 0, 0, 0)

    stacked_widget_search_term = wordless_layout.Wordless_Stacked_Widget(parent)
    stacked_widget_search_term.addWidget(line_edit_search_term)
    stacked_widget_search_term.addWidget(wrapper_search_terms)

    stacked_widget_ignore_tags = wordless_layout.Wordless_Stacked_Widget(parent)
    stacked_widget_ignore_tags.addWidget(checkbox_ignore_tags)
    stacked_widget_ignore_tags.addWidget(checkbox_ignore_tags_tags)

    stacked_widget_ignore_tags_type = wordless_layout.Wordless_Stacked_Widget(parent)
    stacked_widget_ignore_tags_type.addWidget(combo_box_ignore_tags)
    stacked_widget_ignore_tags_type.addWidget(combo_box_ignore_tags_tags)

    checkbox_match_tags.token_settings_changed = token_settings_changed

    checkbox_multi_search_mode.stateChanged.connect(multi_search_mode_changed)
    checkbox_match_tags.stateChanged.connect(match_tags_changed)

    multi_search_mode_changed()
    match_tags_changed()

    return (label_search_term,
            checkbox_multi_search_mode,

            stacked_widget_search_term,
            line_edit_search_term,
            list_search_terms,

            label_separator,

            checkbox_ignore_case,
            checkbox_match_inflected_forms,
            checkbox_match_whole_words,
            checkbox_use_regex,

            stacked_widget_ignore_tags,
            checkbox_ignore_tags,
            checkbox_ignore_tags_tags,

            stacked_widget_ignore_tags_type,
            combo_box_ignore_tags,
            combo_box_ignore_tags_tags,

            label_ignore_tags,
            checkbox_match_tags)