Example #1
0
 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
Example #3
0
 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))
Example #5
0
    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)
Example #8
0
    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
Example #9
0
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
Example #10
0
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'), ))
Example #11
0
    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
Example #12
0
            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',
Example #13
0
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')))
Example #14
0
                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
Example #15
0
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'),
        ))
Example #16
0
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)
Example #19
0
             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
Example #22
0
          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',
Example #23
0
    #=========================================================================
    # 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]