def __init__(self): QtGui.QWidget.__init__(self) l = QtGui.QVBoxLayout() self.setLayout(l) title = QtGui.QLabel('<b>Undo / Redo</b>') self.activate = QtGui.QCheckBox('Activate') self.activate.setChecked(True) self.activate.stateChanged.connect(self._enableLenHistory) self._label_lenHist = QtGui.QLabel('History Length') self.lenHistory = QtGui.QSpinBox() self.lenHistory.setRange(1, 100) self.lenHistory.setValue(5) l_history = QtGui.QHBoxLayout() l_history.addWidget(self._label_lenHist) l_history.addWidget(self.lenHistory) l.addWidget(title) l.addWidget(self.activate) l.addLayout(l_history)
def __init__(self, gui): #TODO: make pyqtgraph optics(colortheme...) directly changeable - not just # at reload QtGui.QWidget.__init__(self) self.gui = gui session = gui.app.session #CONNECT SAVE/RESTORE: session.sigSave.connect(self._save) session.sigRestore.connect(self._restore) #LAYOUT: layout = QtGui.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignTop) self.setLayout(layout) hlayout = QtGui.QHBoxLayout() layout.addLayout(hlayout) self.label_colorTheme = QtGui.QLabel('Color theme') hlayout.addWidget(self.label_colorTheme) self.combo_colorTheme = QtGui.QComboBox() hlayout.addWidget(self.combo_colorTheme) self.combo_colorTheme.addItems(('dark', 'bright')) self.combo_colorTheme.currentIndexChanged.connect( lambda i, self=self: self.setColorTheme(self.combo_colorTheme. currentText())) self.check_antialiasting = QtGui.QCheckBox('Antialiasting') layout.addWidget(self.check_antialiasting) self.check_antialiasting.stateChanged.connect(self._setAntialiasting) combo_profile = ChooseProfile(session) layout.addWidget(combo_profile)
def __init__(self, session): FirstStart.__init__(self, session) self.layout().insertWidget(3, ChooseProfile(session)) #TEMPORARY CONTENT TO BE REMOVED AFTER CODE RELEASE self.resize(300, 310) lab = QtGui.QLabel('<b>Software License Agreement</b>') ed = QtGui.QTextBrowser() ed.setReadOnly(True) ed.setOpenExternalLinks(True) ed.setCurrentFont(QtGui.QFont("Courier New", 8)) ed.setHtml('''<font size="3" face="Courier New"> This free software 'dataArtist' is licensed under GPLv3. By using this software the user agrees to the thereby associated terms. More information can be found <a href = "http://www.gnu.org/licenses/quick-guide-gplv3.en.html">here </a> </font>''') btn = QtGui.QCheckBox('I accept the terms') self.btn_done.setEnabled(False) btn.clicked.connect(lambda checked: self.btn_done.setEnabled(checked)) self.layout().insertWidget(4, lab) self.layout().insertWidget(5, ed) self.layout().insertWidget(6, btn)
def __init__(self, session): QtGui.QWidget.__init__(self) lab = QtGui.QLabel('Profile:') tt = '''The chosen profile influences the visibility of tool bars. Changes are only effective after restarting the program.''' lab.setToolTip(tt) cb = QtGui.QComboBox() cb.setToolTip(tt) items = ('simple', 'advanced') cb.addItems(items) try: cb.setCurrentIndex(items.index(session.app_opts['profile'])) except KeyError: session.app_opts['profile'] = 'simple' pass cb.currentIndexChanged.connect(lambda i: session.app_opts.__setitem__( 'profile', str(cb.currentText()))) l = QtGui.QHBoxLayout() self.setLayout(l) l.addWidget(lab) l.addWidget(cb)
def __init__(self, display): QtGui.QWidget.__init__(self) l = QtGui.QVBoxLayout() self.setLayout(l) #PAREMETERTREE pref = ParameterTree(display.p, showHeader=False) h = pref.header() h.setResizeMode(0, QtGui.QHeaderView.Stretch) h.setStretchLastSection(False) #TITLE l.addWidget(QtGui.QLabel('<b>Preferences</b')) l.addWidget(pref)
def __init__(self, layerlabel, shape1, shape2): QtGui.QDialog.__init__(self) labTxt = QtGui.QLabel( '''the latest layer %s has a different shape than the other layers: %s != %s How would you like to proceed?''' % (layerlabel, shape1, shape2)) btnR = QtGui.QPushButton("Resize") btnR.clicked.connect( lambda: [self.__setattr__('opt', self.optResize), self.close()]) btnR.setToolTip( 'Resize the new image to fit the shape of the existent ones.') btnC = QtGui.QPushButton("Cut") btnC.clicked.connect( lambda: [self.__setattr__('opt', self.optCut), self.close()]) btnC.setToolTip( 'Cut the new image to fit the shape of the existent ones.') btnW = QtGui.QPushButton("Warp") btnW.clicked.connect( lambda: [self.__setattr__('opt', self.optWarp), self.close()]) btnW.setToolTip( '''To a perspective transformation fo fit the last image with the new one using pattern recognition''') btnN = QtGui.QPushButton("New display") btnN.clicked.connect( lambda: [self.__setattr__('opt', self.optNewDisplay), self.close()]) btnN.setToolTip('Put the new image in a new display.') lv = QtGui.QVBoxLayout() lh = QtGui.QHBoxLayout() lv.addWidget(labTxt) lv.addLayout(lh) lh.addWidget(btnR) lh.addWidget(btnC) lh.addWidget(btnW) lh.addWidget(btnN) self.setLayout(lv)
def __init__(self, statusbar): QtGui.QWidget.__init__(self) self.statusbar = statusbar layout = QtGui.QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout) self.bar = QtGui.QProgressBar() self.cancel = QtGui.QPushButton('Cancel') self.label = QtGui.QLabel() layout.addWidget(self.label) layout.addWidget(self.bar) layout.addWidget(self.cancel) self.statusbar.addPermanentWidget(self, stretch=1) self.hide()
def __init__(self, gui): QtGui.QWidget.__init__(self) self.gui = gui #CONNECT SAVE/RESTORE: gui.app.session.sigSave.connect(self._save) gui.app.session.sigRestore.connect(self._restore) #LAYOUT: layout = QtGui.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignTop) self.setLayout(layout) hlayout = QtGui.QHBoxLayout() layout.addLayout(hlayout) self.label_multifiles = QtGui.QLabel('Import files') hlayout.addWidget(self.label_multifiles) self.combo_import = QtGui.QComboBox() hlayout.addWidget(self.combo_import) # self.combo_import.addItems(( 'separated', # 'together', # 'in current display', # 'in import display')) self.combo_import.addItems( ('SPLIT into MULTIPLE displays', 'ALL in NEW display', 'ALL in CURRENT display', 'ALL in IMPORT display')) self.combo_import.setCurrentIndex(self.importFilesPolicy) self.combo_import.currentIndexChanged.connect(self._importChanged) self.btn_loadFiles = QtGui.QCheckBox('load files') self.btn_loadFiles.setChecked(True) self.btn_loadFiles.toggled.connect( lambda checked, self=self: self.__setattr__( 'loadImportedFiles', checked)) layout.addWidget(self.btn_loadFiles) self.btn_ask = QtGui.QCheckBox('Show import dialog') self.btn_ask.setChecked(self.showImportDialog) self.btn_ask.toggled.connect(lambda checked, self=self: self. __setattr__('showImportDialog', checked)) layout.addWidget(self.btn_ask)
def __init__(self, parameters, function, xVals, plotItem): QtGui.QWidget.__init__(self) #make frame-less: self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint) #TODO: # #go to current screen: # d = QtGui.QApplication.desktop() # n = d.screenNumber(self) # self.setGeometry(d.screenGeometry(n)) self.xVals = xVals self.plotItem = plotItem self.function = function layout = QtGui.QGridLayout() self.setLayout(layout) self.s = [] #all spinboxes for n, (name, value) in enumerate(parameters.items()): layout.addWidget(QtGui.QLabel(name), n, 0) s = QtGui.QDoubleSpinBox() s.setValue(value) s.setMaximum(1e6) s.setMinimum(-1e6) s.valueChanged.connect(self._valueChanged) layout.addWidget(s, n, 1) self.s.append(s) btn_done = QtGui.QPushButton('Done') btn_done.clicked.connect(self.done) layout.addWidget(btn_done, n + 1, 0, 1, 2) self._valueChanged()
def __init__(self, tool): QtGui.QWidget.__init__(self) self.tool = tool self.display = tool.display l = QtGui.QHBoxLayout() self.setLayout(l) d = QtGui.QLabel('Set distance in') self.combo = QtGui.QComboBox() self.combo.addItems(['x', 'y', 'distance']) self.editor = QtGui.QLineEdit() self.editor.setValidator(QtGui.QDoubleValidator(0.0, 9999.0, 3)) l.addWidget(d) l.addWidget(self.combo) l.addWidget(self.editor) self.setGeometry(100, 100, 200, 40) self.setAutoFillBackground(True) p = self.palette() p.setColor(self.backgroundRole(), QtCore.Qt.lightGray) self.setPalette(p) self.hide()
area.addDock(d6, 'top', d4) ## place d5 at top edge of d4 ## Test ability to move docks programatically after they have been placed area.moveDock(d4, 'top', d2) ## move d4 to top edge of d2 area.moveDock(d6, 'above', d4) ## move d6 to stack on top of d4 area.moveDock(d5, 'top', d2) ## move d5 to top edge of d2 ## Add widgets into each dock ## first dock gets save/restore buttons w1 = pg.LayoutWidget() label = QtGui.QLabel(""" -- DockArea Example -- This window has 6 Dock widgets in it. Each dock can be dragged by its title bar to occupy a different space within the window but note that one dock has its title bar hidden). Additionally, the borders between docks may be dragged to resize. Docks that are dragged on top of one another are stacked in a tabbed layout. Double-click a dock title bar to place it in its own window. """) saveBtn = QtGui.QPushButton('Save dock state') restoreBtn = QtGui.QPushButton('Restore dock state') restoreBtn.setEnabled(False) w1.addWidget(label, row=0, col=0) w1.addWidget(saveBtn, row=1, col=0) w1.addWidget(restoreBtn, row=2, col=0) d1.addWidget(w1) state = None def save(): global state state = area.saveState() restoreBtn.setEnabled(True)
def __init__(self, gui): QtGui.QWidget.__init__(self) self.gui = gui rab = self.rabbitMQServer = RabbitMQServer(gui) self._wf = wf = WatchFolder(gui) s = gui.app.session #CONNECT SAVE/RESTORE: s.sigSave.connect(self._save) s.sigRestore.connect(self._restore) #CONNECT CLOSE gui.app.lastWindowClosed.connect(rab.stop) #LAYOUT: layout = QtGui.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignTop) self.setLayout(layout) #WATCH FOLDER ############# self.cb_watchFolder = QtGui.QCheckBox('Watch folder') self.cb_watchFolder.toggled.connect(self._watchFolderChanged) layout.addWidget(self.cb_watchFolder) self._folder_opts = QtGui.QWidget() layout.addWidget(self._folder_opts) gl = QtGui.QGridLayout() self._folder_opts.setLayout(gl) self._folder_opts.hide() self._wf_folderEdit = QtGui.QLineEdit('-') self._wf_folderEdit.setReadOnly(True) gl.addWidget(self._wf_folderEdit, 0, 0) btn = QtGui.QPushButton('Change') btn.clicked.connect(self._wf_folderChanged) gl.addWidget(btn, 0, 1) self._cb_filesOnly = QtGui.QCheckBox('Files only') self._cb_filesOnly.setChecked(wf.opts['files only']) self.cb_watchFolder.toggled.connect( lambda val: wf.opts.__setitem__('files only', val)) gl.addWidget(self._cb_filesOnly, 1, 0) gl.addWidget(QtGui.QLabel('refreshrate [msec]'), 2, 0) self._wf_refRate = QtGui.QSpinBox() self._wf_refRate.setRange(1, 100000) self._wf_refRate.setValue(wf.opts['refreshrate']) self._wf_refRate.valueChanged.connect(self._wf_refRateChanged) gl.addWidget(self._wf_refRate, 2, 1) #RABBIT MQ ########## hlayout = QtGui.QHBoxLayout() layout.addLayout(hlayout) self.cb_allowRabbit = QtGui.QCheckBox( 'Allow inter-process communication\nusing the RabbitMQ server') self.cb_allowRabbit.toggled.connect(self._allowRabbitMQchanged) hlayout.addWidget(self.cb_allowRabbit) self.cb_confirm = QtGui.QCheckBox('Confirm received messages') self.cb_confirm.hide() self.cb_confirm.setChecked(rab.opts['corfirmPosts']) self.cb_confirm.toggled.connect( lambda val: rab.opts.__setitem__('corfirmPosts', val)) hlayout.addWidget(self.cb_confirm) self._rab_opts = QtGui.QWidget() layout.addWidget(self._rab_opts) gl = QtGui.QGridLayout() self._rab_opts.setLayout(gl) self._rab_opts.hide() gl.addWidget(QtGui.QLabel('refreshrate [msec]'), 0, 0) self._rab_refRate = QtGui.QSpinBox() self._rab_refRate.setRange(1, 1000) self._rab_refRate.setValue(rab.opts['refreshrate']) self._rab_refRate.valueChanged.connect( lambda val: rab.opts.__setitem__('refreshrate', val)) gl.addWidget(self._rab_refRate, 0, 1) gl.addWidget(QtGui.QLabel('host'), 1, 0) self.le_host = QtGui.QLineEdit() self.le_host.setText(rab.opts['host']) self.le_host.textChanged.connect( lambda val: rab.opts.__setitem__('host', val)) gl.addWidget(self.le_host, 1, 1) gl.addWidget(QtGui.QLabel('timeout [msec]'), 2, 0) self.sb_timeout = QtGui.QSpinBox() self.sb_timeout.setRange(0, 1000) self.sb_timeout.setValue(rab.opts['timeout']) self.sb_timeout.valueChanged.connect( lambda val: rab.opts.__setitem__('timeout', val)) gl.addWidget(self.sb_timeout, 2, 1) gl.addWidget(QtGui.QLabel('<b>....listen to queues named:</b>'), 3, 0) for n, (queue, action) in enumerate(rab.listenTo.iteritems()): gl.addWidget(QtGui.QLabel(queue), 4 + n, 0) gl.addWidget(QtGui.QLabel(action.__doc__), 4 + n, 1)
def __init__(self, display, splitter): QtGui.QWidget.__init__(self) self.display = display display.sigLayerChanged.connect(self.toggleDataChanged) display.sigNewLayer.connect(self.toggleNewData) self.splitter = splitter refreshR = 20 self._collect = False self._activeWidgets = [] #BUTTON: OF/OFF self.btn_show = QtGui.QRadioButton('Console') f = self.btn_show.font() f.setBold(True) self.btn_show.setFont(f) self.btn_show.clicked.connect(self._toggleShow) #COMBOBOX: IMPORT self.combo_import = QtGui.QComboBox() self.combo_import.addItems(('<import>', 'from file')) self.combo_import.addItems( #don't show '.py' and hide __init__.py [ x[:-3] for x in SPRIPT_PATH.listdir() if (x[0] != '_' and x.endswith('.py')) ]) self.combo_import.currentIndexChanged.connect(self._importScript) #BUTTON: COLLECT self.btn_collect = QtGui.QPushButton('Collect') self.btn_collect.setToolTip( 'click on all tool parameters you want to change during the batch process' ) self.btn_collect.setCheckable(True) self.btn_collect.clicked.connect(self.collectWidgets) #TABWIDGET: SCRIPT self.tabs = FwTabWidget() self.tabs.hide() self.tabs.setTabsAddable(True) self.tabs.setTabsClosable(True) self.tabs.setTabsRenamable(True) self.tabs.defaultTabWidget = lambda: ScriptTab(self, refreshR) self.tabs.addEmptyTab('New') #BUTTON: RUN AT NEW INPUT self.label_run_on = QtGui.QLabel('Activate on') self.cb_run_on = QtGui.QComboBox() self.cb_run_on.addItems(['-', 'New Data', 'Data Changed']) #SPINBOX REFRESHRATE self.label_refresh = QtGui.QLabel('Refresh rate:') self.sb_refreshrate = QtGui.QSpinBox() self.sb_refreshrate.setSuffix(" Hz") self.sb_refreshrate.setMinimum(0) self.sb_refreshrate.setMaximum(100) self.sb_refreshrate.setValue(refreshR) self.sb_refreshrate.valueChanged.connect( lambda hz: self.tabs.currentWidget().thread.setRefreshrate(hz)) #BUTTON: RUN self.btn_run_now = QtGui.QPushButton('Run') self.btn_run_now.setCheckable(True) self.btn_run_now.clicked.connect(self.toggle) #LAYOUT layout = QtGui.QVBoxLayout() layout.setAlignment(QtCore.Qt.AlignTop) layout.setMargin(0) self.setLayout(layout) #top layout hl = QtGui.QHBoxLayout() hl.addWidget(self.btn_show) hl.addWidget(self.btn_collect) #fill layout layout.addLayout(hl) layout.addWidget(self.combo_import) layout.addWidget(self.tabs) hl2 = QtGui.QHBoxLayout() hl2.addWidget(self.label_run_on) hl2.addWidget(self.cb_run_on) hl2.addWidget(self.label_refresh) hl2.addWidget(self.sb_refreshrate) hl2.insertStretch(1, 0) hl2.insertStretch(2, 0) layout.addLayout(hl2) layout.addWidget(self.btn_run_now) self._toggleShow(False) #automation disabled by default