def _new_webview(self): HTML = ''' <!doctype html> <html> <head> <meta charset="utf-8"> <style> html, body {margin:0px;padding:0px;width:100%;height:100%;} span:hover {color:OrangeRed !important} span.selected {color:red !important} </style> </head> <body id="canvas"></body> </html>''' if self.webview: self.mainArea.layout().removeWidget(self.webview) webview = self.webview = gui.WebviewWidget(self.mainArea, self, debug=False) webview.setHtml(HTML) self.mainArea.layout().addWidget(webview) for script in ('wordcloud2.js', 'wordcloud-script.js'): self.webview.evalJS( open(path.join(path.dirname(__file__), 'resources', script), encoding='utf-8').read())
def _create_layout(self): box = gui.widgetBox(self.controlArea, orientation='horizontal') self.attr_combo = gui.comboBox(box, self, 'selected_attr', orientation='horizontal', label='Region attribute:', callback=self.on_attr_change) self.map_combo = gui.comboBox(box, self, 'selected_map', orientation='horizontal', label='Map type:', callback=self.on_map_change, items=Map.all) hexpand = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) self.attr_combo.setSizePolicy(hexpand) self.map_combo.setSizePolicy(hexpand) html = ''' <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <base href="{}/"/> <style> html, body, #map {{margin:0px;padding:0px;width:100%;height:100%;}} </style> <link href="resources/jquery-jvectormap-2.0.2.css" rel="stylesheet"> </head> <body> <div id="map"></div> </body> </html>'''.format( urljoin('file:', pathname2url(path.abspath(path.dirname(__file__))))) self.webview = gui.WebviewWidget(self.controlArea, self, debug=True) self.webview.setHtml(html) for script in ('jquery-2.1.4.min.js', 'jquery-jvectormap-2.0.2.min.js', 'jquery-jvectormap-world-mill-en.js', 'jquery-jvectormap-europe-mill-en.js', 'jquery-jvectormap-us-aea-en.js', 'geomap-script.js'): self.webview.evalJS( open(path.join(path.dirname(__file__), 'resources', script), encoding='utf-8').read()) self.webview.evalJS('REGIONS = {};'.format({ Map.WORLD: CC_WORLD, Map.EUROPE: CC_EUROPE, Map.USA: CC_USA }))
def _create_layout(self): box = gui.widgetBox(self.controlArea, orientation='horizontal') self.varmodel = VariableListModel(parent=self) self.attr_combo = gui.comboBox(box, self, 'selected_attr', orientation=Qt.Horizontal, label='Region attribute:', callback=self.on_attr_change, sendSelectedValue=True) self.attr_combo.setModel(self.varmodel) self.map_combo = gui.comboBox(box, self, 'selected_map', orientation=Qt.Horizontal, label='Map type:', callback=self.on_map_change, items=Map.all) hexpand = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) self.attr_combo.setSizePolicy(hexpand) self.map_combo.setSizePolicy(hexpand) url = urljoin( 'file:', pathname2url( os.path.join(os.path.dirname(__file__), 'resources', 'owdocmap.html'))) class Bridge(QObject): @pyqtSlot(str) def region_selected(_, regions): return self.region_selected(regions) self.webview = gui.WebviewWidget(self.controlArea, Bridge(), url=QUrl(url), debug=False) self.controlArea.layout().addWidget(self.webview) QTimer.singleShot( 0, lambda: self.webview.evalJS('REGIONS = {};'.format({ Map.WORLD: CC_WORLD, Map.EUROPE: CC_EUROPE, Map.USA: CC_USA })))
def _setup_gui(self): # Control area box = gui.hBox(self.controlArea, "Filtering") gui.doubleSpin(box, self, "threshold", 0, 1, 0.01, None, label="Threshold: ", orientation=Qt.Horizontal, callback=self.__on_threshold_changed) box = gui.hBox(self.controlArea, "Display") gui.radioButtons(box, self, "display_index", DisplayDocument.ITEMS, callback=self.__on_display_changed) gui.rubber(self.controlArea) # Main area model = PyTableModel(parent=self) self._list_view = SemanticListView() self._list_view.setModel(model) self._list_view.selectionModel().selectionChanged.connect( self.__on_selection_changed) self._list_view.horizontalHeader().sectionClicked.connect( self.__on_horizontal_header_clicked) splitter = QSplitter() splitter.addWidget(self._list_view) self._web_view = gui.WebviewWidget(splitter, debug=False) splitter.setSizes([200, 300]) self.mainArea.layout().addWidget(splitter)
def __init__(self): super().__init__() self.corpus = None # Corpus self.corpus_docs = None # Documents generated from Corpus self.output_mask = [] # Output corpus indices self.doc_webview = None # WebView for showing content self.search_features = [ ] # two copies are needed since Display allows drag & drop self.display_list_indices = [0] # Info attributes self.update_info() info_box = gui.widgetBox(self.controlArea, 'Info') gui.label(info_box, self, 'Documents: %(n_documents)s') gui.label(info_box, self, 'Preprocessed: %(is_preprocessed)s') gui.label(info_box, self, ' ◦ Tokens: %(n_tokens)s') gui.label(info_box, self, ' ◦ Types: %(n_types)s') gui.label(info_box, self, 'POS tagged: %(is_pos_tagged)s') gui.label(info_box, self, 'N-grams range: %(ngram_range)s') gui.label(info_box, self, 'Matching: %(n_matching)s') # Search features self.search_listbox = gui.listBox( self.controlArea, self, 'search_indices', 'search_features', selectionMode=QListView.ExtendedSelection, box='Search features', callback=self.search_features_changed) # Display features display_box = gui.widgetBox(self.controlArea, 'Display features') self.display_listbox = gui.listBox( display_box, self, 'display_list_indices', 'display_features', selectionMode=QListView.ExtendedSelection, callback=self.show_docs, enableDragDrop=True) self.show_tokens_checkbox = gui.checkBox(display_box, self, 'show_tokens', 'Show Tokens && Tags', callback=self.show_docs) # Auto-commit box gui.auto_commit(self.controlArea, self, 'autocommit', 'Send data', 'Auto send is on') # Search self.filter_input = gui.lineEdit(self.mainArea, self, 'regexp_filter', orientation=Qt.Horizontal, sizePolicy=QSizePolicy( QSizePolicy.MinimumExpanding, QSizePolicy.Fixed), label='RegExp Filter:') self.filter_input.textChanged.connect(self.refresh_search) # Main area self.splitter = QSplitter( orientation=Qt.Horizontal, childrenCollapsible=False, ) # Document list self.doc_list = QTableView() self.doc_list.setSelectionBehavior(QTableView.SelectRows) self.doc_list.setSelectionMode(QTableView.ExtendedSelection) self.doc_list.setEditTriggers(QAbstractItemView.NoEditTriggers) self.doc_list.horizontalHeader().setSectionResizeMode( QHeaderView.Stretch) self.doc_list.horizontalHeader().setVisible(False) self.splitter.addWidget(self.doc_list) self.doc_list_model = QStandardItemModel(self) self.doc_list.setModel(self.doc_list_model) self.doc_list.selectionModel().selectionChanged.connect(self.show_docs) # Document contents self.doc_webview = gui.WebviewWidget(self.splitter, debug=False) self.doc_webview.loadFinished.connect(self.highlight_docs) self.mainArea.layout().addWidget(self.splitter)