def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.api = WikipediaAPI(on_error=self.Error.api_error) self.result = None query_box = gui.hBox(self.controlArea, 'Query') # Queries configuration layout = QGridLayout() layout.setSpacing(7) row = 0 self.query_edit = ListEdit(self, 'query_list', "Each line represents a " "separate query.", 100, self) layout.addWidget(QLabel('Query word list:'), row, 0, 1, self.label_width) layout.addWidget(self.query_edit, row, self.label_width, 1, self.widgets_width) # Language row += 1 language_edit = ComboBox(self, 'language', tuple(sorted(lang2code.items()))) layout.addWidget(QLabel('Language:'), row, 0, 1, self.label_width) layout.addWidget(language_edit, row, self.label_width, 1, self.widgets_width) # Articles per query row += 1 layout.addWidget(QLabel('Articles per query:'), row, 0, 1, self.label_width) slider = gui.valueSlider(query_box, self, 'articles_per_query', box='', values=[1, 3, 5, 10, 25]) layout.addWidget(slider.box, row, 1, 1, self.widgets_width) query_box.layout().addLayout(layout) self.controlArea.layout().addWidget(query_box) self.controlArea.layout().addWidget( CheckListLayout('Text includes', self, 'text_includes', self.attributes, cols=2, callback=self.set_text_features)) self.info_box = gui.hBox(self.controlArea, 'Info') self.result_label = gui.label(self.info_box, self, self.info_label.format(0)) self.button_box = gui.hBox(self.controlArea) self.search_button = gui.button(self.button_box, self, 'Search', self.start_stop) self.search_button.setFocusPolicy(Qt.NoFocus)
def __init__(self): OWWidget.__init__(self) ConcurrentWidgetMixin.__init__(self) self.api = None self.corpus = None self.api_dlg = self.APICredentialsDialog(self) self.api_dlg.accept(silent=True) # Set API key button gui.button( self.controlArea, self, "Twitter API Key", callback=self.open_key_dialog, tooltip="Set the API key for this widget.", focusPolicy=Qt.NoFocus, ) # Query query_box = gui.hBox(self.controlArea, "Query") layout = QGridLayout() layout.setVerticalSpacing(5) layout.setColumnStretch(2, 1) # stretch last columns layout.setColumnMinimumWidth(1, 15) # add some space for checkbox ROW = 0 COLUMNS = 3 def add_row(label, items): nonlocal ROW, COLUMNS layout.addWidget(QLabel(label), ROW, 0) if isinstance(items, tuple): for i, item in enumerate(items): layout.addWidget(item, ROW, 1 + i) else: layout.addWidget(items, ROW, 1, 1, COLUMNS - 1) ROW += 1 # Query input add_row( "Query word list:", ListEdit( self, "word_list", "Multiple lines are joined with OR.", 80, self, ), ) # Search mode add_row( "Search by:", gui.comboBox(self, self, "mode", items=self.MODES, callback=self.mode_toggle), ) # Language self.language_combo = ComboBox( self, "language", items=(("Any", None), ) + tuple(sorted(lang2code.items())), ) add_row("Language:", self.language_combo) # Max tweets add_row( "Max tweets:", gui.spin( self, self, "max_tweets", minv=1, maxv=10000, checked="limited_search", ), ) # Retweets self.retweets_checkbox = gui.checkBox(self, self, "allow_retweets", "", minimumHeight=30) add_row("Allow retweets:", self.retweets_checkbox) # Collect Results add_row("Collect results:", gui.checkBox(self, self, "collecting", "")) query_box.layout().addLayout(layout) self.controlArea.layout().addWidget( CheckListLayout( "Text includes", self, "text_includes", self.attributes, cols=2, callback=self.set_text_features, )) # Buttons self.button_box = gui.hBox(self.controlArea) self.search_button = gui.button( self.button_box, self, "Search", self.start_stop, focusPolicy=Qt.NoFocus, ) self.mode_toggle() self.setFocus() # to widget itself to show placeholder for query_edit
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.api = None self.corpus = None self.api_dlg = self.APICredentialsDialog(self) self.api_dlg.accept(silent=True) # Set API key button gui.button(self.controlArea, self, 'Twitter API Key', callback=self.open_key_dialog, tooltip='Set the API key for this widget.', focusPolicy=Qt.NoFocus) # Query query_box = gui.hBox(self.controlArea, 'Query') layout = QGridLayout() layout.setVerticalSpacing(5) layout.setColumnStretch(2, 1) # stretch last columns layout.setColumnMinimumWidth(1, 15) # add some space for checkbox ROW = 0 COLUMNS = 3 def add_row(label, items): nonlocal ROW, COLUMNS layout.addWidget(QLabel(label), ROW, 0) if isinstance(items, tuple): for i, item in enumerate(items): layout.addWidget(item, ROW, 1+i) else: layout.addWidget(items, ROW, 1, 1, COLUMNS-1) ROW += 1 # Query input add_row('Query word list:', ListEdit(self, 'word_list', 'Multiple lines are joined with OR.', 80, self)) # Search mode add_row('Search by:', gui.comboBox(self, self, 'mode', items=self.MODES, callback=self.mode_toggle)) # Language self.language_combo = ComboBox(self, 'language', items=(('Any', None),) + tuple(sorted(lang2code.items()))) add_row('Language:', self.language_combo) # Max tweets add_row('Max tweets:', gui.spin(self, self, 'max_tweets', minv=1, maxv=10000, checked='limited_search')) # Retweets self.retweets_checkbox = gui.checkBox(self, self, 'allow_retweets', '', minimumHeight=30) add_row('Allow retweets:', self.retweets_checkbox) # Collect Results add_row('Collect results:', gui.checkBox(self, self, 'collecting', '')) query_box.layout().addLayout(layout) self.controlArea.layout().addWidget( CheckListLayout('Text includes', self, 'text_includes', self.attributes, cols=2, callback=self.set_text_features)) self.tweets_info_label = gui.label(self.controlArea, self, self.tweets_info.format(0), box='Info') # Buttons self.button_box = gui.hBox(self.controlArea) self.button_box.layout().addWidget(self.report_button) self.search_button = gui.button(self.button_box, self, 'Search', self.start_stop, focusPolicy=Qt.NoFocus) self.mode_toggle() self.setFocus() # to widget itself to show placeholder for query_edit
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.api = None self.corpus = None self.api_dlg = self.APICredentialsDialog(self) self.api_dlg.accept(silent=True) # Set API key button gui.button(self.controlArea, self, 'Twitter API Key', callback=self.open_key_dialog, tooltip='Set the API key for this widget.', focusPolicy=Qt.NoFocus) # Query query_box = gui.hBox(self.controlArea, 'Query') layout = QGridLayout() layout.setVerticalSpacing(5) layout.setColumnStretch(2, 1) # stretch last columns layout.setColumnMinimumWidth(1, 15) # add some space for checkbox ROW = 0 COLUMNS = 3 def add_row(label, items): nonlocal ROW, COLUMNS layout.addWidget(QLabel(label), ROW, 0) if isinstance(items, tuple): for i, item in enumerate(items): layout.addWidget(item, ROW, 1 + i) else: layout.addWidget(items, ROW, 1, 1, COLUMNS - 1) ROW += 1 # Query input add_row( 'Query word list:', ListEdit(self, 'word_list', 'Multiple lines are joined with OR.', 80, self)) # Search mode add_row( 'Search by:', gui.comboBox(self, self, 'mode', items=self.MODES, callback=self.mode_toggle)) # Language self.language_combo = ComboBox(self, 'language', items=(('Any', None), ) + tuple(sorted(lang2code.items()))) add_row('Language:', self.language_combo) # Max tweets add_row( 'Max tweets:', gui.spin(self, self, 'max_tweets', minv=1, maxv=10000, checked='limited_search')) # Retweets self.retweets_checkbox = gui.checkBox(self, self, 'allow_retweets', '', minimumHeight=30) add_row('Allow retweets:', self.retweets_checkbox) # Collect Results add_row('Collect results:', gui.checkBox(self, self, 'collecting', '')) query_box.layout().addLayout(layout) self.controlArea.layout().addWidget( CheckListLayout('Text includes', self, 'text_includes', self.attributes, cols=2, callback=self.set_text_features)) self.tweets_info_label = gui.label(self.controlArea, self, self.tweets_info.format(0), box='Info') # Buttons self.button_box = gui.hBox(self.controlArea) self.button_box.layout().addWidget(self.report_button) self.search_button = gui.button(self.button_box, self, 'Search', self.start_stop, focusPolicy=Qt.NoFocus) self.mode_toggle() self.setFocus() # to widget itself to show placeholder for query_edit
def __init__(self, *args, **kwargs): """ Attributes: api (twitter.TwitterAPI): Twitter API object. """ super().__init__(*args, **kwargs) self.api = None self.corpus = None self.api_dlg = self.APICredentialsDialog(self) self.api_dlg.accept(silent=True) self.controlArea.layout().setContentsMargins(0, 15, 0, 0) # Set API key button. key_dialog_button = gui.button(self.controlArea, self, 'Twitter API Key', callback=self.open_key_dialog, tooltip="Set the API key for this widget.") key_dialog_button.setFocusPolicy(QtCore.Qt.NoFocus) # Query self.query_box = gui.hBox(self.controlArea, 'Query') # Queries configuration layout = QtGui.QGridLayout() layout.setSpacing(7) # Query row = 0 query_edit = ListEdit(self, 'word_list', "Multiple lines are automatically joined with OR.", self) query_edit.setFixedHeight(self.text_area_height) layout.addWidget(QtGui.QLabel('Query word list:'), row, 0, 1, self.label_width) layout.addWidget(query_edit, row, self.label_width, 1, self.widgets_width) # Search mode row += 1 mode = gui.comboBox(self, self, 'mode') mode.addItem('Content') mode.addItem('Author') mode.addItem('Content & Author') layout.addWidget(QtGui.QLabel('Search by:'), row, 0, 1, self.label_width) layout.addWidget(mode, row, self.label_width, 1, self.widgets_width) # Retweets row += 1 check = gui.checkBox(self, self, 'allow_retweets', '') layout.addWidget(QtGui.QLabel('Allow\nretweets:'), row, 0, 1, self.label_width) layout.addWidget(check, row, self.label_width, 1, 1) # Time interval row += 1 interval = DateInterval(self, 'date_interval', min_date=datetime.now().date() - timedelta(10), max_date=datetime.now().date(), from_label='since', to_label='until') layout.addWidget(QtGui.QLabel('Date:'), row, 0, 1, self.label_width) layout.addWidget(interval, row, self.label_width, 1, self.widgets_width) # Language row += 1 language_edit = ComboBox(self, 'language', (('Any', None),) + tuple(sorted(lang2code.items()))) layout.addWidget(QtGui.QLabel('Language:'), row, 0, 1, self.label_width) layout.addWidget(language_edit, row, self.label_width, 1, self.widgets_width) # Max tweets row += 1 check, spin = gui.spin(self, self, 'max_tweets', minv=1, maxv=10000, checked='limited_search') layout.addWidget(QtGui.QLabel('Max tweets:'), row, 0, 1, self.label_width) layout.addWidget(check, row, self.label_width, 1, 1) layout.addWidget(spin, row, self.label_width + 1, 1, self.widgets_width - 1) # Checkbox row += 1 check = gui.checkBox(self, self, 'advance', '') layout.addWidget(QtGui.QLabel('Accumulate\nresults:'), row, 0, 1, self.label_width) layout.addWidget(check, row, self.label_width, 1, 1) self.query_box.layout().addLayout(layout) self.controlArea.layout().addWidget( CheckListLayout('Text includes', self, 'text_includes', self.attributes, cols=2, callback=self.set_text_features)) self.info_box = gui.hBox(self.controlArea, 'Info') self.tweets_count_label = gui.label(self.info_box, self, self.tweets_info.format(0)) # Buttons self.button_box = gui.hBox(self.controlArea) self.button_box.layout().addWidget(self.report_button) self.search_button = gui.button(self.button_box, self, "Search", self.search) self.search_button.setFocusPolicy(QtCore.Qt.NoFocus) self.start_signal.connect(self.on_start) self.error_signal.connect(self.on_error) self.progress_signal.connect(self.on_progress) self.finish_signal.connect(self.on_finish) self._tweet_count = False self.send_corpus() self.setFocus() # set focus to widget itself so placeholder is shown for query_edit