Ejemplo n.º 1
0
    def OnBtnGenerateLogMsgs(self, event):
        # If the Log window is not open, open it.
        if not self.logFrame:
            # Simulate a 'Show Log' event
            evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self.logB.GetId())
            evt.SetEventObject(self.logB)
            wx.PostEvent(self.logB, evt)
            wx.Yield()

        lines_of_output = 10
        id = self.worker.beginTest(LongRunningProcess, lines_of_output)
Ejemplo n.º 2
0
 def swap(self, i, j):
     self.index_mapping[i], self.index_mapping[j] = self.index_mapping[
         j], self.index_mapping[i]
     self.SetString(i, self.data[self.index_mapping[i]])
     self.SetString(j, self.data[self.index_mapping[j]])
     self.selected_items[i], self.selected_items[j] = self.selected_items[
         j], self.selected_items[i]
     # self.update_selection()
     # print("Updated mapping:", self.index_mapping)
     new_event = wx.PyCommandEvent(wx.EVT_LISTBOX.typeId, self.GetId())
     self.GetEventHandler().ProcessEvent(new_event)
Ejemplo n.º 3
0
    def _processEvt(self, commandEvent, point):
        """ 
		Process the command event passed at the given point
		"""
        evt = wx.PyCommandEvent(commandEvent)
        mySch, myDate, dateExacte = self._findSchedule(point)
        evt.schedule = mySch
        evt.date = myDate
        evt.dateExacte = dateExacte
        evt.SetEventObject(self)
        self.ProcessEvent(evt)
Ejemplo n.º 4
0
    def test_check_sample_orientation_bad_good(self):
        analysis_menu = self.get_menu_from_frame(self.frame, "Analysis")
        check_sample_menu = analysis_menu.FindItemById(
            analysis_menu.FindItem("Sample Orientation")).GetSubMenu()

        check_orient_menu_evt = wx.PyCommandEvent(
            wx.EVT_MENU.typeId,
            check_sample_menu.FindItem("&Check Sample Orientations\tCtrl-O"))
        mark_sample_bad_menu_evt = wx.PyCommandEvent(
            wx.EVT_MENU.typeId,
            check_sample_menu.FindItem("&Mark Sample Bad\tCtrl-."))
        mark_sample_good_menu_evt = wx.PyCommandEvent(
            wx.EVT_MENU.typeId,
            check_sample_menu.FindItem("&Mark Sample Good\tCtrl-,"))

        self.assertFalse(self.frame.check_orient_on)
        self.frame.ProcessEvent(check_orient_menu_evt)
        self.assertFalse(self.frame.check_orient_on)

        self.ie_add_n_fits_to_all(n_fits)

        self.assertFalse(self.frame.check_orient_on)
        self.frame.ProcessEvent(check_orient_menu_evt)
        self.assertTrue(self.frame.check_orient_on)

        self.frame.ProcessEvent(mark_sample_bad_menu_evt)
        samp = self.frame.Data_hierarchy['sample_of_specimen'][self.frame.s]
        specs = self.frame.Data_hierarchy['samples'][samp]['specimens']
        for s in specs:
            for comp in self.frame.pmag_results_data['specimens'][s]:
                self.assertTrue(comp in self.frame.bad_fits)

        self.frame.mark_fit_good(comp, spec=s)
        self.assertTrue(comp in self.frame.bad_fits)

        self.frame.ProcessEvent(mark_sample_good_menu_evt)
        samp = self.frame.Data_hierarchy['sample_of_specimen'][self.frame.s]
        specs = self.frame.Data_hierarchy['samples'][samp]['specimens']
        for s in specs:
            for comp in self.frame.pmag_results_data['specimens'][s]:
                self.assertTrue(comp not in self.frame.bad_fits)
Ejemplo n.º 5
0
def post_event(evt_handler, event_binder, source=None, **kwargs):
    '''Post an event to an evt_handler.'''
    # todo: Use wherever I post events
    # todo: possibly it's a problem that I'm using PyEvent here for any type of
    # event, because every event has its own type. but i don't know how to get
    # the event type from `event_binder`. problem.
    event = wx.PyCommandEvent(event_binder.evtType[0],
                              source.GetId() if source else 0)
    for key, value in kwargs.iteritems():
        setattr(event, key, value)
    event.SetEventType(event_binder.evtType[0])
    wx.PostEvent(evt_handler, event)
Ejemplo n.º 6
0
    def on_fragment_completion(self, event):
        """Clears the current subtitle and user's answer when current fragment
        was successfully complete.

        :param event: Event that entailed an execution of the callback
        :type event: :class:`events.FragmentComplete`

        """
        self.progress_gauge.SetValue(self.verificator.fragment_length())
        self.verificator.clear_subtitle(complete=True)
        self.answer_edit.ChangeValue(u'')
        wx.PostEvent(self, wx.PyCommandEvent(wx.EVT_BUTTON.typeId, ids.PLAY))
Ejemplo n.º 7
0
    def setFilterRange(self, nRange):
        """ Sets the range to filter """
        assert type(nRange) is list, "Incorrect input type"
        assert self.axesRange[self.filterAxis][0] <= nRange[
            0] <= self.axesRange[self.filterAxis][1], "Out of range"
        assert self.axesRange[self.filterAxis][0] <= nRange[
            1] <= self.axesRange[self.filterAxis][1], "Out of range"

        self.filterRange = nRange.copy()
        # Send event to redraw
        wx.PostEvent(self.GetEventHandler(),
                     wx.PyCommandEvent(wx.EVT_PAINT.typeId, self.GetId()))
Ejemplo n.º 8
0
    def ie_add_n_fits_to_all(self,n):
        #test initialization of ie
        tools_menu = self.get_menu_from_frame(self.frame, "Tools")
        open_ie_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId, tools_menu.FindItem("&Interpretation editor\tCtrl-E"))
        self.frame.ProcessEvent(open_ie_evt)
        self.assertTrue(self.frame.ie_open)
        ie = self.frame.ie
        addall_evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, ie.add_all_button.GetId())

        for i in range(n):
            steps = self.frame.Data[self.frame.s]['zijdblock_steps']
            tmin=steps[rn.randint(0,len(steps)-3)]
            tmax=steps[rn.randint(steps.index(tmin)+2,len(steps)-1)]
            ie.tmin_box.SetValue(tmin)
            ie.tmax_box.SetValue(tmax)
            ie.name_box.Clear()
            ie.name_box.WriteText("test%d"%i)
            self.assertEqual(ie.tmin_box.GetValue(),tmin)
            self.assertEqual(ie.tmax_box.GetValue(),tmax)
            self.assertEqual(ie.name_box.GetValue(),"test%d"%i)
            wx.CallAfter(ie.ProcessEvent, addall_evt)
Ejemplo n.º 9
0
    def test_main_app(self):
        '''
        Test Main app opening
        '''
        new_env = dict(os.environ)
        new_env['DISPLAY'] = '0.0'
        app = AppGeni(False)
        frame = MainMenu(None)
        frame.get_validation_status(True)
        assert (frame.validation_status)
        frame.get_validation_status(False)
        self.assertFalse(frame.validation_status)

        self.assertFalse(app.provide_validation_key())

        #This one checks to call the geni_fs_import
        evt2 = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, frame.m_button4.GetId())
        frame.OnClickIntroductionKey(evt2)
        #Let's call the geni key caller
        evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, frame.m_button1.GetId())
        frame.OnClickIntroductionKey(evt)
Ejemplo n.º 10
0
    def test_VGP_viewer(self):
        tools_menu = self.get_menu_from_frame(self.frame, "Tools")

        viewVGPs_menu_evt = wx.PyCommandEvent(
            wx.EVT_MENU.typeId,
            tools_menu.FindItem("&View VGPs\tCtrl-Shift-V"))
        self.frame.ProcessEvent(viewVGPs_menu_evt)

        self.ie_add_n_fits_to_all(n_fits)

        #test actual VGP calculation and display
        self.frame.ProcessEvent(viewVGPs_menu_evt)
Ejemplo n.º 11
0
 def test_PyCommandEvent(self):
     id = wx.NewId()
     typ = wx.NewEventType()
     evt = wx.PyCommandEvent(id, typ)
     evt.newAttr = "hello"
     evt2 = evt.Clone()
     self.assertTrue(type(evt2) == wx.PyCommandEvent)
     self.assertTrue(evt is not evt2)
     self.assertTrue(getattr(evt2, 'newAttr'))
     self.assertTrue(evt.newAttr == evt2.newAttr)
     self.assertTrue(evt.Id == evt2.Id)
     self.assertTrue(evt.EventType == evt2.EventType)
Ejemplo n.º 12
0
 def _imageNext(self, event):
     """
     Called when the slideTimer's timer event fires. Loads the next picture
     """
     self._btnNextInfo = getattr(self, 'btnNext')
     evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId,
                             self._btnNextInfo.GetId())
     evt.SetEventObject(self.btnNext)
     wx.PostEvent(self.btnNext, evt)
     # Reset the gauge
     self.ssDelayGauge.SetValue(self.gaugeRange)
     self.gaugeRemaining = self.gaugeRange
Ejemplo n.º 13
0
 def test_log_view(self):
     """
     Test ability to open log view.
     """
     logView = LogView(self.frame)
     pyCommandEvent = wx.PyCommandEvent(wx.wxEVT_COMMAND_CHECKBOX_CLICKED)
     logView.debugCheckBox.SetValue(True)
     logView.OnDebugLogging(pyCommandEvent)
     self.assertEqual(logger.GetLevel(), logging.DEBUG)
     logView.debugCheckBox.SetValue(False)
     logView.OnDebugLogging(pyCommandEvent)
     self.assertEqual(logger.GetLevel(), logging.INFO)
Ejemplo n.º 14
0
    def test_fit_next_prev(self):
        edit_menu = self.get_menu_from_frame(self.frame, "Edit")

        nextfit_menu_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId,edit_menu.FindItem("&Next interpretation\tCtrl-Up"))
        prevfit_menu_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId,edit_menu.FindItem("&Previous interpretation\tCtrl-Down"))
        add_fit_evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId,self.frame.add_fit_button.GetId())

        self.frame.ProcessEvent(add_fit_evt)
        self.frame.ProcessEvent(add_fit_evt)
        self.frame.ProcessEvent(add_fit_evt)
        self.frame.ProcessEvent(add_fit_evt)
        fits = self.frame.pmag_results_data['specimens'][self.frame.s]
        ci = fits.index(self.frame.current_fit)

        for i in range(len(fits)+ci, ci, -1):
            self.assertEqual(fits[i%len(fits)], self.frame.current_fit)
            self.frame.ProcessEvent(nextfit_menu_evt)

        ci = fits.index(self.frame.current_fit)
        for i in range(ci, len(fits)+ci):
            self.assertEqual(fits[i%len(fits)], self.frame.current_fit)
            self.frame.ProcessEvent(prevfit_menu_evt)
Ejemplo n.º 15
0
 def OnOk(self, event):
     selitem = self.tree.GetSelection()
     if not selitem.IsOk():
         return
     dstpath = self.tree.GetItemPyData(selitem)
     if not dstpath:
         return
     self.path = dstpath
     self.dirstack = self.get_dirstack(selitem)
     cw.cwpy.setting.installed_dir[self.scedir] = self.get_dirstack(selitem)
     self.SetReturnCode(wx.ID_OK)
     btnevent = wx.PyCommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, wx.ID_OK)
     self.ProcessEvent(btnevent)
Ejemplo n.º 16
0
    def test_add_delete_fit(self):
        add_fit_evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId,
                                        self.frame.add_fit_button.GetId())
        delete_fit_evt = wx.PyCommandEvent(
            wx.EVT_BUTTON.typeId, self.frame.delete_fit_button.GetId())

        edit_menu = self.get_menu_from_frame(self.frame, "Edit")

        add_fit_menu_evt = wx.PyCommandEvent(
            wx.EVT_MENU.typeId,
            edit_menu.FindItem("&New interpretation\tCtrl-N"))
        delete_fit_menu_evt = wx.PyCommandEvent(
            wx.EVT_MENU.typeId,
            edit_menu.FindItem("&Delete interpretation\tCtrl-D"))

        #add fit with no bounds using menu
        self.frame.ProcessEvent(add_fit_menu_evt)
        self.assertEqual(
            len(self.frame.pmag_results_data['specimens'][self.frame.s]), 1)
        #add fit with bounds using button
        tmin = self.frame.Data[self.frame.s]['zijdblock_steps'][0]
        tmax = self.frame.Data[self.frame.s]['zijdblock_steps'][-1]
        self.frame.tmin_box.SetValue(tmin)
        self.frame.tmax_box.SetValue(tmax)
        self.frame.ProcessEvent(add_fit_evt)
        self.assertEqual(
            len(self.frame.pmag_results_data['specimens'][self.frame.s]), 2)
        self.assertEqual(self.frame.tmin_box.GetValue(), tmin)
        self.assertEqual(self.frame.tmax_box.GetValue(), tmax)
        self.assertEqual(self.frame.current_fit.tmin, tmin)
        self.assertEqual(self.frame.current_fit.tmax, tmax)

        self.frame.ProcessEvent(delete_fit_menu_evt)
        self.assertEqual(
            len(self.frame.pmag_results_data['specimens'][self.frame.s]), 1)
        self.frame.ProcessEvent(delete_fit_evt)
        self.assertEqual(
            len(self.frame.pmag_results_data['specimens'][self.frame.s]), 0)
Ejemplo n.º 17
0
 def keep_updated(self):
     """Periodically refresh the displayed settings."""
     from time import time,sleep
     while True:
         try:
             t0 = time()
             while time() < t0+self.refresh_period: sleep(0.5)
             if self.Shown:
                 self.update_data()
                 if self.data_changed:
                     event = wx.PyCommandEvent(wx.EVT_TIMER.typeId,self.Id)
                     # call OnUpdate in GUI thread
                     wx.PostEvent(self.EventHandler,event)
         except wx.PyDeadObjectError: break
Ejemplo n.º 18
0
 def __on_pref_menu(self, event):
     settings = edsettings.EDSettings(self, wx.ID_ANY, "Settings Configuration")
     
     if settings.ShowModal() == wx.ID_OK:
         if self.stop_button.IsEnabled():
             self.log.info("The preferences have changed. Stop the proxy and then attempt to restart it.")
             
             self.stop_button.Disable()
             self.__stop()
             self.start_button.Enable()
             
             wx.PostEvent(self.GetEventHandler(), wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self.start_button.GetId()))
         
     settings.Destroy()
Ejemplo n.º 19
0
 def SetData(self, nData):
     """
     Insert the media at the front of the list of data.
     The purpose is to have a data history
     """
     if nData <= self.Range[0]:
         self.Range[0] = nData - 1
     if nData >= self.Range[1]:
         self.Range[1] = nData + 1
     # Insert at front most recent value
     self.data.insert(0, nData)
     # Send event for redrawing (update)
     wx.PostEvent(self.GetEventHandler(),
                  wx.PyCommandEvent(wx.EVT_PAINT.typeId, self.GetId()))
 def OnType(self, event):
     """Called when any text is typed"""
     debug("%s: Key %s" % (self.Name, key_name(event.KeyCode)))
     skip_event = True
     old_bkg = wx.TextCtrl.GetBackgroundColour(self)
     if event.KeyCode == wx.WXK_ESCAPE:
         # On ESC, cancel the editing and replace the original text.
         self.cancel_edit()
     elif event.KeyCode == wx.WXK_TAB:
         # Tab navigates between controls shifting the keyboard focus.
         if self.RequireEnter: self.cancel_edit()
         else:
             changed = (self.DiplayedValue != self.CachedValue)
             self.accept_edit()
             if changed:
                 # Make sure the callback for EVT_TEXT_ENTER is called.
                 new_event = wx.PyCommandEvent(wx.EVT_TEXT_ENTER.typeId,
                                               self.Id)
                 wx.PostEvent(self.EventHandler, new_event)
     elif event.KeyCode == wx.WXK_RETURN:
         skip_event = False
         changed = (self.DiplayedValue != self.CachedValue)
         self.accept_edit()
         if changed:
             # Make sure the callback for EVT_TEXT_ENTER is called.
             new_event = wx.PyCommandEvent(wx.EVT_TEXT_ENTER.typeId,
                                           self.Id)
             wx.PostEvent(self.EventHandler, new_event)
     else:
         # Enter 'editing mode' by changing the background color.
         self.Edited = True
         wx.TextCtrl.SetBackgroundColour(self, self.EditedBackgroundColour)
         wx.TextCtrl.SetForegroundColour(self, self.EditedForegroundColour)
     if wx.TextCtrl.GetBackgroundColour(self) != old_bkg: self.Refresh()
     # Pass this event on to further event handlers bound to this event.
     # Otherwise, the typed text does not appear in the window.
     if skip_event: event.Skip()
Ejemplo n.º 21
0
    def test_read_write_redo(self):
        self.frame.COORDINATE_SYSTEM = 'specimen'
        self.mark_all_meas_good(self.frame)
        self.frame.update_selection()

        self.assertFalse(self.frame.ie_open)
        self.frame.on_menu_edit_interpretations(-1)
        self.assertTrue(self.frame.ie_open)
        ie = self.frame.ie

        addall_evt = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, ie.add_all_button.GetId())

        ie.ProcessEvent(addall_evt)
        ie.ProcessEvent(addall_evt)
        ie.ProcessEvent(addall_evt)

        file_menu = self.get_menu_from_frame(self.frame, "File")

        importredo_menu_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId,file_menu.FindItem("&Import interpretations from a redo file\tCtrl-R"))
        writeredo_menu_evt = wx.PyCommandEvent(wx.EVT_MENU.typeId,file_menu.FindItem("&Save interpretations to a redo file\tCtrl-S"))

        self.frame.ProcessEvent(writeredo_menu_evt)
        old_frame = str(self.frame)
        old_interpretations = []
        for speci in list(self.frame.pmag_results_data['specimens'].keys()):
            old_interpretations += sorted(self.frame.pmag_results_data['specimens'][speci],key=fit_key)

        self.frame.clear_interpretations()

        self.frame.ProcessEvent(importredo_menu_evt)
        imported_frame = str(self.frame)
        imported_interpretations = []
        for speci in list(self.frame.pmag_results_data['specimens'].keys()):
            imported_interpretations += sorted(self.frame.pmag_results_data['specimens'][speci],key=fit_key)

        for ofit,ifit in zip(old_interpretations,imported_interpretations):
            self.assertTrue(ofit.equal(ifit))
Ejemplo n.º 22
0
    def on_repeat(self, event):
        """Rewinds a position in a video stream to the beginning of the current
        subtitle fragment.

        :param event: Event which entailed execution of the callback
        :type event: :class:`wx.ScrollEvent`

        """
        if self.verificator.has_subtitle():
            last = self.verificator.get_subtitle()
            self.video.Seek(
                int((last.start.hours * 3600 + last.start.minutes * 60 +
                     last.start.seconds) * 1000))
            wx.PostEvent(self, wx.PyCommandEvent(wx.EVT_BUTTON.typeId,
                                                 ids.PLAY))
Ejemplo n.º 23
0
    def StopAllJobs(self):
        """
		Stop  tasks 
		"""
        for control in self.panel.GetChildren():
            try:
                if isinstance(
                        control, wx.Button
                ) and control.GetLabel() != control.__start_label__:
                    control.SetLabel(control.__stop_label__)
                    control.GetEventHandler().ProcessEvent(
                        wx.PyCommandEvent(wx.EVT_BUTTON.typeId,
                                          control.GetId()))
            except AttributeError:
                pass
Ejemplo n.º 24
0
 def change_frame(self, frame_image_file):
     if os.path.exists(frame_image_file):
         # 记录新边框图片为当前边框图片,并设置其透明
         self._frame_image = wx.Image(frame_image_file, wx.BITMAP_TYPE_ANY)
         if not self._frame_image.HasAlpha():
             self._frame_image.InitAlpha()
         # 获取当前边框图片的副本
         frame_image = self._frame_image.Copy()
         # 将边框图片副本调整为Panel的大小
         client_size = self.GetClientSize()
         frame_image = frame_image.Rescale(client_size[0], client_size[1])
         # 生成边框图片的bitmap
         self._frame_bitmap = wx.Bitmap(frame_image)
         # 发送绘制背景消息
         wx.QueueEvent(self, wx.PyCommandEvent(wx.wxEVT_ERASE_BACKGROUND))
Ejemplo n.º 25
0
    def ErrorManager(self, msg):
        """ An error is occured. 
		"""
        ### simulate event button for the code editor
        from Core.Components.Components import MsgBoxError

        event = wx.PyCommandEvent(wx.EVT_BUTTON.typeId, self._btn1.GetId())

        ### try to find the file which have the error from traceback
        try:
            typ, val, tb = msg.data
            trace = traceback.format_exception(typ, val, tb)[-2].split(',')
            path = trace[0]
        except Exception, info:
            path = ""
Ejemplo n.º 26
0
    def fdir_dialogue(self, event):

        fdir = ""  # Use  folder as a flag
        currentdir = self.dirchooser.textctrl.GetValue()
        dlg = wx.DirDialog(self, defaultPath = currentdir)
        if dlg.ShowModal() == wx.ID_OK:
            fdir = dlg.GetPath() + "/"
            dlg.SetPath(fdir)
        dlg.Destroy()  # best to do this sooner than later

        if fdir:
            self.dirchooser.textctrl.SetValue(fdir)
            event = wx.PyCommandEvent(wx.EVT_TEXT_ENTER.typeId, 
                                      self.dirchooser.textctrl.GetId())
            self.GetEventHandler().ProcessEvent(event)
            self.fdir = fdir
 def _navigateUpOrDown(self, keyEvent):
     item = self.GetSelection()
     if item:
         navigationMethods = {
             wx.WXK_DOWN: self._tree.GetNextItem,
             wx.WXK_UP: self._tree.GetPreviousItem
         }
         getNextItem = navigationMethods[keyEvent.GetKeyCode()]
         nextItem = getNextItem(item)
     else:
         nextItem = self._tree.GetFirstItem()
     if nextItem:
         self.SetSelection(nextItem)
         event = wx.PyCommandEvent(wx.wxEVT_COMMAND_COMBOBOX_SELECTED)
         event.SetEventObject(self)
         self.ProcessEvent(event)
Ejemplo n.º 28
0
	def _cExpandoTextCtrl_after_on_focus(self):
		# robustify against PyDeadObjectError - since we are called
		# from wx's CallAfter this SoapCtrl may be gone by the time
		# we get to handling this layout request, say, on patient
		# change or some such
		if not self:
			return

		#wx. CallAfter(self._adjustCtrl)
		evt = wx.PyCommandEvent(wx.lib.expando.wxEVT_ETC_LAYOUT_NEEDED, self.GetId())
		evt.SetEventObject(self)
		#evt.height = None
		#evt.numLines = None
		#evt.height = self.GetSize().height
		#evt.numLines = self.GetNumberOfLines()
		self.GetEventHandler().ProcessEvent(evt)
 def FinalECRadSetup(self, scenario_updated):
     # Thinga we need to do just before we get going
     if(scenario_updated):
             self.Results.Scenario.autosave()
     self.Results.set_dimensions()
     self.ProgressBar.SetRange(self.Results.Scenario["dimensions"]["N_time"])
     evt = NewStatusEvt(Unbound_EVT_NEW_STATUS, self.GetId())
     evt.SetStatus('ECRad is running - please wait.')
     wx.PostEvent(self, evt)
     self.Progress_label.SetLabel("ECRad running - ({0:d}/{1:d})".format(self.index + 1,len(self.Results.Scenario["time"])))
     self.ProgressBar.SetValue(self.index)
     self.ExportButton.Disable()
     self.NameButton.Disable()
     self.StartECRadButton.Disable()
     evt = wx.PyCommandEvent(Unbound_EVT_MAKE_ECRAD, self.GetId())
     wx.PostEvent(self, evt)
Ejemplo n.º 30
0
 def changeAxes(self, axis1, axis2):
     """ Change the position of the axis 1 to the position of the axis 2, and viceversa """
     # Get the position
     index1 = 0
     index2 = 0
     for i in range(len(self.axesOrder)):
         if self.axesOrder[i] == axis1:
             index1 = i
         if self.axesOrder[i] == axis2:
             index2 = i
     # Change the order
     self.axesOrder[index1] = axis2
     self.axesOrder[index2] = axis1
     # Send event to redraw
     wx.PostEvent(self.GetEventHandler(),
                  wx.PyCommandEvent(wx.EVT_PAINT.typeId, self.GetId()))