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)
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
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
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)
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))
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
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)
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()
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)
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')
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
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)
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') )
def _data_navigator_helper(self, *args, **kwargs): UIM = UIManager() nav_ctrl = UIM.create('navigator_controller', parent_uid=args[0]) nav_ctrl.view.Show()
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')
def _OnEditFormat(self, event): UIM = UIManager() lp_editor_ctrl = UIM.create('well_plot_editor_controller', self._controller_uid) lp_editor_ctrl.view.Show()
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)
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)