def addTag(self,title=None,color=None,check=QtCore.Qt.Unchecked,count=0): self.tagsTable.insertColumn(self.tagsTable.columnCount()) # The Tag name if(title is None): title = "Tag "+str(self.colorIndex) item = QtGui.QTableWidgetItem(title) item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) item.setToolTip("Double click to change name") self.tagsTable.setItem(0,self.tagsTable.columnCount()-1,item) # The Tag color item = QtGui.QTableWidgetItem() item.setFlags(QtCore.Qt.ItemIsEnabled) if(color is None): color = self.colors[self.colorIndex%len(self.colors)] self.colorIndex += 1 item.setBackground(color) item.setToolTip("Double click to change color") self.tagsTable.setItem(1,self.tagsTable.columnCount()-1,item) # The Tag checkbox widget = QtGui.QWidget() layout = QtGui.QHBoxLayout(widget); checkbox = QtGui.QCheckBox() checkbox.setCheckState(check) layout.addWidget(checkbox); layout.setAlignment(QtCore.Qt.AlignCenter); layout.setContentsMargins(0,0,0,0); widget.setLayout(layout); widget.setToolTip("If enabld hide images which are not tagged") widget.checkbox = checkbox self.tagsTable.setCellWidget(2,self.tagsTable.columnCount()-1,widget) # The Tag count item = QtGui.QTableWidgetItem(str(count)) item.setTextAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) item.setFlags(QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsSelectable) item.setToolTip("Numbers of images tagged") self.tagsTable.setItem(3,self.tagsTable.columnCount()-1,item)
def __init__(self, parent=None, indexProjector=None): QtGui.QWidget.__init__(self, parent) self.setFocusPolicy(QtCore.Qt.ClickFocus) self.viewer = parent self.indexProjector = indexProjector # this dict holds all current settings self.view2DProp = {} self.view1DProp = {} self.vbox = QtGui.QVBoxLayout() # stack self.stackSize = None self.settings = QtCore.QSettings() # scrolling self.vboxScroll = QtGui.QVBoxLayout() self.vboxScroll.setContentsMargins(0, 0, 11, 0) self.scrollWidget = QtGui.QWidget() self.scrollWidget.setLayout(self.vboxScroll) self.scrollArea = QtGui.QScrollArea() self.scrollArea.setWidgetResizable(True) self.scrollArea.setFrameShape(QtGui.QFrame.NoFrame) self.scrollArea.setWidget(self.scrollWidget) self.scrollArea.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.scrollArea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn) self.vbox.addWidget(self.scrollArea) # GENERAL PROPERTIES # properties: data self.generalBox = QtGui.QGroupBox("General Properties") self.generalBox.vbox = QtGui.QVBoxLayout() self.generalBox.setLayout(self.generalBox.vbox) self.shape = QtGui.QLabel("Shape:", parent=self) self.datatype = QtGui.QLabel("Data Type:", parent=self) self.datasize = QtGui.QLabel("Data Size:", parent=self) self.dataform = QtGui.QLabel("Data Form:", parent=self) self.generalBox.vbox.addWidget(self.shape) self.generalBox.vbox.addWidget(self.datatype) self.generalBox.vbox.addWidget(self.datasize) self.generalBox.vbox.addWidget(self.dataform) # properties: image stack self.imageStackBox = QtGui.QGroupBox("Image Stack") self.imageStackBox.vbox = QtGui.QVBoxLayout() self.imageStackBox.setLayout(self.imageStackBox.vbox) # property: image stack plots width hbox = QtGui.QHBoxLayout() hbox.addWidget(QtGui.QLabel("Width:")) self.imageStackSubplots = QtGui.QSpinBox(parent=self) self.imageStackSubplots.setMinimum(1) # self.imageStackSubplots.setMaximum(5) hbox.addWidget(self.imageStackSubplots) self.imageStackBox.vbox.addLayout(hbox) # DISPLAY PROPERTIES self.displayBox = DisplayBox(self) # sorting self.sortingBox = QtGui.QGroupBox("Sorting") self.sortingBox.vbox = QtGui.QVBoxLayout() self.sortingDataLabel = QtGui.QLabel("", parent=self) self.sortingBox.vbox.addWidget(self.sortingDataLabel) hbox = QtGui.QHBoxLayout() hbox.addWidget(QtGui.QLabel("Invert")) self.invertSortingCheckBox = QtGui.QCheckBox("", parent=self) hbox.addWidget(self.invertSortingCheckBox) hbox.addStretch() self.sortingBox.vbox.addLayout(hbox) self.sortingBox.setLayout(self.sortingBox.vbox) self.clearSorting() # filters self.filterBox = QtGui.QGroupBox("Filters") self.filterBox.vbox = QtGui.QVBoxLayout() self.filterBox.setLayout(self.filterBox.vbox) self.filterBox.hide() self.activeFilters = [] self.inactiveFilters = [] # plot box self.plotBox = QtGui.QGroupBox("Plot") self.plotBox.vbox = QtGui.QVBoxLayout() validatorInt = QtGui.QIntValidator() validatorInt.setBottom(0) validatorSci = QtGui.QDoubleValidator() validatorSci.setDecimals(3) validatorSci.setNotation(QtGui.QDoubleValidator.ScientificNotation) self.plotNBinsEdit = QtGui.QLineEdit(self) self.plotNBinsEdit.setMaximumWidth(100) self.plotNBinsEdit.setValidator(validatorInt) hbox = QtGui.QHBoxLayout() hbox.addWidget(QtGui.QLabel("# bins:")) hbox.addWidget(self.plotNBinsEdit) self.plotBox.vbox.addLayout(hbox) hbox = QtGui.QHBoxLayout() hbox.addWidget(QtGui.QLabel("Lines:")) self.plotLinesCheckBox = QtGui.QCheckBox("", parent=self) self.plotLinesCheckBox.setChecked(True) hbox.addWidget(self.plotLinesCheckBox) self.plotBox.vbox.addLayout(hbox) hbox = QtGui.QHBoxLayout() hbox.addWidget(QtGui.QLabel("Points:")) self.plotPointsCheckBox = QtGui.QCheckBox("", parent=self) hbox.addWidget(self.plotPointsCheckBox) self.plotBox.vbox.addLayout(hbox) self.plotBoxValueLabel = None self.plotBox.setLayout(self.plotBox.vbox) self.plotBox.hide() self.modelProperties = ModelProperties(self) self.modelProperties.hide() self.pattersonProperties = PattersonProperties(self) self.pattersonProperties.hide() # add all widgets to main vbox self.vboxScroll.addWidget(self.generalBox) self.vboxScroll.addWidget(self.displayBox) self.vboxScroll.addWidget(self.imageStackBox) self.vboxScroll.addWidget(self.sortingBox) self.vboxScroll.addWidget(self.filterBox) self.vboxScroll.addWidget(self.plotBox) self.vboxScroll.addWidget(self.modelProperties) self.vboxScroll.addWidget(self.pattersonProperties) self.vboxScroll.addStretch() self.setLayout(self.vbox) # clear all properties self.clear() # connect signals self.imageStackSubplots.editingFinished.connect(self.emitView2DProp) self.displayBox.displayMax.editingFinished.connect(self.checkLimits) self.displayBox.displayMin.editingFinished.connect(self.checkLimits) self.displayBox.displayMaxUnit.currentIndexChanged.connect( self.checkLimits) self.displayBox.displayMinUnit.currentIndexChanged.connect( self.checkLimits) self.displayBox.displayClamp.stateChanged.connect(self.emitView2DProp) self.displayBox.displayInvert.stateChanged.connect(self.emitView2DProp) #self.displayBox.displayAutorange.stateChanged.connect(self.emitView2DProp) self.displayBox.displayScale.currentIndexChanged.connect( self.emitView2DProp) self.invertSortingCheckBox.toggled.connect(self.emitView2DProp) self.invertSortingCheckBox.toggled.connect(self.emitView1DProp) self.viewer.colormapActionGroup.triggered.connect(self.emitView2DProp) self.plotLinesCheckBox.toggled.connect(self.emitView1DProp) self.plotPointsCheckBox.toggled.connect(self.emitView1DProp) self.plotNBinsEdit.editingFinished.connect(self.emitView1DProp)
def __init__(self, parent, dataItem): QtGui.QWidget.__init__(self, parent) vbox = QtGui.QVBoxLayout() nameLabel = QtGui.QLabel(dataItem.fullName) yieldLabel = QtGui.QLabel("") data = dataItem.data() vmin = numpy.min(data) vmax = numpy.max(data) self.histogram = pyqtgraph.PlotWidget(self) self.histogram.hideAxis('left') self.histogram.hideAxis('bottom') self.histogram.setFixedHeight(50) # Make the histogram fit the available width self.histogram.setSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Preferred) region = pyqtgraph.LinearRegionItem(values=[vmin, vmax], brush="#ffffff15") region.sigRegionChangeFinished.connect(self.syncLimits) self.histogram.addItem(region) self.histogram.autoRange() vbox.addWidget(self.histogram) vbox.addWidget(nameLabel) vbox.addWidget(yieldLabel) # for non-boolean filters hbox = QtGui.QHBoxLayout() self.vminLabel = QtGui.QLabel("Min.:") hbox.addWidget(self.vminLabel) self.vmaxLabel = QtGui.QLabel("Max.:") hbox.addWidget(self.vmaxLabel) vbox.addLayout(hbox) hbox = QtGui.QHBoxLayout() validator = QtGui.QDoubleValidator() validator.setDecimals(3) validator.setNotation(QtGui.QDoubleValidator.ScientificNotation) self.vminLineEdit = QtGui.QLineEdit(self) self.vminLineEdit.setText("%.7e" % (vmin * 0.999)) self.vminLineEdit.setValidator(validator) hbox.addWidget(self.vminLineEdit) self.vmaxLineEdit = QtGui.QLineEdit(self) self.vmaxLineEdit.setText("%.7e" % (vmax * 1.001)) self.vmaxLineEdit.setValidator(validator) hbox.addWidget(self.vmaxLineEdit) vbox.addLayout(hbox) # for boolean filters hbox = QtGui.QHBoxLayout() self.invertLabel = QtGui.QLabel("Invert") hbox.addWidget(self.invertLabel) self.invertCheckBox = QtGui.QCheckBox("", parent=self) hbox.addWidget(self.invertCheckBox) hbox.addStretch() vbox.addLayout(hbox) self.setNonBooleanFilter() # for 2-dimensional datasets hbox = QtGui.QHBoxLayout() self.indexLabel = QtGui.QLabel("Index:") hbox.addWidget(self.indexLabel) self.indexCombo = QtGui.QComboBox() hbox.addWidget(self.indexCombo) vbox.addLayout(hbox) self.set1DimensionalDataset() self.setLayout(vbox) self.histogram.region = region self.histogram.itemPlot = None self.nameLabel = nameLabel self.yieldLabel = yieldLabel self.vbox = vbox self.refreshData(dataItem) self.vminLineEdit.editingFinished.connect(self.emitLimitsChanged) self.vmaxLineEdit.editingFinished.connect(self.emitLimitsChanged) self.indexCombo.currentIndexChanged.connect( self.emitSelectedIndexChanged) self.invertCheckBox.toggled.connect(self.syncLimits)
def __init__(self, parent=None, empty=False): QtGui.QWidget.__init__(self, parent) self.debug = False self.ogtDoc = None if empty: self.ogtDoc = ogt_doc.OGTDocument() self.mainLayout = xwidgets.vlayout() self.setLayout(self.mainLayout) ##====== Top Bar === self.topLay = xwidgets.hlayout() self.mainLayout.addLayout(self.topLay) ## Header Label self.lblHeader = QtGui.QLabel() self.lblHeader.setStyleSheet( "background-color: #444444; color: #dddddd; font-size: 14pt; padding: 3px 5px;" ) self.topLay.addWidget(self.lblHeader, 100) ## Add button self.buttActAdd = xwidgets.XToolButton(text="Add..", ico=Ico.Add, menu=True, popup=True) self.topLay.addWidget(self.buttActAdd) ## Import button self.buttImport = xwidgets.XToolButton(text="Import", ico=Ico.Import, menu=True, popup=True) self.topLay.addWidget(self.buttImport) self.buttImport.menu().addAction("Add default PROJ, UNIT, etc groups", self.on_add_default_groups) ## Export button self.buttExport = xwidgets.XToolButton(text="Export", ico=Ico.Export, menu=True, popup=True) self.topLay.addWidget(self.buttExport) for a in FORMATS: self.buttExport.menu().addAction("%s - TODO" % a) ## Reload button self.buttReload = xwidgets.XToolButton(text="Reload", ico=Ico.Refresh, popup=True, callback=self.on_reload) self.topLay.addWidget(self.buttReload) self.mainLayout.addSpacing(5) ##========= Content =============== ## tabar + Stack self.tabBar = QtGui.QTabBar() f = self.tabBar.font() f.setBold(True) self.tabBar.setFont(f) self.mainLayout.addWidget(self.tabBar) self.stackWidget = XStackedWidget() #QtGui.QStackedWidget() self.mainLayout.addWidget(self.stackWidget) ## Summary Tab self.tabBar.addTab(Ico.icon(Ico.Summary), "Summary") self.ogtProjSummaryWidget = OGTProjectSummaryWidget() self.stackWidget.addWidget(self.ogtProjSummaryWidget, "Project Summary") self.ogtProjSummaryWidget.sigGoto.connect(self.on_goto) self.ogtProjSummaryWidget.sigGotoSource.connect(self.on_goto_source) ## Groups Tab self.tabBar.addTab(Ico.icon(Ico.Groups), "Groups") self.ogtDocWidget = ogtgui_doc.OGTDocumentWidget() nidx = self.stackWidget.addWidget(self.ogtDocWidget, "Groups") chk = QtGui.QCheckBox() chk.setText("Show Data Count") self.stackWidget.addHeaderWidget(nidx, chk) ## Schedule Tab self.tabBar.addTab(Ico.icon(Ico.Schedule), "Schedule") self.ogtScheduleWidget = ogtgui_widgets.OGTScheduleWidget() self.stackWidget.addWidget(self.ogtScheduleWidget, "Schedule") ## Source tab self.tabBar.addTab(Ico.icon(Ico.Source), "Source") self.ogtSourceViewWidget = ogtgui_widgets.OGTSourceViewWidget() self.stackWidget.addWidget(self.ogtSourceViewWidget, "Sources") if False: self.tabBar.addTab(Ico.icon(Ico.Map), "Map") self.mapOverviewWidget = map_widgets.MapOverviewWidget() self.stackWidget.addWidget(self.mapOverviewWidget) self.tabBar.currentChanged.connect(self.on_tab_changed) if G.args.dev: self.tabBar.setCurrentIndex(1) pass