def _createSpacer(self, width=0): spacer = QWidget(self) spacer.setFixedSize(width, self.iconSize().height()) return spacer
def __init__(self, config, db): FreeseerApp.__init__(self) self.config = config self.db = db icon = QIcon() icon.addPixmap(QPixmap(':/freeseer/logo.png'), QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.resize(960, 600) # # Setup Layout # self.mainWidget = QWidget() self.mainLayout = QVBoxLayout() self.mainWidget.setLayout(self.mainLayout) self.setCentralWidget(self.mainWidget) self.mainLayout.setAlignment(Qt.AlignTop) # Add custom widgets self.commandButtons = CommandButtons() self.tableView = QTableView() self.tableView.setSortingEnabled(True) self.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) self.talkDetailsWidget = TalkDetailsWidget() self.importTalksWidget = ImportTalksWidget() self.newTalkWidget = NewTalkWidget() self.mainLayout.addWidget(self.importTalksWidget) #self.mainLayout.addLayout(self.titleLayout) self.mainLayout.addWidget(self.commandButtons) self.mainLayout.addWidget(self.tableView) self.mainLayout.addWidget(self.talkDetailsWidget) self.mainLayout.addWidget(self.importTalksWidget) # --- End Layout # Keep track of index of the most recently selected talk self.currentTalkIndex = QPersistentModelIndex() # Prompt user to "Continue Editing", "Discard Changes" or "Save Changes" self.savePromptBox = QMessageBox() self.savePromptBox.setWindowTitle("Unsaved Changes Exist") self.savePromptBox.setIcon(QMessageBox.Information) self.savePromptBox.setText("The talk you were editing has unsaved changes.") self.continueButton = self.savePromptBox.addButton("Continue Editing", QMessageBox.RejectRole) self.discardButton = self.savePromptBox.addButton("Discard Changes", QMessageBox.DestructiveRole) self.saveButton = self.savePromptBox.addButton("Save Changes", QMessageBox.AcceptRole) self.savePromptBox.setDefaultButton(self.saveButton) # Initialize geometry, to be used for restoring window positioning. self.geometry = None # # Setup Menubar # self.actionExportCsv = QAction(self) self.actionExportCsv.setObjectName('actionExportCsv') self.actionRemoveAll = QAction(self) self.actionRemoveAll.setObjectName('actionRemoveAll') # Actions self.menuFile.insertAction(self.actionExit, self.actionExportCsv) self.menuFile.insertAction(self.actionExit, self.actionRemoveAll) # --- End Menubar # # TableView Connections # self.connect(self.tableView, SIGNAL('activated(const QModelIndex)'), self.click_talk) self.connect(self.tableView, SIGNAL('selected(const QModelIndex)'), self.click_talk) self.connect(self.tableView, SIGNAL('clicked(const QModelIndex)'), self.click_talk) # Import Widget self.connect(self.importTalksWidget.csvRadioButton, SIGNAL('toggled(bool)'), self.toggle_import) self.connect(self.importTalksWidget.importButton, SIGNAL('clicked()'), self.import_talks) self.connect(self.importTalksWidget.cancelButton, SIGNAL('clicked()'), self.hide_import_talks_widget) self.importTalksWidget.setHidden(True) self.connect(self.importTalksWidget.csvFileSelectButton, SIGNAL('clicked()'), self.csv_file_select) self.connect(self.importTalksWidget.csvLineEdit, SIGNAL('returnPressed()'), self.importTalksWidget.importButton.click) self.connect(self.importTalksWidget.rssLineEdit, SIGNAL('returnPressed()'), self.importTalksWidget.importButton.click) self.connect(self.actionExportCsv, SIGNAL('triggered()'), self.export_talks_to_csv) self.connect(self.actionRemoveAll, SIGNAL('triggered()'), self.confirm_reset) # Command Buttons self.connect(self.commandButtons.addButton, SIGNAL('clicked()'), self.click_add_button) self.connect(self.commandButtons.removeButton, SIGNAL('clicked()'), self.remove_talk) self.connect(self.commandButtons.removeAllButton, SIGNAL('clicked()'), self.confirm_reset) self.connect(self.commandButtons.importButton, SIGNAL('clicked()'), self.show_import_talks_widget) self.connect(self.commandButtons.exportButton, SIGNAL('clicked()'), self.export_talks_to_csv) self.connect(self.commandButtons.searchButton, SIGNAL('clicked()'), self.search_talks) self.connect(self.commandButtons.searchLineEdit, SIGNAL('textEdited(QString)'), self.search_talks) self.connect(self.commandButtons.searchLineEdit, SIGNAL('returnPressed()'), self.search_talks) # Talk Details Buttons self.connect(self.talkDetailsWidget.saveButton, SIGNAL('clicked()'), self.update_talk) # Talk Details Widget self.connect(self.talkDetailsWidget.titleLineEdit, SIGNAL('textEdited(const QString)'), self.enable_save) self.connect(self.talkDetailsWidget.presenterLineEdit, SIGNAL('textEdited(const QString)'), self.enable_save) self.connect(self.talkDetailsWidget.categoryLineEdit, SIGNAL('textEdited(const QString)'), self.enable_save) self.connect(self.talkDetailsWidget.eventLineEdit, SIGNAL('textEdited(const QString)'), self.enable_save) self.connect(self.talkDetailsWidget.roomLineEdit, SIGNAL('textEdited(const QString)'), self.enable_save) self.connect(self.talkDetailsWidget.descriptionTextEdit, SIGNAL('modificationChanged(bool)'), self.enable_save) self.connect(self.talkDetailsWidget.dateEdit, SIGNAL('dateChanged(const QDate)'), self.enable_save) self.connect(self.talkDetailsWidget.startTimeEdit, SIGNAL('timeChanged(const QTime)'), self.enable_save) self.connect(self.talkDetailsWidget.endTimeEdit, SIGNAL('timeChanged(const QTime)'), self.enable_save) # New Talk Widget self.newTalkWidget.connect(self.newTalkWidget.addButton, SIGNAL('clicked()'), self.add_talk) self.newTalkWidget.connect(self.newTalkWidget.cancelButton, SIGNAL('clicked()'), self.newTalkWidget.reject) # Load default language actions = self.menuLanguage.actions() for action in actions: if action.data().toString() == self.config.default_language: action.setChecked(True) self.translate(action) break # Load Talk Database self.load_presentations_model() # Setup Autocompletion self.update_autocomplete_fields() self.talkDetailsWidget.saveButton.setEnabled(False)
def __init__(self, parent=None): QWidget.__init__(self, parent) icon = QIcon() icon.addPixmap(QPixmap(_fromUtf8(":/freeseer/logo.png")), QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.mainWidget = QWidget() self.mainLayout = QVBoxLayout() self.setLayout(self.mainLayout) boldFont = QFont() boldFont.setBold(True) self.infoLayout = QFormLayout() self.mainLayout.addLayout(self.infoLayout) self.reportLayout = QHBoxLayout() self.mainLayout.addLayout(self.reportLayout) self.buttonLayout = QHBoxLayout() self.mainLayout.addLayout(self.buttonLayout) # Talk infomation self.titleLabel = QLabel("Title:") self.titleLabel2 = QLabel() self.titleLabel2.setFont(boldFont) self.speakerLabel = QLabel("Speaker:") self.speakerLabel2 = QLabel() self.speakerLabel2.setFont(boldFont) self.eventLabel = QLabel("Event:") self.eventLabel2 = QLabel() self.eventLabel2.setFont(boldFont) self.roomLabel = QLabel("Room:") self.roomLabel2 = QLabel() self.roomLabel2.setFont(boldFont) self.startTimeLabel = QLabel("Start Time:") self.startTimeLabel2 = QLabel() self.startTimeLabel2.setFont(boldFont) self.endTimeLabel = QLabel("End Time:") self.endTimeLabel2 = QLabel() self.endTimeLabel2.setFont(boldFont) self.infoLayout.addRow(self.titleLabel, self.titleLabel2) self.infoLayout.addRow(self.speakerLabel, self.speakerLabel2) self.infoLayout.addRow(self.eventLabel, self.eventLabel2) self.infoLayout.addRow(self.roomLabel, self.roomLabel2) self.infoLayout.addRow(self.startTimeLabel, self.startTimeLabel2) self.infoLayout.addRow(self.endTimeLabel, self.endTimeLabel2) #Report self.commentLabel = QLabel("Comment") self.commentEdit = QLineEdit() self.reportCombo = QComboBox() # Prototype for report options. Please define these in the # record.py logic file under retranslate() so that translations # work. # self.options = ['No Audio', 'No Video', 'No Audio/Video'] # for i in self.options: # self.reportCombo.addItem(i) self.releaseCheckBox = QCheckBox("Release Received") self.reportLayout.addWidget(self.commentLabel) self.reportLayout.addWidget(self.commentEdit) self.reportLayout.addWidget(self.reportCombo) self.reportLayout.addWidget(self.releaseCheckBox) #Buttons self.reportButton = QPushButton("Report") self.closeButton = QPushButton("Close") self.buttonLayout.addWidget(self.closeButton) self.buttonLayout.addWidget(self.reportButton) self.connect(self.closeButton, SIGNAL("clicked()"), self.close)
# \param externalDSLink dsource link action def connectExternalActions(self, externalApply=None, externalSave=None, externalClose=None, externalStore=None, externalDSLink=None): if hasattr(self, "_DataSourceDlg__methods") and self.__methods: return self.__methods.connectExternalActions( externalApply, externalSave, externalClose, externalStore) if __name__ == "__main__": import sys from PyQt4.QtGui import QWidget ## Qt application app = QApplication(sys.argv) ## the second datasource form w = QWidget() w.show() ## datasource form form2 = DataSourceDlg(w) form2.createGUI() form2.treeMode(True) form2.show() app.exec_()
def setUp( self ) : self.app = QApplication(sys.argv) self.parent = QWidget() self.diag = BaseDialog( self.parent , 'tests/szarp/' ) self.okbut = self.diag.buttonBox.button(self.diag.buttonBox.Ok)
def __init__(self, iface, parent=None, qsetting=''): """Constructor for the dialog. :param iface: A Quantum GIS QGisAppInterface instance. :type iface: QGisAppInterface :param parent: Parent widget of this dialog :type parent: QWidget :param qsetting: String to specify the QSettings. By default, use empty string. :type qsetting: str """ QDialog.__init__(self, parent) self.setupUi(self) self.setWindowTitle(self.tr('InaSAFE %s Options' % get_version())) # Save reference to the QGIS interface and parent self.iface = iface self.parent = parent if qsetting: self.settings = QSettings(qsetting) else: self.settings = QSettings() # InaSAFE default values self.default_value_parameters = [] self.default_value_parameter_containers = [] # Flag for restore default values self.is_restore_default = False # List of setting key and control self.boolean_settings = { 'visibleLayersOnlyFlag': self.cbxVisibleLayersOnly, 'set_layer_from_title_flag': self.cbxSetLayerNameFromTitle, 'setZoomToImpactFlag': self.cbxZoomToImpact, 'set_show_only_impact_on_report': self.cbx_show_only_impact, 'print_atlas_report': self.cbx_print_atlas_report, 'setHideExposureFlag': self.cbxHideExposure, 'useSelectedFeaturesOnly': self.cbxUseSelectedFeaturesOnly, 'useSentry': self.cbxUseSentry, 'template_warning_verbose': self.template_warning_checkbox, 'showOrganisationLogoInDockFlag': self.organisation_on_dock_checkbox, 'developer_mode': self.cbxDevMode, 'generate_report': self.checkbox_generate_reports, 'memory_profile': self.check_box_memory } self.text_settings = { 'keywordCachePath': self.leKeywordCachePath, 'ISO19115_ORGANIZATION': self.iso19115_organization_le, 'ISO19115_URL': self.iso19115_url_le, 'ISO19115_EMAIL': self.iso19115_email_le, 'ISO19115_LICENSE': self.iso19115_license_le, } # Set up things for context help self.help_button = self.button_box.button(QDialogButtonBox.Help) # Allow toggling the help button self.help_button.setCheckable(True) self.help_button.toggled.connect(self.help_toggled) self.main_stacked_widget.setCurrentIndex(1) # Always set first tab to be open, 0-th index self.tabWidget.setCurrentIndex(0) # Hide not implemented group self.grpNotImplemented.hide() self.adjustSize() # Demographic tab self.scroll_area = QScrollArea() self.scroll_area.setWidgetResizable(True) self.widget_container = QWidget() self.scroll_area.setWidget(self.widget_container) self.container_layout = QVBoxLayout() self.widget_container.setLayout(self.container_layout) self.default_values_layout.addWidget(self.scroll_area) self.restore_state() # Hide checkbox if not developers if not self.cbxDevMode.isChecked(): self.checkbox_generate_reports.hide() # Set up listener for various UI self.custom_org_logo_checkbox.toggled.connect( self.set_organisation_logo) self.custom_north_arrow_checkbox.toggled.connect(self.set_north_arrow) self.custom_UseUserDirectory_checkbox.toggled.connect( self.set_user_dir) self.custom_templates_dir_checkbox.toggled.connect( self.set_templates_dir) self.custom_org_disclaimer_checkbox.toggled.connect( self.set_org_disclaimer) # Set up listener for restore defaults button self.restore_defaults = self.button_box_restore_defaults.button( QDialogButtonBox.RestoreDefaults) self.restore_defaults.setCheckable(True) self.restore_defaults.clicked.connect( self.restore_defaults_ratio) # TODO: Hide this until behaviour is defined # hide template warning toggle self.template_warning_checkbox.hide() # hide custom template dir toggle self.custom_templates_dir_checkbox.hide() self.splitter_custom_report.hide()
def __init__(self, recordapp=None): FreeseerApp.__init__(self) self.recordapp = recordapp icon = QIcon() icon.addPixmap(QPixmap(_fromUtf8(":/freeseer/logo.png")), QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.resize(960, 400) self.mainWidget = QWidget() self.mainLayout = QHBoxLayout() self.mainWidget.setLayout(self.mainLayout) self.setCentralWidget(self.mainWidget) self.editorWidget = EditorWidget() self.editorWidget.editor.setColumnHidden(5, True) self.addTalkWidget = AddTalkWidget() self.mainLayout.addWidget(self.editorWidget) self.mainLayout.addWidget(self.addTalkWidget) # Initialize geometry, to be used for restoring window positioning. self.geometry = None self.config = Config(settings.configdir) self.db = QtDBConnector(settings.configdir) # # Setup Menubar # self.actionExportCsv = QAction(self) self.actionExportCsv.setObjectName(_fromUtf8("actionExportCsv")) # Actions self.menuFile.insertAction(self.actionExit, self.actionExportCsv) # --- End Menubar # # Talk Editor Connections # # Add Talk Widget self.connect(self.addTalkWidget.addButton, SIGNAL('clicked()'), self.add_talk) self.connect(self.addTalkWidget.cancelButton, SIGNAL('clicked()'), self.hide_add_talk_widget) self.addTalkWidget.setHidden(True) # Editor Widget self.connect(self.editorWidget.rssLineEdit, SIGNAL('returnPressed()'), self.editorWidget.rssPushButton.click) self.connect(self.editorWidget.rssPushButton, SIGNAL('clicked()'), self.add_talks_from_rss) self.connect(self.editorWidget.addButton, SIGNAL('clicked()'), self.show_add_talk_widget) self.connect(self.editorWidget.removeButton, SIGNAL('clicked()'), self.remove_talk) self.connect(self.editorWidget.clearButton, SIGNAL('clicked()'), self.confirm_reset) self.connect(self.editorWidget.closeButton, SIGNAL('clicked()'), self.close) # CSV Widget self.connect(self.editorWidget.csvLineEdit, SIGNAL('returnPressed()'), self.editorWidget.csvPushButton.click) self.connect(self.editorWidget.csvFileSelectButton, SIGNAL('clicked()'), self.csv_file_select) self.connect(self.editorWidget.csvPushButton, SIGNAL('clicked()'), self.add_talks_from_csv) self.connect(self.actionExportCsv, SIGNAL('triggered()'), self.export_talks_to_csv) # Load default language actions = self.menuLanguage.actions() for action in actions: if action.data().toString() == self.config.default_language: action.setChecked(True) self.translate(action) break self.load_presentations_model()
def __init__(self, img): QtGui.QFrame.__init__(self) #self.setFrameStyle(QtGui.QFrame.Box|QtGui.QFrame.Sunken) self.img = img self.mixer = ColorMixer(self.img) self.callback = None #--------------------------------------------------------------- # ComboBox #--------------------------------------------------------------- self.combo_box_entries = [ 'RGB Color', 'HSV Color', 'Brightness/Contrast', 'Gamma', 'Gamma (Sigmoidal)' ] self.combo_box = QtGui.QComboBox() for entry in self.combo_box_entries: self.combo_box.addItem(entry) self.combo_box.currentIndexChanged.connect(self.combo_box_changed) #--------------------------------------------------------------- # RGB color sliders #--------------------------------------------------------------- # radio buttons self.rgb_add = QtGui.QRadioButton('Additive') self.rgb_mul = QtGui.QRadioButton('Multiplicative') self.rgb_mul.toggled.connect(self.rgb_radio_changed) self.rgb_add.toggled.connect(self.rgb_radio_changed) # sliders rs = IntelligentSlider('R', 0.51, -255, self.rgb_changed) gs = IntelligentSlider('G', 0.51, -255, self.rgb_changed) bs = IntelligentSlider('B', 0.51, -255, self.rgb_changed) self.rs = rs self.gs = gs self.bs = bs self.rgb_widget = QWidget() self.rgb_widget.layout = QGridLayout(self.rgb_widget) self.rgb_widget.layout.addWidget(self.rgb_add, 0, 0, 1, 3) self.rgb_widget.layout.addWidget(self.rgb_mul, 1, 0, 1, 3) self.rgb_widget.layout.addWidget(self.rs, 2, 0) self.rgb_widget.layout.addWidget(self.gs, 2, 1) self.rgb_widget.layout.addWidget(self.bs, 2, 2) #--------------------------------------------------------------- # HSV sliders #--------------------------------------------------------------- # radio buttons self.hsv_add = QtGui.QRadioButton('Additive') self.hsv_mul = QtGui.QRadioButton('Multiplicative') self.hsv_mul.toggled.connect(self.hsv_radio_changed) self.hsv_mul.toggled.connect(self.hsv_radio_changed) # sliders hs = IntelligentSlider('H', 0.36, -180, self.hsv_changed) ss = IntelligentSlider('S', 0.002, 0, self.hsv_changed) vs = IntelligentSlider('V', 0.002, 0, self.hsv_changed) self.hs = hs self.ss = ss self.vs = vs self.hsv_widget = QWidget() self.hsv_widget.layout = QGridLayout(self.hsv_widget) self.hsv_widget.layout.addWidget(self.hsv_add, 0, 0, 1, 3) self.hsv_widget.layout.addWidget(self.hsv_mul, 1, 0, 1, 3) self.hsv_widget.layout.addWidget(self.hs, 2, 0) self.hsv_widget.layout.addWidget(self.ss, 2, 1) self.hsv_widget.layout.addWidget(self.vs, 2, 2) #--------------------------------------------------------------- # Brightness/Contrast sliders #--------------------------------------------------------------- # sliders cont = IntelligentSlider('x', 0.002, 0, self.bright_changed) bright = IntelligentSlider('+', 0.51, -255, self.bright_changed) self.cont = cont self.bright = bright # layout self.bright_widget = QWidget() self.bright_widget.layout = QtGui.QGridLayout(self.bright_widget) self.bright_widget.layout.addWidget(self.cont, 0, 0) self.bright_widget.layout.addWidget(self.bright, 0, 1) #---------------------------------------------------------------------- # Gamma Slider #---------------------------------------------------------------------- gamma = IntelligentSlider('gamma', 0.005, 0, self.gamma_changed) self.gamma = gamma # layout self.gamma_widget = QWidget() self.gamma_widget.layout = QtGui.QGridLayout(self.gamma_widget) self.gamma_widget.layout.addWidget(self.gamma, 0, 0) #--------------------------------------------------------------- # Sigmoid Gamma sliders #--------------------------------------------------------------- # sliders alpha = IntelligentSlider('alpha', 0.011, 1, self.sig_gamma_changed) beta = IntelligentSlider('beta', 0.012, 0, self.sig_gamma_changed) self.a_gamma = alpha self.b_gamma = beta # layout self.sig_gamma_widget = QWidget() self.sig_gamma_widget.layout = QtGui.QGridLayout(self.sig_gamma_widget) self.sig_gamma_widget.layout.addWidget(self.a_gamma, 0, 0) self.sig_gamma_widget.layout.addWidget(self.b_gamma, 0, 1) #--------------------------------------------------------------- # Buttons #--------------------------------------------------------------- self.commit_button = QtGui.QPushButton('Commit') self.commit_button.clicked.connect(self.commit_changes) self.revert_button = QtGui.QPushButton('Revert') self.revert_button.clicked.connect(self.revert_changes) #--------------------------------------------------------------- # Mixer Layout #--------------------------------------------------------------- self.sliders = QStackedWidget() self.sliders.addWidget(self.rgb_widget) self.sliders.addWidget(self.hsv_widget) self.sliders.addWidget(self.bright_widget) self.sliders.addWidget(self.gamma_widget) self.sliders.addWidget(self.sig_gamma_widget) self.layout = QtGui.QGridLayout(self) self.layout.addWidget(self.combo_box, 0, 0) self.layout.addWidget(self.sliders, 1, 0) self.layout.addWidget(self.commit_button, 2, 0) self.layout.addWidget(self.revert_button, 3, 0) #--------------------------------------------------------------- # State Initialization #--------------------------------------------------------------- self.combo_box.setCurrentIndex(0) self.rgb_mul.setChecked(True) self.hsv_mul.setChecked(True)
def __init__(self, parameter, parent=None): """Constructor :param parameter: A DefaultSelectParameter object. :type parameter: DefaultSelectParameter """ super(DefaultSelectParameterWidget, self).__init__(parameter, parent) self.default_layout = QHBoxLayout() self.radio_button_layout = QHBoxLayout() self.radio_button_widget = QWidget() self.default_label = QLabel(tr('Default')) # Create radio button group self.default_input_button_group = QButtonGroup() # Define string enabler for radio button self.radio_button_enabler = self.input.itemData(0, Qt.UserRole) for i in range(len(self._parameter.default_labels)): if '%s' in self._parameter.default_labels[i]: label = ( self._parameter.default_labels[i] % self._parameter.default_values[i]) else: label = self._parameter.default_labels[i] radio_button = QRadioButton(label) self.radio_button_layout.addWidget(radio_button) self.default_input_button_group.addButton(radio_button, i) if self._parameter.default_value == \ self._parameter.default_values[i]: radio_button.setChecked(True) # Create double spin box for custom value self.custom_value = QDoubleSpinBox() if self._parameter.default_values[-1]: self.custom_value.setValue(self._parameter.default_values[-1]) has_min = False if self._parameter.minimum is not None: has_min = True self.custom_value.setMinimum(self._parameter.minimum) has_max = False if self._parameter.maximum is not None: has_max = True self.custom_value.setMaximum(self._parameter.maximum) if has_min and has_max: step = (self._parameter.maximum - self._parameter.minimum) / 100.0 self.custom_value.setSingleStep(step) self.radio_button_layout.addWidget(self.custom_value) self.toggle_custom_value() # Reset the layout self.input_layout.setParent(None) self.help_layout.setParent(None) self.label.setParent(None) self.inner_input_layout.setParent(None) self.input_layout = QGridLayout() self.input_layout.setSpacing(0) self.input_layout.addWidget(self.label, 0, 0) self.input_layout.addLayout(self.inner_input_layout, 0, 1) self.input_layout.addWidget(self.default_label, 1, 0) self.input_layout.addLayout(self.radio_button_layout, 1, 1) self.main_layout.addLayout(self.input_layout) self.main_layout.addLayout(self.help_layout) # check every added combobox, it could have been toggled by # the existing keyword self.toggle_input() # Connect # noinspection PyUnresolvedReferences self.input.currentIndexChanged.connect(self.toggle_input) self.default_input_button_group.buttonClicked.connect( self.toggle_custom_value)
def createSpace(self, size=5): """Creates a widget that can be used as spacing on a panel.""" qw = QWidget() qw.setMinimumSize(QSize(size, size)) return qw
def _initViewerStack(self): self.volumeEditors = {} self.viewerStack.addWidget(QWidget())
def __init__(self, parent=None): ''' Constructor ''' QWidget.__init__(self, parent) self.mainLayout = QVBoxLayout() self.setLayout(self.mainLayout) # # Import Layout # self.importLayout = QHBoxLayout() self.mainLayout.addLayout(self.importLayout) self.importTypeComboBox = QComboBox() self.importTypeComboBox.addItem("RSS") self.importTypeComboBox.addItem("CSV") self.importLayout.addWidget(self.importTypeComboBox) # # RSS Layout # self.rssWidget = QWidget() self.rssLayout = QHBoxLayout() self.rssWidget.setLayout(self.rssLayout) self.rssLabel = QLabel("URL") self.rssLineEdit = QLineEdit() if hasattr(QLineEdit(), 'setPlaceholderText'): self.rssLineEdit.setPlaceholderText("http://www.example.com/rss") self.rssLabel.setBuddy(self.rssLineEdit) self.rssPushButton = QPushButton("Load talks from RSS") rss_icon = QIcon() rss_icon.addPixmap(QPixmap(":/multimedia/rss.png"), QIcon.Normal, QIcon.Off) self.rssPushButton.setIcon(rss_icon) self.rssLayout.addWidget(self.rssLabel) self.rssLayout.addWidget(self.rssLineEdit) self.rssLayout.addWidget(self.rssPushButton) self.importLayout.addWidget(self.rssWidget) # # CSV Layout # self.csvWidget = QWidget() self.csvWidget.hide() self.csvLayout = QHBoxLayout() self.csvWidget.setLayout(self.csvLayout) self.csvLabel = QLabel("File") self.csvLineEdit = QLineEdit() if sys.platform == 'win32': if hasattr(QLineEdit(), 'setPlaceholderText'): self.csvLineEdit.setPlaceholderText("C:\Example\Freeseer2011.csv") else: if hasattr(QLineEdit(), 'setPlaceholderText'): self.csvLineEdit.setPlaceholderText("/home/freeseer/Example/Freeseer2011.csv") self.csvLabel.setBuddy(self.csvLineEdit) self.csvFileSelectButton = QToolButton() self.csvFileSelectButton.setText("...") self.csvPushButton = QPushButton("Load talks from CSV") self.csvLayout.addWidget(self.csvLabel) self.csvLayout.addWidget(self.csvLineEdit) self.csvLayout.addWidget(self.csvFileSelectButton) self.csvLayout.addWidget(self.csvPushButton) self.importLayout.addWidget(self.csvWidget) # # Editor Layout # self.editorLayout = QHBoxLayout() self.mainLayout.addLayout(self.editorLayout) self.buttonsLayout = QVBoxLayout() self.editorLayout.addLayout(self.buttonsLayout) addIcon = QIcon.fromTheme("list-add") removeIcon = QIcon.fromTheme("list-remove") clearIcon = QIcon.fromTheme("edit-clear") closeIcon = QIcon.fromTheme("application-exit") self.addButton = QPushButton("Add") self.addButton.setIcon(addIcon) self.removeButton = QPushButton("Remove") self.removeButton.setIcon(removeIcon) self.clearButton = QPushButton("Clear") self.clearButton.setIcon(clearIcon) self.closeButton = QPushButton("Close") self.closeButton.setIcon(closeIcon) self.buttonsLayout.addWidget(self.addButton) self.buttonsLayout.addWidget(self.removeButton) self.buttonsLayout.addWidget(self.clearButton) self.buttonsLayout.addStretch(0) self.buttonsLayout.addWidget(self.closeButton) self.editor = QTableView() self.editor.setAlternatingRowColors(True) self.editor.setSortingEnabled(True) self.editorLayout.addWidget(self.editor) # # Widget Connections # self.connect(self.importTypeComboBox, SIGNAL('currentIndexChanged(const QString&)'), self.switch_import_plugin)
except AttributeError: def _fromUtf8(s): return s # WINDOW = tk.Tk() # WINDOW.title(WindowCons.EXE_NAME) # 设置名称 # WINDOW.geometry(WindowCons.WINDOW_SIZE) # 设置初始窗口大小 APP = QApplication(sys.argv) WINDOW = QMainWindow() WINDOW.setObjectName(_fromUtf8("MainWindow")) WINDOW.resize(960, 540) CENTRAL_WIDGET = QWidget(WINDOW) CENTRAL_WIDGET.setObjectName(_fromUtf8("centralwidget")) # def callback(): # """关闭回调""" # if messagebox.askokcancel("Quit", "Do you really wish to quit?"): # WINDOW.destroy() # canvas = tk.Canvas(WINDOW, width=900, height=500, bd=0, highlightthickness=0) # imgpath = './resource/backgroud.png' # img = Image.open(imgpath) # photo = ImageTk.PhotoImage(img) # # canvas.create_image(900, 500, image=photo) # canvas.pack() # WINDOW.protocol(WindowCons.QUIT_ACTION, callback)
def buildMixer(self): log.debug("Building mixer") self.MatrixButtonControls = {} self.MatrixRotaryControls = {} self.MatrixVolumeControls = {} self.VolumeControls = {} self.SelectorControls = {} self.SPDIFmodeControls = {} self.TriggerControls = {} self.DigIfaceControls = {} self.PlbkRouteControls = {} self.StreamMonitors = [] nb_pys_out = self.hw.getDiscrete("/HwInfo/PhysicalAudioOutCount") nb_pys_in = self.hw.getDiscrete("/HwInfo/PhysicalAudioInCount") outputtabslayout = QHBoxLayout(self) outputtabs = QTabWidget(self) outputtabslayout.addWidget(outputtabs, 1) for outpair in range(int(nb_pys_out / 2)): tab = QWidget(outputtabs) tablayout = QHBoxLayout(tab) grpMonitor = QGroupBox(tab) tablayout.addWidget(grpMonitor) grpPlayback = QGroupBox(tab) tablayout.addWidget(grpPlayback) grpOutput = QGroupBox(tab) tablayout.addWidget(grpOutput) grpMonitor.setTitle("Monitor") grpPlayback.setTitle("Playback") grpOutput.setTitle("Output") # monitor controls grpMonitorLayout = QHBoxLayout() grpMonitor.setLayout(grpMonitorLayout) output_id = outpair * 2 for inpair in range(int(nb_pys_in / 2)): # create GUI elements strip = AfMonitorWidget(grpMonitor) grpMonitorLayout.addWidget(strip, 1) input_id = inpair * 2 strip.lblName.setText("In %d/%d" % (input_id + 1, input_id + 2)) # add the elements to the control structure self.MatrixButtonControls[strip.btnMute0] = [ '/Mixer/MonitorMute', input_id, output_id ] self.MatrixButtonControls[strip.btnMute1] = [ '/Mixer/MonitorMute', input_id + 1, output_id + 1 ] self.MatrixButtonControls[strip.btnSolo0] = [ '/Mixer/MonitorSolo', input_id, output_id ] self.MatrixButtonControls[strip.btnSolo1] = [ '/Mixer/MonitorSolo', input_id + 1, output_id + 1 ] self.MatrixRotaryControls[strip.rotPan0] = [ '/Mixer/MonitorPan', input_id, output_id ] self.MatrixRotaryControls[strip.rotPan1] = [ '/Mixer/MonitorPan', input_id + 1, output_id + 1 ] self.MatrixVolumeControls[strip.sldGain0] = [ '/Mixer/MonitorGain', input_id, output_id ] self.MatrixVolumeControls[strip.sldGain1] = [ '/Mixer/MonitorGain', input_id + 1, output_id + 1 ] # playback grpPlaybackLayout = QHBoxLayout() grpPlayback.setLayout(grpPlaybackLayout) strip = AfMonitorWidget(grpPlayback) grpPlaybackLayout.addWidget(strip, 1) strip.lblName.setText("Playback %d/%d" % (output_id + 1, output_id + 2)) self.StreamMonitors.append(strip) self.VolumeControls[strip.sldGain0] = [ "/Mixer/PC%dGain" % (output_id) ] self.VolumeControls[strip.sldGain1] = [ "/Mixer/PC%dGain" % (output_id + 1) ] self.SelectorControls[strip.btnMute0] = [ "/Mixer/PC%dMute" % (output_id) ] self.SelectorControls[strip.btnMute1] = [ "/Mixer/PC%dMute" % (output_id + 1) ] self.SelectorControls[strip.btnSolo0] = [ "/Mixer/PC%dSolo" % (output_id) ] self.SelectorControls[strip.btnSolo1] = [ "/Mixer/PC%dSolo" % (output_id + 1) ] # fix up mixer strip gui strip.rotPan0.hide() strip.rotPan1.hide() # output grpOutputLayout = QHBoxLayout() grpOutput.setLayout(grpOutputLayout) strip = AfMonitorWidget(grpOutput) grpOutputLayout.addWidget(strip, 1) strip.lblName.setText("Output %d/%d" % (output_id + 1, output_id + 2)) self.VolumeControls[strip.sldGain0] = [ "/Mixer/OUT%dGain" % (output_id) ] self.VolumeControls[strip.sldGain1] = [ "/Mixer/OUT%dGain" % (output_id + 1) ] self.SelectorControls[strip.btnMute0] = [ "/Mixer/OUT%dMute" % (output_id) ] self.SelectorControls[strip.btnMute1] = [ "/Mixer/OUT%dMute" % (output_id + 1) ] self.SelectorControls[strip.btnSolo0] = [ "/Mixer/OUT%dNominal" % (output_id) ] self.SelectorControls[strip.btnSolo1] = [ "/Mixer/OUT%dNominal" % (output_id + 1) ] # fix up mixer strip gui strip.btnSolo0.setText("Pad") strip.btnSolo1.setText("Pad") strip.rotPan0.hide() strip.rotPan1.hide() # add the tab outputtabs.addTab(tab, "Out %d/%d" % (output_id + 1, output_id + 2)) # add an input config tab tab = QWidget(outputtabs) tablayout = QHBoxLayout(tab) for inpair in range(nb_pys_in): # create GUI elements log.debug("strip") grpInput = QGroupBox(tab) tablayout.addWidget(grpInput) grpInput.setTitle("In %d" % (inpair + 1)) grpInputLayout = QVBoxLayout() grpInput.setLayout(grpInputLayout) label = QLabel(grpInput) grpInputLayout.addWidget(label) label.setText("In %d" % (inpair + 1)) label.setAlignment(Qt.AlignCenter) btn = QToolButton(grpInput) grpInputLayout.addWidget(btn) btn.setText("Pad") btn.setCheckable(True) self.SelectorControls[btn] = ["/Mixer/IN%dNominal" % (inpair)] spacer = QSpacerItem(1, 1, QSizePolicy.Minimum, QSizePolicy.Expanding) grpInputLayout.addItem(spacer) outputtabs.addTab(tab, "Input") # add an settings tab tab = QWidget(outputtabs) tablayout = QHBoxLayout(tab) outputtabs.addTab(tab, "Settings") settings = AfSettingsWidget(tab) has_sw_phantom = self.hw.getDiscrete("/HwInfo/PhantomPower") if has_sw_phantom: self.SelectorControls[settings.btnPhantom] = ["/PhantomPower"] else: settings.btnPhantom.hide() has_opt_iface = self.hw.getDiscrete('/HwInfo/OpticalInterface') if has_opt_iface: self.DigIfaceControls[settings.cmbDigIface] = ['/DigitalInterface'] else: settings.DigIface.hide() has_plbk_route = self.hw.getDiscrete('/HwInfo/PlaybackRouting') if has_plbk_route: self.PlbkRouteControls[settings.cmbRoute1] = [ '/PlaybackRouting', 0 ] self.PlbkRouteControls[settings.cmbRoute2] = [ '/PlaybackRouting', 1 ] self.PlbkRouteControls[settings.cmbRoute3] = [ '/PlaybackRouting', 2 ] if self.configrom.getModelId() == 0x0AF2: label_route2 = 'Headphone Out 1/2' else: label_route2 = 'Analog Out 3/4' settings.labelRoute2.setText(label_route2) else: settings.PlbkRoute.hide() self.TriggerControls[settings.btnSaveSettings] = ["/SaveSettings"] self.TriggerControls[settings.btnIdentify] = ["/Identify"] if self.configrom.getModelId() == 0x0AF12: settings.spdifMode.hide() else: self.SPDIFmodeControls[settings.radioConsumer] = ["/SpdifMode", 0] self.SPDIFmodeControls[settings.radioProfessional] = [ "/SpdifMode", 1 ] # Store a reference to the "save" button for later manipulation self.btnSaveSettings = settings.btnSaveSettings
def __init__(self, job, passes, job_id, closesig, source, parent=None): name = source.title super().__init__(name, parent) self.job = job self.passes = passes self.job_id = job_id self.closesig = closesig self.source = source self.setWindowTitle(name) self.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) self.setAllowedAreas(Qt.BottomDockWidgetArea) self.setFloating(True) self.widget = QWidget() layout = QVBoxLayout() # layout.setSizeConstraint(QVBoxLayout.SetFixedSize) message_layout = QFormLayout() self.lblPass = QLabel('Pass ? of {}'.format(passes)) message_layout.addRow(self.lblPass) self.lblFrame = QLabel('?') message_layout.addRow('Frame:', self.lblFrame) self.lblFps = QLabel('?') message_layout.addRow('Frames per Second:', self.lblFps) self.lblSize = QLabel('?') message_layout.addRow('File Size:', self.lblSize) self.lblTime = QLabel('?') message_layout.addRow('Video Time:', self.lblTime) self.lblBitrate = QLabel('?') message_layout.addRow('Bitrate:', self.lblBitrate) layout.addLayout(message_layout) self.progressbar = QProgressBar() self.progressbar.setRange(0, self.source.length.total_seconds()) layout.addWidget(self.progressbar) self.qualitybar = QualityBar() layout.addWidget(self.qualitybar) btn_layout = QHBoxLayout() btn_More = QPushButton('More') btn_More.setCheckable(True) btn_layout.addWidget(btn_More) btn_layout.addStretch() self.btnCancel = QPushButton('Close') self.btnCancel.setIcon(QIcon(QPixmap(':/icons/application-exit.png'))) self.btnCancel.clicked.connect(self.on_cancel_clicked) btn_layout.addWidget(self.btnCancel) layout.addLayout(btn_layout) self.terminal = QPlainTextEdit() self.terminal.setReadOnly(True) self.terminal.setShown(False) # self.terminal.setMinimumWidth(400) btn_More.toggled.connect(self.terminal.setVisible) layout.addWidget(self.terminal) griplayout = QHBoxLayout() griplayout.addWidget(QSizeGrip(self.widget)) griplayout.addStretch() griplayout.addWidget(QSizeGrip(self.widget)) layout.addLayout(griplayout) self.widget.setLayout(layout) self.setWidget(self.widget) self.transcode_data[dict].connect(self.on_avconv_data) self.transcode_data[str].connect(self.on_terminal_data) self.closesig.connect(parent.on_jobclose)
def __init__(self, ilastik, forbiddenItems=[], singleSelection=True, selectedItems=[]): QtGui.QWidget.__init__(self, ilastik) self.pixmapImage = None # init # ------------------------------------------------ self.setMinimumWidth(600) self.layout = QtGui.QVBoxLayout() self.setLayout(self.layout) self.selectedOverlaysList = [] self.selectedOverlayPaths = [] self.ilastik = ilastik self.christophsDict = ilastik.project.dataMgr[ ilastik._activeImageNumber].overlayMgr self.forbiddenOverlays = forbiddenItems self.preSelectedOverlays = selectedItems self.singleOverlaySelection = singleSelection self.scaleList = [ 0.1, 0.125, 0.17, 0.25, 0.33, 0.50, 0.67, 1, 2, 3, 4, 5, 6, 7, 8 ] self.scalePrev = 0.67 self.scaleNext = 2 self.scaleIndex = 7 # widgets and layouts # ------------------------------------------------ # splits the layout into the left part # (select overlay from tree over available overlays) # and the right part # (previews the currently selected overlay) splitter = QSplitter() treeGroupBoxLayout = QtGui.QGroupBox("Overlays") treeAndButtonsLayout = QtGui.QVBoxLayout() self.treeWidget = MyTreeWidget() self.connect(self.treeWidget, QtCore.SIGNAL('spacePressed'), self.spacePressedTreewidget) self.treeWidget.header().close() self.treeWidget.setSortingEnabled(True) self.treeWidget.installEventFilter(self) #self.treeWidget.itemClicked.connect(self.treeItemSelectionChanged) self.treeWidget.itemSelectionChanged.connect( self.treeItemSelectionChanged) self.connect(self.treeWidget, QtCore.SIGNAL('itemChanged(QTreeWidgetItem *,int)'), self.treeItemChanged) treeButtonsLayout = QtGui.QHBoxLayout() self.expandCollapseButton = QtGui.QPushButton("Collapse All") self.connect(self.expandCollapseButton, QtCore.SIGNAL('clicked()'), self.expandOrCollapse) treeButtonsLayout.addWidget(self.expandCollapseButton) treeButtonsLayout.addStretch() treeAndButtonsLayout.addWidget(self.treeWidget) treeAndButtonsLayout.addLayout(treeButtonsLayout) treeGroupBoxLayout.setLayout(treeAndButtonsLayout) rightLayout = QtGui.QVBoxLayout() previewGroupBox = QtGui.QGroupBox("Preview") previewLayout = QtGui.QVBoxLayout() self.grview = QtGui.QGraphicsView() self.grview.setDragMode(QtGui.QGraphicsView.ScrollHandDrag) self.grview.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.grview.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.grscene = QtGui.QGraphicsScene() self.grview.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) grviewHudLayout = QtGui.QVBoxLayout(self.grview) grviewHudLayout.addStretch() grviewHudZoomElementsLayout = QtGui.QHBoxLayout() self.min = MyQLabel() self.min.setPixmap(QtGui.QPixmap(ilastikIcons.RemSelx16)) self.connect(self.min, QtCore.SIGNAL('clicked()'), self.scaleDown) self.zoomScaleLabel = MyQLabel("100%") #self.zoomScaleLabel.setAttribute(Qt.WA_TransparentForMouseEvents, True) self.zoomScaleLabel.setStyleSheet( "color: lightGray; font-weight:bold;") self.connect(self.zoomScaleLabel, QtCore.SIGNAL('clicked()'), self.clickOnLabel) self.max = MyQLabel() self.max.setPixmap(QtGui.QPixmap(ilastikIcons.AddSelx16)) self.connect(self.max, QtCore.SIGNAL('clicked()'), self.scaleUp) grviewHudZoomElementsLayout.addStretch() grviewHudZoomElementsLayout.addWidget(self.min) grviewHudZoomElementsLayout.addWidget(self.zoomScaleLabel) grviewHudZoomElementsLayout.addWidget(self.max) grviewHudZoomElementsLayout.addStretch() grviewHudLayout.addLayout(grviewHudZoomElementsLayout) grviewSpinboxLayout = QtGui.QHBoxLayout() self.channelSpinboxLabel = QtGui.QLabel("Channel") self.channelSpinbox = QtGui.QSpinBox(self) self.channelSpinbox.setEnabled(False) self.connect(self.channelSpinbox, QtCore.SIGNAL('valueChanged(int)'), self.channelSpinboxValueChanged) self.sliceSpinboxLabel = QtGui.QLabel("Slice") self.sliceSpinbox = QtGui.QSpinBox(self) self.sliceSpinbox.setEnabled(False) sliceItem = OverlayTreeWidgetItem( self.christophsDict[self.christophsDict.keys()[0]], "") self.sliceValue = (sliceItem.item._data.shape[1] - 1) / 2 self.sliceSpinbox.setMaximum(sliceItem.item._data.shape[1] - 1) self.sliceSpinbox.setValue(self.sliceValue) self.connect(self.sliceSpinbox, QtCore.SIGNAL('valueChanged(int)'), self.sliceSpinboxValueChanged) grviewSpinboxLayout.addWidget(self.channelSpinboxLabel) grviewSpinboxLayout.addWidget(self.channelSpinbox) grviewSpinboxLayout.addStretch() grviewSpinboxLayout.addWidget(self.sliceSpinboxLabel) grviewSpinboxLayout.addWidget(self.sliceSpinbox) grviewSpinboxLayout.addStretch() previewLayout.addWidget(self.grview) previewLayout.addLayout(grviewSpinboxLayout) previewGroupBox.setLayout(previewLayout) infoGroupBox = QtGui.QGroupBox("Information") infoLayout = QtGui.QVBoxLayout() self.overlayItemLabel = QtGui.QLabel() self.overlayItemLabel.setWordWrap(True) self.overlayItemLabel.setAlignment(QtCore.Qt.AlignTop) self.overlayItemSizeLabel = QtGui.QLabel("Size: 123 bytes") self.overlayItemPageOutLabel = QtGui.QLabel("Memory/Hard drive") infoLayout.addWidget(self.overlayItemLabel) infoLayout.addWidget(self.overlayItemPageOutLabel) infoGroupBox.setLayout(infoLayout) rightLayout.addWidget(previewGroupBox) rightLayout.addWidget(infoGroupBox) splitter.addWidget(treeGroupBoxLayout) w = QWidget() w.setLayout(rightLayout) splitter.addWidget(w) tempLayout = QtGui.QHBoxLayout() self.cancelButton = QtGui.QPushButton("&Cancel") self.connect(self.cancelButton, QtCore.SIGNAL('clicked()'), self.cancel) self.addSelectedButton = QtGui.QPushButton("&Add Selected") self.addSelectedButton.setEnabled(False) self.addSelectedButton.setDefault(True) self.connect(self.addSelectedButton, QtCore.SIGNAL('clicked()'), self.addSelected) tempLayout.addStretch() tempLayout.addWidget(self.cancelButton) tempLayout.addWidget(self.addSelectedButton) if self.singleOverlaySelection == True: self.setWindowTitle("Overlay Single Selection") self.overlayItemLabel.setText("Single Selection Mode") else: self.setWindowTitle("Overlay Multi Selection") self.overlayItemLabel.setText("Multi Selection Mode") self.treeWidget.setSelectionMode( QtGui.QAbstractItemView.ExtendedSelection) self.layout.addWidget(splitter) self.layout.addLayout(tempLayout) self.addOverlaysToTreeWidget() self.treeWidget.expandAll() self.treeWidgetExpanded = True
def __init__(self, template, character, typ, isCheckable=False, parent=None): super(CategoryWidget, self).__init__(parent) self.__storage = template self.__character = character self._layout = QVBoxLayout() self.setLayout(self._layout) self._toolBox = QToolBox() ## Die Auflistung der Widgets soll auch unter Windows einen transparenten Hintergrund haben. self._toolBox.setObjectName("transparentWidget") ## \todo Sollte nicht vom Betriebssystem, sondern vom verwendeten Style abhängen. if os.name == "nt": self._toolBox.setStyleSheet( "QScrollArea{ background: transparent; } QWidget#transparentWidget { background: transparent; }" ) self._layout.addWidget(self._toolBox) self._typ = typ categories = self.__storage.categories(self._typ) # Diese Liste speichert den Index der ToolBox-Seite bei den unterschiedlichen Kategorien # { # Index: [Widget, Eigenschaft1, Eigenschaft2, ...] # } self._toolBoxPageList = {} for item in categories: # Für jede Kategorie wird ein eigener Abschnitt erzeugt. widgetCategory = QWidget() ## Dank des Namens übernimmt dieses Widget den Stil des Eltern-Widgets. widgetCategory.setObjectName("transparentWidget") layoutCategory = QVBoxLayout() widgetCategory.setLayout(layoutCategory) ## In dieser Liste sammle ich die Widgets, damit sie später bei Bedarf in die ToolBox eingefügt werden können. self._toolBoxPageList[item] = [widgetCategory] __list = list(self.__character.traits[self._typ][item].items()) __list.sort() for trait in __list: # Anlegen des Widgets, das diese Eigenschaft repräsentiert. traitWidget = None if isCheckable: traitWidget = CheckTrait(trait[1], self) else: traitWidget = CharaTrait(trait[1], self) traitWidget.setSpecialtiesHidden(True) if type(trait) != StandardTrait or not trait[1].custom: traitWidget.setDescriptionHidden(True) self._toolBoxPageList[item].append(trait[1]) layoutCategory.addWidget(traitWidget) self.__character.traitVisibleReasonChanged.connect( traitWidget.hideOrShowTrait) # Stretch einfügen, damit die Eigenschaften besser angeordnet sind. layoutCategory.addStretch() #Debug.debug(self._toolBoxPageList) self.__character.speciesChanged.connect(self.hideOrShowToolPage) self.__character.breedChanged.connect(self.hideOrShowToolPage) self.__character.factionChanged.connect(self.hideOrShowToolPage)
def __init__(self, parent, prm): QMainWindow.__init__(self, parent) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.prm = prm self.currLocale = self.parent().prm['data']['currentLocale'] self.currLocale.setNumberOptions(self.currLocale.OmitGroupSeparator | self.currLocale.RejectGroupSeparator) #define some parameters before axes creation self.canvasColor = pltColorFromQColor(self.prm['pref']['canvasColor']) self.backgroundColor = pltColorFromQColor(self.prm['pref']['backgroundColor']) self.axesColor = pltColorFromQColor(self.prm['pref']['axes_color']) self.tickLabelColor = pltColorFromQColor(self.prm['pref']['tick_label_color']) self.gridColor = pltColorFromQColor(self.prm['pref']['grid_color']) self.axesLabelColor = pltColorFromQColor(self.prm['pref']['axes_label_color']) self.labelFontFamily = self.prm['pref']['label_font_family'] self.labelFontWeight = self.prm['pref']['label_font_weight'] self.labelFontStyle = self.prm['pref']['label_font_style'] self.labelFontSize = self.prm['pref']['label_font_size'] self.labelFont = font_manager.FontProperties(family=self.labelFontFamily, weight=self.labelFontWeight, style= self.labelFontStyle, size=self.labelFontSize) self.majorTickLength = self.prm['pref']['major_tick_length'] self.majorTickWidth = self.prm['pref']['major_tick_width'] self.minorTickLength = self.prm['pref']['minor_tick_length'] self.minorTickWidth = self.prm['pref']['minor_tick_width'] self.tickLabelFontFamily = self.prm['pref']['tick_label_font_family'] self.tickLabelFontWeight = self.prm['pref']['tick_label_font_weight'] self.tickLabelFontStyle = self.prm['pref']['tick_label_font_style'] self.tickLabelFontSize = self.prm['pref']['tick_label_font_size'] self.tickLabelFont = font_manager.FontProperties(family=self.tickLabelFontFamily, weight=self.tickLabelFontWeight, style= self.tickLabelFontStyle, size=self.tickLabelFontSize) self.xAxisLabel = '' self.yAxisLabel = '' self.dpi = self.prm['pref']['dpi'] self.spinesLineWidth = self.prm['pref']['spines_line_width'] self.gridLineWidth = self.prm['pref']['grid_line_width'] self.mw = QWidget(self) self.vbl = QVBoxLayout(self.mw) self.fig = Figure(facecolor=self.canvasColor, dpi=self.dpi) self.axes = self.fig.add_subplot(111, facecolor=self.backgroundColor) self.createBaseMenus() self.createAdditionalMenus() self.defineMenusLayout() self.canvas = FigureCanvas(self.fig) self.canvas.setParent(self.mw) self.ntb = NavigationToolbar(self.canvas, self.mw) self.gridOn = QCheckBox(self.tr('Grid')) self.gridOn.setChecked(self.prm['pref']['grid']) self.gridOn.stateChanged[int].connect(self.toggleGrid) self.setBaseFigureProperties() self.gridBox = QGridLayout() self.createBaseControlWidgets() self.createAdditionalControlWidgets() self.defineGridBoxLayout() self.ntbBox = QHBoxLayout() self.ntbBox.addWidget(self.ntb) self.ntbBox.addWidget(self.gridOn) self.vbl.addWidget(self.canvas) self.vbl.addLayout(self.ntbBox) self.vbl.addLayout(self.gridBox) self.mw.setFocus() self.setCentralWidget(self.mw) self.show() self.canvas.draw()
def addDockWidget(self, area, dockwidget): """ Add a dock widget to the main window """ dockwidget.setTitleBarWidget(QWidget()) self.myApp.tabifyDockWidget(self.myApp.LegendDock, dockwidget) self.myApp.LegendDock.raise_() # legendDock at the top
def __init__(self, parent=None): super(MapWidget, self).__init__(parent) self.setupUi(self) icon = roam_style.iconsize() self.projecttoolbar.setIconSize(QSize(icon, icon)) self.firstshow = True self.layerbuttons = [] self.editfeaturestack = [] self.lastgpsposition = None self.project = None self.gps = None self.gpslogging = None self.selectionbands = defaultdict(partial(QgsRubberBand, self.canvas)) # self.canvas.setInteractive(False) self.canvas.setCanvasColor(Qt.white) self.canvas.enableAntiAliasing(True) self.canvas.setWheelAction(QgsMapCanvas.WheelZoomToMouseCursor) if hasattr(self.canvas, 'setParallelRenderingEnabled'): threadcount = QThread.idealThreadCount() threadcount = 2 if threadcount > 2 else 1 QgsApplication.setMaxThreads(threadcount) self.canvas.setParallelRenderingEnabled(True) pal = QgsPalLabeling() self.canvas.mapRenderer().setLabelingEngine(pal) self.canvas.setFrameStyle(QFrame.NoFrame) self.editgroup = QActionGroup(self) self.editgroup.setExclusive(True) self.editgroup.addAction(self.actionPan) self.editgroup.addAction(self.actionZoom_In) self.editgroup.addAction(self.actionZoom_Out) self.editgroup.addAction(self.actionInfo) self.actionGPS = GPSAction(":/icons/gps", self.canvas, self) self.projecttoolbar.addAction(self.actionGPS) if roam.config.settings.get('north_arrow', False): self.northarrow = NorthArrow(":/icons/north", self.canvas) self.northarrow.setPos(10, 10) self.canvas.scene().addItem(self.northarrow) self.scalebar_enabled = roam.config.settings.get('scale_bar', False) if self.scalebar_enabled: self.scalebar = ScaleBarItem(self.canvas) self.canvas.scene().addItem(self.scalebar) self.projecttoolbar.setContextMenuPolicy(Qt.CustomContextMenu) gpsspacewidget = QWidget() gpsspacewidget.setMinimumWidth(30) gpsspacewidget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.topspaceraction = self.projecttoolbar.insertWidget( self.actionGPS, gpsspacewidget) self.dataentryselection = QAction(self.projecttoolbar) self.dataentryaction = self.projecttoolbar.insertAction( self.topspaceraction, self.dataentryselection) self.dataentryselection.triggered.connect(self.select_data_entry) self.marker = GPSMarker(self.canvas) self.marker.hide() self.currentfeatureband = CurrentSelection(self.canvas) self.currentfeatureband.setIconSize(30) self.currentfeatureband.setWidth(10) self.currentfeatureband.setColor(QColor(186, 93, 212, 50)) self.currentfeatureband.setOutlineColour(QColor(186, 93, 212)) self.gpsband = QgsRubberBand(self.canvas) self.gpsband.setColor(QColor(165, 111, 212, 75)) self.gpsband.setWidth(5) RoamEvents.editgeometry.connect(self.queue_feature_for_edit) RoamEvents.selectioncleared.connect(self.clear_selection) RoamEvents.selectionchanged.connect(self.highlight_selection) RoamEvents.openfeatureform.connect(self.feature_form_loaded) RoamEvents.sync_complete.connect(self.refresh_map) self.connectButtons()
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.dirty = False self.isLoaded = False self.calibration_enabled = False self.aggregate_enabled = False self.setObjectName("MainWindow") self.resize(800, 600) self.setWindowTitle("OpenFisca") app_icon = get_icon('OpenFisca22.png') self.setWindowIcon(app_icon) self.setLocale(QLocale(QLocale.French, QLocale.France)) self.setDockOptions(QMainWindow.AllowNestedDocks | QMainWindow.AllowTabbedDocks | QMainWindow.AnimatedDocks) self.centralwidget = QWidget(self) self.gridLayout = QGridLayout(self.centralwidget) self.setCentralWidget(self.centralwidget) self.centralwidget.hide() self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) # Showing splash screen pixmap = QPixmap(':/images/splash.png', 'png') self.splash = QSplashScreen(pixmap) font = self.splash.font() font.setPixelSize(10) self.splash.setFont(font) self.splash.show() self.splash.showMessage( "Initialisation...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) # if CONF.get('main', 'current_version', '') != __version__: # CONF.set('main', 'current_version', __version__) # Execute here the actions to be performed only once after # each update (there is nothing there for now, but it could # be useful some day... self.scenario = Scenario() # Preferences self.general_prefs = [SimConfigPage, PathConfigPage, CalConfigPage] self.oldXAXIS = 'sal' self.reforme = False self.apply_settings() # Dockwidgets creation self.splash.showMessage( "Creating widgets...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) self.create_dockwidgets() self.populate_mainwidow() ################################################################# ## Menu initialization ################################################################# self.splash.showMessage( "Creating menubar...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) # Menu Fichier self.file_menu = self.menuBar().addMenu("Fichier") action_export_png = create_action(self, 'Exporter le graphique', icon='document-save png.png', triggered=self._graph.save_figure) action_export_csv = create_action(self, 'Exporter la table', icon='document-save csv.png', triggered=self._table.saveCsv) action_pref = create_action(self, u'Préférences', QKeySequence.Preferences, icon='preferences-desktop.png', triggered=self.edit_preferences) action_quit = create_action(self, 'Quitter', QKeySequence.Quit, icon='process-stop.png', triggered=SLOT('close()')) file_actions = [ action_export_png, action_export_csv, None, action_pref, None, action_quit ] add_actions(self.file_menu, file_actions) # Menu Edit self.edit_menu = self.menuBar().addMenu(u"Édition") action_copy = create_action(self, 'Copier', QKeySequence.Copy, triggered=self.global_callback, data='copy') edit_actions = [None, action_copy] add_actions(self.edit_menu, edit_actions) # Menu Simulation self.simulation_menu = self.menuBar().addMenu(u"Simulation") self.action_refresh_bareme = create_action( self, u'Calculer barèmes', shortcut='F9', icon='calculator_green.png', triggered=self.refresh_bareme) self.action_refresh_aggregate = create_action( self, u'Calculer aggrégats', shortcut='F10', icon='calculator_blue.png', triggered=self.refresh_aggregate) self.action_calibrate = create_action(self, u'Caler les poids', shortcut='CTRL+K', icon='scale22.png', triggered=self.calibrate) action_bareme = create_action(self, u'Barème', icon='bareme22.png', toggled=self.modeBareme) action_cas_type = create_action(self, u'Cas type', icon='castype22.png', toggled=self.modeCasType) action_mode_reforme = create_action( self, u'Réforme', icon='comparison22.png', toggled=self.modeReforme, tip= u"Différence entre la situation simulée et la situation actuelle") mode_group = QActionGroup(self) mode_group.addAction(action_bareme) mode_group.addAction(action_cas_type) self.mode = 'bareme' action_bareme.trigger() simulation_actions = [ self.action_refresh_bareme, self.action_refresh_aggregate, None, self.action_calibrate, None, action_bareme, action_cas_type, None, action_mode_reforme ] add_actions(self.simulation_menu, simulation_actions) # Menu Help help_menu = self.menuBar().addMenu("&Aide") action_about = create_action(self, u"&About OpenFisca", triggered=self.helpAbout) action_help = create_action(self, "&Aide", QKeySequence.HelpContents, triggered=self.helpHelp) help_actions = [action_about, action_help] add_actions(help_menu, help_actions) # Display Menu view_menu = self.createPopupMenu() view_menu.setTitle("&Affichage") self.menuBar().insertMenu(help_menu.menuAction(), view_menu) # Toolbar self.main_toolbar = self.create_toolbar(u"Barre d'outil", 'main_toolbar') toolbar_actions = [ action_export_png, action_export_csv, None, self.action_refresh_bareme, self.action_refresh_aggregate, None, self.action_calibrate, None, action_bareme, action_cas_type, None, action_mode_reforme ] add_actions(self.main_toolbar, toolbar_actions) self.connect(self._menage, SIGNAL('changed()'), self.changed_bareme) self.connect(self._parametres, SIGNAL('changed()'), self.changed_param) self.connect(self._aggregate_output, SIGNAL('calculated()'), self.calculated) self.connect(self, SIGNAL('weights_changed()'), self.refresh_aggregate) self.connect(self, SIGNAL('bareme_only()'), self.switch_bareme_only) # Window settings self.splash.showMessage( "Restoring settings...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) settings = QSettings() size = settings.value('MainWindow/Size', QVariant(QSize(800, 600))).toSize() self.resize(size) position = settings.value('MainWindow/Position', QVariant(QPoint(0, 0))).toPoint() self.move(position) self.restoreState(settings.value("MainWindow/State").toByteArray()) self.splash.showMessage( "Loading survey data...", Qt.AlignBottom | Qt.AlignCenter | Qt.AlignAbsolute, QColor(Qt.black)) self.enable_aggregate(True) self.refresh_bareme() self.isLoaded = True self.splash.hide()
# Routine called during initialization (or anytime really) to # note something with a timestamp on standard output. # In theory one could take a command-line argument --log-level or # such and control this output at run-time. def noteEvent(description) : stamp = int(1000 * (time.clock() - time_now)) #print(u'{0:08d} {1}'.format(stamp,description)) if __name__ == "__main__": import sys app = QApplication(sys.argv) # create an app from PyQt4.QtGui import QWidget import pqIMC IMC = pqIMC.tricorder() IMC.mainWindow = QWidget() beep() noteEvent("about to call infoMsg") infoMsg("This is the message","Did you hear that beep?") noteEvent("about to call getStringMsg") (s, b) = getStringMsg("TITLE STRING", "label text") if b : print( "got "+s) else: print("cancel") (s, b) = getStringMsg("TITLE STRING", "what you should enter", "prepared") if b : print( "got "+s) else: print("cancel") noteEvent("Whatever...") #ew = QTextEdit() #(b,qs) = getFindMsg(ew) #print(b,qs) qsl = QStringList()
def setupGui(self): self.ui = uic.loadUi(os.path.join(GUIDIR, "labeltool.ui"), self) # get inserters and items from labels # FIXME for handling the new-style config correctly inserters = dict([(label['attributes']['class'], label['inserter']) for label in config.LABELS if 'class' in label.get('attributes', {}) and 'inserter' in label]) items = dict([(label['attributes']['class'], label['item']) for label in config.LABELS if 'class' in label.get('attributes', {}) and 'item' in label]) # Property Editor self.property_editor = PropertyEditor(config.LABELS) self.ui.dockProperties.setWidget(self.property_editor) # Scene self.scene = AnnotationScene(self.labeltool, items=items, inserters=inserters) self.property_editor.insertionModeStarted.connect(self.scene.onInsertionModeStarted) self.property_editor.insertionModeEnded.connect(self.scene.onInsertionModeEnded) # SceneView self.view = GraphicsView(self) self.view.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding) self.view.setScene(self.scene) self.central_widget = QWidget() self.central_layout = QVBoxLayout() self.controls = ControlButtonWidget() #give functions as lambdas, or else they will be called with a bool as parameter self.controls.back_button.clicked.connect(lambda lt: self.labeltool.gotoPrevious()) self.controls.forward_button.clicked.connect(lambda lt: self.labeltool.gotoNext()) self.central_layout.addWidget(self.controls) self.central_layout.addWidget(self.view) self.central_widget.setLayout(self.central_layout) self.setCentralWidget(self.central_widget) self.initShortcuts(config.HOTKEYS) self.initOptions() self.initAnnotationMenu() self.treeview = AnnotationTreeView() self.treeview.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Preferred) self.ui.dockAnnotations.setWidget(self.treeview) self.scene.selectionChanged.connect(self.scene.onSelectionChanged) self.treeview.selectedItemsChanged.connect(self.scene.onSelectionChangedInTreeView) self.posinfo = QLabel("-1, -1") self.posinfo.setFrameStyle(QFrame.StyledPanel) self.statusBar().addPermanentWidget(self.posinfo) self.scene.mousePositionChanged.connect(self.onMousePositionChanged) self.image_resolution = QLabel("[no image]") self.image_resolution.setFrameStyle(QFrame.StyledPanel) self.statusBar().addPermanentWidget(self.image_resolution) self.zoominfo = QLabel() self.zoominfo.setFrameStyle(QFrame.StyledPanel) self.statusBar().addPermanentWidget(self.zoominfo) self.view.scaleChanged.connect(self.onScaleChanged) self.onScaleChanged(self.view.getScale()) self.sb_progress = QProgressBar() # View menu self.ui.menu_Views.addAction(self.ui.dockProperties.toggleViewAction()) self.ui.menu_Views.addAction(self.ui.dockAnnotations.toggleViewAction()) # Annotation menu self.copyAnnotations = CopyAnnotations(self.labeltool) self.interpolateRange = InterpolateRange(self.labeltool) # Show the UI. It is important that this comes *after* the above # adding of custom widgets, especially the central widget. Otherwise the # dock widgets would be far to large. self.ui.show() ## connect action signals self.connectActions()
def setupUi(self, port): self.setObjectName("MainWindow") self.resize(600, 600) self.centralwidget = QWidget(self) p = self.centralwidget.palette() self.centralwidget.setAutoFillBackground(True) p.setColor(self.centralwidget.backgroundRole(), QColor(126, 135, 152)) self.centralwidget.setPalette(p) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QGridLayout(self.centralwidget) self.gridLayout.setObjectName("gridLayout") self.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(self) self.menubar.setGeometry(QRect(0, 0, 808, 25)) self.menubar.setObjectName("menubar") self.menuFile = QMenu(self.menubar) self.menuFile.setObjectName("menuFile") self.setMenuBar(self.menubar) self.statusbar = QStatusBar(self) self.statusbar.setObjectName("statusbar") self.setStatusBar(self.statusbar) self.actionQuit = QAction(self) self.actionQuit.setObjectName("actionQuit") self.menuFile.addSeparator() self.menuFile.addAction(self.actionQuit) self.menubar.addAction(self.menuFile.menuAction()) self.actionReset = QAction(self) self.actionReset.setObjectName("reset") self.menuFile.addSeparator() self.menuFile.addAction(self.actionReset) self.menubar.addAction(self.menuFile.menuAction()) # add other GUI objects self.graph_widget = GraphWidget(self.statusbar) self.gridLayout.addWidget(self.graph_widget, 1, 11, 10, 10) pixmap = QPixmap(':/images/cta-logo-mini.png') lbl = QLabel() lbl.setPixmap(pixmap) self.gridLayout.addWidget(lbl, 0, 0) p = self.graph_widget.palette() self.graph_widget.setAutoFillBackground(True) p.setColor(self.graph_widget.backgroundRole(), QColor(255, 255, 255)) # QColor(226, 235, 252)) self.graph_widget.setPalette(p) self.quitButton = QPushButton() # self.centralwidget) self.quitButton.setObjectName("quitButton") self.quitButton.setText( QApplication.translate("MainWindow", "Quit", None, QApplication.UnicodeUTF8)) self.gridLayout.addWidget(self.quitButton, 12, 0, 1, 1) self.info_label = InfoLabel(0, 4) self.info_label.setAutoFillBackground(True) self.gridLayout.addWidget(self.info_label, 1, 0, 1, 5) # self.info_label.setAlignment(PyQt4.Qt.AlignCenter); palette = QPalette() palette.setColor(self.info_label.backgroundRole(), Qt.lightGray) self.info_label.setPalette(palette) QObject.connect(self.quitButton, SIGNAL("clicked()"), self.stop) QObject.connect(self.actionQuit, SIGNAL("triggered()"), self.stop) QMetaObject.connectSlotsByName(self) self.retranslateUi() QObject.connect(self.actionQuit, SIGNAL("triggered()"), self.close) QMetaObject.connectSlotsByName(self) # Create GuiConnexion for ZMQ comminucation with pipeline self.guiconnection = GuiConnexion(gui_port=port, statusBar=self.statusbar) self.guiconnection.message.connect(self.graph_widget.pipechange) self.guiconnection.message.connect(self.info_label.pipechange) self.guiconnection.reset_message.connect(self.graph_widget.reset) self.guiconnection.reset_message.connect(self.info_label.reset) self.guiconnection.mode_message.connect(self.info_label.mode_receive) QObject.connect(self.actionReset, SIGNAL("triggered()"), self.guiconnection.reset) QMetaObject.connectSlotsByName(self) # start the process self.guiconnection.start()
os.path = ntpath buttons = [] buttons.append( FilePathButton(r"c:\some\long\path\to\the\file.txt", " (Don't abbreviate this suffix)")) buttons.append(FilePathButton(r"file.txt", " (some suffix)")) buttons.append( FilePathButton("\\some\\long\\path\\to\\the\\", " (some suffix)")) else: buttons = [] buttons.append( FilePathButton("/some/long/path/to/the/file.txt", " (Don't abbreviate this suffix)")) buttons.append(FilePathButton("file.txt", " (some suffix)")) buttons.append( FilePathButton("/some/long/path/to/the/", " (some suffix)")) layout = QVBoxLayout() for button in buttons: # Typically, the button chooses a minimum size that is appropriate for its shortest possible text # But for this little test we force an even smaller minimum size so we can test multiple paths at once... button.setMinimumWidth(10) layout.addWidget(button) widget = QWidget() widget.setLayout(layout) widget.show() app.exec_()
def main(): """Main function""" app = QApplication([]) unit_feet = Unit('130790') unit_feet.load_dictionary(unit_feet_depth) unit_metres = Unit('900713') unit_metres.load_dictionary(unit_metres_depth) string_parameter = StringParameter('28082014') string_parameter.name = 'Province Name' string_parameter.help_text = 'Name of province.' string_parameter.description = ( 'A <b>test _description</b> that is very long so that you need to read ' 'it for one minute and you will be tired after read this description. ' 'You are the best user so far. Even better if you read this ' 'description loudly so that all of your friends will be able to hear ' 'you') string_parameter.is_required = True string_parameter.value = 'Daerah Istimewa Yogyakarta' boolean_parameter = BooleanParameter('1231231') boolean_parameter.name = 'Post processor' boolean_parameter.help_text = 'This is post processor parameter.' boolean_parameter.description = ( 'A <b>test _description</b> that is very long so that you need to read ' 'it for one minute and you will be tired after read this description. ' 'You are the best user so far. Even better if you read this ' 'description loudly so that all of your friends will be able to hear ' 'you') boolean_parameter.is_required = True boolean_parameter.value = True float_parameter = FloatParameter() float_parameter.name = 'Flood Depth' float_parameter.is_required = True float_parameter.precision = 3 float_parameter.minimum_allowed_value = 1.0 float_parameter.maximum_allowed_value = 2.0 float_parameter.help_text = 'The depth of flood.' float_parameter.description = ( 'A <b>test _description</b> that is very long so that you need to read ' 'it for one minute and you will be tired after read this description. ' 'You are the best user so far. Even better if you read this ' 'description loudly so that all of your friends will be able to hear ' 'you') float_parameter.unit = unit_feet float_parameter.allowed_units = [unit_metres, unit_feet] float_parameter.value = 1.12 integer_parameter = IntegerParameter() integer_parameter.name = 'Paper' integer_parameter.is_required = True integer_parameter.minimum_allowed_value = 1 integer_parameter.maximum_allowed_value = 5 integer_parameter.help_text = 'Number of paper' integer_parameter.description = ( 'A <b>test _description</b> that is very long so that you need to read ' 'it for one minute and you will be tired after read this description. ' 'You are the best user so far. Even better if you read this ' 'description loudly so that all of your friends will be able to hear ' 'you') integer_parameter.unit = unit_feet integer_parameter.allowed_units = [unit_feet] integer_parameter.value = 3 parameters = [ string_parameter, integer_parameter, boolean_parameter, float_parameter, float_parameter, boolean_parameter, integer_parameter ] parameter_container = ParameterContainer(parameters) widget = QWidget() layout = QGridLayout() layout.addWidget(parameter_container) widget.setLayout(layout) widget.setGeometry(0, 0, 500, 500) widget.show() new_parameters = parameter_container.get_parameters() for new_parameter in new_parameters: print new_parameter.name, new_parameter.value sys.exit(app.exec_())
def setupUi(self): self.labels = {} self.widgets = {} self.checkBoxes = {} self.showAdvanced = False self.valueItems = {} self.dependentItems = {} self.resize(650, 450) self.buttonBox = QDialogButtonBox() self.buttonBox.setOrientation(Qt.Horizontal) self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) tooltips = self._alg.getParameterDescriptions() self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.verticalLayout = QVBoxLayout() self.verticalLayout.setSpacing(5) self.verticalLayout.setMargin(20) hLayout = QHBoxLayout() hLayout.setSpacing(5) hLayout.setMargin(0) descriptionLabel = QLabel(self.tr("Description")) self.descriptionBox = QLineEdit() self.descriptionBox.setText(self._alg.name) hLayout.addWidget(descriptionLabel) hLayout.addWidget(self.descriptionBox) self.verticalLayout.addLayout(hLayout) line = QFrame() line.setFrameShape(QFrame.HLine) line.setFrameShadow(QFrame.Sunken) self.verticalLayout.addWidget(line) for param in self._alg.parameters: if param.isAdvanced: self.advancedButton = QPushButton() self.advancedButton.setText( self.tr('Show advanced parameters')) self.advancedButton.setMaximumWidth(150) self.advancedButton.clicked.connect( self.showAdvancedParametersClicked) self.verticalLayout.addWidget(self.advancedButton) break for param in self._alg.parameters: if param.hidden: continue desc = param.description if isinstance(param, ParameterExtent): desc += '(xmin, xmax, ymin, ymax)' label = QLabel(desc) self.labels[param.name] = label widget = self.getWidgetFromParameter(param) self.valueItems[param.name] = widget if param.name in tooltips.keys(): tooltip = tooltips[param.name] else: tooltip = param.description label.setToolTip(tooltip) widget.setToolTip(tooltip) if param.isAdvanced: label.setVisible(self.showAdvanced) widget.setVisible(self.showAdvanced) self.widgets[param.name] = widget self.verticalLayout.addWidget(label) self.verticalLayout.addWidget(widget) for output in self._alg.outputs: if output.hidden: continue if isinstance(output, (OutputRaster, OutputVector, OutputTable, OutputHTML, OutputFile, OutputDirectory)): label = QLabel(output.description + '<' + output.__class__.__name__ + '>') item = QLineEdit() if hasattr(item, 'setPlaceholderText'): item.setPlaceholderText(ModelerParametersDialog.ENTER_NAME) self.verticalLayout.addWidget(label) self.verticalLayout.addWidget(item) self.valueItems[output.name] = item label = QLabel(' ') self.verticalLayout.addWidget(label) label = QLabel(self.tr('Parent algorithms')) self.dependenciesPanel = self.getDependenciesPanel() self.verticalLayout.addWidget(label) self.verticalLayout.addWidget(self.dependenciesPanel) self.verticalLayout.addStretch(1000) self.setLayout(self.verticalLayout) self.setPreviousValues() self.setWindowTitle(self._alg.name) self.verticalLayout2 = QVBoxLayout() self.verticalLayout2.setSpacing(2) self.verticalLayout2.setMargin(0) self.tabWidget = QTabWidget() self.tabWidget.setMinimumWidth(300) self.paramPanel = QWidget() self.paramPanel.setLayout(self.verticalLayout) self.scrollArea = QScrollArea() self.scrollArea.setWidget(self.paramPanel) self.scrollArea.setWidgetResizable(True) self.tabWidget.addTab(self.scrollArea, self.tr('Parameters')) self.webView = QWebView() html = None url = None isText, help = self._alg.help() if help is not None: if isText: html = help else: url = QUrl(help) else: html = self.tr('<h2>Sorry, no help is available for this ' 'algorithm.</h2>') try: if html: self.webView.setHtml(html) elif url: self.webView.load(url) except: self.webView.setHtml( self.tr('<h2>Could not open help file :-( </h2>')) self.tabWidget.addTab(self.webView, 'Help') self.verticalLayout2.addWidget(self.tabWidget) self.verticalLayout2.addWidget(self.buttonBox) self.setLayout(self.verticalLayout2) self.buttonBox.accepted.connect(self.okPressed) self.buttonBox.rejected.connect(self.cancelPressed) QMetaObject.connectSlotsByName(self)
def __init__(self, title, toggle_enabled, is_enabled): super().__init__() # Title bar. title_holder = QWidget() title_holder.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed) title_holder.setStyleSheet(""" .QWidget { background: qlineargradient( x1:0 y1:0, x2:0 y2:1, stop:0 #F8F8F8, stop:1 #C8C8C8); border-bottom: 1px solid #B3B3B3; } """) self.titleArea = QHBoxLayout() self.titleArea.setContentsMargins(15, 10, 15, 10) self.titleArea.setSpacing(0) title_holder.setLayout(self.titleArea) self.title_label = QLabel(title) self.title_label.setStyleSheet('font-size: 12px;') self.titleArea.addWidget(self.title_label) self.off_label = QLabel('[disabled]') self.off_label.setStyleSheet('color: #B0B0B0; margin-left: 5px;') self.titleArea.addWidget(self.off_label) self.off_label.hide() self.titleArea.addStretch() # Root. self.rootArea = QVBoxLayout() self.rootArea.setContentsMargins(0, 0, 0, 0) self.rootArea.setSpacing(0) self.setLayout(self.rootArea) self.rootArea.addWidget(title_holder) self.contents = QWidget() contentArea = QVBoxLayout() contentArea.setContentsMargins(15, 10, 15, 10) self.contents.setLayout(contentArea) self.rootArea.addWidget(self.contents) self.enabled = is_enabled if toggle_enabled: self.toggle_module_switch = QCheckBox() switch_icon_on_resource = _i('on_button.png') switch_icon_off_resource = _i('off_button.png') style_sheet = ''' QCheckBox::indicator { width: 23px; height: 23px; } QCheckBox::indicator:checked { image: url(%s); } QCheckBox::indicator:unchecked { image: url(%s); } ''' % (switch_icon_on_resource, switch_icon_off_resource) self.toggle_module_switch.setStyleSheet(style_sheet) self.toggle_module_switch.setChecked(self.enabled) self.toggle_module_switch.stateChanged.connect(self.on_toggle) # Change the view according to the flag. if self.enabled: self.off_label.hide() self.contents.show() self.title_label.setStyleSheet('color: #000000;') else: self.off_label.show() self.contents.hide() self.title_label.setStyleSheet('color: #B0B0B0;') self.titleArea.addWidget(self.toggle_module_switch)
def __init__(self, parent, layer): ''' Constructor ''' QDialog.__init__(self, parent) self.resize(200, 200) self.rasterLayer = layer sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(sizePolicy) verticalLayout = QVBoxLayout(self) verticalLayout.setObjectName("verticalLayout") stackedWidget = QStackedWidget(self) stackedWidget.setObjectName("stackedWidget") pageRender = QWidget(stackedWidget) pageRender.setObjectName("pageRender") sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( pageRender.sizePolicy().hasHeightForWidth()) pageRender.setSizePolicy(sizePolicy) horizontalLayout = QHBoxLayout(pageRender) horizontalLayout.setObjectName("horizontalLayout") frameRender = QFrame(pageRender) frameRender.setObjectName("frameRender") frameRender.setFrameShape(QFrame.StyledPanel) frameRender.setFrameShadow(QFrame.Raised) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( frameRender.sizePolicy().hasHeightForWidth()) frameRender.setSizePolicy(sizePolicy) self.vLayoutFrameRender = QVBoxLayout(frameRender) self.vLayoutFrameRender.setObjectName("vLayoutFrameRender") horizontalLayout.addWidget(frameRender) self.cmbRendererType = ComboBoxPanel(frameRender) self.cmbRendererType.Caption = "Render Type" self.cmbRendererType.LabelWidth = 70 self.cmbRendererType.Items = [ "Mutiband color", "Paletted", "Singleband gray", "Singleband pseudocolor" ] self.connect(self.cmbRendererType, SIGNAL("Event_0"), self.cmbRendererType_currentIndexChanged) self.vLayoutFrameRender.addWidget(self.cmbRendererType) self.gbRenderer = GroupBox(frameRender) self.gbRenderer.Caption = self.cmbRendererType.SelectedItem self.vLayoutFrameRender.addWidget(self.gbRenderer) self.qgsMultiBandColorRendererWidget = QgsMultiBandColorRendererWidget( self.rasterLayer) self.qgsPalettedRendererWidget = QgsPalettedRendererWidget( self.rasterLayer) self.qgsSingleBandGrayRendererWidget = QgsSingleBandGrayRendererWidget( self.rasterLayer) self.qgsSingleBandPseudoColorRendererWidget = QgsSingleBandPseudoColorRendererWidget( self.rasterLayer) self.gbRenderer.Add = self.qgsMultiBandColorRendererWidget self.gbRenderer.Add = self.qgsPalettedRendererWidget self.gbRenderer.Add = self.qgsSingleBandGrayRendererWidget self.gbRenderer.Add = self.qgsSingleBandPseudoColorRendererWidget self.qgsPalettedRendererWidget.setVisible(False) self.qgsSingleBandGrayRendererWidget.setVisible(False) self.qgsSingleBandPseudoColorRendererWidget.setVisible(False) stackedWidget.addWidget(pageRender) # page_2 = QWidget() # page_2.setObjectName("page_2") # stackedWidget.addWidget(page_2) verticalLayout.addWidget(stackedWidget) buttonBox = QDialogButtonBox(self) buttonBox.setObjectName("buttonBox") buttonBox.setOrientation(Qt.Horizontal) buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok | QDialogButtonBox.Apply) btnApply = buttonBox.button(QDialogButtonBox.Apply) btnApply.clicked.connect(self.btnApply_clicked) verticalLayout.addWidget(buttonBox) # retranslateUi(Dialog) buttonBox.accepted.connect(self.OK) buttonBox.rejected.connect(self.reject) if self.rasterLayer.renderer().bandCount() == 1: self.cmbRendererType.SelectedIndex = 2 elif self.rasterLayer.renderer().bandCount() > 1: self.cmbRendererType.SelectedIndex = 0
def setup_ui(self, must_scroll=True): """Setup the UI of this parameter container. """ # Vertical layout to place the parameter widgets self.vertical_layout.setContentsMargins(0, 0, 0, 0) self.vertical_layout.setSpacing(0) # Widget to hold the vertical layout self.widget = QWidget() self.widget.setLayout(self.vertical_layout) # Label for description self.description_label.setText(self.description_text) self.group_frame.setLineWidth(0) self.group_frame.setFrameStyle(QFrame.NoFrame) vlayout = QVBoxLayout() vlayout.setContentsMargins(0, 0, 0, 0) vlayout.setSpacing(0) self.group_frame.setLayout(vlayout) if must_scroll: vlayout.addWidget(self.scroll_area) self.scroll_area.setWidgetResizable(True) self.scroll_area.setWidget(self.widget) else: vlayout.addWidget(self.widget) # Main layout of the container if self.description_text: self.main_layout.addWidget(self.description_label) self.main_layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.main_layout) self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.MinimumExpanding) if not isinstance(self.parameters, list): parameters = [self.parameters] else: parameters = self.parameters if len(parameters) == 0: self.set_empty_parameters() return self.main_layout.addWidget(self.group_frame) self.qt4_parameter_factory = Qt4ParameterFactory() if self.extra_parameters is not None: for extra_parameter in self.extra_parameters: if (type(extra_parameter) == tuple and len(extra_parameter) == 2): self.qt4_parameter_factory.register_widget( extra_parameter[0], extra_parameter[1]) color_odd = QColor(220, 220, 220) color_even = QColor(192, 192, 192) i = 0 for parameter in parameters: parameter_widget = self.qt4_parameter_factory.get_widget(parameter) if i % 2: color = color_even else: color = color_odd i += 1 parameter_widget.setAutoFillBackground(True) # palette = parameter_widget.palette() # palette.setColor(parameter_widget.backgroundRole(), color) # parameter_widget.setPalette(palette) self.vertical_layout.addWidget(parameter_widget) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)