def __menu_default(self): extras = [] if self.menu_helper is not None: extras = self.menu_helper.actions + self._extra_menu_items() menu_actions = [Separator()] + extras + \ [Separator(), self._HideShowAction, Separator()] + \ deepcopy(standard_menu_actions) return Menu(*menu_actions)
def _standard_menu_actions(self): """ Returns the standard actions for the pop-up menu. """ # An object can be copied, pasted, deleted and renamed, but not pasted # into. actions = [CutAction, CopyAction, Separator(), DeleteAction, Separator(), RenameAction] return actions
def default_traits_view(self): """ Returns the default view to use for this class. """ # NOTE: I moved the view to this method so we can declare a handler # for the view. Alternatively, we could move the DemoController class # to the top and declare view=Instance(HasTraits) instead. traits_view = View( Item( 'plot', editor=ComponentEditor(), show_label=False, ), menubar=MenuBar( Menu( Action(name="Save Plot", action="save"), # see Controller for Action(name="Load Plot", action="load"), # these callbacks Separator(), CloseAction, name="File", ), ), width=600, height=600, resizable=True, handler=DemoController) return traits_view
def _get_feature_menu(self): """ Returns the 'Features' sub_menu. """ enable_features_action.enabled = ( disable_features_action.enabled) = False for feature in features: if feature.feature_name != "": if feature.state == 1: disable_features_action.enabled = True if enable_features_action.enabled: break else: enable_features_action.enabled = True if disable_features_action.enabled: break actions = [] for feature in features: if feature.feature_name != "": actions.append( Action( name=feature.feature_name, action="on_toggle_feature", _feature=feature, style="toggle", checked=(feature.state == 1), )) if len(actions) > 0: actions.sort(key=attrgetter("name")) actions[0:0] = [Separator()] return Menu(name="Features", *([enable_features_action, disable_features_action] + actions))
def _menu_default(self): """ Standard menus for network nodes """ menu_actions = [Separator(), \ self._OpenFile] return Menu(*menu_actions)
def _get_feature_menu(self): """ Returns the 'Features' sub_menu. """ enable_features_action.enabled = disable_features_action.enabled = False for feature in features: if feature.feature_name != '': if feature.state == 1: disable_features_action.enabled = True if enable_features_action.enabled: break else: enable_features_action.enabled = True if disable_features_action.enabled: break actions = [] for feature in features: if feature.feature_name != '': actions.append( Action(name=feature.feature_name, action='on_toggle_feature', _feature=feature, style='toggle', checked=(feature.state == 1))) if len(actions) > 0: actions.sort(lambda l, r: cmp(l.name, r.name)) actions[0:0] = [Separator()] return Menu(name='Features', *([enable_features_action, disable_features_action] + actions))
def _menu_default(self): """ Standard menus for network nodes """ menu_actions = [Separator(), \ self._TracksRender, \ self._TrackVisLaunchAction] return Menu(*menu_actions)
def _actions_default(self): """ Append a preferences action to the toolbar: this view of the engine is meant to be a powerful view giving access to all of Mayavi's functionality. """ preferences_action = \ Action( image=ImageResource('preferences.png', search_path=self._image_path), tooltip="Modify Mayavi's preferences", checked=False, defined_when='True', perform=preference_manager_view.dialog_view, ) actions = super(EngineRichView, self)._actions_default() actions.extend((Separator(), preferences_action)) return actions
def _buildAction(desc): global actions_doc from window import tcActionHandler if len(desc) == 0: return Separator() exec("tcActionHandler.%s = lambda self,i:self.chooseAction(i,'_on_%s')"%(desc["name"],desc["name"])) style = desc["name"].startswith("toggle") and "toggle" or "push" default = False if "default" in desc: default = desc["default"] desc["tooltip"] = desc["tooltip"].strip() action = Action(name=desc["name"].replace("_"," "), action=desc["name"], tooltip=desc["tooltip"], image=ImageResource(desc["name"]), style=style, checked=default) tcActionHandler.actions[desc["name"]] = action if not actions_doc is None: actions_doc += "\n**%s**:\n"%(desc["name"].replace("_"," ").strip()) actions_doc += "\n.. image:: images/%s.png\n\n"%(desc["name"]) actions_doc += desc["tooltip"] +"\n" return action
class MainWindow(tr.HasStrictTraits): forming_process_view = tr.Instance(FormingProcessView, ()) forming_task_scene = tr.Instance(FormingTaskView3D, ()) forming_process = tr.Property def _get_forming_process(self): return self.forming_process_view.forming_process def _set_forming_process(self, fp): self.forming_process_view.forming_process = fp def _selected_node_changed(self): self.selected_node.ui = self def get_vot_range(self): return self.forming_task_scene.get_vot_range() vot = tr.DelegatesTo('forming_task_scene') data_changed = tr.Event replot = tr.Button def _replot_fired(self): self.figure.clear() self.selected_node.plot(self.figure) self.data_changed = True clear = tr.Button() def _clear_fired(self): self.figure.clear() self.data_changed = True view = tu.View(tu.HSplit( tu.VGroup( tu.Item( 'forming_process_view@', id='oricreate.hsplit.left.tree.id', resizable=True, show_label=False, width=300, ), id='oricreate.hsplit.left.id', ), tu.VGroup( tu.Item( 'forming_task_scene@', show_label=False, resizable=True, id='oricreate.hsplit.viz3d.notebook.id', ), id='oricreate.hsplit.viz3d.id', label='viz sheet', ), id='oricreate.hsplit.id', ), id='oricreate.id', width=1.0, height=1.0, title='OriCreate', resizable=True, handler=TreeViewHandler(), key_bindings=key_bindings, toolbar=tu.ToolBar(*toolbar_actions, image_size=(32, 32), show_tool_names=False, show_divider=True, name='view_toolbar'), menubar=tu.MenuBar( Menu(menu_exit, Separator(), name='File'), ))
def right_up(self, event): """ Handles the right mouse button being released. """ sizer = self.sizer if sizer is not None: object = sizer.ObjectAt(event.GetX(), event.GetY(), True) if object is not None: popup_menu = None window = self.control is_dock_control = isinstance(object, DockControl) if (is_dock_control and (object.dockable is not None) and (event.ShiftDown() or event.ControlDown() or event.AltDown())): self._menu_self = object.dockable popup_menu = object.dockable.dockable_menu(object, event) if popup_menu is None: self._menu_self = self section = self.sizer.GetContents() is_splitter = isinstance(object, DockSplitter) self._object = object if is_splitter: self._object = object = object.parent group = object if is_dock_control: group = group.parent if sizer.IsMaximizable(): min_max_action.name = "Maximize" else: min_max_action.name = "Restore" min_max_action.enabled = is_dock_control undock_action.enabled = is_dock_control edit_action.enabled = not is_splitter controls = section.get_controls(False) lock_action.checked = (len(controls) > 0) and controls[0].locked save_action.enabled = self.id != "" feature_menu = self._get_feature_menu() restore_menu, delete_menu = self._get_layout_menus() popup_menu = Menu( min_max_action, undock_action, Separator(), feature_menu, # Separator(), # hide_action, # show_action, Separator(), lock_action, layout_action, Separator(), save_action, restore_menu, delete_menu, Separator(), edit_action, name="popup", ) window.PopupMenu( popup_menu.create_menu(window, self), event.GetX() - 10, event.GetY() - 10, ) self._object = None
elif isinstance(K_mtx, SysMtxArray): K.sys_mtx_arrays.append(K_mtx) elif isinstance(K_mtx, list): K.sys_mtx_arrays = K_mtx elif isinstance(K_mtx, SysMtxAssembly): K.sys_mtx_arrays = K_mtx.sys_mtx_arrays n_dofs = tstepper.sdomain.n_dofs K.add_mtx(zeros((1, 1), dtype='float_'), array([n_dofs - 1], dtype='int_')) return K domain_menu = Menu( # NewAction, Separator(), draw_action, Separator(), show_stiffness_action, plot_stiffness_action) fe_domain_tree_editor = TreeEditor(nodes=[ TreeNode( node_for=[TStepper], auto_open=True, label='=domain', children='subdomains', menu=domain_menu, ), TreeNode( node_for=[TStepper], auto_open=True, label='=xdomain', children='xdomains',
class BMCSWindow(HasStrictTraits): '''View object for a cross section state. ''' root = Instance(BMCSTreeNode) selected_node = Instance(HasStrictTraits) def _selected_node_changed(self): self.selected_node.ui = self plot_dock_pane = Instance(PlotDockPane, ()) data_changed = Event replot = Button def _replot_fired(self): self.figure.clear() self.selected_node.plot(self.figure) self.data_changed = True clear = Button() def _clear_fired(self): self.figure.clear() self.data_changed = True #time = self.root.time view = View( HSplit( Group( Item( 'root', id='bmcs.hsplit.left.tree.id', dock='tab', editor=tree_editor, resizable=True, show_label=False, width=300, height=200, ), # Item('selected_node@'), id='bmcs.hsplit.left.id', dock='tab', ), Group( Item( 'plot_dock_pane@', show_label=False, id='bmcs.hsplit.viz3d.notebook.id', dock='tab', ), # Item('self.root.time', label='t/T_max'), dock='tab', id='bmcs.hsplit.viz3d.id', label='plot sheet', ), dock='tab', id='bmcs.hsplit.id', ), # dock='tab', id='bmcs.id', width=1.0, height=1.0, title='BMCS', resizable=True, handler=BMCSTreeViewHandler(), toolbar=ToolBar(*toolbar_actions), menubar=MenuBar( Menu(menu_exit, Separator(), menu_save, menu_open, name='File')))
label='=Departments', view=no_view, add=[Department]), TreeNode( node_for=[Company], auto_open=True, children='employees', label='=Employees', view=no_view, add=[Employee]), TreeNode( node_for=[Department], auto_open=True, children='employees', label='name', menu=Menu(NewAction, Separator(), DeleteAction, Separator(), RenameAction, Separator(), CopyAction, CutAction, PasteAction), view=View(Group( 'name', orientation='vertical', show_left=True)), add=[Employee]), TreeNode( node_for=[Employee], auto_open=True, label='name', menu=Menu(NewAction, Separator(), def_title_action, dept_action, Separator(), CopyAction, CutAction, PasteAction, Separator(), DeleteAction, Separator(), RenameAction), view=employee_view) ]) # The main view
class BMCSWindow(BMCSStudy): selected_node = Instance(HasStrictTraits) def _selected_node_changed(self): self.selected_node.ui = self def get_vot_range(self): return self.viz_sheet.get_vot_range() vot = DelegatesTo('viz_sheet') data_changed = Event replot = Button def _replot_fired(self): self.figure.clear() self.selected_node.plot(self.figure) self.data_changed = True clear = Button() def _clear_fired(self): self.figure.clear() self.data_changed = True view = View( HSplit( VGroup( Item( 'model', id='bmcs.hsplit.left.tree.id', dock='tab', editor=tree_editor, resizable=True, show_label=False, width=300, height=200, ), # Item('selected_node@'), id='bmcs.hsplit.left.id', dock='tab', ), VGroup( Item( 'viz_sheet@', show_label=False, id='bmcs.hsplit.viz3d.notebook.id', dock='tab', ), dock='tab', id='bmcs.hsplit.viz3d.id', label='viz sheet', ), dock='tab', id='bmcs.hsplit.id', ), # dock='tab', id='bmcs.id', width=1.0, height=1.0, title='BMCS', resizable=True, handler=BMCSTreeViewHandler(), key_bindings=key_bindings, toolbar=ToolBar(*toolbar_actions, image_size=(32, 32), show_tool_names=False, show_divider=True, name='view_toolbar'), menubar=MenuBar( Menu(menu_exit, Separator(), menu_save, menu_open, name='File'), Menu(menu_tools_report_tex, menu_tools_report_pdf, name='Tools'), ))
CopyAction = Action(name = 'Copy', action = 'editor._menu_copy_node', enabled_when = 'editor._is_copyable(object)' ) CutAction = Action(name = 'Cut', action = 'editor._menu_cut_node', enabled_when = 'editor._is_cutable(object)' ) PasteAction = Action(name = 'Paste', action = 'editor._menu_paste_node', enabled_when = 'editor._is_pasteable(object)' ) DeleteAction = Action(name = 'Delete', action = 'editor._menu_delete_node', enabled_when = 'editor._is_deletable(object)' ) RenameAction = Action(name = 'Rename', action = 'editor._menu_rename_node', enabled_when = 'editor._is_renameable(object)' ) standard_menu_actions = [Separator(), CutAction, CopyAction, PasteAction, Separator(), RenameAction, DeleteAction, Separator(), ] ###################################################################### # `Base` class. ###################################################################### class Base(TreeNodeObject): # The version of this class. Used for persistence. __version__ = 0 ######################################## # Traits
def _actions_default(self): add_scene = \ Action( image=ImageResource('add_scene.png', search_path=self._image_path), tooltip="Create a new scene", defined_when='True', enabled_when='True', perform=self._perform_new_scene, ) add_source = \ Action( image=ImageResource('add_source.png', search_path=self._image_path), tooltip="Add a data source", defined_when='True', enabled_when='len(scenes) > 0', perform=self._perform_add_source, ) add_module = \ Action( image=ImageResource('add_module.png', search_path=self._image_path), tooltip="Add a visualization module", defined_when='True', # isinstance doesn't work in enabled_when enabled_when=\ 'current_selection is not None and' '( hasattr(current_selection, "output_info")' 'or current_selection.__class__.__name__ ==' '"ModuleFilterAdderNode")', perform=self._perform_add_module, ) add_filter = \ Action( image=ImageResource('add_filter.png', search_path=self._image_path), tooltip="Add a processing filter", defined_when='True', enabled_when=\ 'current_selection is not None and' '( ( hasattr(current_selection, "output_info")' ' and not current_selection.type in (" module", ' ' " module manager"))' 'or current_selection.__class__.__name__ ==' '"ModuleFilterAdderNode")', perform=self._perform_add_filter, ) help = \ Action( image=ImageResource('help-action.png', search_path=self._image_path), tooltip="Help on the Mayavi pipeline", defined_when='True', enabled_when='True', perform=open_help_index, ) tvtk_docs = \ Action( image=ImageResource('reader.png', search_path=self._image_path), tooltip="Search the VTK class browser", defined_when='True', enabled_when='True', perform=open_tvtk_docs, ) record = \ Action( image=ImageResource('record.png', search_path=self._image_path), tooltip="Start/Stop script recording", style='toggle', checked=False, defined_when='True', enabled_when='engine is not None', perform=self._perform_record, ) # Check the record icon if the engine already has a recorder # set. if self.engine is not None and self.engine.recorder is not None: record.checked = True return [ tvtk_docs, Separator(), add_scene, add_source, add_module, add_filter, Separator(), help, record ]
class ResultExplorer(HasTraits): # source of result data Beamformer = Instance(BeamformerBase) # traits for the plots plot_data = Instance(ArrayPlotData, transient=True) # the map map_plot = Instance(Plot, transient=True) imgp = Instance(ImagePlot, transient=True) # map interpolation interpolation = DelegatesTo('imgp', transient=True) # the colorbar for the map colorbar = Instance(ColorBar, transient=True) # the spectrum spec_plot = Instance(Plot, transient=True) # the main container for the plots plot_container = Instance(BasePlotContainer, transient=True) # zoom and integration box tool for map plot zoom = Instance(RectZoomSelect, transient=True) # selection of freqs synth = Instance(FreqSelector, transient=True) # cursor tool for spectrum plot cursor = Instance(BaseCursorTool, transient=True) # dynamic range of the map drange = Instance(DataRange1D, transient=True) # dynamic range of the spectrum plot yrange = Instance(DataRange1D, transient=True) # set if plots are invalid invalid = Bool(False, transient=True) # remember the last valid result last_valid_digest = Str(transient=True) # starts calculation thread start_calc = Button(transient=True) # signals end of calculation calc_ready = Event(transient=True) # calculation thread CThread = Instance(Thread, transient=True) # is calculation active ? running = Bool(False, transient=True) rmesg = Property(depends_on='running') # automatic recalculation ? automatic = Bool(False, transient=True) # picture pict = File(filter=['*.png', '*.jpg'], desc="name of picture file", transient=True) pic_x_min = Float(-1.0, desc="minimum x-value picture plane") pic_y_min = Float(-0.75, desc="minimum y-value picture plane") pic_scale = Float(400, desc="maximum x-value picture plane") pic_flag = Bool(False, desc="show picture ?") view = View( HSplit( VGroup( HFlow(Item('synth{}', style='custom', width=0.8), Item('start_calc{Recalc}', enabled_when='invalid'), show_border=True), TGroup( Item('plot_container{}', editor=ComponentEditor()), dock='vertical', ), ), Tabbed( [Item('Beamformer', style='custom'), '-<>[Beamform]'], [ Item('Beamformer', style='custom', editor=InstanceEditor(view=fview)), '-<>[Data]' ], ), # ['invalid{}~','last_valid_digest{}~', # 'calc_ready','running', # '|'], dock='vertical'), #HSplit statusbar=[StatusItem(name='rmesg', width=0.5)], # icon= ImageResource('py.ico'), title="Beamform Result Explorer", resizable=True, menubar=MenuBarManager( MenuManager( MenuManager(Action(name='Open', action='load'), Action(name='Save as', action='save_as'), name='&Project'), MenuManager(Action(name='VI logger csv', action='import_time_data'), Action(name='Pulse mat', action='import_bk_mat_data'), Action(name='td file', action='import_td'), name='&Import'), MenuManager(Action(name='NI-DAQmx', action='import_nidaqmx'), name='&Acquire'), Action(name='R&un script', action='run_script'), Action(name='E&xit', action='_on_close'), name='&File', ), MenuManager( Group( Action(name='&Delay+Sum', style='radio', action='set_Base', checked=True), Action(name='&Eigenvalue', style='radio', action='set_Eig'), Action(name='&Capon', style='radio', action='set_Capon'), Action(name='M&usic', style='radio', action='set_Music'), Action(name='D&amas', style='radio', action='set_Damas'), Action(name='Clea&n', style='radio', action='set_Clean'), Action(name='C&lean-SC', style='radio', action='set_Cleansc'), Action(name='&Orthogonal', style='radio', action='set_Ortho'), Action(name='&Functional', style='radio', action='set_Functional'), Action(name='C&MF', style='radio', action='set_CMF'), ), Separator(), Action(name='Auto &recalc', style='toggle', checked_when='automatic', action='toggle_auto'), name='&Options', ), MenuManager( Group( # Action(name='&Frequency', action='set_Freq'), Action(name='&Interpolation method', action='set_interp'), Action(name='&Map dynamic range', action='set_drange'), Action(name='&Plot dynamic range', action='set_yrange'), Action(name='Picture &underlay', action='set_pic'), ), name='&View', ), )) #View # init the app def __init__(self, **kwtraits): super(ResultExplorer, self).__init__(**kwtraits) # containers bgcolor = "sys_window" #(212/255.,208/255.,200/255.) # Windows standard background self.plot_container = container = VPlotContainer(use_backbuffer=True, padding=0, fill_padding=False, valign="center", bgcolor=bgcolor) subcontainer = HPlotContainer(use_backbuffer=True, padding=0, fill_padding=False, halign="center", bgcolor=bgcolor) # freqs self.synth = FreqSelector(parent=self) # data source self.plot_data = pd = ArrayPlotData() self.set_result_data() self.set_pict() # map plot self.map_plot = Plot(pd, padding=40) self.map_plot.img_plot("image", name="image") imgp = self.map_plot.img_plot("map_data", name="map", colormap=jet)[0] self.imgp = imgp t1 = self.map_plot.plot(("xpoly", "ypoly"), name="sector", type="polygon") t1[0].face_color = (0, 0, 0, 0) # set face color to transparent # map plot tools and overlays imgtool = ImageInspectorTool(imgp) imgp.tools.append(imgtool) overlay = ImageInspectorOverlay(component=imgp, image_inspector=imgtool, bgcolor="white", border_visible=True) self.map_plot.overlays.append(overlay) self.zoom = RectZoomSelect(self.map_plot, drag_button='right', always_on=True, tool_mode='box') self.map_plot.overlays.append(self.zoom) self.map_plot.tools.append(PanTool(self.map_plot)) # colorbar colormap = imgp.color_mapper self.drange = colormap.range self.drange.low_setting = "track" self.colorbar = cb = ColorBar( index_mapper=LinearMapper(range=colormap.range), color_mapper=colormap, plot=self.map_plot, orientation='v', resizable='v', width=10, padding=20) # colorbar tools and overlays range_selection = RangeSelection(component=cb) cb.tools.append(range_selection) cb.overlays.append( RangeSelectionOverlay(component=cb, border_color="white", alpha=0.8, fill_color=bgcolor)) range_selection.listeners.append(imgp) # spectrum plot self.spec_plot = Plot(pd, padding=25) px = self.spec_plot.plot(("freqs", "spectrum"), name="spectrum", index_scale="log")[0] self.yrange = self.spec_plot.value_range px.index_mapper = MyLogMapper(range=self.spec_plot.index_range) # spectrum plot tools self.cursor = CursorTool( px) #, drag_button="left", color='blue', show_value_line=False) px.overlays.append(self.cursor) self.cursor.current_position = 0.3, 0.5 px.index_mapper.map_screen(0.5) # self.map_plot.tools.append(SaveTool(self.map_plot, filename='pic.png')) # layout self.set_map_details() self.reset_sector() subcontainer.add(self.map_plot) subcontainer.add(self.colorbar) # subcontainer.tools.append(SaveTool(subcontainer, filename='pic.png')) container.add(self.spec_plot) container.add(subcontainer) container.tools.append(SaveTool(container, filename='pic.pdf')) self.last_valid_digest = self.Beamformer.ext_digest def _get_rmesg(self): if self.running: return "Running ..." else: return "Ready." @on_trait_change('Beamformer.ext_digest') def invalidate(self): if self.last_valid_digest != "" and self.Beamformer.ext_digest != self.last_valid_digest: self.invalid = True def _start_calc_fired(self): if self.CThread and self.CThread.isAlive(): pass else: self.CThread = CalcThread() self.CThread.b = self.Beamformer self.CThread.caller = self self.CThread.start() def _calc_ready_fired(self): f = self.Beamformer.freq_data low, high = f.freq_range print low, high fr = f.fftfreq() if self.synth.synth_freq < low: self.synth.synth_freq = fr[1] if self.synth.synth_freq > high: self.synth.synth_freq = fr[-2] self.set_result_data() self.set_map_details() self.plot_container.request_redraw() self.map_plot.request_redraw() @on_trait_change('invalid') def activate_plot(self): self.plot_container.visible = not self.invalid self.plot_container.request_redraw() if self.invalid and self.automatic: self._start_calc_fired() @on_trait_change('cursor.current_position') def update_synth_freq(self): self.synth.synth_freq = self.cursor.current_position[0] def reset_sector(self): g = self.Beamformer.grid if self.zoom: self.zoom.x_min = g.x_min self.zoom.y_min = g.y_min self.zoom.x_max = g.x_max self.zoom.y_max = g.y_max @on_trait_change( 'zoom.box,synth.synth_freq,synth.synth_type,drange.+,yrange.+') def set_result_data(self): if self.invalid: return if self.cursor: self.cursor.current_position = self.synth.synth_freq, 0 pd = self.plot_data if not pd: return g = self.Beamformer.grid try: map_data = self.Beamformer.synthetic(self.synth.synth_freq, self.synth.synth_type_).T map_data = L_p(map_data) except: map_data = arange(0, 19.99, 20. / g.size).reshape(g.shape) pd.set_data("map_data", map_data) f = self.Beamformer.freq_data if self.zoom and self.zoom.box: sector = self.zoom.box else: sector = (g.x_min, g.y_min, g.x_max, g.y_max) pd.set_data("xpoly", array(sector)[[0, 2, 2, 0]]) pd.set_data("ypoly", array(sector)[[1, 1, 3, 3]]) ads = pd.get_data("freqs") if not ads: freqs = ArrayDataSource(f.fftfreq()[f.ind_low:f.ind_high], sort_order='ascending') pd.set_data("freqs", freqs) else: ads.set_data(f.fftfreq()[f.ind_low:f.ind_high], sort_order='ascending') self.synth.enumerate() try: spectrum = self.Beamformer.integrate(sector)[f.ind_low:f.ind_high] spectrum = L_p(spectrum) except: spectrum = f.fftfreq()[f.ind_low:f.ind_high] pd.set_data("spectrum", spectrum) @on_trait_change('pic+') def set_map_details(self): if self.invalid: return mp = self.map_plot # grid g = self.Beamformer.grid xs = linspace(g.x_min, g.x_max, g.nxsteps) ys = linspace(g.y_min, g.y_max, g.nysteps) mp.range2d.sources[1].set_data(xs, ys, sort_order=('ascending', 'ascending')) mp.aspect_ratio = (xs[-1] - xs[0]) / (ys[-1] - ys[0]) yl, xl = self.plot_data.get_data("image").shape[0:2] xp = (self.pic_x_min, self.pic_x_min + xl * 1.0 / self.pic_scale) yp = (self.pic_y_min, self.pic_y_min + yl * 1.0 / self.pic_scale) mp.range2d.sources[0].set_data(xp, yp, sort_order=('ascending', 'ascending')) mp.range2d.low_setting = (g.x_min, g.y_min) mp.range2d.high_setting = (g.x_max, g.y_max) # dynamic range map = mp.plots["map"][0] #map.color_mapper.range.low_setting="track" # colormap map.color_mapper._segmentdata['alpha'] = [(0.0, 0.0, 0.0), (0.001, 0.0, 1.0), (1.0, 1.0, 1.0)] map.color_mapper._recalculate() mp.request_redraw() @on_trait_change('pict') def set_pict(self): pd = self.plot_data if not pd: return try: imgd = ImageData.fromfile(self.pict)._data[::-1] except: imgd = ImageData() imgd.set_data(255 * ones((2, 2, 3), dtype='uint8')) imgd = imgd._data pd.set_data("image", imgd) def save_as(self): dlg = FileDialog(action='save as', wildcard='*.rep') dlg.open() if dlg.filename != '': fi = file(dlg.filename, 'w') dump(self, fi) fi.close() def load(self): dlg = FileDialog(action='open', wildcard='*.rep') dlg.open() if dlg.filename != '': fi = file(dlg.filename, 'rb') s = load(fi) self.copy_traits(s) fi.close() def run_script(self): dlg = FileDialog(action='open', wildcard='*.py') dlg.open() if dlg.filename != '': #~ try: rx = self b = rx.Beamformer script = dlg.path execfile(dlg.path) #~ except: #~ pass def import_time_data(self): t = self.Beamformer.freq_data.time_data ti = csv_import() ti.from_file = 'C:\\tyto\\array\\07.03.2007 16_45_59,203.txt' ti.configure_traits(kind='modal') t.name = "" ti.get_data(t) def import_bk_mat_data(self): t = self.Beamformer.freq_data.time_data ti = bk_mat_import() ti.from_file = 'C:\\work\\1_90.mat' ti.configure_traits(kind='modal') t.name = "" ti.get_data(t) def import_td(self): t = self.Beamformer.freq_data.time_data ti = td_import() ti.from_file = 'C:\\work\\x.td' ti.configure_traits(kind='modal') t.name = "" ti.get_data(t) def import_nidaqmx(self): t = self.Beamformer.freq_data.time_data ti = nidaq_import() ti.configure_traits(kind='modal') t.name = "" ti.get_data(t) def set_Base(self): b = self.Beamformer self.Beamformer = BeamformerBase(freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env) self.invalid = True def set_Eig(self): b = self.Beamformer self.Beamformer = BeamformerEig(freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env) self.invalid = True def set_Capon(self): b = self.Beamformer self.Beamformer = BeamformerCapon(freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env) self.invalid = True def set_Music(self): b = self.Beamformer self.Beamformer = BeamformerMusic(freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env) self.invalid = True def set_Damas(self): b = self.Beamformer self.Beamformer = BeamformerDamas(beamformer=BeamformerBase( freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env)) self.invalid = True def set_Cleansc(self): b = self.Beamformer self.Beamformer = BeamformerCleansc(freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env) self.invalid = True def set_Ortho(self): b = self.Beamformer self.Beamformer = BeamformerOrth(beamformer=BeamformerEig( freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env)) self.Beamformer.n = 10 self.invalid = True def set_Functional(self): b = self.Beamformer self.Beamformer = BeamformerFunctional(freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env) self.invalid = True def set_Clean(self): b = self.Beamformer self.Beamformer = BeamformerClean(beamformer=BeamformerBase( freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env)) self.invalid = True def set_CMF(self): b = self.Beamformer self.Beamformer = BeamformerCMF(freq_data=b.freq_data, grid=b.grid, mpos=b.mpos, c=b.c, env=b.env) self.invalid = True def toggle_auto(self): self.automatic = not self.automatic def set_interp(self): self.configure_traits(kind='live', view=interpview) def set_drange(self): self.drange.configure_traits(kind='live', view=drangeview) def set_yrange(self): self.yrange.configure_traits(kind='live', view=drangeview) def set_pic(self): self.configure_traits(kind='live', view=picview)
auto_open=True, children='departments', label='=Departments', view=no_view, add=[Department]), TreeNode(node_for=[Company], auto_open=True, children='employees', label='=Employees', view=no_view, add=[Employee]), TreeNode(node_for=[Department], auto_open=True, children='employees', label='name', menu=Menu(NewAction, Separator(), DeleteAction, Separator( ), RenameAction, Separator(), CopyAction, CutAction, PasteAction), view=View(Group('name', orientation='vertical', show_left=True)), add=[Employee]), TreeNode(node_for=[Employee], auto_open=True, label='name', menu=Menu(NewAction, Separator(), def_title_action, dept_action, Separator(), CopyAction, CutAction, PasteAction, Separator(), DeleteAction, Separator(), RenameAction), view=employee_view) ]) # The main view view = View(Group( Item(name='company', id='company', editor=tree_editor, resizable=True), orientation='vertical',
auto_open=True, children='departments', label='=Departments', view=no_view, add=[Department]), TreeNode(node_for=[Company], auto_open=True, children='employees', label='=Employees', view=no_view, add=[Employee]), TreeNode(node_for=[Department], auto_open=True, children='employees', label='name', menu=Menu(NewAction, Separator(), DeleteAction, Separator(), RenameAction, Separator(), CopyAction, CutAction, PasteAction), view=View(['name', '|<']), add=[Employee]), TreeNode(node_for=[Employee], auto_open=True, label='name', menu=Menu( NewAction, Separator(), Action(name='Default title', action='object.default_title'), Action( name='Department', action='handler.employee_department(editor,object)'), Separator(), CopyAction, CutAction, PasteAction,
def _standard_menu_actions(self): """ Returns the standard actions for the pop-up menu. """ actions = [DeleteAction, Separator()] return actions
children='departments', label='=Departments', view=no_view, add=[Department]), TreeNode(node_for=[Company], auto_open=True, children='employees', label='=Employees', view=no_view, add=[Employee]), TreeNode(node_for=[Department], auto_open=True, children='employees', label='name', menu=Menu(NewAction, Separator(), DeleteAction, Separator(), RenameAction, Separator(), CopyAction, CutAction, PasteAction), view=View(['name', '|<']), add=[Employee]), TreeNode(node_for=[Employee], auto_open=True, label='name', menu=Menu(NewAction, Separator(), Action(name='Default title',
#========================================================================= # Help actions #========================================================================= def open_tutorial(self, info): """Opens the tutorial for the application""" self.logger.info("Open the tutorial [SMRCHandler]") path = realpath("../../docs/_build/html/tutorial.html") html_file = "file://" + path open(html_file, new=2) toolbar_actions = [Action(action="_start", image=ImageResource("../../icons/run.png"), enabled_when="not model.started"), Action(action="_cancel", image=ImageResource("../../icons/stop.png"), enabled_when="model.started"), Action(action="_manually_trigger", image=ImageResource("../../icons/manually.png"), enabled_when="model.started")] file_actions = [file_exit, Separator(), file_save_experiment, file_save_project, Separator(), file_load_experiment, file_load_project, Separator()] configure_actions = [conf_server] import_action = [import_project, import_dic_results]