def __init__(self, parent=None, signalManager=None): OWRpy.__init__(self) self.setRvariableNames(['heatsubset']) self.plotOnConnect = 0 self.plotdata = '' self.rowvChoice = None self.inputs.addInput('id0', 'Expression Matrix', redRRMatrix, self.processMatrix) #GUI mainArea = widgetBox(self.controlArea,orientation='horizontal') #mainArea.setMaximumWidth(300) options = widgetBox(mainArea,orientation='vertical') options.setMaximumWidth(175) options.setMinimumWidth(175) dendrogramsBox = groupBox(options, label='Calculate dendrogram ', orientation='vertical') self.notice = widgetLabel(dendrogramsBox,label='The data set has > 1000 rows.\nClustering on rows will likely fail.') self.notice.setHidden(True) self.dendrogramOptions = checkBox(dendrogramsBox, buttons = ['Rows', 'Columns'], setChecked=['Rows', 'Columns'], orientation='horizontal', callback=self.dendrogramChanged) functions = widgetBox(dendrogramsBox,orientation='vertical') self.distOptions = lineEdit(functions,label='Distance Function:', text='dist', orientation='vertical') self.hclustOptions = lineEdit(functions,label='Clustering Function:',text='hclust', orientation='vertical') #self.reorderOptions = lineEdit(functions,label='Reorder Function:', text='reorder.dendrogram') self.scaleOptions = radioButtons(options,label='Scale', buttons=['row','column','none'], setChecked='row',orientation='horizontal') otherOptions = groupBox(options,label='Other Options') self.narmOptions = checkBox(otherOptions, buttons = ['Remove NAs'], setChecked=['Remove NAs']) # self.showDendroOptions = checkBox(otherOptions,buttons=['Show dendrogram '], setChecked=['Show dendrogram ']) self.colorTypeCombo = comboBox(otherOptions, label = 'Color Type:', items = ['rainbow', 'heat.colors', 'terrain.colors', 'topo.colors', 'cm.colors'],callback=self.colorTypeChange) self.startSaturation = spinBox(otherOptions, label = 'Starting Saturation', min = 0, max = 100) self.endSaturation = spinBox(otherOptions, label = 'Ending Saturation', min = 0, max = 100) self.endSaturation.setValue(30) separator(otherOptions,height=10) self.imageWidth = spinBox(otherOptions, label = 'Image Width', min = 1, max = 1000) self.imageWidth.setValue(4) self.imageHeight = spinBox(otherOptions, label = 'Image Height', min = 1, max = 1000) self.imageHeight.setValue(4) self.notice2 = widgetLabel(options,label='The input matrix is not numeric.') self.notice2.setHidden(True) self.buttonsBox = widgetBox(options,orientation='horizontal') self.buttonsBox.layout().setAlignment(Qt.AlignRight) self.plotOnConnect = checkBox(self.buttonsBox, buttons=['Plot on Connect']) button(self.buttonsBox, label = "Plot", callback=self.makePlot)
def __init__(self, **kwargs): settingsList = ['output_txt', 'parameters'] OWRpy.__init__(self, **kwargs) self.functionParams = '' self.widgetInputsName = [] self.widgetInputsClass = [] self.widgetInputsFunction = [] self.numberInputs = 0 self.numberOutputs = 0 self.fieldList = {} self.functionInputs = {} self.processOnConnect = 1 # GUI # several tabs with different parameters such as loading in a function, setting parameters, setting inputs and outputs tabs = tabWidget.tabWidget(self.controlArea) functionTab = tabs.createTabPage(_("Function Info"), orientation = 'vertical') codeTab = tabs.createTabPage(_("Code")) box = widgetBox.widgetBox(functionTab, orientation = 'horizontal') box.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum) self.infoa = widgetLabel.widgetLabel(box, '') self.packageName = lineEdit.lineEdit(box, label = _('Package:'), orientation = 1) button.button(box, 'Load Package', callback = self.loadRPackage) self.functionName = lineEdit.lineEdit(box, label = _('Function Name:'), orientation = 1) button.button(box, 'Parse Function', callback = self.parseFunction) self.argsLineEdit = lineEdit.lineEdit(box, label = _('GUI Args')) self.connect(self.argsLineEdit, SIGNAL('textChanged(QString)'), self.setArgsLineEdit) box = widgetBox.widgetBox(functionTab) box.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.inputArea = QTableWidget() box.layout().addWidget(self.inputArea) self.inputArea.setColumnCount(7) box = widgetBox.widgetBox(functionTab, orientation = 'horizontal') #self.inputArea.hide() self.connect(self.inputArea, SIGNAL("itemClicked(QTableWidgetItem*)"), self.inputcellClicked) self.functionAllowOutput = checkBox.checkBox(box, label = _('Allow Output'), buttons = [_('Allow Output')]) self.captureROutput = checkBox.checkBox(box, label = 'Show Output', buttons = [_('Show Output')]) #self.inputsCombobox = redRGUI.comboBox(box, label = 'Input Class:', items = self.getRvarClass_classes()) self.outputsCombobox = comboBox.comboBox(box, label = _('Output Class:'), items = self.getRvarClass_classes()) button.button(box, label = _('Accept Inputs'), callback = self.acceptInputs) button.button(box, _('Generate Code'), callback = self.generateCode) button.button(box, _('Launch Widget'), callback = self.launch) self.codeArea = QTextEdit() codeTab.layout().addWidget(self.codeArea)
def __init__(self, parent=None, signalManager=None): OWRpy.__init__(self, wantGUIDialog = 1) self.rowCount = 10 self.colCount = 10 self.maxRow = 0 # sets the most extreme row and cols self.maxCol = 0 self.classes = None self.savedData = None self.setRvariableNames(['table', 'table_cm']) self.inputs.addInput('Data Table', 'Data Table', redRRDataFrame, self.processDF) self.outputs.addOutput('Data Table', 'Data Table', redRRDataFrame) # trace problem with outputs #GUI. box = groupBox(self.GUIDialog, label = "Options") redRCommitButton(self.bottomAreaRight, 'Commit', self.commitTable) self.rowHeaders = checkBox(box, label= 'Table Annotations', buttons=['Use Row Headers', 'Use Column Headers']) #self.colHeaders = checkBox(box, label=None, buttons=['Use Column Headers']) self.rowHeaders.setChecked(['Use Row Headers', 'Use Column Headers']) #self.colHeaders.setChecked(['Use Column Headers']) self.customClasses = button(box, 'Use Custom Column Classes', callback = self.setCustomClasses) button(box, 'Clear Classes', callback = self.clearClasses) self.columnDialog = QDialog() self.columnDialog.setLayout(QVBoxLayout()) self.columnDialog.hide() self.columnNameLineEdit = lineEdit(self.columnDialog, label = 'Column Name:') button(self.columnDialog, 'Commit', callback = self.commitNewColumn) #button(self.bottomAreaRight, "Add Column", callback = self.addColumn) #button(self.bottomAreaRight, "Add Row", callback = self.addRow) box = groupBox(self.controlArea, label = "Table", sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)) #self.splitCanvas.addWidget(box) #self.R(self.Rvariables['table'] + '<- matrix("",nrow=10,ncol=10)', wantType = 'NoConversion') self.dataTable = table(box, label = 'Data Table', rows = 10, columns = 10) # if self.dataTable.columnCount() < 1: # self.dataTable.setColumnCount(1) # self.dataTable.setHorizontalHeaderLabels(['Rownames']) # if self.dataTable.rowCount() < 1: # self.dataTable.setRowCount(1) # self.dataTable.setHorizontalHeaderLabels(['Rownames']) self.connect(self.dataTable, SIGNAL("cellClicked(int, int)"), self.cellClicked) # works OK self.connect(self.dataTable, SIGNAL("cellChanged(int, int)"), self.itemChanged) self.window = QDialog(self) self.window.setLayout(QVBoxLayout()) self.classTable = table(self.window, label = 'Data Table', rows = self.maxCol, columns = 2) self.resize(700,500) self.move(300, 25)
def __init__(self,widget,label = _('Commit'), callback = None, processOnInput=None,processOnChange=None, icon=None, orientation='horizontal', width = None, height = None, alignment=Qt.AlignRight, toggleButton = False,**kwargs): kwargs.setdefault('includeInReports', False) kwargs.setdefault('sizePolicy', QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)) widgetState.__init__(self,widget,label,**kwargs) icon = str(redREnviron.directoryNames['libraryDir']+'/base/icons/fork.png').replace('\\', '/') box = widgetBox(self.controlArea,orientation=orientation,alignment=alignment,includeInReports=False) box2 = widgetBox(box,orientation='vertical',margin=0,spacing=0) if processOnChange is dict: self.processOnChangeState = checkBox(box2, label=_('processOnChange'), displayLabel=False, buttons = [processOnInput['name']], toolTips = [processOnInput['toolTip']] ) elif processOnChange == True: self.processOnChangeState = checkBox(box2, label=_('processOnChange'), displayLabel=False, buttons = [_('Process On Parameter Change')], toolTips = [_('Try to process as soon as a parameter is changed.')] ) if processOnInput is dict: self.processOnInputState = checkBox(box2, label=_('processOnInput'), displayLabel=False, buttons = [processOnInput['name']], toolTips = [processOnInput['toolTip']] ) elif processOnInput == True: self.processOnInputState = checkBox(box2, label=_('processOnInput'), displayLabel=False, buttons = [_('Process On Data Input')], toolTips = [_('Try to process as soon as data is received by the widget. The current state of parameters will be applied.')] ) button.__init__(self, widget = box, label = label, callback = callback, icon = icon, width = width, height = 35, toggleButton = toggleButton,**kwargs) self.setIcon(QIcon(icon)) self.setIconSize(QSize(20, 20))
def __init__(self, parent=None, signalManager=None): OWRpy.__init__(self) self.setRvariableNames(["sort"]) self.data = {} self.RFunctionParam_x = '' self.inputs.addInput('id0', _('Data Tabel'), redRRDataFrame, self.processx) self.outputs.addOutput('id0', _('Sorted Data Table'), redRRDataFrame) self.standardTab = widgetBox(self.controlArea) self.options = checkBox(self.standardTab,label=_('Options'), buttons = [_("Decreasing"), _('NA Last')], orientation='horizontal') # self.standardTab.layout().setAlignment(self.options,Qt.AlignLeft) self.sortingColumn1 = comboBox(self.standardTab, label = _('First Column to Sort:')) self.sortingColumn2 = comboBox(self.standardTab, label = _('Second Column to Sort:')) self.sortingColumn3 = comboBox(self.standardTab, label = _('Third Column to Sort:')) self.commit = redRCommitButton(self.bottomAreaRight, _("Commit"), callback = self.commitFunction, processOnInput=True)
def createMenu(self, selectedCol): ''' self.tm.createMenu(selectedCol, sortable = self.sortable, filterable = self.filterable ''' #print selectedCol, pos # print _('in createMenu'), self.criteriaList if not self.sortable and not self.filterable: return globalPos = QCursor.pos() #self.mapToGlobal(pos) self.menu = QDialog(None,Qt.Popup) self.menu.setLayout(QVBoxLayout()) if self.sortable: box = widgetBox(self.menu,orientation='horizontal') box.layout().setAlignment(Qt.AlignLeft) button(box,label='A->Z',callback= lambda: self.sort(selectedCol,Qt.AscendingOrder)) widgetLabel(box,label=_('Ascending Sort')) box = widgetBox(self.menu,orientation='horizontal') box.layout().setAlignment(Qt.AlignLeft) button(box,label='Z->A',callback= lambda: self.sort(selectedCol,Qt.DescendingOrder)) widgetLabel(box,label=_('Descending Sort')) if not self.filterable: self.menu.move(globalPos) self.menu.show() return if self.sortable: hr = QFrame(self.menu) hr.setFrameStyle( QFrame.Sunken + QFrame.HLine ); hr.setFixedHeight( 12 ); self.menu.layout().addWidget(hr) clearButton = button(self.menu,label=_('Clear Filter'), callback=lambda col=selectedCol: self.createCriteriaList(col,self.menu,action='clear')) self.menu.layout().setAlignment(clearButton,Qt.AlignHCenter) clearButton.hide() self.numericLabel = widgetLabel(self.menu,label=_('Enter a value for one of these critera:')) self.numericLabel.hide() self.stringLabel = widgetLabel(self.menu,label=_('Enter a value for one of these critera (case sensitive):')) self.stringLabel.hide() self.factorLabel = widgetLabel(self.menu,label=_('Select Levels:')) self.factorLabel.hide() if selectedCol in self.criteriaList.keys(): clearButton.show() self.optionsBox = widgetBox(self.menu) self.optionsBox.layout().setAlignment(Qt.AlignTop) #### Logic if R variable ### #if self.varType == 0: colClass = self.R('class(%s[,%d])' % (self.Rdata,selectedCol),silent=True) if colClass in ['factor','logical']: self.factorLabel.show() if selectedCol in self.criteriaList.keys(): checked = self.criteriaList[selectedCol]['value'] else: checked = [] if colClass =='logical': levels = ['TRUE','FALSE'] else: levels = self.R('levels(%s[,%d])' % (self.Rdata,selectedCol),wantType='list', silent=True) if len(levels) > 1: levels.insert(0,_('Check All')) scroll = scrollArea(self.optionsBox,spacing=1) c = checkBox(scroll,label=_('Levels'),displayLabel=False, buttons=levels,setChecked = checked) scroll.setWidget(c.controlArea) QObject.connect(c.buttons, SIGNAL('buttonClicked (int)'), lambda val : self.factorCheckBox(val,self.optionsBox)) elif colClass in ['integer','numeric']: self.numericLabel.show() self.options = [_('Equals'), _('Does Not Equal'),_('Greater Than'),_('Greater Than Or Equal To'), _('Less Than'), _('Less Than or Equal To'), 'Between\n(2 numbers comma\nseparated, inclusive)', 'Not Between\n(2 numbers comma\nseparated)'] for x in self.options: if selectedCol in self.criteriaList and self.criteriaList[selectedCol]['method'] == _('Numeric ') + x: e = lineEdit(self.optionsBox,label=x,text=self.criteriaList[selectedCol]['value']) else: e = lineEdit(self.optionsBox,label=x) self.connect(e, SIGNAL("textEdited(QString)"), lambda val, col=selectedCol,field=x : self.clearOthers(val,self.optionsBox,field)) elif colClass in ['character']: self.stringLabel.show() self.options = [_('Equals'), _('Does Not Equal'),_('Begins With'),_('Ends With'), _('Contains'), _('Does Not Contain')] for x in self.options: if selectedCol in self.criteriaList and self.criteriaList[selectedCol]['method'] == _('String ') + x: e = lineEdit(self.optionsBox,label=x,text=self.criteriaList[selectedCol]['value']) else: e = lineEdit(self.optionsBox,label=x) self.connect(e, SIGNAL("textEdited(QString)"), lambda val, col=selectedCol,field=x : self.clearOthers(val,self.optionsBox,field)) buttonBox = widgetBox(self.optionsBox,orientation='horizontal') buttonBox.layout().setAlignment(Qt.AlignRight) okButton = button(buttonBox,label=_('OK'), callback=lambda col=selectedCol: self.createCriteriaList(col,self.optionsBox,action=_('OK'))) okButton.setDefault (True) button(buttonBox,label=_('Cancel'), callback=lambda col=selectedCol: self.createCriteriaList(col,self.optionsBox,action='cancel')) self.menu.move(globalPos) self.menu.show()
def __init__(self, parent,label=None, displayLabel=True,includeInReports=True, name = '', data = None): ## want to init a graphics view with a new graphics scene, the scene will be accessable through the widget. widgetState.__init__(self,parent,label,includeInReports) QGraphicsView.__init__(self, self.controlArea) # if displayLabel: # self.controlArea = groupBox(parent,label=label, orientation='vertical') # else: # self.controlArea = widgetBox(parent,orientation='vertical') #self.controlArea = widgetBox(parent) self.topArea = widgetBox(self.controlArea, sizePolicy = QSizePolicy(QSizePolicy.Minimum,QSizePolicy.Maximum),includeInReports=False) self.middleArea = widgetBox(self.controlArea) self.bottomArea = widgetBox(self.controlArea,includeInReports=False) self.middleArea.layout().addWidget(self) # place the widget into the parent widget scene = QGraphicsScene() self.setScene(scene) self.parent = parent self.data = data self.widgetSelectionRect = None self.mainItem = None self.query = '' self.function = 'plot' self.layers = [] self.image = 'plot'+unicode(time.time()) # the base file name without an extension self.imageFileName = '' self.currentScale = 1 self.customPlotFunction = None self.controlGroups = {} self.tabs = {} ################################ #### Themes ##### ################################ self.options = { 'device': { 'Rcall': 'Cairo', 'parameters': { 'type':{ 'default':'svg', 'qtWidget': 'imageType' } ,'dpi':{ 'default':'75', 'qtWidget': 'dpi' } ,'bg': { 'default':'#FFFFFF', 'color': '#FFFFFF', 'qtWidget':'bgColor' } ,'height': { 'default':400, 'qtWidget': 'dheight' } ,'width': { 'default':400, 'qtWidget': 'dwidth' } ,'units': { 'default':'px', 'qtWidget': 'units' } } } ,'main': { 'Rcall': 'plot', 'parameters': { 'col': { 'default':None, 'qtWidget':'colorSeries', 'series': '', 'seriesLen': 0, 'getFunction': self.getColorSeries, 'setFunction': self.setColorSeries, } ,'lty': { 'default':None, 'qtWidget':'linesListBox', 'getFunction': self.getLineTypes, 'setFunction': self.setLineTypes, } ,'lwd': { 'default':None, 'qtWidget':'lineWidth' } ,'pch': { 'default':None, 'qtWidget':'pointListBox', 'getFunction': self.getLineTypes, 'setFunction': self.setLineTypes, } ,'xlim': { 'default':None, 'qtWidget':['xstart','xend'], 'getFunction': self.getLimits, 'setFunction': self.setLimits, } ,'ylim': { 'default':None, 'qtWidget':['ystart','yend'], 'getFunction': self.getLimits, 'setFunction': self.setLimits, } } }, 'title': { 'Rcall': 'title', 'parameters': { 'main': { 'default':"Title", 'qtWidget':'mainTitle' } ,'xlab': { 'default':"XLab", 'qtWidget':'xLab' } ,'ylab': { 'default':"YLab", 'qtWidget':'yLab' } ,'col.main': { 'default':'#000000', 'qtWidget':'titleColor' } ,'col.sub': { 'default':'#000000', 'qtWidget':'subColor' } ,'col.lab': { 'default':'#000000', 'qtWidget':'labColor' } } }, 'par': { 'Rcall':'par', 'parameters': { 'cex.axis': { 'default':1, 'qtWidget':'axisFont' } ,'cex.lab': { 'default':1, 'qtWidget':'labFont' } ,'cex': { 'default':1, 'qtWidget':'plotFont' } ,'cex.main': { 'default':1, 'qtWidget':'mainFont' } ,'cex.sub': { 'default':1, 'qtWidget':'subFont' } ,'col.axis': { 'default':'#000000', 'qtWidget':'axisColor' } # ,'family': { # 'default':'serif', # 'qtWidget':'fontCombo' # } } } } # ,'fg' : None # ,'legendNames' : None # ,'legendLocation' : "'bottomleft'" # } self.optionWidgets = {} self.colorList = ['#000000', '#ff0000', '#00ff00', '#0000ff'] ################################ #### Setup Tabs ##### ################################ self.graphicOptionsButton = button(self.topArea,label='Graphic Options', toggleButton = True,callback=self.displayGraphicOptions) self.graphicOptionsWidget = widgetBox(self.topArea) self.tabWidget = tabWidget(self.graphicOptionsWidget) self.tabWidget.setFixedHeight(180) hbox = widgetBox(self.graphicOptionsWidget,orientation='horizontal',alignment= Qt.AlignLeft) self.resizeCheck = checkBox(hbox,label='resize',displayLabel=False,buttons={'true':'Resize Image'},setChecked='true') button(hbox,label='Update Graphic', alignment=Qt.AlignLeft, callback=self.updatePlot) self.createTab('General') self.createTab('Points/Lines') self.createTab('Advanced') ################################ #### Advanced Tabs ##### ################################ imageBox = self.createControlGroup('Advanced',label='Image Properties') self.optionWidgets['extrasLineEdit'] = lineEdit(imageBox, label = 'Advanced plotting parameters', orientation='horizontal', toolTip = 'Add extra parameters to the main plot.\nPlease see documentation for more details about parameters.') self.optionWidgets['onlyAdvanced'] = checkBox(imageBox, buttons=['Only use the advanced options here'], label='advancedOnly',displayLabel=False) ################################ #### First Tabs ##### ################################ imageBox = self.createControlGroup('General',label='Image Properties') # imageBox = groupBox(firstTab,label='Image Properties', orientation='vertical', # sizePolicy = QSizePolicy(QSizePolicy.Maximum ,QSizePolicy.Minimum)) self.optionWidgets['imageType'] = comboBox(imageBox,label='Image Type',items=['svg','png']) self.optionWidgets['imageType'].setSizePolicy(QSizePolicy.MinimumExpanding,QSizePolicy.Minimum) hbox = widgetBox(imageBox,orientation='horizontal') self.optionWidgets['dheight'] = spinBox(hbox, label = 'Height', min = 1, max = 5000, value = 400) self.optionWidgets['dwidth'] = spinBox(hbox, label = 'Width', min = 1, max = 5000, value = 400) hbox = widgetBox(imageBox,orientation='horizontal') self.optionWidgets['units'] = comboBox(hbox,label='units',items=[('px','Pixel'),('in','Inches')]) self.optionWidgets['dpi'] = comboBox(hbox,label='DPI',items=['75','100','150','auto'],editable=True) labelBox = self.createControlGroup('General',label='Labels') self.optionWidgets['mainTitle'] = lineEdit(labelBox,label='Main Title') self.optionWidgets['xLab'] = lineEdit(labelBox,label='X Axis Label') self.optionWidgets['yLab'] = lineEdit(labelBox,label='Y Axis Label') fontBox = self.createControlGroup('General',label='Sizes') fontColumnBox = widgetBox(fontBox,orientation='horizontal') fontColumn1 = widgetBox(fontColumnBox,orientation='vertical') fontColumn2 = widgetBox(fontColumnBox,orientation='vertical') #self.optionWidgets['fontCombo'] = comboBox(fontColumn1, items = ['serif', 'sans', 'mono'], label='Font Family') self.optionWidgets['lineWidth'] = spinBox(fontColumn1,label='Point/Line Size',decimals=2,min=1,max=50) self.optionWidgets['plotFont'] = spinBox(fontColumn1, label = 'Plot Text Size',decimals=2, min = 1, max = 50) self.optionWidgets['axisFont'] = spinBox(fontColumn1, label = 'Axis Text Size',decimals=2, min = 1, max = 50) self.optionWidgets['mainFont'] = spinBox(fontColumn2, label = 'Title Text Size',decimals=2, min = 1, max = 50) self.optionWidgets['subFont'] = spinBox(fontColumn2, label = 'Subtitle Text Size',decimals=2, min = 1, max = 50) self.optionWidgets['labFont'] = spinBox(fontColumn2, label = ' XY Label Text Size',decimals=2, min = 1, max = 50) limitBox = self.createControlGroup('General',label='Limits') col2Box = widgetBox(limitBox,orientation='horizontal') column1 = widgetBox(col2Box,orientation='vertical') column2 = widgetBox(col2Box,orientation='vertical') self.optionWidgets['xstart'] = lineEdit(column1,label='X Start', width=40) self.optionWidgets['xend'] = lineEdit(column2,label='X End', width=40) self.optionWidgets['ystart'] = lineEdit(column1,label='Y Start', width=40) self.optionWidgets['yend'] = lineEdit(column2,label='Y End', width=40) ################################ #### Second Tabs ##### ################################ colorBox = self.createControlGroup('Points/Lines',label='Colors') hbox = widgetBox(colorBox,orientation='horizontal') self.optionWidgets['colorSeries'] = comboBox(hbox,label='Generate Colors Series',orientation='vertical', items = ['select','rainbow','heat.colors','terrain.colors','topo.colors','cm.colors']) self.optionWidgets['colorSeriesLen'] = spinBox(hbox,label='Length of Series',displayLabel=False, min=0, max=500) hbox.layout().setAlignment(self.optionWidgets['colorSeriesLen'].controlArea, Qt.AlignBottom) self.optionWidgets['bgColor'] = ColorIcon(colorBox,label='Background') #self.optionWidgets['customColors'] = button(colorBox,label='Custom Plot Colors',callback=self.setPlotColors) colorBox2 = self.createControlGroup('Points/Lines',label='More Colors') # colorColumnBox = widgetBox(colorBox2,orientation='horizontal') # colorColumn1 = widgetBox(colorColumnBox,orientation='vertical') # colorColumn2 = widgetBox(colorColumnBox,orientation='vertical') self.optionWidgets['titleColor'] = ColorIcon(colorBox2,label='Title') self.optionWidgets['subColor'] = ColorIcon(colorBox2,label='Subtitle') self.optionWidgets['labColor'] = ColorIcon(colorBox2,label='Subtitle') self.optionWidgets['axisColor'] = ColorIcon(colorBox2,label='Axis') lineBox = self.createControlGroup('Points/Lines',label='Lines') self.optionWidgets['linesListBox'] = listBox(lineBox, label = 'Line types', displayLabel=False, selectionMode = QAbstractItemView.ExtendedSelection, items = [(1,'________'), (2,'- - - -'), (3,'........'), (4,'_._._._.'), (5,'__ __ __'), (6,'__.__.__.')]) pointBox = self.createControlGroup('Points/Lines',label='Points') items = [] for i in range(1,26): items.append((i-1,QListWidgetItem(QIcon(os.path.join(redREnviron.directoryNames['picsDir'], 'R icon (%d).png' %i)),''))) for i in range(32,128): items.append((i-1,'%s' % (chr(i)))) self.optionWidgets['pointListBox'] = listBox(pointBox, label = 'Line types', displayLabel=False, selectionMode = QAbstractItemView.ExtendedSelection, items = items) self.setTheme(self.options) ################################ ### right click menu ####### ################################ self.menu = QMenu(self) save = self.menu.addMenu('Save As') save.addAction('Bitmap') save.addAction('PDF') save.addAction('Post Script') save.addAction('JPEG') self.menu.addAction('Copy') self.menu.addAction('Fit In Window') self.menu.addAction('Zoom Out') self.menu.addAction('Zoom In') self.menu.addAction('Undock') self.menu.addAction('Redock') self.dialog = QDialog() self.dialog.setWindowTitle('Red-R Graphics View' + name) self.dialog.setLayout(QHBoxLayout()) self.standardImageType = 'svg' QObject.connect(self.dialog, SIGNAL('finished(int)'), self.dialogClosed)
def __init__(self, parent,label=None, displayLabel=True,includeInReports=True, name = '', data = None, prePlottingCallback = None): ## want to init a graphics view with a new graphics scene, the scene will be accessable through the widget. graphicsView.__init__(self, parent, label = label, displayLabel = displayLabel, includeInReports = includeInReports, name = name, data = data) ## __init__(self, parent,label=_('Graph'), displayLabel=True,includeInReports=True, name = '', data = None) ################################ #### Themes ##### ################################ self.prePlottingCallback = prePlottingCallback self.options = { 'device': { 'imageType':'svg', 'dpi':'75', 'bgColor':'#FFFFFF', 'dheight':400, 'dwidth':400, 'units':'px'}, 'main':{ 'col':None, 'lty':None, 'lwd':None, 'pch':None,}, 'title':{ 'main':'', 'xlab':'', 'ylab':'', 'col.main':'#000000', 'col.sub':'#000000', 'col.lab':'#000000'}, 'par':{ 'cex.axis':1, 'cex.lab':1, 'cex.main':1, 'cex.sub':1, 'cex':1, 'col.axis':'#000000'} } self.optionWidgets = {} self.colorList = ['#000000', '#ff0000', '#00ff00', '#0000ff'] ################################ #### Setup Tabs ##### ################################ self.graphicOptionsButton = button(self.topArea,label='Graphic Options', toggleButton = True,callback=self.displayGraphicOptions) self.graphicOptionsWidget = widgetBox(self.topArea) self.graphicOptions = tabWidget(self.graphicOptionsWidget) self.graphicOptions.setFixedHeight(180) hbox = widgetBox(self.graphicOptionsWidget,orientation='horizontal',alignment= Qt.AlignLeft) self.resizeCheck = checkBox(hbox,label='resize',displayLabel=False,buttons={'true':'Resize Image'},setChecked='true') self.monkey = checkBox(hbox, label='useopts', displayLabel = False, buttons={'true':'Use Custom Plot Options'}, callback = self.enablePlotOptions) button(hbox,label='Update Graphic', alignment=Qt.AlignLeft, callback=self.plotMultiple) self.labels = self.graphicOptions.createTabPage('Main') self.points = self.graphicOptions.createTabPage('Points/Lines') self.advanced = self.graphicOptions.createTabPage('Advanced') #self.graphicOptions.hide() firstTab = widgetBox(self.labels,orientation='horizontal',alignment=Qt.AlignLeft | Qt.AlignTop) secondTab = widgetBox(self.points,orientation='horizontal',alignment=Qt.AlignLeft | Qt.AlignTop) advancedTab = widgetBox(self.advanced,orientation='vertical',alignment=Qt.AlignLeft | Qt.AlignTop) ################################ #### Advanced Tabs ##### ################################ self.optionWidgets['extrasLineEdit'] = lineEdit(advancedTab, label = 'Advanced plotting parameters', toolTip = 'Add extra parameters to the main plot.\nPlease see documentation for more details about parameters.') self.optionWidgets['onlyAdvanced'] = checkBox(advancedTab, buttons=[(1, 'Only use the advanced options here')], label='advancedOnly',displayLabel=False) ################################ #### First Tabs ##### ################################ imageBox = groupBox(firstTab,label='Image Properties', orientation='vertical', sizePolicy = QSizePolicy(QSizePolicy.Maximum ,QSizePolicy.Minimum)) self.optionWidgets['imageType'] = comboBox(imageBox,label='Image Type',items=['svg', 'cairo' ,'png']) self.optionWidgets['imageType'].setSizePolicy(QSizePolicy.MinimumExpanding,QSizePolicy.Minimum) hbox = widgetBox(imageBox,orientation='horizontal') self.optionWidgets['dheight'] = spinBox(hbox, label = 'Height', min = 1, max = 5000, value = 400) self.optionWidgets['dwidth'] = spinBox(hbox, label = 'Width', min = 1, max = 5000, value = 400) hbox = widgetBox(imageBox,orientation='horizontal') self.optionWidgets['units'] = comboBox(hbox,label='units',items=[('px','Pixel'),('in','Inches')]) self.optionWidgets['dpi'] = comboBox(hbox,label='DPI',items=['75','100','150','auto'],editable=True) labelBox = groupBox(firstTab,label='Labels', orientation='vertical', sizePolicy = QSizePolicy(QSizePolicy.Maximum ,QSizePolicy.Minimum)) self.optionWidgets['mainTitle'] = lineEdit(labelBox,label='Main Title') self.optionWidgets['xLab'] = lineEdit(labelBox,label='X Axis Label') self.optionWidgets['yLab'] = lineEdit(labelBox,label='Y Axis Label') fontBox = groupBox(firstTab,label='Sizes', orientation='vertical', sizePolicy = QSizePolicy(QSizePolicy.Maximum ,QSizePolicy.Minimum)) fontColumnBox = widgetBox(fontBox,orientation='horizontal') fontColumn1 = widgetBox(fontColumnBox,orientation='vertical') fontColumn2 = widgetBox(fontColumnBox,orientation='vertical') #self.optionWidgets['fontCombo'] = comboBox(fontColumn1, items = ['serif', 'sans', 'mono'], label='Font Family') self.optionWidgets['lineWidth'] = spinBox(fontColumn1,label='Point/Line Size',decimals=2,min=1,max=50) self.optionWidgets['plotFont'] = spinBox(fontColumn1, label = 'Plot Text Size',decimals=2, min = 1, max = 50) self.optionWidgets['axisFont'] = spinBox(fontColumn1, label = 'Axis Text Size',decimals=2, min = 1, max = 50) self.optionWidgets['mainFont'] = spinBox(fontColumn2, label = 'Title Text Size',decimals=2, min = 1, max = 50) self.optionWidgets['subFont'] = spinBox(fontColumn2, label = 'Subtitle Text Size',decimals=2, min = 1, max = 50) self.optionWidgets['labFont'] = spinBox(fontColumn2, label = ' XY Label Text Size',decimals=2, min = 1, max = 50) colorBox = groupBox(firstTab,label='Colors', orientation='vertical', sizePolicy = QSizePolicy(QSizePolicy.Maximum ,QSizePolicy.Minimum)) hbox = widgetBox(colorBox,orientation='horizontal') self.optionWidgets['colorSeries'] = comboBox(hbox,label='Generate Colors Series',orientation='vertical', items = ['select','rainbow','heat.colors','terrain.colors','topo.colors','cm.colors']) self.optionWidgets['colorSeriesLen'] = spinBox(hbox,label='Length of Series',displayLabel=False, min=0, max=500) hbox.layout().setAlignment(self.optionWidgets['colorSeriesLen'].controlArea, Qt.AlignBottom) self.optionWidgets['bgColor'] = ColorIcon(colorBox,label='Background') #self.optionWidgets['customColors'] = button(colorBox,label='Custom Plot Colors',callback=self.setPlotColors) ################################ #### Second Tabs ##### ################################ colorBox2 = groupBox(secondTab,label='Colors', orientation='vertical', sizePolicy = QSizePolicy(QSizePolicy.Maximum ,QSizePolicy.Minimum)) # colorColumnBox = widgetBox(colorBox2,orientation='horizontal') # colorColumn1 = widgetBox(colorColumnBox,orientation='vertical') # colorColumn2 = widgetBox(colorColumnBox,orientation='vertical') self.optionWidgets['titleColor'] = ColorIcon(colorBox2,label='Title') self.optionWidgets['subColor'] = ColorIcon(colorBox2,label='Subtitle') self.optionWidgets['labColor'] = ColorIcon(colorBox2,label='Subtitle') self.optionWidgets['axisColor'] = ColorIcon(colorBox2,label='Axis') lineBox = groupBox(secondTab,label='Lines', orientation='vertical', sizePolicy = QSizePolicy(QSizePolicy.Maximum ,QSizePolicy.Minimum)) self.optionWidgets['linesListBox'] = listBox(lineBox, label = 'Line types', displayLabel=False, selectionMode = QAbstractItemView.ExtendedSelection, items = [(1,'________'), (2,'- - - -'), (3,'........'), (4,'_._._._.'), (5,'__ __ __'), (6,'__.__.__.')]) pointBox = groupBox(secondTab,label='Points', orientation='vertical', sizePolicy = QSizePolicy(QSizePolicy.Maximum ,QSizePolicy.Minimum)) items = [] for i in range(1,26): items.append((i-1,QListWidgetItem(QIcon(os.path.join(redREnviron.directoryNames['picsDir'], 'R icon (%d).png' %i)),''))) for i in range(32,128): items.append((i-1,'%s' % (chr(i)))) self.optionWidgets['pointListBox'] = listBox(pointBox, label = 'Line types', displayLabel=False, selectionMode = QAbstractItemView.ExtendedSelection, items = items) self.setTheme(self.options) ################################ ### right click menu ####### ################################ self.menu = QMenu(self) save = self.menu.addMenu('Save As') save.addAction('Bitmap') save.addAction('PDF') save.addAction('PDF (LATEX)') save.addAction('Post Script') save.addAction('JPEG') if sys.platform == 'win32': save.addAction('WMF') self.menu.addAction('Copy') self.menu.addAction('Fit In Window') self.menu.addAction('Zoom Out') self.menu.addAction('Zoom In') #self.menu.addAction('Undock') #self.menu.addAction('Redock') self.dialog = QDialog() self.dialog.setWindowTitle('Red-R Graphics View' + name) self.dialog.setLayout(QHBoxLayout()) self.standardImageType = 'svg' QObject.connect(self.dialog, SIGNAL('finished(int)'), self.dialogClosed) self.graphicOptionsWidget.hide()