def makeNodeDataItem (node,viewer=None,viewopts={}): """creates a GridDataItem for a node"""; udi = meqds.node_udi(node); nodeclass = meqds.NodeClass(node); vo = viewopts.copy(); vo.update(defaultNodeViewopts); (name,caption) = meqds.make_udi_node_caption(node,None); # curry is used to create a call for refreshing its state return Grid.DataItem(udi,name=name,caption=caption,desc=name, datatype=nodeclass, refresh=curry(meqds.request_node_state,node.nodeindex), viewer=viewer,viewopts=vo);
class NA_ParmFiddler(NodeAction): text = "ParmFiddler" nodeclass = meqds.NodeClass('MeqNode') iconset = pixmaps.fiddle.iconset def activate(self, node): Grid.Services.addDataItem(makeNodeDataItem(node, viewer=ParmFiddler)) def is_enabled(self, node): # available in idle mode, or when stopped at a debugger. # If debug_level is set, node must be idle (otherwise, we can't trust the # node control status to be up-to-date) return ( self.tb.is_stopped or not self.tb.is_running ) and \ ( not self.tb.debug_level or node.is_idle() )
self._offset = array([0., 0.]) self._scale = array([1., 1.]) self._coeff = 0. if funklet: # print funklet; if hasattr(funklet, 'coeff'): self._coeff = funklet.coeff if hasattr(funklet, 'offset'): self._offset = funklet.offset if hasattr(funklet, 'scale'): self._scale = funklet.scale if is_scalar(self._coeff): self._coeff = [[self._coeff]] if is_scalar(self._coeff[0]): ncoeff = [] for i in range(len(self._coeff)): ncoeff.append([self._coeff[i]]) self._coeff = ncoeff self._nx = len(self._coeff) self._ny = len(self._coeff[0]) self.updategrid() def define_treebrowser_actions(tb): _dprint(1, 'defining parm fiddling treebrowser actions') tb.add_action(NA_ParmFiddler, 30, where="node") Grid.Services.registerViewer(meqds.NodeClass(), ParmFiddler, priority=25)
data_dict['value'][datakey] = self._rec.vellsets[ i].value else: data_dict['value'][datakey] = None except: data_dict['value'][datakey] = None # for test purposes # if index == 2: # data_dict['value'][datakey] = None try: if "flags" in self._rec.vellsets[i]: data_dict['flags'][datakey] = self._rec.vellsets[ i].flags else: data_dict['flags'][datakey] = None except: data_dict['flags'][datakey] = None if index == self.dims_per_group - 1: self._visu_plotter.updateEvent(data_dict) data_dict = {} # enable & highlight the cell self.enable() self.flash_refresh() if HAS_TIMBA: _dprint(3, 'exiting process_data') Grid.Services.registerViewer(meqds.NodeClass(), CollectionsPlotter, priority=30)
if self.results_selector is None: self.results_selector = ResultsRange(self.layout_parent) self.results_selector.setMaxValue(self.max_list_length) self.results_selector.set_offset_index(0) self.results_selector.setSizePolicy(QSizePolicy.Expanding,QSizePolicy.Minimum) self.layout.addWidget(self.results_selector, 1,0,Qt.AlignHCenter) self.results_selector.show() QObject.connect(self.results_selector, PYSIGNAL('result_index'), self.replay_data) QObject.connect(self.results_selector, PYSIGNAL('adjust_results_buffer_size'), self.set_results_buffer) self.results_selector.set_emit(False) self.results_selector.setRange(self.data_list_length-1) self.results_selector.setLabel(self.label) self.results_selector.set_emit(True) #Grid.Services.registerViewer(dmi_type('MeqResult',record),SvgPlotter,priority=10) Grid.Services.registerViewer(meqds.NodeClass(),SvgPlotter,priority=50) ############# test stuff from here on ######### def usage( prog ): print 'usage : %s <svg_plotter input file>' % prog return 1 def main( argv ): fileName = "" if len(argv) > 1: fileName = argv[1] if not QFile.exists(fileName): print "unable to plot - file not found " return else: app = QApplication(argv)
def update_status(self, status): if not status is None: self.status_label.setText(status) def set_data (self,dataitem,default_open=None,**opts): """ This callback receives data from the meqbrowser, when the user has requested a QuickRef display . If there is a 'quickref_help' field (string) it will be shown via a QTextEdit widget in the browser. """ if HAS_TIMBA: _dprint(3, '** in quickref_plotter:set_data callback') self._rec = dataitem.data; if HAS_TIMBA: _dprint(3, 'set_data: initial self._rec ', self._rec) if not isinstance(self._rec,record): # print '\n** self.rec not a record, but:',type(self._rec) pass elif "quickref_help" not in self._rec: # print '\n** self.rec does not have quickref_help field' pass else: qh = self._rec.quickref_help # print '\n** self.rec.quickref_help:',type(qh) if isinstance(qh,str): self.create_layout_stuff() self.QTextEdit.setText(qh) self.QTextEdit.show() return Grid.Services.registerViewer(meqds.NodeClass(),QuickRefPlotter,priority=40)
# hopefully handle cases with non-existent results try: if self._rec.vellsets[i].has_key("value"): data_dict['value'][datakey] = self._rec.vellsets[i].value else: data_dict['value'][datakey] = None except: data_dict['value'][datakey] = None # for test purposes # if index == 2: # data_dict['value'][datakey] = None try: if self._rec.vellsets[i].has_key("flags"): data_dict['flags'][datakey] = self._rec.vellsets[i].flags else: data_dict['flags'][datakey] = None except: data_dict['flags'][datakey] = None if index == self.dims_per_group-1: self._visu_plotter.updateEvent(data_dict) data_dict = {} # enable & highlight the cell self.enable(); self.flash_refresh(); _dprint(3, 'exiting process_data') Grid.Services.registerViewer(meqds.NodeClass(),CollectionsPlotter,priority=30)
def set_ND_controls(self, labels=None, parms=None, num_axes=2): """ this function adds the extra GUI control buttons etc if we are displaying data for a numpy array of dimension 3 or greater """ _dprint(3, 'plot_array shape ', self._plot_array.shape) self.ND_Controls = create_ND_Controls(self.layout, self.layout_parent, self._plot_array.shape, self.ND_Controls, self.ND_plotter, labels, parms, num_axes) QObject.connect(self.ND_Controls, PYSIGNAL('sliderValueChanged'), self.setArraySelector) QObject.connect(self.ND_Controls, PYSIGNAL('defineSelectedAxes'), self.setSelectedAxes) QObject.connect(self._plotter, PYSIGNAL('show_ND_Controller'), self.ND_Controls.showDisplay) def set_ColorBar(self): """ this function adds a colorbar for 2-D displays """ # create two color bars in case we are displaying complex arrays self.colorbar = create_ColorBar(self.layout, self.layout_parent, self._plotter, self.plotPrinter) Grid.Services.registerViewer(dmi_type('MeqResult', record), HistoryPlotter, priority=40) Grid.Services.registerViewer(meqds.NodeClass('MeqHistoryCollect'), HistoryPlotter, priority=10)
def doNewRequest(self): newd = meq.domain(self.f0, self.f1, self.t0, self.t1) newc = meq.cells(domain=newd, num_freq=self.fn, num_time=self.tn) self._request = meq.request(cells=newc) self.rid1 = self.rid1 + 1 self.rid2 = self.rid2 + 1 self.rid3 = self.rid3 + 1 self.rid4 = self.rid4 + 1 self._request.request_id = hiid(self.rid1, self.rid2, self.rid3, self.rid4) if self._node: cmd = record(nodeindex=self._node, request=self._request, get_state=True) elif self._name: cmd = record(name=self._name, request=self._request, get_state=True) mqs().meq('Node.Execute', cmd, wait=False) self._refresh() def define_treebrowser_actions(tb): _dprint(1, 'defining node-execute treebrowser actions') tb.add_action(NA_NodeExecute, 30, where="node") Grid.Services.registerViewer(_request_type, Executor, priority=25) Grid.Services.registerViewer(meqds.NodeClass(), Executor, priority=25)
self.ND_plotter.setAxisParms(self.axis_parms) if not axis_increments is None: self.ND_plotter.setAxisIncrements(axis_increments) def show_2D_Display(self, display_flag): _dprint(3, 'in show_2D_Display ') self.create_2D_plotter() # create 3-D Controller appropriate for 2-D screen displays _dprint(3, 'calling set_ND_controls with self.ND_labels, self.ND_parms ', self.ND_labels, ' ', self.ND_parms) self.set_ND_controls(self.ND_labels, self.ND_parms,num_axes=2) self._vells_data.set_3D_Display(False) _dprint(3, 'calling setInitialSelectedAxes with reset=True, and self.array_rank,self.array_shape ', self.array_rank, ' ', self.array_shape) self._vells_data.setInitialSelectedAxes(self.array_rank,self.array_shape, reset=True) self._visu_plotter.set_original_array_rank(3) self.plot_vells_data(store_rec=False) if not self.results_selector is None: Qt.QObject.connect(self._visu_plotter, Qt.SIGNAL('show_results_selector'), self.show_selector) self._visu_plotter.setResultsSelector() self.results_selector.show() def set_ColorBar (self): """ this function adds a colorbar for 2-D displays """ # create two color bars in case we are displaying complex arrays self.colorbar = create_ColorBar(self.layout, self.layout_parent, self._visu_plotter, self.plotPrinter) Grid.Services.registerViewer(dmi_type('MeqResult',record),ResultPlotter,priority=10) #Grid.Services.registerViewer(meqds.NodeClass('MeqDataCollect'),ResultPlotter,priority=10) #Grid.Services.registerViewer(meqds.NodeClass('MeqDataConcat'),ResultPlotter,priority=10) Grid.Services.registerViewer(meqds.NodeClass(),ResultPlotter,priority=25)