Beispiel #1
0
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);
Beispiel #2
0
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() )
Beispiel #3
0
        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)
Beispiel #5
0
    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)
Beispiel #6
0
  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)
Beispiel #7
0
# 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)
Beispiel #9
0
    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)