コード例 #1
0
 def PostInit(self):
     OM = ObjectManager()
     UIM = UIManager()
     controller = UIM.get(self._controller_uid)
     controller.subscribe(self.set_fit, 'change.fit')
     controller.subscribe(self.set_multicursor, 'change.multicursor')
     #
     well = OM.get(controller.obj_uid)
     controller.attach(well.uid)
     # Populate index type Choice
     for z_axis_dt in well.get_z_axis_datatypes().keys():
         self._tool_bar.choice_IT.Append(z_axis_dt)
     # Setting index type Choice
     idx_index_type = self._tool_bar.choice_IT.GetItems().index(
         controller.index_type)
     self._tool_bar.choice_IT.SetSelection(idx_index_type)
     #
     self._tool_bar.choice_IT.Bind(wx.EVT_CHOICE, self._on_index_type)
     # Setting min and max Z axis TextCtrls
     self._reload_z_axis_textctrls()
     # Create Overview Track
     UIM.create('track_controller',
                self._controller_uid,
                overview=True,
                plotgrid=False)
コード例 #2
0
 def insert_track(self):
     """
     Insert new tracks.
     
     If there is any selected track, create a new 
     :class:`~GRIPy-3.ui.mvc_classes.TrackController` at last position.
     Instead, for every selected track creates a new
     :class:`~GRIPy-3.ui.mvc_classes.TrackController` object one position
     before.
     
     Returns
     -------
     new_tracks_uids : list       
         A list containing :class:`~GRIPy-3.ui.mvc_classes.TrackController` 
         objects uids.
     """
     UIM = UIManager()
     selected_tracks = UIM.exec_query('track_controller',
                                      self.uid,
                                      'selected=True',
                                      orderby='pos',
                                      reverse=True)
     # There isn't any track selected
     if not selected_tracks:
         new_track = UIM.create('track_controller', self.uid, pos=len(self))
         return [new_track.uid]
     # Instead, insert new tracks before every selected track
     new_tracks_uids = []
     for track in selected_tracks:
         new_track = UIM.create('track_controller', self.uid, pos=track.pos)
         new_tracks_uids.append(new_track.uid)
     return new_tracks_uids
コード例 #3
0
ファイル: cross_plotter.py プロジェクト: giruenf/GRIPy
    def PostInit(self):
        try:
            self.sizer = wx.BoxSizer(wx.VERTICAL)
            self._tool_bar = wx.aui.AuiToolBar(self)
            self.sizer.Add(self._tool_bar, 0, flag=wx.TOP | wx.EXPAND)
            #     
            UIM = UIManager()
            canvas_controller = UIM.create('canvas_plotter_controller',
                                           self._controller_uid
                                           )
            #

            self._main_panel = canvas_controller.view
            # TODO: Keep this conection? (must be disconected at PreDelete??)
            #            self._main_panel.mpl_connect('motion_notify_event', 
            #                                                     self.on_canvas_mouse_move)
            self.sizer.Add(self._main_panel, 1, flag=wx.EXPAND)
            #
            self._status_bar = PlotStatusBar(self)
            self.sizer.Add(self._status_bar, 0, flag=wx.BOTTOM | wx.EXPAND)
            self.SetSizer(self.sizer)
            #
            self._build_tool_bar()
            self.Layout()
        except Exception as e:
            print('ERROR IN CrossPlot.PostInit:', e)
            raise
コード例 #4
0
    def OnRenameObject(self, event):
        (node_type, node_main_info, node_extra_info) = self.popup_obj
        OM = ObjectManager()
        obj = OM.get(node_main_info)

        UIM = UIManager()
        dlg = UIM.create('dialog_controller', title='Rename object')
        #
        try:
            ctn_details = dlg.view.AddCreateContainer('StaticBox',
                                                      label='Object details',
                                                      orient=wx.VERTICAL,
                                                      proportion=0,
                                                      flag=wx.EXPAND | wx.TOP,
                                                      border=5)
            dlg.view.AddStaticText(ctn_details,
                                   proportion=0,
                                   flag=wx.EXPAND | wx.TOP,
                                   border=5,
                                   label='Name: ' + obj.name)
            #
            dlg.view.AddStaticText(ctn_details,
                                   proportion=0,
                                   flag=wx.EXPAND | wx.TOP,
                                   border=5,
                                   label='Type id: ' + obj.tid)
            dlg.view.AddStaticText(ctn_details,
                                   proportion=0,
                                   flag=wx.EXPAND | wx.TOP,
                                   border=5,
                                   label='Object id: ' + str(obj.oid))
            #
            ctn_new_name = dlg.view.AddCreateContainer('StaticBox',
                                                       label='New name',
                                                       orient=wx.VERTICAL,
                                                       proportion=0,
                                                       flag=wx.EXPAND | wx.TOP,
                                                       border=5)
            dlg.view.AddTextCtrl(ctn_new_name,
                                 proportion=0,
                                 flag=wx.EXPAND | wx.TOP,
                                 border=5,
                                 widget_name='new_name',
                                 initial=obj.name)
            #
            dlg.view.SetSize((300, 330))
            answer = dlg.view.ShowModal()
            #
            if answer == wx.ID_OK:
                results = dlg.get_results()
                new_name = results.get('new_name')
                obj.name = new_name
                UIM = UIManager()
                controller = UIM.get(self._controller_uid)
                controller.reload_object_node(obj.uid)
        except Exception as e:
            print('\nERROR OnRenameObject:', e)
            raise
        finally:
            UIM.remove(dlg.uid)
コード例 #5
0
    def activatePlugin(self):
        if self.is_activated:
            return
        if self.plugin_object._parent_menu:
            menu_name = self.plugin_object._parent_menu
        else:
            menu_name = GripyPlugin._DEFAULT_PARENT_MENU
        found = None
        _UIM = UIManager()
        menus = _UIM.list('menu_controller')
        for menu in menus:
            testing_name = menu.label
            if testing_name.startswith('&'):
                testing_name = testing_name[1:]
            if testing_name == menu_name:
                found = menu
        if found:
            msg = 'Plugin {} will try insert itself to Menu {}'.format(
                self.name, found.label)
            log.debug(msg)

            menu_item = _UIM.create('menu_item_controller',
                                    found.uid,
                                    label=self.name,
                                    help=self.description,
                                    callback=self.plugin_object.event_run)

            if menu_item:
                self._menu_item_uid = menu_item.uid
            log.debug('Plugin {} was inserted to Menu {}'.format(
                self.name, found.label))
        self.plugin_object.activate()
        log.debug('Activated plugin: {}'.format(self.name))
コード例 #6
0
 def append_object(self, obj_uid):
     UIM = UIManager()
     try:
         toc = UIM.create('track_object_controller', self.uid)
         if isinstance(obj_uid, str):
             obj_uid = parse_string_to_uid(obj_uid)
         toc.data_obj_uid = obj_uid
         return toc
     except Exception as e:
         print('ERRO TrackController.append_object', e)
         raise
コード例 #7
0
ファイル: tree.py プロジェクト: giruenf/GRIPy
 def OnUnitConvert(self, event):
     (node_type, node_main_info, node_extra_info) = self.popup_obj
     OM = ObjectManager()
     obj = OM.get(node_main_info)
     try:
         unit = uom.get_unit(obj.unit)
         dim = uom.get_unit_dimension(unit.dimension)
         qc = uom.get_quantity_class(dim.name)
         UNITS_OPTIONS = OrderedDict()
         for mu in qc.memberUnit:
             UNITS_OPTIONS[mu] = mu
     except:
         msg = 'Unit ' + obj.unit + ' cannot be converted.'
         wx.MessageBox(msg, 'Warning', wx.OK | wx.ICON_WARNING)
         return
         #
     UIM = UIManager()
     dlg = UIM.create('dialog_controller', title='Unit conversion')
     #
     try:
         ctn_details = dlg.view.AddCreateContainer('StaticBox', label='Object details', orient=wx.VERTICAL,
                                                   proportion=0, flag=wx.EXPAND | wx.TOP, border=5)
         dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5,
                                label='Name: ' + obj.name)
         #
         dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5,
                                label='Type id: ' + obj.tid)
         dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5,
                                label='Object id: ' + str(obj.oid))
         dlg.view.AddStaticText(ctn_details, proportion=0, flag=wx.EXPAND | wx.TOP, border=5,
                                label='Current unit: ' + obj.unit)
         #
         ctn_new_unit = dlg.view.AddCreateContainer('StaticBox', label='New unit', orient=wx.VERTICAL, proportion=0,
                                                    flag=wx.EXPAND | wx.TOP, border=5)
         dlg.view.AddChoice(ctn_new_unit, proportion=0, flag=wx.EXPAND | wx.TOP, border=5, widget_name='new_unit',
                            options=UNITS_OPTIONS)
         #    
         dlg.view.SetSize((300, 330))
         answer = dlg.view.ShowModal()
         #
         if answer == wx.ID_OK:
             results = dlg.get_results()
             new_unit_name = results.get('new_unit')
             new_data = uom.convert(obj.data, obj.unit, new_unit_name)
             obj._data = new_data
             obj.unit = new_unit_name
         #                UIM = UIManager()
     #                controller = UIM.get(self._controller_uid)
     #                controller.reload_object(obj.uid)
     except Exception:
         pass
     finally:
         UIM.remove(dlg.uid)
コード例 #8
0
ファイル: dialog_obj_props.py プロジェクト: giruenf/GRIPy
 def PostInit(self):
     self.subscribe(self.on_change_obj_uid, 'change.obj_uid')
     # The lines below are placed here because Controller.PostInit is called
     # after View.PostInit
     UIM = UIManager()
     pgc = UIM.create('property_grid_controller', self.uid)
     self.view.mainpanel.GetSizer().Add(pgc.view,
                                        proportion=1,
                                        flag=wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND,
                                        border=10
                                        )
     self.view.mainpanel.GetSizer().Layout()
     self.view.GetSizer().Layout()
コード例 #9
0
ファイル: interface.py プロジェクト: giruenf/GRIPy
def create_properties_dialog(obj_uid, size=None):
    if not size:
        size = (300, 330)
    UIM = UIManager()
    try:
        dlg = UIM.create('object_properties_dialog_controller')
        # print(dlg)
        dlg.obj_uid = obj_uid
        dlg.view.SetSize(size)
        dlg.view.ShowModal()
    except Exception as e:
        print('\nERROR create_properties_dialog:', e)
        raise
    finally:
        UIM.remove(dlg.uid)
コード例 #10
0
ファイル: workpage.py プロジェクト: adrianopls/GRIPy-X
 def _set_float_mode(self, new_value, old_value):
     UIM = UIManager()
     controller = UIM.get(self._controller_uid)
     parent_uid = UIM._getparentuid(controller.uid)
     if new_value:
         controller.unsubscribe(self._set_title, 'change.title')
         controller.unsubscribe(self._set_pos, 'change.pos')
         fc = UIM.create('frame_controller',
                         parent_uid,
                         title=controller.title)
         UIM.reparent(self._controller_uid, fc.uid)
         fc.view.Show()
     else:
         mwc_uid = UIM._getparentuid(parent_uid)
         mwc = UIM.get(mwc_uid)
         UIM.reparent(self._controller_uid, mwc.uid)
         UIM.remove(parent_uid)
         controller.subscribe(self._set_title, 'change.title')
         controller.subscribe(self._set_pos, 'change.pos')
コード例 #11
0
ファイル: track_object.py プロジェクト: adrianopls/GRIPy-X
 def on_change_plottype(self, new_value, old_value):
     UIM = UIManager()
     repr_ctrl = self.get_representation()
     label = self.get_label()
     #
     if repr_ctrl:
         UIM.remove(repr_ctrl.uid) 
     if label:
         label.destroy()
     #    
     if new_value is not None:
         repr_tid = _PLOTTYPES_REPRESENTATIONS.get(new_value)
         try:
             #
             track_ctrl_uid = UIM._getparentuid(self.uid)
             track_ctrl =  UIM.get(track_ctrl_uid)
             #
             if not track_ctrl.overview:
                 label = track_ctrl._append_track_label(
                                                     toc_uid=track_ctrl_uid
                 )
                 #
                 data_obj = self.get_data_object()
                 label.set_title(data_obj.name)
                 label.set_subtitle(data_obj.datatype)
                 #
                 self._label = label
                 #
             else:
                 self._label = None  
             #
             # TODO: rever linha abaixo
             state = self._get_log_state()                
             repr_ctrl = UIM.create(repr_tid, self.uid, **state)
             repr_ctrl.draw()
             #
         except Exception as e:
             print ('ERROR on_change_plottype', e)
             self.plottype = None    
             raise
コード例 #12
0
ファイル: RockTableEditor.py プロジェクト: adrianopls/GRIPy-X
    def GrainEntry(self):
        UIM = UIManager()
        dlg = UIM.create('dialog_controller', title='Rock creator')
        cont_grain = dlg.view.AddCreateContainer('StaticBox',
                                                 label='Grain Parts',
                                                 orient=wx.VERTICAL,
                                                 proportion=0,
                                                 flag=wx.EXPAND | wx.TOP,
                                                 border=5)
        cont_matr = dlg.view.AddCreateContainer('StaticBox',
                                                label='Matrix Parts',
                                                orient=wx.VERTICAL,
                                                proportion=0,
                                                flag=wx.EXPAND | wx.TOP,
                                                border=5)

        json_file = '\\Temp\\min.json'
        #        fullpath_json = 'C:\\Users\\rtabelini\\Documents\\Github\\GRIPy'+json_file
        fullpath_json = cwd() + json_file

        dictmin = app.app_utils.read_json_file(fullpath_json)

        def on_change_mineral(name, old_value, new_value, **kwargs):
            print('new\n', name, new_value, new_value['name'],
                  dictmin.iterkeys())
            if name == 'mineralgrain':
                textctrl_k = dlg.view.get_object('kmod1')
                textctrl_g = dlg.view.get_object('gmod1')
                textctrl_rho = dlg.view.get_object('dens1')
            elif name == 'mineralmatrix':
                textctrl_k = dlg.view.get_object('kmod2')
                textctrl_g = dlg.view.get_object('gmod2')
                textctrl_rho = dlg.view.get_object('dens2')

            if new_value['name'] in dictmin.iterkeys():
                textctrl_k.set_value(new_value['K'])
                textctrl_g.set_value(new_value['G'])
                textctrl_rho.set_value(new_value['Dens'])

        dlg.view.AddChoice(cont_grain,
                           widget_name='mineralgrain',
                           options=dictmin,
                           flag=wx.EXPAND)
        choice_grain = dlg.view.get_object('mineralgrain')
        choice_grain.set_trigger(on_change_mineral)

        dlg.view.AddChoice(cont_matr,
                           widget_name='mineralmatrix',
                           options=dictmin,
                           flag=wx.EXPAND)
        choice_matrix = dlg.view.get_object('mineralmatrix')
        choice_matrix.set_trigger(on_change_mineral)

        gr_frac = dlg.view.AddCreateContainer('BoxSizer',
                                              cont_grain,
                                              orient=wx.HORIZONTAL,
                                              proportion=1,
                                              flag=wx.EXPAND | wx.ALL,
                                              border=5)
        dlg.view.AddStaticText(gr_frac,
                               proportion=1,
                               initial='Fraction ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(gr_frac,
                             proportion=1,
                             widget_name='frac1',
                             initial='0.8',
                             flag=wx.ALIGN_RIGHT)

        gr_poro = dlg.view.AddCreateContainer('BoxSizer',
                                              cont_grain,
                                              orient=wx.HORIZONTAL,
                                              proportion=1,
                                              flag=wx.EXPAND | wx.ALL,
                                              border=5)
        dlg.view.AddStaticText(gr_poro,
                               proportion=1,
                               initial='Porosity ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(gr_poro,
                             proportion=1,
                             widget_name='poro1',
                             initial='0.20',
                             flag=wx.ALIGN_RIGHT)

        gr_kmod = dlg.view.AddCreateContainer('BoxSizer',
                                              cont_grain,
                                              orient=wx.HORIZONTAL,
                                              proportion=1,
                                              flag=wx.EXPAND | wx.ALL,
                                              border=5)
        dlg.view.AddStaticText(gr_kmod,
                               proportion=1,
                               widget_name='K_Modulus',
                               initial='K Modulus (GPa) ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(gr_kmod,
                             proportion=1,
                             widget_name='kmod1',
                             initial='36.5',
                             flag=wx.ALIGN_RIGHT)

        gr_gmod = dlg.view.AddCreateContainer('BoxSizer',
                                              cont_grain,
                                              orient=wx.HORIZONTAL,
                                              proportion=1,
                                              flag=wx.EXPAND | wx.ALL,
                                              border=5)
        dlg.view.AddStaticText(gr_gmod,
                               proportion=1,
                               widget_name='G_Modulus',
                               initial='G Modulus (GPa) ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(gr_gmod,
                             proportion=1,
                             widget_name='gmod1',
                             initial='78.6',
                             flag=wx.ALIGN_RIGHT)

        gr_dens = dlg.view.AddCreateContainer('BoxSizer',
                                              cont_grain,
                                              orient=wx.HORIZONTAL,
                                              proportion=1,
                                              flag=wx.EXPAND | wx.ALL,
                                              border=5)
        dlg.view.AddStaticText(gr_dens,
                               proportion=1,
                               widget_name='Density',
                               initial='Density (g/cc) ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(gr_dens,
                             proportion=1,
                             widget_name='dens1',
                             initial='2.65',
                             flag=wx.ALIGN_RIGHT)

        mtr_frac = dlg.view.AddCreateContainer('BoxSizer',
                                               cont_matr,
                                               orient=wx.HORIZONTAL,
                                               proportion=1,
                                               flag=wx.EXPAND | wx.ALL,
                                               border=5)
        dlg.view.AddStaticText(mtr_frac,
                               proportion=1,
                               widget_name='fraction2',
                               initial='Fraction ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(mtr_frac,
                             proportion=1,
                             widget_name='frac2',
                             initial='0.2',
                             flag=wx.ALIGN_LEFT)

        mtr_poro = dlg.view.AddCreateContainer('BoxSizer',
                                               cont_matr,
                                               orient=wx.HORIZONTAL,
                                               proportion=1,
                                               flag=wx.EXPAND | wx.ALL,
                                               border=5)
        dlg.view.AddStaticText(mtr_poro,
                               proportion=1,
                               initial='Porosity ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(mtr_poro,
                             proportion=1,
                             widget_name='poro2',
                             initial='0.10',
                             flag=wx.ALIGN_RIGHT)

        mtr_kmod = dlg.view.AddCreateContainer('BoxSizer',
                                               cont_matr,
                                               orient=wx.HORIZONTAL,
                                               proportion=1,
                                               flag=wx.EXPAND | wx.ALL,
                                               border=5)
        dlg.view.AddStaticText(mtr_kmod,
                               proportion=1,
                               widget_name='K_Modulus2',
                               initial='K Modulus (GPa) ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(mtr_kmod,
                             proportion=1,
                             widget_name='kmod2',
                             initial='36.5',
                             flag=wx.ALIGN_LEFT)

        mtr_gmod = dlg.view.AddCreateContainer('BoxSizer',
                                               cont_matr,
                                               orient=wx.HORIZONTAL,
                                               proportion=1,
                                               flag=wx.EXPAND | wx.ALL,
                                               border=5)
        dlg.view.AddStaticText(mtr_gmod,
                               proportion=1,
                               widget_name='G_Modulus2',
                               initial='G Modulus (GPa) ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(mtr_gmod,
                             proportion=1,
                             widget_name='gmod2',
                             initial='78.6',
                             flag=wx.ALIGN_LEFT)

        mtr_dens = dlg.view.AddCreateContainer('BoxSizer',
                                               cont_matr,
                                               orient=wx.HORIZONTAL,
                                               proportion=1,
                                               flag=wx.EXPAND | wx.ALL,
                                               border=5)
        dlg.view.AddStaticText(mtr_dens,
                               proportion=1,
                               widget_name='Density2',
                               initial='Density (g/cc) ',
                               flag=wx.ALIGN_RIGHT)
        dlg.view.AddTextCtrl(mtr_dens,
                             proportion=1,
                             widget_name='dens2',
                             initial='2.65',
                             flag=wx.ALIGN_LEFT)
        #
        try:
            if dlg.view.ShowModal() == wx.ID_OK:
                results = dlg.get_results()
                gr_f = results.get('frac1')
                mtr_f = results.get('frac2')
                ngrain = results.get('mineralgrain')['name']
                nmatrix = results.get('mineralmatrix')['name']
                gr_phi = results.get('poro1')
                gr_k = results.get('kmod1')
                gr_mi = results.get('gmod1')
                gr_rho = results.get('dens1')
                mtr_phi = results.get('poro2')
                mtr_k = results.get('kmod2')
                mtr_mi = results.get('gmod2')
                mtr_rho = results.get('dens2')
                #                kk = RP.VRHill (gr_k, gr_f, mtr_k)
                #                g = RP.VRHill (gr_mi, gr_f, mtr_mi)
                print('\ngrd', gr_k, gr_f, mtr_k, type(float(mtr_k)))
                rocktype = self.OM.new(
                    'rocktype',
                    fracgrain=gr_f,
                    fracmatrix=mtr_f,
                    grain=ngrain,
                    matrix=nmatrix,
                    k=10,
                    mi=20)  #vp=vp, vs=vs, rho = rho, k=k, mi=mi, poi=poi
                return rocktype

        except Exception as e:
            print('ERROR:', str(e))
        finally:
            UIM.remove(dlg.uid)
コード例 #13
0
ファイル: interface.py プロジェクト: giruenf/GRIPy
def load():
    # load_UI_file = True
    load_UI_file = False

    gripy_app = wx.GetApp()
    # gripy_app = app.gripy_app.GripyApp.Get()

    if not gripy_app:
        raise Exception('ERRO grave.')

    UIM = UIManager()

    if load_UI_file:
        """
        Load basic app from file.            
        """
        load_application_UI_data(gripy_app._gripy_app_state.get('app_UI_file'))
        load_user_UI_data(gripy_app._gripy_app_state.get('user_UI_file'))
        mwc = UIM.list('main_window_controller')[0]
    else:
        """
        Construct the application itself.
        """
        mwc = UIM.create(
            'main_window_controller',
            title=gripy_app._gripy_app_state.get('app_display_name'),
            pos=(2000, 800),
            maximized=True)

        # """

        # Menubar
        menubar_ctrl = UIM.create('menubar_controller', mwc.uid)

        # First level Menus
        mc_project = UIM.create('menu_controller',
                                menubar_ctrl.uid,
                                label=u"&Project")

        mc_edit = UIM.create('menu_controller',
                             menubar_ctrl.uid,
                             label=u"&Edit")
        mc_well = UIM.create('menu_controller',
                             menubar_ctrl.uid,
                             label=u"&Well")
        mc_precond = UIM.create('menu_controller',
                                menubar_ctrl.uid,
                                label=u"&Preconditioning")
        mc_model = UIM.create('menu_controller',
                              menubar_ctrl.uid,
                              label=u"&Modeling")
        mc_interp = UIM.create('menu_controller',
                               menubar_ctrl.uid,
                               label=u"&Interpretation")
        #        mc_infer = UIM.create('menu_controller', menubar_ctrl.uid, label=u"&Inference")
        # mc_specdecom = UIM.create('menu_controller', menubar_ctrl.uid, label=u"&SpecDecom")
        mc_tools = UIM.create('menu_controller',
                              menubar_ctrl.uid,
                              label=u"&Tools")
        mc_plugins = UIM.create('menu_controller',
                                menubar_ctrl.uid,
                                label=u"&Plugins")

        # Project Menu
        UIM.create('menu_item_controller',
                   mc_project.uid,
                   label=u'&New project',
                   help=u'Create a new empty GriPy Project.',
                   id=wx.ID_NEW,
                   callback='app.menu_functions.on_new')
        UIM.create('menu_item_controller',
                   mc_project.uid,
                   kind=wx.ITEM_SEPARATOR)
        UIM.create('menu_item_controller',
                   mc_project.uid,
                   label=u'&Open',
                   help=u'Open GriPy Project (*.pgg)',
                   id=wx.ID_OPEN,
                   callback='app.menu_functions.on_open')
        UIM.create('menu_item_controller',
                   mc_project.uid,
                   label=u'&Save',
                   help=u'Save GriPy Project',
                   id=wx.ID_SAVE,
                   callback='app.menu_functions.on_save')
        UIM.create('menu_item_controller',
                   mc_project.uid,
                   label=u'&Save as',
                   help=u'Save GriPy Project with a new name',
                   id=wx.ID_SAVEAS,
                   callback='app.menu_functions.on_save_as')
        UIM.create('menu_item_controller',
                   mc_project.uid,
                   kind=wx.ITEM_SEPARATOR)

        mc_import = UIM.create('menu_controller',
                               mc_project.uid,
                               label=u"&Import",
                               help=u"Import file")

        UIM.create('menu_item_controller',
                   mc_import.uid,
                   label=u"SEG-Y Well Gather",
                   help=u'Import a SEG-Y Seismic file as Well Gather',
                   callback='app.menu_functions.on_import_segy_well_gather')
        UIM.create(
            'menu_item_controller',
            mc_import.uid,
            label=u"SEG-Y Seismic",
            help=u'Import a SEG-Y Seismic file to current GriPy Project',
            callback='app.menu_functions.on_import_segy_seis')
        UIM.create(
            'menu_item_controller',
            mc_import.uid,
            label=u"SEG-Y Velocity",
            help=u'Import a SEG-Y Velocity file to current GriPy Project',
            callback='app.menu_functions.on_import_segy_vel')
        mc_export = UIM.create('menu_controller',
                               mc_project.uid,
                               label=u"Export",
                               help=u"Export file")
        UIM.create(
            'menu_item_controller',
            mc_export.uid,
            label=u"LAS File",
            help=u'Export a LAS file from a well in current GriPy Project',
            callback='app.menu_functions.on_export_las')

        UIM.create('menu_item_controller',
                   mc_project.uid,
                   kind=wx.ITEM_SEPARATOR)
        UIM.create('menu_item_controller',
                   mc_project.uid,
                   label=u'Exit',
                   help=u'Exits GRIPy application.',
                   id=wx.ID_EXIT,
                   callback='app.menu_functions.on_exit')

        # Edit Menu
        """
        mc_partition = UIM.create('menu_controller', mc_edit.uid, 
                                      label=u"&Partition",
                                      help=u"Create / Edit Partition"
        )
        """
        mc_rocktable = UIM.create('menu_controller',
                                  mc_edit.uid,
                                  label=u"&Rock Table",
                                  help=u"Create / Edit RockTable")
        UIM.create('menu_item_controller',
                   mc_rocktable.uid,
                   label=u"New Rock Table",
                   help=u'New Rock Table',
                   callback='app.menu_functions.on_new_rocktable')
        UIM.create('menu_item_controller',
                   mc_rocktable.uid,
                   label=u"Edit Rock Table",
                   help=u'Edit Rock Table',
                   callback='app.menu_functions.on_edit_rocktable')

        UIM.create('menu_item_controller',
                   mc_edit.uid,
                   label=u'&Well Plot',
                   help=u'Well Plot',
                   callback='app.menu_functions.on_new_wellplot')
        UIM.create('menu_item_controller',
                   mc_edit.uid,
                   label=u'&Crossplot',
                   help=u'Crossplot',
                   callback='app.menu_functions.on_new_crossplot')
        #        UIM.create('menu_item_controller', mc_edit.uid,
        #                label=u'&Rock',
        #                help=u'Initialize rock model',
        #                callback='app.menu_functions.on_rock'
        #        )
        #        UIM.create('menu_item_controller', mc_edit.uid,
        #                label=u'&Fluid',
        #                help=u'Initialize fluid model',
        #                callback='app.menu_functions.on_fluid'
        #        )

        # Well Menu
        UIM.create('menu_item_controller',
                   mc_well.uid,
                   label=u"New well",
                   help=u"Create well",
                   callback='app.menu_functions.on_create_well')
        # Import Well
        mc_import_well = UIM.create('menu_controller',
                                    mc_well.uid,
                                    label=u"&Import Well")
        UIM.create('menu_item_controller',
                   mc_import_well.uid,
                   label=u"LAS File",
                   help=u'Import a LAS file to current GriPy Project',
                   callback='app.menu_functions.on_import_las')
        UIM.create('menu_item_controller',
                   mc_import_well.uid,
                   label=u"LIS File",
                   help=u'Import a LIS file to current GriPy Project',
                   callback='app.menu_functions.on_import_lis')

        UIM.create('menu_item_controller',
                   mc_import_well.uid,
                   label=u"DLIS File",
                   help=u'Import a DLIS file to current GriPy Project',
                   callback='app.menu_functions.on_import_dlis')
        UIM.create('menu_item_controller',
                   mc_import_well.uid,
                   label=u"ODT File",
                   help=u'Import a ODT file to current GriPy Project',
                   callback='app.menu_functions.on_import_odt')

        #
        UIM.create('menu_item_controller', mc_well.uid, kind=wx.ITEM_SEPARATOR)

        UIM.create('menu_item_controller',
                   mc_well.uid,
                   label=u"Create Synthetic Log",
                   callback='app.menu_functions.on_create_synthetic')
        """
        ### Trabalho Roseane
        UIM.create('menu_item_controller', mc_well.uid, 
                       kind=wx.ITEM_SEPARATOR
        )
        
        UIM.create('menu_item_controller', mc_well.uid, 
                label=u'PoroPerm Cross-Plot',
                callback='app.menu_functions.create_poro_perm_xplot'
        )           
        
        UIM.create('menu_item_controller', mc_well.uid, 
                label=u'Winland Cross-Plot',
                callback='app.menu_functions.create_winland_xplot'
        )        
        UIM.create('menu_item_controller', mc_well.uid, 
                label=u'Stratigraphic Modified lorenz Plot (SMLP)',
                callback='app.menu_functions.create_SMLP_xplot'
        )        
        UIM.create('menu_item_controller', mc_well.uid, 
                label=u'Modified lorenz Plot (MLP)',
                callback='app.menu_functions.create_MLP_xplot'
        )          
        UIM.create('menu_item_controller', mc_well.uid, 
                label=u'Depth vs Acumulated KH',
                callback='app.menu_functions.create_Depth_vs_kHAcum_xplot'
        )      
        ### FIM - Trabalho Roseane
        """
        """
        # Inference Menu
        UIM.create('menu_item_controller', mc_infer.uid, 
                label=u"Avo PP", 
                callback='app.menu_functions.teste6'
        )  
        UIM.create('menu_item_controller', mc_infer.uid, 
                label=u"Avo PP-PS", 
                callback='app.menu_functions.teste7'
        )  
        """

        # Interpretation Menu
        mc_specdecom = UIM.create(
            'menu_controller',
            mc_interp.uid,
            label=u"Spectral Decomposition",
            help=u"Spectral Decomposition",
        )
        UIM.create('menu_item_controller',
                   mc_specdecom.uid,
                   label=u"Continuous Wavelet Transform",
                   callback='app.menu_functions.on_cwt')
        mc_attributes = UIM.create(
            'menu_controller',
            mc_interp.uid,
            label=u"Attributes",
            help=u"Attributes",
        )
        UIM.create('menu_item_controller',
                   mc_attributes.uid,
                   label=u"Phase Rotation",
                   callback='app.menu_functions.on_phase_rotation')

        UIM.create('menu_item_controller',
                   mc_attributes.uid,
                   label=u"Hilbert Attributes",
                   callback='app.menu_functions.on_hilbert_attributes')

        # Modeling Menu
        UIM.create('menu_item_controller',
                   mc_model.uid,
                   label=u"Create 2/3 layers model",
                   callback='app.menu_functions.on_create_model')
        UIM.create('menu_item_controller',
                   mc_model.uid,
                   kind=wx.ITEM_SEPARATOR)
        UIM.create('menu_item_controller',
                   mc_model.uid,
                   label=u"Aki-Richards PP",
                   callback='app.menu_functions.on_akirichards_pp')
        UIM.create('menu_item_controller',
                   mc_model.uid,
                   label=u"Reflectivity Method",
                   callback='app.menu_functions.ReflectivityModel')
        # UIM.create('menu_item_controller', mc_model.uid,
        #               kind=wx.ITEM_SEPARATOR
        # )
        # UIM.create('menu_item_controller', mc_model.uid,
        #        label=u"Poisson ratio",
        #        callback='app.menu_functions.on_poisson_ratio'
        # )

        # Tools Menu
        UIM.create('menu_item_controller',
                   mc_tools.uid,
                   label="Coding Console",
                   help=u"Gripy Coding Console",
                   callback='app.menu_functions.on_coding_console')
        #
        """
        # Debug Menu
        UIM.create('menu_item_controller', mc_debug.uid, 
                label=u"Load Wilson Synthetics", 
                callback='app.menu_functions.on_load_wilson'
        )  
           
        UIM.create('menu_item_controller', mc_debug.uid, 
                label=u"Load Stack North Viking Data", 
                callback='app.menu_functions.teste10'
        )   
        UIM.create('menu_item_controller', mc_debug.uid, 
                label=u"Teste 11", 
                callback='app.menu_functions.teste11'
        ) 
     
        UIM.create('menu_item_controller', mc_debug.uid, 
                label=u'Calc Well Time from Depth curve', 
                callback='app.menu_functions.calc_well_time_from_depth'
        ) 
 
        UIM.create('menu_item_controller', mc_debug.uid, 
                       kind=wx.ITEM_SEPARATOR
        )
        
        UIM.create('menu_item_controller', mc_debug.uid, 
                label="Load Teste 2019", 
                callback='app.menu_functions.on_load_teste_2019'
        )  
        """

        # Fim Main Menu Bar

        # Object Manager TreeController
        UIM.create('tree_controller', mwc.uid)

        # Main ToolBar
        tbc = UIM.create('toolbar_controller', mwc.uid)
        UIM.create('toolbartool_controller',
                   tbc.uid,
                   label=u"New project",
                   bitmap='new_file-30.png',
                   help='New project',
                   long_help='Start a new Gripy project, closes existing',
                   callback='app.menu_functions.on_new')
        UIM.create('toolbartool_controller',
                   tbc.uid,
                   label=u"Abrir projeto",
                   bitmap='open_folder-30.png',
                   help='Abrir projeto',
                   long_help='Abrir projeto GriPy',
                   callback='app.menu_functions.on_open')
        UIM.create('toolbartool_controller',
                   tbc.uid,
                   label=u"Salvar projeto",
                   bitmap='save_close-30.png',
                   help='Salvar projeto',
                   long_help='Salvar projeto GriPy',
                   callback='app.menu_functions.on_save')
        UIM.create('toolbartool_controller',
                   tbc.uid,
                   label=u"Well Plot",
                   bitmap='oil_rig-30.png',
                   help='Well Plot',
                   long_help='Well Plot',
                   callback='app.menu_functions.on_new_wellplot')
        UIM.create('toolbartool_controller',
                   tbc.uid,
                   label=u"Crossplot",
                   bitmap='scatter_plot-30.png',
                   help='Crossplot',
                   long_help='Crossplot',
                   callback='app.menu_functions.on_new_crossplot')

        # StatusBar
        UIM.create('statusbar_controller', mwc.uid,
                   label='Bem vindo ao ' + \
                         app.gripy_app.GripyApp.Get()._gripy_app_state.get('app_display_name')
                   )
コード例 #14
0
 def _data_navigator_helper(self, *args, **kwargs):
     UIM = UIManager()
     nav_ctrl = UIM.create('navigator_controller', parent_uid=args[0])
     nav_ctrl.view.Show()
コード例 #15
0
    def PostInit(self):
        try:
            UIM = UIManager()
            controller = UIM.get(self._controller_uid)
            well_plot_ctrl_uid = UIM._getparentuid(self._controller_uid)
            well_plot_ctrl = UIM.get(well_plot_ctrl_uid)
            #
            tcc = UIM.create('track_canvas_controller', self._controller_uid)
            # TODO: Verificar se os mpl_connect devem ser desfeitos no PreDelete
            tcc.view.mpl_connect('motion_notify_event', self._on_track_move)
            tcc.view.mpl_connect('button_press_event', self._on_button_press)
            #
            drop_target_track_canvas = DropTarget(controller.is_valid_object,
                                                  controller.append_object)

            tcc.view.SetDropTarget(drop_target_track_canvas)
            #
            if controller.overview:
                well_plot_ctrl._place_as_overview(tcc.view)

            else:
                tlc = UIM.create('track_label_controller',
                                 self._controller_uid)
                label_canvas_dt = DropTarget(controller.is_valid_object,
                                             controller.append_object)
                tlc.view.SetDropTarget(label_canvas_dt)
            #
            if controller.pos == -1:
                # aqui controller.size jah inclui track
                controller.pos = len(well_plot_ctrl) - 1

            # When a new Track is inserted, others with position >= must have
            # theirs position incremented by 1.
            well_plot_ctrl._increment_tracks_positions(
                pos=controller.pos,
                exclude_track_uid=self._controller_uid,
            )
            #
            if not controller.overview:
                # Pass windows to WellPlot to be inserted on track panel.
                well_plot_ctrl._insert_windows_on_track_panel(
                    pos=controller.pos,
                    label_window=tlc.view,
                    canvas_window=tcc.view,
                    initial_width=controller.width)
                # Track with position greater than inserted must have their
                # titles updated.
                well_plot_ctrl._reload_tracks_titles(
                    pos=controller.pos,
                    exclude_track_uid=self._controller_uid,
                )
                #
                self.set_ylim(well_plot_ctrl.shown_ylim[0],
                              well_plot_ctrl.shown_ylim[1])
            else:
                self.set_ylim(well_plot_ctrl.wellplot_ylim[0],
                              well_plot_ctrl.wellplot_ylim[1])

                # TODO: Verificar se isso ficarah

                tcc.create_depth_canvas()

            controller.subscribe(self._on_change_selected, 'change.selected')
            controller.subscribe(self.change_visibility, 'change.visible')

            controller.subscribe(self.update_title, 'change.label')
            controller.subscribe(self.update_title, 'change.pos')

            controller.subscribe(self._change_position, 'change.pos')

            self.update_title(None, None)

        except Exception as e:
            print('\n\n\nERROR [TrackView.PostInit]:', e, '\n\n\n')
コード例 #16
0
 def _OnEditFormat(self, event):
     UIM = UIManager()
     lp_editor_ctrl = UIM.create('well_plot_editor_controller',
                                 self._controller_uid)
     lp_editor_ctrl.view.Show()
コード例 #17
0
def do_CWT(*args, **kwargs):
    toc = kwargs.get('toc')
    if not toc:
        raise Exception('Trabalhando somente com o TrackObjectController.')
    #

    #    obj = args[0]
    UIM = UIManager()
    dlg = UIM.create('dialog_controller', title='Continuous Wavelet Transform')
    #
    try:
        ctn_wavelet = dlg.view.AddCreateContainer('StaticBox',
                                                  label='Wavelet',
                                                  orient=wx.VERTICAL,
                                                  proportion=0,
                                                  flag=wx.EXPAND | wx.TOP,
                                                  border=5)
        dlg.view.AddChoice(ctn_wavelet,
                           proportion=0,
                           flag=wx.EXPAND | wx.TOP,
                           border=5,
                           widget_name='wavelet',
                           options=WAVELET_TYPES)
        #
        ctn_scale_res = dlg.view.AddCreateContainer('StaticBox',
                                                    label='Scale resolution',
                                                    orient=wx.VERTICAL,
                                                    proportion=0,
                                                    flag=wx.EXPAND | wx.TOP,
                                                    border=5)
        dlg.view.AddTextCtrl(ctn_scale_res,
                             proportion=0,
                             flag=wx.EXPAND | wx.TOP,
                             border=5,
                             widget_name='dj',
                             initial='0.125')
        #
        dlg.view.SetSize((230, 260))
        result = dlg.view.ShowModal()
        if result == wx.ID_OK:
            results = dlg.get_results()
            print(results)
            dj = None
            try:
                dj = float(results.get('dj'))
            except:
                pass
            if dj is None:
                return
            wavelet = results.get('wavelet')
            if wavelet == 'morlet':
                func = MorletWavelet()
            elif wavelet == 'ricker':
                func = RickerWavelet()
            elif wavelet == 'dog3':
                func = DOGWavelet(m=3)
            elif wavelet == 'dog4':
                func = DOGWavelet(m=4)
            elif wavelet == 'dog5':
                func = DOGWavelet(m=5)
            elif wavelet == 'dog6':
                func = DOGWavelet(m=6)
            elif wavelet == 'paul2':
                func = PaulWavelet(m=2)
            elif wavelet == 'paul3':
                func = PaulWavelet(m=3)
            elif wavelet == 'paul4':
                func = PaulWavelet(m=4)
            elif wavelet == 'paul5':
                func = PaulWavelet(m=5)
            elif wavelet == 'paul6':
                func = PaulWavelet(m=6)
            else:
                raise Exception()

                # TODO: Rever tudo isso abaixo
            valid_data = obj.data[np.isfinite(obj.data)]
            valid_index_data = obj.get_indexes().data[np.isfinite(obj.data)]

            #
            wt = WaveletTransform(valid_data,
                                  dj=dj,
                                  wavelet=func,
                                  dt=obj.step,
                                  time=valid_index_data)
            #
            OM = ObjectManager()
            seismic = OM.new('scalogram',
                             wt.wavelet_power,
                             name=obj.name + '_CWT',
                             unit='m',
                             domain='depth',
                             sample_rate=wt.time[1] - wt.time[0],
                             datum=wt.time[0],
                             samples=len(wt.time),
                             frequencies=wt.fourier_frequencies,
                             periods=wt.fourier_periods,
                             scales=wt.scales)
            OM.add(seismic)
            print(wt.wavelet_transform.shape)
            #
    except Exception:
        pass
    finally:
        UIM.remove(dlg.uid)
コード例 #18
0
def do_STFT(*args, **kwargs):
    toc = kwargs.get('toc')
    if not toc:
        raise Exception('Trabalhando somente com o TrackObjectController.')
    #
    OM = ObjectManager()
    UIM = UIManager()
    dlg = UIM.create('dialog_controller', title='Short Time Fourier Transform')
    #
    try:
        ctn_spec_type = dlg.view.AddCreateContainer('StaticBox',
                                                    label='Spectrogram type',
                                                    orient=wx.VERTICAL,
                                                    proportion=0,
                                                    flag=wx.EXPAND | wx.TOP,
                                                    border=5)
        dlg.view.AddChoice(ctn_spec_type,
                           proportion=0,
                           flag=wx.EXPAND | wx.TOP,
                           border=5,
                           widget_name='spectrogram_type',
                           options=SPECGRAM_TYPES)
        #
        ctn_win_size = dlg.view.AddCreateContainer(
            'StaticBox',
            label='Window size (samples)',
            orient=wx.VERTICAL,
            proportion=0,
            flag=wx.EXPAND | wx.TOP,
            border=5)
        dlg.view.AddSpinCtrl(ctn_win_size,
                             proportion=0,
                             flag=wx.EXPAND,
                             widget_name='window_size',
                             max=1024,
                             initial=256)
        #
        ctn_overlap_size = dlg.view.AddCreateContainer(
            'StaticBox',
            label='Overlap size (samples)',
            orient=wx.VERTICAL,
            proportion=0,
            flag=wx.EXPAND | wx.TOP,
            border=5)
        dlg.view.AddSpinCtrl(ctn_overlap_size,
                             proportion=0,
                             flag=wx.EXPAND,
                             widget_name='noverlap',
                             max=512,
                             initial=128)
        #
        dlg.view.SetSize((230, 260))
        result = dlg.view.ShowModal()
        #
        if result == wx.ID_OK:
            results = dlg.get_results()
            if results.get('spectrogram_type'):
                #
                print('\ndo_STFT:', toc.get_data_object_uid())
                #
                di_uid, di_data = toc.get_last_dimension_index()
                data_index = OM.get(di_uid)

                unit = uom.get_unit(data_index.unit)
                dim = uom.get_unit_dimension(unit.dimension)

                print(unit.dimension, dim, dim.name)
                if dim.name == 'time':
                    print('\nConvertendo {} de {} para {}.'.format(
                        dim.name, data_index.unit, 's'))
                    di_data = uom.convert(di_data, data_index.unit, 's')

                elif dim.name == 'length':
                    print('\nConvertendo {} de {} para {}.'.format(
                        dim.name, data_index.unit, 'm'))
                    di_data = uom.convert(di_data, data_index.unit, 'm')

                else:
                    print('\nNao converteu')
                # new_data = uom.convert(obj.data, obj.unit, new_unit_name)

                #
                start_value = di_data[0]
                step_value = di_data[1] - di_data[0]
                #
                print('start_value: {} - step_value: {}'.format(
                    start_value, step_value))
                #
                dm_data = toc.get_filtered_data()
                #
                # STFT(x, window_size, noverlap, time_start, Ts, mode='psd'):
                #                print('start_value, step_value:', start_value, step_value)

                spec_type = results.get('spectrogram_type')

                stft_data, freq_values, index_values = STFT(
                    dm_data,
                    results.get('window_size'),
                    results.get('noverlap'),
                    start_value,
                    step_value,
                    mode=spec_type)
                #                freq_values *= 1000

                #
                #                print ('\n\nRetornou')
                data_out = np.zeros((len(di_data), len(freq_values)))
                stft_index_step = index_values[1] - index_values[0]
                stft_index_start = index_values[0] - (stft_index_step / 2)
                stft_index_end = index_values[-1] + (stft_index_step / 2)
                #
                #                print('Orig shape:', dm_data.shape)
                #                print('Freq Index Shape:', len(freq_values), len(index_values), stft_data.shape)
                #                print('Freqs:', np.nanmin(freq_values), np.nanmax(freq_values))
                #                print('Indexes:', index_values)
                #
                #                print ('\n\n', stft_index_start, stft_index_end)

                for idx, time in enumerate(di_data):
                    if time >= stft_index_start and time < stft_index_end:
                        stft_index_idx = int(
                            (time - stft_index_start) // stft_index_step)
                        #                        print(idx, time, stft_index_start, stft_index_step, stft_index_idx)

                        data_out[idx] = stft_data[stft_index_idx]

                # print '\n\n'

                data_out = data_out.T

                #                print()
                #                print('data_out.shape:', data_out.shape)
                #                print()

                #
                if spec_type == 'PHASE':
                    spec_type = 'PHASE_UNWRAPPED'
                elif spec_type == 'ANGLE':
                    spec_type = 'PHASE'
                #

                spectogram = OM.new('spectogram',
                                    data_out,
                                    name=toc.get_data_name() + '_STFT',
                                    datatype=results.get('spectrogram_type'))
                if not OM.add(spectogram, toc.get_data_object_uid()):
                    msg = 'Object was not added. tid={\'spectogram\'}'
                    raise Exception(msg)
                    #
                freq_index = OM.new('data_index',
                                    freq_values,
                                    name='Frequency',
                                    unit='Hz',
                                    datatype='FREQUENCY')
                if not OM.add(freq_index, spectogram.uid):
                    raise Exception('Frequency Index was not added.')
                    #
                spectogram._create_data_index_map([freq_index.uid], [di_uid])
    except Exception as e:
        print('ERROR:', e)
        # pass
    finally:
        UIM.remove(dlg.uid)