예제 #1
0
    def __init__(self, parent, iBayesactSim, iOptionsAgentPanel, **kwargs):
        wx.Panel.__init__(self, parent, **kwargs)

        self.m_BayesactSim = iBayesactSim
        self.m_OptionsAgentPanel = iOptionsAgentPanel

        self.m_BayesactSimThread = None


        # These are for all the options you can fill into the simulation
        ########################################################################################
        self.m_TextBoxSize = wx.DefaultSize
        self.m_ComboBoxSize = wx.DefaultSize


        wx.StaticText(self, -1, cOptionSimConstants.m_NumberOfSamples, pos=(10, 10))
        self.m_NumberOfSamplesTextBox = wx.TextCtrl(self, -1, pos=(170, 8), size=self.m_TextBoxSize,
                                                   value=str(cOptionSimConstants.m_NumberOfSamplesDefault),
                                                   validator=cNumericValidatorTextBox(iDecimals=False, iNegative=False))


        wx.StaticText(self, -1, cOptionSimConstants.m_NumberOfTrials, pos=(10, 40))
        self.m_NumberOfTrialsTextBox = wx.TextCtrl(self, -1, pos=(170, 38), size=self.m_TextBoxSize,
                                                   value=str(cOptionSimConstants.m_NumberOfTrialsDefault),
                                                   validator=cNumericValidatorTextBox(iDecimals=False, iNegative=False))


        wx.StaticText(self, -1, cOptionSimConstants.m_NumberOfExperiments, pos=(10, 70))
        self.m_NumberOfExperimentsTextBox = wx.TextCtrl(self, -1, pos=(170, 68), size=self.m_TextBoxSize,
                                                        value=str(cOptionSimConstants.m_NumberOfExperimentsDefault),
                                                        validator=cNumericValidatorTextBox(iDecimals=False, iNegative=False))


        wx.StaticText(self, -1, cOptionSimConstants.m_ClientKnowledge, pos=(10, 100))
        self.m_ClientKnowledgeChoice = wx.ComboBox(self, -1, pos=(170, 98), size=self.m_ComboBoxSize,
                                                   choices=cOptionSimConstants.m_KnowledgeChoices,
                                                   style=wx.CHOICEDLG_STYLE)
        self.m_ClientKnowledgeChoice.SetStringSelection(cOptionSimConstants.m_ClientKnowledgeDefault)


        wx.StaticText(self, -1, cOptionSimConstants.m_AgentKnowledge, pos=(10, 130))
        self.m_AgentKnowledgeChoice = wx.ComboBox(self, -1, pos=(170, 128), size=self.m_ComboBoxSize,
                                                  choices=cOptionSimConstants.m_KnowledgeChoices,
                                                  style=wx.CHOICEDLG_STYLE)
        self.m_AgentKnowledgeChoice.SetStringSelection(cOptionSimConstants.m_AgentKnowledgeDefault)


        wx.StaticText(self, -1, cOptionSimConstants.m_MaxHorizon, pos=(10, 160))
        self.m_MaxHorizonTextBox = wx.TextCtrl(self, -1, pos=(170, 158), size=self.m_TextBoxSize,
                                               value=str(cOptionSimConstants.m_MaxHorizonDefault),
                                               validator=cNumericValidatorTextBox(iDecimals=False, iNegative=False))


        wx.StaticText(self, -1, cOptionSimConstants.m_RougheningNoise, pos=(10, 220))
        self.m_RougheningNoiseTextBox = wx.TextCtrl(self, -1, pos=(170, 218), size=self.m_TextBoxSize,
                                                    value=str(cOptionSimConstants.m_RougheningNoiseDefault),
                                                    validator=cNumericValidatorTextBox(iDecimals=True, iNegative=True))
    def __init__(self, parent, iBayesactSim, iOptionsBayesactPanel, iBayesactInteractiveGuiPanel=None, **kwargs):
        wx.Panel.__init__(self, parent, **kwargs)

        self.m_OptionsBayesactSimPanel = iOptionsBayesactPanel
        self.m_BayesactSim = iBayesactSim
        self.m_BayesactInteractiveGuiPanel = iBayesactInteractiveGuiPanel

        # You can use self.GetParent() to get the parent, but I like things explicit
        self.m_SimInteractiveTabs = parent



        # These are for all the options you can fill into the simulation
        ########################################################################################
        #self.m_SliderSize = (180, 24)
        #self.m_TextBoxSize = (110, 28)
        #self.m_ComboBoxSize = (110, 28)
        #self.m_ButtonSize = (190, 28)
        self.m_SliderSize = wx.DefaultSize
        self.m_TextBoxSize = wx.DefaultSize
        self.m_ComboBoxSize = wx.DefaultSize
        self.m_ButtonSize = (110, 30)

        self.m_StaticTextXAlign = 10
        self.m_TextboxXAlign = 170
        self.m_SliderXAlign = 290

        # This here specifies where the client and agent is aligned on the y co-ordinates
        # The reason why the initialization statements here look long is because I coded them to be relative to each other
        # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        self.m_ClientYAlign = 40
        self.m_AgentYAlign = 200
        self.m_HelpButtonXAlign = 60
        # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        macButtonYDiscrepancy = 0
        if (cSystemConstants.m_OS == cSystemConstants.m_MacOS):
            macButtonYDiscrepancy = -5

        # To draw a rectangle to outline the clients and agents
        self.Bind(wx.EVT_PAINT, self.onDrawOutlines)

        self.m_ClientStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_ClientText, pos=(self.m_StaticTextXAlign, self.m_ClientYAlign - 35))
        # Client Options
        #################################################################
        # The Client and Agent alpha and beta values
        # Box sizes for windows and mac are: (110 by 28) and (106 by 20) pixels respectively
        self.m_ClientAlphaStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_ClientAlpha, pos=(self.m_StaticTextXAlign, self.m_ClientYAlign))
        self.m_ClientAlphaTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_ClientAlphaStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                                value=str(cOptionSimConstants.m_ClientAlphaDefault),
                                                validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_ClientAlphaTextBox.Bind(wx.EVT_TEXT, self.onSetClientAlphaFlag)

        self.m_ClientAlphaButton = wx.Button(self, -1, "?", pos=(self.m_HelpButtonXAlign, self.m_ClientAlphaStaticText.GetPosition()[1]+macButtonYDiscrepancy), size=(20, 20))
        self.m_ClientAlphaButton.Bind(wx.EVT_BUTTON, lambda event, message="Alpha", title="Help": self.onSpawnMessageBox(event, message, title))

        # Default size on windows is (100, 24)
        self.m_ClientAlphaSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_ClientAlphaDefault*cSliderConstants.m_Precision,
                                             pos=(self.m_SliderXAlign, self.m_ClientAlphaTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                             minValue=cOptionSimConstants.m_MinAlpha*cSliderConstants.m_Precision,
                                             maxValue=cOptionSimConstants.m_MaxAlpha*cSliderConstants.m_Precision,
                                             style=wx.SL_HORIZONTAL)
        self.m_ClientAlphaSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_ClientAlphaTextBox: self.onChangeValueViaSlider(event, textBox))


        self.m_ClientBetaOfClientStaticTextPosition = self.m_StaticTextXAlign, self.m_ClientAlphaStaticText.GetPosition()[1]+30
        self.m_ClientBetaOfClientStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_ClientBetaOfClient, pos=self.m_ClientBetaOfClientStaticTextPosition)
        self.m_ClientBetaOfClientSubscript_c_StaticText = wx.StaticText(self, -1, cOptionSimConstants.m_Subscript_c, pos=(self.m_ClientBetaOfClientStaticTextPosition[0]+8, self.m_ClientBetaOfClientStaticTextPosition[1]+5))

        self.m_ClientBetaOfClientTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_ClientBetaOfClientStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                                       value=str(cOptionSimConstants.m_ClientBetaOfClientDefault),
                                                       validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_ClientBetaOfClientTextBox.Bind(wx.EVT_TEXT, self.onSetClientBetaOfClientFlag)

        self.m_ClientBetaOfClientButton = wx.Button(self, -1, "?", pos=(self.m_HelpButtonXAlign, self.m_ClientBetaOfClientStaticText.GetPosition()[1]+macButtonYDiscrepancy), size=(20, 20))
        self.m_ClientBetaOfClientButton.Bind(wx.EVT_BUTTON, lambda event, message="Client's Beta of Client", title="Help": self.onSpawnMessageBox(event, message, title))

        self.m_ClientBetaOfClientSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_ClientBetaOfClientDefault*cSliderConstants.m_Precision,
                                                    pos=(self.m_SliderXAlign, self.m_ClientBetaOfClientTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                                    minValue=cOptionSimConstants.m_MinBeta*cSliderConstants.m_Precision,
                                                    maxValue=cOptionSimConstants.m_MaxBeta*cSliderConstants.m_Precision,
                                                    style=wx.SL_HORIZONTAL)
        self.m_ClientBetaOfClientSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_ClientBetaOfClientTextBox: self.onChangeValueViaSlider(event, textBox))


        self.m_ClientBetaOfAgentStaticTextPosition = self.m_StaticTextXAlign, self.m_ClientBetaOfClientStaticText.GetPosition()[1]+30
        self.m_ClientBetaOfAgentStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_ClientBetaOfClient, pos=self.m_ClientBetaOfAgentStaticTextPosition)
        self.m_ClientBetaOfAgentSubscript_a_StaticText = wx.StaticText(self, -1, cOptionSimConstants.m_Subscript_a, pos=(self.m_ClientBetaOfAgentStaticTextPosition[0]+8, self.m_ClientBetaOfAgentStaticTextPosition[1]+5))

        self.m_ClientBetaOfAgentTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_ClientBetaOfAgentStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                                      value=str(cOptionSimConstants.m_ClientBetaOfAgentDefault),
                                                      validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_ClientBetaOfAgentTextBox.Bind(wx.EVT_TEXT, self.onSetClientBetaOfAgentFlag)

        self.m_ClientBetaOfAgentButton = wx.Button(self, -1, "?", pos=(self.m_HelpButtonXAlign, self.m_ClientBetaOfAgentStaticText.GetPosition()[1]+macButtonYDiscrepancy), size=(20, 20))
        self.m_ClientBetaOfAgentButton.Bind(wx.EVT_BUTTON, lambda event, message="Client's Beta of Agent", title="Help": self.onSpawnMessageBox(event, message, title))

        self.m_ClientBetaOfAgentSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_ClientBetaOfAgentDefault*cSliderConstants.m_Precision,
                                                   pos=(self.m_SliderXAlign, self.m_ClientBetaOfAgentTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                                   minValue=cOptionSimConstants.m_MinBeta*cSliderConstants.m_Precision,
                                                   maxValue=cOptionSimConstants.m_MaxBeta*cSliderConstants.m_Precision,
                                                   style=wx.SL_HORIZONTAL)
        self.m_ClientBetaOfAgentSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_ClientBetaOfAgentTextBox: self.onChangeValueViaSlider(event, textBox))


        self.m_ClientGammaStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_ClientGamma, pos=(self.m_StaticTextXAlign, self.m_ClientBetaOfAgentStaticText.GetPosition()[1]+30))
        self.m_ClientGammaTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_ClientGammaStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                               value=str(cOptionSimConstants.m_GammaValueDefault),
                                               validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_ClientGammaTextBox.Bind(wx.EVT_TEXT, self.onSetClientGammaFlag)

        self.m_ClientGammaButton = wx.Button(self, -1, "?", pos=(self.m_HelpButtonXAlign, self.m_ClientGammaStaticText.GetPosition()[1]+macButtonYDiscrepancy), size=(20, 20))
        self.m_ClientGammaButton.Bind(wx.EVT_BUTTON, lambda event, message="Client's Gamma Value", title="Help": self.onSpawnMessageBox(event, message, title))

        self.m_ClientGammaSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_GammaValueDefault*cSliderConstants.m_Precision,
                                            pos=(self.m_SliderXAlign, self.m_ClientGammaTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                            minValue=cOptionSimConstants.m_MinGamma*cSliderConstants.m_Precision,
                                            maxValue=cOptionSimConstants.m_MaxGamma*cSliderConstants.m_Precision,
                                            style=wx.SL_HORIZONTAL)
        self.m_ClientGammaSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_ClientGammaTextBox: self.onChangeValueViaSlider(event, textBox))


        #################################################################


        self.m_AgentStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_AgentText, pos=(self.m_StaticTextXAlign, self.m_AgentYAlign - 35))
        # Agent Options
        #################################################################
        self.m_AgentAlphaStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_AgentAlpha, pos=(self.m_StaticTextXAlign, self.m_AgentYAlign))
        self.m_AgentAlphaTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_AgentAlphaStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                               value=str(cOptionSimConstants.m_AgentAlphaDefault),
                                               validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_AgentAlphaTextBox.Bind(wx.EVT_TEXT, self.onSetAgentAlphaFlag)

        self.m_AgentAlphaButton = wx.Button(self, -1, "?", pos=(self.m_HelpButtonXAlign, self.m_AgentAlphaStaticText.GetPosition()[1]+macButtonYDiscrepancy), size=(20, 20))
        self.m_AgentAlphaButton.Bind(wx.EVT_BUTTON, lambda event, message="Alpha", title="Help": self.onSpawnMessageBox(event, message, title))

        self.m_AgentAlphaSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_AgentAlphaDefault*cSliderConstants.m_Precision,
                                            pos=(self.m_SliderXAlign, self.m_AgentAlphaTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                            minValue=cOptionSimConstants.m_MinAlpha*cSliderConstants.m_Precision,
                                            maxValue=cOptionSimConstants.m_MaxAlpha*cSliderConstants.m_Precision,
                                            style=wx.SL_HORIZONTAL)
        self.m_AgentAlphaSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_AgentAlphaTextBox: self.onChangeValueViaSlider(event, textBox))


        self.m_AgentBetaOfClientStaticTextPosition = self.m_StaticTextXAlign, self.m_AgentAlphaStaticText.GetPosition()[1]+30
        self.m_AgentBetaOfClientStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_AgentBetaOfClient, pos=self.m_AgentBetaOfClientStaticTextPosition)
        self.m_AgentBetaOfClientSubscript_c_StaticText = wx.StaticText(self, -1, cOptionSimConstants.m_Subscript_c, pos=(self.m_AgentBetaOfClientStaticTextPosition[0]+8, self.m_AgentBetaOfClientStaticTextPosition[1]+5))

        self.m_AgentBetaOfClientTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_AgentBetaOfClientStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                                      value=str(cOptionSimConstants.m_AgentBetaOfClientDefault),
                                                      validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_AgentBetaOfClientTextBox.Bind(wx.EVT_TEXT, self.onSetAgentBetaOfClientFlag)

        self.m_AgentBetaOfClientButton = wx.Button(self, -1, "?", pos=(self.m_HelpButtonXAlign, self.m_AgentBetaOfClientStaticText.GetPosition()[1]+macButtonYDiscrepancy), size=(20, 20))
        self.m_AgentBetaOfClientButton.Bind(wx.EVT_BUTTON, lambda event, message="Agent's Beta of Client", title="Help": self.onSpawnMessageBox(event, message, title))

        self.m_AgentBetaOfClientSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_AgentBetaOfClientDefault*cSliderConstants.m_Precision,
                                                   pos=(self.m_SliderXAlign, self.m_AgentBetaOfClientTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                                   minValue=cOptionSimConstants.m_MinBeta*cSliderConstants.m_Precision,
                                                   maxValue=cOptionSimConstants.m_MaxBeta*cSliderConstants.m_Precision,
                                                   style=wx.SL_HORIZONTAL)
        self.m_AgentBetaOfClientSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_AgentBetaOfClientTextBox: self.onChangeValueViaSlider(event, textBox))


        self.m_AgentBetaOfAgentStaticTextPosition = self.m_StaticTextXAlign, self.m_AgentBetaOfClientStaticText.GetPosition()[1]+30
        self.m_AgentBetaOfAgentStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_AgentBetaOfClient, pos=self.m_AgentBetaOfAgentStaticTextPosition)
        self.m_AgentBetaOfAgentSubscript_a_StaticText = wx.StaticText(self, -1, cOptionSimConstants.m_Subscript_a, pos=(self.m_AgentBetaOfAgentStaticTextPosition[0]+8, self.m_AgentBetaOfAgentStaticTextPosition[1]+5))

        self.m_AgentBetaOfAgentTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_AgentBetaOfAgentStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                                     value=str(cOptionSimConstants.m_AgentBetaOfAgentDefault),
                                                     validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_AgentBetaOfAgentTextBox.Bind(wx.EVT_TEXT, self.onSetAgentBetaOfAgentFlag)

        self.m_AgentBetaOfAgentButton = wx.Button(self, -1, "?", pos=(self.m_HelpButtonXAlign, self.m_AgentBetaOfAgentStaticText.GetPosition()[1]+macButtonYDiscrepancy), size=(20, 20))
        self.m_AgentBetaOfAgentButton.Bind(wx.EVT_BUTTON, lambda event, message="Agent's Beta of Agent", title="Help": self.onSpawnMessageBox(event, message, title))

        self.m_AgentBetaOfAgentSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_AgentBetaOfAgentDefault*cSliderConstants.m_Precision,
                                                  pos=(self.m_SliderXAlign, self.m_AgentBetaOfAgentTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                                  minValue=cOptionSimConstants.m_MinBeta*cSliderConstants.m_Precision,
                                                  maxValue=cOptionSimConstants.m_MaxBeta*cSliderConstants.m_Precision,
                                                 style=wx.SL_HORIZONTAL)
        self.m_AgentBetaOfAgentSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_AgentBetaOfAgentTextBox: self.onChangeValueViaSlider(event, textBox))


        self.m_AgentGammaStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_AgentGamma, pos=(self.m_StaticTextXAlign, self.m_AgentBetaOfAgentStaticText.GetPosition()[1]+30))
        self.m_AgentGammaTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_AgentGammaStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                               value=str(cOptionSimConstants.m_GammaValueDefault),
                                               validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_AgentGammaTextBox.Bind(wx.EVT_TEXT, self.onSetAgentGammaFlag)

        self.m_AgentGammaButton = wx.Button(self, -1, "?", pos=(self.m_HelpButtonXAlign, self.m_AgentGammaStaticText.GetPosition()[1]+macButtonYDiscrepancy), size=(20, 20))
        self.m_AgentGammaButton.Bind(wx.EVT_BUTTON, lambda event, message="Agent's Gamma Value", title="Help": self.onSpawnMessageBox(event, message, title))

        self.m_AgentGammaSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_GammaValueDefault*cSliderConstants.m_Precision,
                                            pos=(self.m_SliderXAlign, self.m_AgentGammaTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                            minValue=cOptionSimConstants.m_MinGamma*cSliderConstants.m_Precision,
                                            maxValue=cOptionSimConstants.m_MaxGamma*cSliderConstants.m_Precision,
                                            style=wx.SL_HORIZONTAL)
        self.m_AgentGammaSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_AgentGammaTextBox: self.onChangeValueViaSlider(event, textBox))


        #################################################################


        self.m_EnvironmentNoiseStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_EnvironmentNoise, pos=(self.m_StaticTextXAlign, 340))
        self.m_EnvironmentNoiseTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_EnvironmentNoiseStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize,
                                                     value=str(cOptionSimConstants.m_EnvironmentNoiseDefault),
                                                     validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_EnvironmentNoiseTextBox.Bind(wx.EVT_TEXT, self.onSetEnvironmentNoiseFlag)

        self.m_EnvironmentNoiseSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_EnvironmentNoiseDefault*cSliderConstants.m_Precision,
                                                  pos=(self.m_SliderXAlign, self.m_EnvironmentNoiseTextBox.GetPosition()[1]), size=self.m_SliderSize,
                                                  minValue=cOptionSimConstants.m_MinEnvironmentNoise*cSliderConstants.m_Precision,
                                                  maxValue=cOptionSimConstants.m_MaxEnvironmentNoise*cSliderConstants.m_Precision,
                                                  style=wx.SL_HORIZONTAL)
        self.m_EnvironmentNoiseSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_EnvironmentNoiseTextBox: self.onChangeValueViaSlider(event, textBox))



        self.m_NumberOfStepsStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_NumSteps, pos=(self.m_StaticTextXAlign, 370))
        self.m_NumberOfStepsTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_NumberOfStepsStaticText.GetPosition()[1] - 2), size=self.m_TextBoxSize,
                                                  value=str(cOptionSimConstants.m_NumStepsDefault),
                                                  validator=cNumericValidatorTextBox(iDecimals=False, iNegative=False))
        self.m_NumberOfStepsTextBox.Bind(wx.EVT_TEXT, self.onSetNumStepsFlag)

        self.m_CurrentIterationsStaticText = wx.StaticText(self, -1, "Current Iteration", pos=(self.m_StaticTextXAlign, 400))
        self.m_CurrentIterationsTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_CurrentIterationsStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize, style=wx.TE_READONLY)
        self.m_CurrentIterationsTextBox.SetValue(str(self.m_BayesactSim.total_iterations))

        self.m_PreviousIterationsStaticText = wx.StaticText(self, -1, "Previous Iteration", pos=(self.m_StaticTextXAlign, 430))
        self.m_PreviousIterationsTextBox = wx.TextCtrl(self, -1, pos=(self.m_TextboxXAlign, self.m_PreviousIterationsStaticText.GetPosition()[1]-2), size=self.m_TextBoxSize, style=wx.TE_READONLY)
        self.m_PreviousIterationsTextBox.SetValue("0")


        ########################################################################################


        self.m_StartButton = wx.Button(self, -1, label="Start", pos=(10, 470), size=self.m_ButtonSize)
        self.m_StartButton.Bind(wx.EVT_BUTTON, self.onStartBayesactSim)

        self.m_StepButton = wx.Button(self, -1, label="Step", pos=(140, 470), size=self.m_ButtonSize)
        self.m_StepButton.Bind(wx.EVT_BUTTON, self.onStepBayesactSim)

        self.m_StopButton = wx.Button(self, -1, label="Stop", pos=(270, 470), size=self.m_ButtonSize)
        self.m_StopButton.Bind(wx.EVT_BUTTON, self.onStopBayesactSim)

        #self.m_PauseButton = wx.Button(self, -1, label="Pause", pos=(10, 400), size=(190, 28))
        #self.m_PauseButton.Bind(wx.EVT_BUTTON, self.onPauseBayesactSim)

        #self.m_ResumeButton = wx.Button(self, -1, label="Resume", pos=(10, 430), size=(190, 28))
        #self.m_ResumeButton.Bind(wx.EVT_BUTTON, self.onResumeBayesactSim)

        #self.m_StopButton = wx.Button(self, -1, label="Stop", pos=(10, 460), size=(190, 28))
        #self.m_StopButton.Bind(wx.EVT_BUTTON, self.onStopBayesactSim)


        macImageYDiscrepancy = 0
        if (cSystemConstants.m_OS == cSystemConstants.m_MacOS):
            macImageYDiscrepancy = -3


        # The set mask colour (255, 255, 255) which is white, becomes transparent
        bmp = wx.Image("./gui/images/circleMagenta.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_GreenCircle = wx.StaticBitmap(self, -1, bmp, pos=(10, 525+macImageYDiscrepancy), size=(bmp.GetWidth(), bmp.GetHeight()))
        self.m_Green2StaticText = wx.StaticText(self, -1, "What Client thinks of self", pos=(30, 520))

        bmp = wx.Image("./gui/images/circleRed.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_PinkCircle = wx.StaticBitmap(self, -1, bmp, pos=(10, 545+macImageYDiscrepancy), size=(bmp.GetWidth(), bmp.GetHeight()))
        self.m_Pink2StaticText = wx.StaticText(self, -1, "What Client thinks of agent", pos=(30, 540))

        bmp = wx.Image("./gui/images/circleCyan.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_GoldenrodCircle = wx.StaticBitmap(self, -1, bmp, pos=(10, 565+macImageYDiscrepancy), size=(bmp.GetWidth(), bmp.GetHeight()))
        self.m_Yellow2StaticText = wx.StaticText(self, -1, "What Agent thinks of self", pos=(30, 560))


        bmp = wx.Image("./gui/images/circleBlue.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_BlueCircle = wx.StaticBitmap(self, -1, bmp, pos=(10, 585+macImageYDiscrepancy), size=(bmp.GetWidth(), bmp.GetHeight()))
        self.m_Blue2StaticText = wx.StaticText(self, -1, "What Agent thinks of client", pos=(30, 580))

        bmp = wx.Image("./gui/images/starMagenta.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_CyanStar = wx.StaticBitmap(self, -1, bmp, pos=(240, 523+macImageYDiscrepancy), size=(bmp.GetWidth(), bmp.GetHeight()))
        self.m_CyanStarStaticText = wx.StaticText(self, -1, "Client action", pos=(260, 520))

        bmp = wx.Image("./gui/images/starCyan.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_YellowStar = wx.StaticBitmap(self, -1, bmp, pos=(240, 563+macImageYDiscrepancy), size=(bmp.GetWidth(), bmp.GetHeight()))
        self.m_YellowStarStaticText = wx.StaticText(self, -1, "Agent Action", pos=(260, 560))


        self.updateSettingsFromBayesact()
예제 #3
0
    def __init__(self,
                 parent,
                 iBayesactSim,
                 iOptionsBayesactPanel,
                 iBayesactInteractiveGuiPanel=None,
                 **kwargs):
        wx.Panel.__init__(self, parent, **kwargs)

        self.m_OptionsBayesactSimPanel = iOptionsBayesactPanel
        self.m_BayesactSim = iBayesactSim
        self.m_BayesactInteractiveGuiPanel = iBayesactInteractiveGuiPanel

        # You can use self.GetParent() to get the parent, but I like things explicit
        self.m_SimInteractiveTabs = parent

        # These are for all the options you can fill into the simulation
        ########################################################################################
        #self.m_SliderSize = (180, 24)
        #self.m_TextBoxSize = (110, 28)
        #self.m_ComboBoxSize = (110, 28)
        #self.m_ButtonSize = (190, 28)
        self.m_SliderSize = wx.DefaultSize
        self.m_TextBoxSize = wx.DefaultSize
        self.m_ComboBoxSize = wx.DefaultSize
        self.m_ButtonSize = (110, 30)

        self.m_StaticTextXAlign = 10
        self.m_TextboxXAlign = 170
        self.m_SliderXAlign = 290

        # This here specifies where the client and agent is aligned on the y co-ordinates
        # The reason why the initialization statements here look long is because I coded them to be relative to each other
        # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        self.m_ClientYAlign = 40
        self.m_AgentYAlign = 200
        self.m_HelpButtonXAlign = 60
        # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

        macButtonYDiscrepancy = 0
        if (cSystemConstants.m_OS == cSystemConstants.m_MacOS):
            macButtonYDiscrepancy = -5

        # To draw a rectangle to outline the clients and agents
        self.Bind(wx.EVT_PAINT, self.onDrawOutlines)

        self.m_ClientStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_ClientText,
            pos=(self.m_StaticTextXAlign, self.m_ClientYAlign - 35))
        # Client Options
        #################################################################
        # The Client and Agent alpha and beta values
        # Box sizes for windows and mac are: (110 by 28) and (106 by 20) pixels respectively
        self.m_ClientAlphaStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_ClientAlpha,
            pos=(self.m_StaticTextXAlign, self.m_ClientYAlign))
        self.m_ClientAlphaTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_ClientAlphaStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_ClientAlphaDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_ClientAlphaTextBox.Bind(wx.EVT_TEXT, self.onSetClientAlphaFlag)

        self.m_ClientAlphaButton = wx.Button(
            self,
            -1,
            "?",
            pos=(self.m_HelpButtonXAlign,
                 self.m_ClientAlphaStaticText.GetPosition()[1] +
                 macButtonYDiscrepancy),
            size=(20, 20))
        self.m_ClientAlphaButton.Bind(
            wx.EVT_BUTTON,
            lambda event, message="Alpha", title="Help": self.
            onSpawnMessageBox(event, message, title))

        # Default size on windows is (100, 24)
        self.m_ClientAlphaSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_ClientAlphaDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_ClientAlphaTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinAlpha *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxAlpha *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_ClientAlphaSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_ClientAlphaTextBox: self.
            onChangeValueViaSlider(event, textBox))

        self.m_ClientBetaOfClientStaticTextPosition = self.m_StaticTextXAlign, self.m_ClientAlphaStaticText.GetPosition(
        )[1] + 30
        self.m_ClientBetaOfClientStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_ClientBetaOfClient,
            pos=self.m_ClientBetaOfClientStaticTextPosition)
        self.m_ClientBetaOfClientSubscript_c_StaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_Subscript_c,
            pos=(self.m_ClientBetaOfClientStaticTextPosition[0] + 8,
                 self.m_ClientBetaOfClientStaticTextPosition[1] + 5))

        self.m_ClientBetaOfClientTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_ClientBetaOfClientStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_ClientBetaOfClientDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_ClientBetaOfClientTextBox.Bind(wx.EVT_TEXT,
                                              self.onSetClientBetaOfClientFlag)

        self.m_ClientBetaOfClientButton = wx.Button(
            self,
            -1,
            "?",
            pos=(self.m_HelpButtonXAlign,
                 self.m_ClientBetaOfClientStaticText.GetPosition()[1] +
                 macButtonYDiscrepancy),
            size=(20, 20))
        self.m_ClientBetaOfClientButton.Bind(
            wx.EVT_BUTTON,
            lambda event, message="Client's Beta of Client", title="Help": self
            .onSpawnMessageBox(event, message, title))

        self.m_ClientBetaOfClientSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_ClientBetaOfClientDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_ClientBetaOfClientTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinBeta *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxBeta *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_ClientBetaOfClientSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_ClientBetaOfClientTextBox: self.
            onChangeValueViaSlider(event, textBox))

        self.m_ClientBetaOfAgentStaticTextPosition = self.m_StaticTextXAlign, self.m_ClientBetaOfClientStaticText.GetPosition(
        )[1] + 30
        self.m_ClientBetaOfAgentStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_ClientBetaOfClient,
            pos=self.m_ClientBetaOfAgentStaticTextPosition)
        self.m_ClientBetaOfAgentSubscript_a_StaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_Subscript_a,
            pos=(self.m_ClientBetaOfAgentStaticTextPosition[0] + 8,
                 self.m_ClientBetaOfAgentStaticTextPosition[1] + 5))

        self.m_ClientBetaOfAgentTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_ClientBetaOfAgentStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_ClientBetaOfAgentDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_ClientBetaOfAgentTextBox.Bind(wx.EVT_TEXT,
                                             self.onSetClientBetaOfAgentFlag)

        self.m_ClientBetaOfAgentButton = wx.Button(
            self,
            -1,
            "?",
            pos=(self.m_HelpButtonXAlign,
                 self.m_ClientBetaOfAgentStaticText.GetPosition()[1] +
                 macButtonYDiscrepancy),
            size=(20, 20))
        self.m_ClientBetaOfAgentButton.Bind(
            wx.EVT_BUTTON,
            lambda event, message="Client's Beta of Agent", title="Help": self.
            onSpawnMessageBox(event, message, title))

        self.m_ClientBetaOfAgentSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_ClientBetaOfAgentDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_ClientBetaOfAgentTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinBeta *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxBeta *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_ClientBetaOfAgentSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_ClientBetaOfAgentTextBox: self.
            onChangeValueViaSlider(event, textBox))

        self.m_ClientGammaStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_ClientGamma,
            pos=(self.m_StaticTextXAlign,
                 self.m_ClientBetaOfAgentStaticText.GetPosition()[1] + 30))
        self.m_ClientGammaTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_ClientGammaStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_GammaValueDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_ClientGammaTextBox.Bind(wx.EVT_TEXT, self.onSetClientGammaFlag)

        self.m_ClientGammaButton = wx.Button(
            self,
            -1,
            "?",
            pos=(self.m_HelpButtonXAlign,
                 self.m_ClientGammaStaticText.GetPosition()[1] +
                 macButtonYDiscrepancy),
            size=(20, 20))
        self.m_ClientGammaButton.Bind(
            wx.EVT_BUTTON,
            lambda event, message="Client's Gamma Value", title="Help": self.
            onSpawnMessageBox(event, message, title))

        self.m_ClientGammaSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_GammaValueDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_ClientGammaTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinGamma *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxGamma *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_ClientGammaSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_ClientGammaTextBox: self.
            onChangeValueViaSlider(event, textBox))

        #################################################################

        self.m_AgentStaticText = wx.StaticText(self,
                                               -1,
                                               cOptionSimConstants.m_AgentText,
                                               pos=(self.m_StaticTextXAlign,
                                                    self.m_AgentYAlign - 35))
        # Agent Options
        #################################################################
        self.m_AgentAlphaStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_AgentAlpha,
            pos=(self.m_StaticTextXAlign, self.m_AgentYAlign))
        self.m_AgentAlphaTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_AgentAlphaStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_AgentAlphaDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_AgentAlphaTextBox.Bind(wx.EVT_TEXT, self.onSetAgentAlphaFlag)

        self.m_AgentAlphaButton = wx.Button(
            self,
            -1,
            "?",
            pos=(self.m_HelpButtonXAlign,
                 self.m_AgentAlphaStaticText.GetPosition()[1] +
                 macButtonYDiscrepancy),
            size=(20, 20))
        self.m_AgentAlphaButton.Bind(
            wx.EVT_BUTTON,
            lambda event, message="Alpha", title="Help": self.
            onSpawnMessageBox(event, message, title))

        self.m_AgentAlphaSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_AgentAlphaDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_AgentAlphaTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinAlpha *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxAlpha *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_AgentAlphaSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_AgentAlphaTextBox: self.
            onChangeValueViaSlider(event, textBox))

        self.m_AgentBetaOfClientStaticTextPosition = self.m_StaticTextXAlign, self.m_AgentAlphaStaticText.GetPosition(
        )[1] + 30
        self.m_AgentBetaOfClientStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_AgentBetaOfClient,
            pos=self.m_AgentBetaOfClientStaticTextPosition)
        self.m_AgentBetaOfClientSubscript_c_StaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_Subscript_c,
            pos=(self.m_AgentBetaOfClientStaticTextPosition[0] + 8,
                 self.m_AgentBetaOfClientStaticTextPosition[1] + 5))

        self.m_AgentBetaOfClientTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_AgentBetaOfClientStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_AgentBetaOfClientDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_AgentBetaOfClientTextBox.Bind(wx.EVT_TEXT,
                                             self.onSetAgentBetaOfClientFlag)

        self.m_AgentBetaOfClientButton = wx.Button(
            self,
            -1,
            "?",
            pos=(self.m_HelpButtonXAlign,
                 self.m_AgentBetaOfClientStaticText.GetPosition()[1] +
                 macButtonYDiscrepancy),
            size=(20, 20))
        self.m_AgentBetaOfClientButton.Bind(
            wx.EVT_BUTTON,
            lambda event, message="Agent's Beta of Client", title="Help": self.
            onSpawnMessageBox(event, message, title))

        self.m_AgentBetaOfClientSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_AgentBetaOfClientDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_AgentBetaOfClientTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinBeta *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxBeta *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_AgentBetaOfClientSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_AgentBetaOfClientTextBox: self.
            onChangeValueViaSlider(event, textBox))

        self.m_AgentBetaOfAgentStaticTextPosition = self.m_StaticTextXAlign, self.m_AgentBetaOfClientStaticText.GetPosition(
        )[1] + 30
        self.m_AgentBetaOfAgentStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_AgentBetaOfClient,
            pos=self.m_AgentBetaOfAgentStaticTextPosition)
        self.m_AgentBetaOfAgentSubscript_a_StaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_Subscript_a,
            pos=(self.m_AgentBetaOfAgentStaticTextPosition[0] + 8,
                 self.m_AgentBetaOfAgentStaticTextPosition[1] + 5))

        self.m_AgentBetaOfAgentTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_AgentBetaOfAgentStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_AgentBetaOfAgentDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_AgentBetaOfAgentTextBox.Bind(wx.EVT_TEXT,
                                            self.onSetAgentBetaOfAgentFlag)

        self.m_AgentBetaOfAgentButton = wx.Button(
            self,
            -1,
            "?",
            pos=(self.m_HelpButtonXAlign,
                 self.m_AgentBetaOfAgentStaticText.GetPosition()[1] +
                 macButtonYDiscrepancy),
            size=(20, 20))
        self.m_AgentBetaOfAgentButton.Bind(
            wx.EVT_BUTTON,
            lambda event, message="Agent's Beta of Agent", title="Help": self.
            onSpawnMessageBox(event, message, title))

        self.m_AgentBetaOfAgentSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_AgentBetaOfAgentDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_AgentBetaOfAgentTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinBeta *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxBeta *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_AgentBetaOfAgentSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_AgentBetaOfAgentTextBox: self.
            onChangeValueViaSlider(event, textBox))

        self.m_AgentGammaStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_AgentGamma,
            pos=(self.m_StaticTextXAlign,
                 self.m_AgentBetaOfAgentStaticText.GetPosition()[1] + 30))
        self.m_AgentGammaTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_AgentGammaStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_GammaValueDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_AgentGammaTextBox.Bind(wx.EVT_TEXT, self.onSetAgentGammaFlag)

        self.m_AgentGammaButton = wx.Button(
            self,
            -1,
            "?",
            pos=(self.m_HelpButtonXAlign,
                 self.m_AgentGammaStaticText.GetPosition()[1] +
                 macButtonYDiscrepancy),
            size=(20, 20))
        self.m_AgentGammaButton.Bind(
            wx.EVT_BUTTON,
            lambda event, message="Agent's Gamma Value", title="Help": self.
            onSpawnMessageBox(event, message, title))

        self.m_AgentGammaSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_GammaValueDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_AgentGammaTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinGamma *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxGamma *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_AgentGammaSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_AgentGammaTextBox: self.
            onChangeValueViaSlider(event, textBox))

        #################################################################

        self.m_EnvironmentNoiseStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_EnvironmentNoise,
            pos=(self.m_StaticTextXAlign, 340))
        self.m_EnvironmentNoiseTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_EnvironmentNoiseStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_EnvironmentNoiseDefault),
            validator=cNumericValidatorTextBox(iDecimals=True,
                                               iNegative=False))
        self.m_EnvironmentNoiseTextBox.Bind(wx.EVT_TEXT,
                                            self.onSetEnvironmentNoiseFlag)

        self.m_EnvironmentNoiseSlider = wx.Slider(
            self,
            -1,
            value=cOptionSimConstants.m_EnvironmentNoiseDefault *
            cSliderConstants.m_Precision,
            pos=(self.m_SliderXAlign,
                 self.m_EnvironmentNoiseTextBox.GetPosition()[1]),
            size=self.m_SliderSize,
            minValue=cOptionSimConstants.m_MinEnvironmentNoise *
            cSliderConstants.m_Precision,
            maxValue=cOptionSimConstants.m_MaxEnvironmentNoise *
            cSliderConstants.m_Precision,
            style=wx.SL_HORIZONTAL)
        self.m_EnvironmentNoiseSlider.Bind(
            wx.EVT_SCROLL,
            lambda event, textBox=self.m_EnvironmentNoiseTextBox: self.
            onChangeValueViaSlider(event, textBox))

        self.m_NumberOfStepsStaticText = wx.StaticText(
            self,
            -1,
            cOptionSimConstants.m_NumSteps,
            pos=(self.m_StaticTextXAlign, 370))
        self.m_NumberOfStepsTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_NumberOfStepsStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            value=str(cOptionSimConstants.m_NumStepsDefault),
            validator=cNumericValidatorTextBox(iDecimals=False,
                                               iNegative=False))
        self.m_NumberOfStepsTextBox.Bind(wx.EVT_TEXT, self.onSetNumStepsFlag)

        self.m_CurrentIterationsStaticText = wx.StaticText(
            self, -1, "Current Iteration", pos=(self.m_StaticTextXAlign, 400))
        self.m_CurrentIterationsTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_CurrentIterationsStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            style=wx.TE_READONLY)
        self.m_CurrentIterationsTextBox.SetValue(
            str(self.m_BayesactSim.total_iterations))

        self.m_PreviousIterationsStaticText = wx.StaticText(
            self, -1, "Previous Iteration", pos=(self.m_StaticTextXAlign, 430))
        self.m_PreviousIterationsTextBox = wx.TextCtrl(
            self,
            -1,
            pos=(self.m_TextboxXAlign,
                 self.m_PreviousIterationsStaticText.GetPosition()[1] - 2),
            size=self.m_TextBoxSize,
            style=wx.TE_READONLY)
        self.m_PreviousIterationsTextBox.SetValue("0")

        ########################################################################################

        self.m_StartButton = wx.Button(self,
                                       -1,
                                       label="Start",
                                       pos=(10, 470),
                                       size=self.m_ButtonSize)
        self.m_StartButton.Bind(wx.EVT_BUTTON, self.onStartBayesactSim)

        self.m_StepButton = wx.Button(self,
                                      -1,
                                      label="Step",
                                      pos=(140, 470),
                                      size=self.m_ButtonSize)
        self.m_StepButton.Bind(wx.EVT_BUTTON, self.onStepBayesactSim)

        self.m_StopButton = wx.Button(self,
                                      -1,
                                      label="Stop",
                                      pos=(270, 470),
                                      size=self.m_ButtonSize)
        self.m_StopButton.Bind(wx.EVT_BUTTON, self.onStopBayesactSim)

        #self.m_PauseButton = wx.Button(self, -1, label="Pause", pos=(10, 400), size=(190, 28))
        #self.m_PauseButton.Bind(wx.EVT_BUTTON, self.onPauseBayesactSim)

        #self.m_ResumeButton = wx.Button(self, -1, label="Resume", pos=(10, 430), size=(190, 28))
        #self.m_ResumeButton.Bind(wx.EVT_BUTTON, self.onResumeBayesactSim)

        #self.m_StopButton = wx.Button(self, -1, label="Stop", pos=(10, 460), size=(190, 28))
        #self.m_StopButton.Bind(wx.EVT_BUTTON, self.onStopBayesactSim)

        macImageYDiscrepancy = 0
        if (cSystemConstants.m_OS == cSystemConstants.m_MacOS):
            macImageYDiscrepancy = -3

        # The set mask colour (255, 255, 255) which is white, becomes transparent
        bmp = wx.Image("./gui/images/circleMagenta.png",
                       wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_GreenCircle = wx.StaticBitmap(self,
                                             -1,
                                             bmp,
                                             pos=(10,
                                                  525 + macImageYDiscrepancy),
                                             size=(bmp.GetWidth(),
                                                   bmp.GetHeight()))
        self.m_Green2StaticText = wx.StaticText(self,
                                                -1,
                                                "What Client thinks of self",
                                                pos=(30, 520))

        bmp = wx.Image("./gui/images/circleRed.png",
                       wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_PinkCircle = wx.StaticBitmap(self,
                                            -1,
                                            bmp,
                                            pos=(10,
                                                 545 + macImageYDiscrepancy),
                                            size=(bmp.GetWidth(),
                                                  bmp.GetHeight()))
        self.m_Pink2StaticText = wx.StaticText(self,
                                               -1,
                                               "What Client thinks of agent",
                                               pos=(30, 540))

        bmp = wx.Image("./gui/images/circleCyan.png",
                       wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_GoldenrodCircle = wx.StaticBitmap(
            self,
            -1,
            bmp,
            pos=(10, 565 + macImageYDiscrepancy),
            size=(bmp.GetWidth(), bmp.GetHeight()))
        self.m_Yellow2StaticText = wx.StaticText(self,
                                                 -1,
                                                 "What Agent thinks of self",
                                                 pos=(30, 560))

        bmp = wx.Image("./gui/images/circleBlue.png",
                       wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_BlueCircle = wx.StaticBitmap(self,
                                            -1,
                                            bmp,
                                            pos=(10,
                                                 585 + macImageYDiscrepancy),
                                            size=(bmp.GetWidth(),
                                                  bmp.GetHeight()))
        self.m_Blue2StaticText = wx.StaticText(self,
                                               -1,
                                               "What Agent thinks of client",
                                               pos=(30, 580))

        bmp = wx.Image("./gui/images/starMagenta.png",
                       wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_CyanStar = wx.StaticBitmap(self,
                                          -1,
                                          bmp,
                                          pos=(240,
                                               523 + macImageYDiscrepancy),
                                          size=(bmp.GetWidth(),
                                                bmp.GetHeight()))
        self.m_CyanStarStaticText = wx.StaticText(self,
                                                  -1,
                                                  "Client action",
                                                  pos=(260, 520))

        bmp = wx.Image("./gui/images/starCyan.png",
                       wx.BITMAP_TYPE_ANY).ConvertToBitmap()
        bmp.SetMaskColour((255, 255, 255))
        self.m_YellowStar = wx.StaticBitmap(self,
                                            -1,
                                            bmp,
                                            pos=(240,
                                                 563 + macImageYDiscrepancy),
                                            size=(bmp.GetWidth(),
                                                  bmp.GetHeight()))
        self.m_YellowStarStaticText = wx.StaticText(self,
                                                    -1,
                                                    "Agent Action",
                                                    pos=(260, 560))

        self.updateSettingsFromBayesact()
예제 #4
0
    def __init__(self, parent, iBayesactSim, iOptionsAgentPanel, iOptionsBayesactSimPanel, **kwargs):
        wx.Panel.__init__(self, parent, **kwargs)

        self.m_OptionsAgentPanel = iOptionsAgentPanel
        self.m_OptionsBayesactSimPanel = iOptionsBayesactSimPanel
        self.m_BayesactSim = iBayesactSim
        self.m_BayesactSim.gui_manager = self

        self.m_BayesactSimThread = None


        # These are for all the options you can fill into the simulation
        ########################################################################################
        #self.m_SliderSize = (180, 24)
        #self.m_TextBoxSize = (110, 28)
        #self.m_ComboBoxSize = (110, 28)
        #self.m_ButtonSize = (190, 28)
        self.m_SliderSize = wx.DefaultSize
        self.m_TextBoxSize = wx.DefaultSize
        self.m_ComboBoxSize = wx.DefaultSize
        self.m_ButtonSize = wx.DefaultSize


        # The Client and Agent alpha and beta values
        # Box sizes for windows and mac are: (110 by 28) and (106 by 20) pixels respectively
        wx.StaticText(self, -1, cOptionSimConstants.m_ClientAlpha, pos=(10,30))
        self.m_ClientAlphaTextBox = wx.TextCtrl(self, -1, pos=(170, 28), size=self.m_TextBoxSize,
                                                value=str(cOptionSimConstants.m_ClientAlphaDefault),
                                                validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_ClientAlphaTextBox.Bind(wx.EVT_TEXT, self.onSetClientAlphaFlag)
        # Default size on windows is (100, 24)
        self.m_ClientAlphaSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_ClientAlphaDefault*cSliderConstants.m_Precision,
                                             pos=(290, 28), size=self.m_SliderSize,
                                             minValue=cOptionSimConstants.m_MinAlpha*cSliderConstants.m_Precision,
                                             maxValue=cOptionSimConstants.m_MaxAlpha*cSliderConstants.m_Precision,
                                             style=wx.SL_HORIZONTAL)
        self.m_ClientAlphaSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_ClientAlphaTextBox: self.onChangeValueViaSlider(event, textBox))



        wx.StaticText(self, -1, cOptionSimConstants.m_ClientBetaOfClient, pos=(10, 60))
        self.m_ClientBetaOfClientTextBox = wx.TextCtrl(self, -1, pos=(170, 58), size=self.m_TextBoxSize,
                                                       value=str(cOptionSimConstants.m_ClientBetaOfClientDefault),
                                                       validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_ClientBetaOfClientTextBox.Bind(wx.EVT_TEXT, self.onSetClientBetaOfClientFlag)

        self.m_ClientBetaOfClientSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_ClientBetaOfClientDefault*cSliderConstants.m_Precision,
                                                    pos=(290, 58), size=self.m_SliderSize,
                                                    minValue=cOptionSimConstants.m_MinBeta*cSliderConstants.m_Precision,
                                                    maxValue=cOptionSimConstants.m_MaxBeta*cSliderConstants.m_Precision,
                                                    style=wx.SL_HORIZONTAL)
        self.m_ClientBetaOfClientSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_ClientBetaOfClientTextBox: self.onChangeValueViaSlider(event, textBox))



        wx.StaticText(self, -1, cOptionSimConstants.m_ClientBetaOfAgent, pos=(10, 90))
        self.m_ClientBetaOfAgentTextBox = wx.TextCtrl(self, -1, pos=(170, 88), size=self.m_TextBoxSize,
                                                      value=str(cOptionSimConstants.m_ClientBetaOfAgentDefault),
                                                      validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_ClientBetaOfAgentTextBox.Bind(wx.EVT_TEXT, self.onSetClientBetaOfAgentFlag)

        self.m_ClientBetaOfAgentSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_ClientBetaOfAgentDefault*cSliderConstants.m_Precision,
                                                   pos=(290, 88), size=self.m_SliderSize,
                                                   minValue=cOptionSimConstants.m_MinBeta*cSliderConstants.m_Precision,
                                                   maxValue=cOptionSimConstants.m_MaxBeta*cSliderConstants.m_Precision,
                                                   style=wx.SL_HORIZONTAL)
        self.m_ClientBetaOfAgentSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_ClientBetaOfAgentTextBox: self.onChangeValueViaSlider(event, textBox))





        wx.StaticText(self, -1, cOptionSimConstants.m_AgentAlpha, pos=(10, 120))
        self.m_AgentAlphaTextBox = wx.TextCtrl(self, -1, pos=(170, 118), size=self.m_TextBoxSize,
                                               value=str(cOptionSimConstants.m_AgentAlphaDefault),
                                               validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_AgentAlphaTextBox.Bind(wx.EVT_TEXT, self.onSetAgentAlphaFlag)

        self.m_AgentAlphaSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_AgentAlphaDefault*cSliderConstants.m_Precision,
                                            pos=(290, 118), size=self.m_SliderSize,
                                            minValue=cOptionSimConstants.m_MinAlpha*cSliderConstants.m_Precision,
                                            maxValue=cOptionSimConstants.m_MaxAlpha*cSliderConstants.m_Precision,
                                            style=wx.SL_HORIZONTAL)
        self.m_AgentAlphaSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_AgentAlphaTextBox: self.onChangeValueViaSlider(event, textBox))







        wx.StaticText(self, -1, cOptionSimConstants.m_AgentBetaOfClient, pos=(10, 150))
        self.m_AgentBetaOfClientTextBox = wx.TextCtrl(self, -1, pos=(170, 148), size=self.m_TextBoxSize,
                                                      value=str(cOptionSimConstants.m_AgentBetaOfClientDefault),
                                                      validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_AgentBetaOfClientTextBox.Bind(wx.EVT_TEXT, self.onSetAgentBetaOfClientFlag)

        self.m_AgentBetaOfClientSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_AgentBetaOfClientDefault*cSliderConstants.m_Precision,
                                                   pos=(290, 148), size=self.m_SliderSize,
                                                   minValue=cOptionSimConstants.m_MinBeta*cSliderConstants.m_Precision,
                                                   maxValue=cOptionSimConstants.m_MaxBeta*cSliderConstants.m_Precision,
                                                   style=wx.SL_HORIZONTAL)
        self.m_AgentBetaOfClientSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_AgentBetaOfClientTextBox: self.onChangeValueViaSlider(event, textBox))



        wx.StaticText(self, -1, cOptionSimConstants.m_AgentBetaOfAgent, pos=(10, 180))
        self.m_AgentBetaOfAgentTextBox = wx.TextCtrl(self, -1, pos=(170, 178), size=self.m_TextBoxSize,
                                                     value=str(cOptionSimConstants.m_AgentBetaOfAgentDefault),
                                                     validator=cNumericValidatorTextBox(iDecimals=True, iNegative=False))
        self.m_AgentBetaOfAgentTextBox.Bind(wx.EVT_TEXT, self.onSetAgentBetaOfAgentFlag)

        self.m_AgentBetaOfAgentSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_AgentBetaOfAgentDefault*cSliderConstants.m_Precision,
                                                  pos=(290, 178), size=self.m_SliderSize,
                                                  minValue=cOptionSimConstants.m_MinBeta*cSliderConstants.m_Precision,
                                                  maxValue=cOptionSimConstants.m_MaxBeta*cSliderConstants.m_Precision,
                                                 style=wx.SL_HORIZONTAL)
        self.m_AgentBetaOfAgentSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_AgentBetaOfAgentTextBox: self.onChangeValueViaSlider(event, textBox))






        wx.StaticText(self, -1, cOptionSimConstants.m_GammaValue, pos=(10, 210))
        self.m_GammaValueTextBox = wx.TextCtrl(self, -1, pos=(170, 208), size=self.m_TextBoxSize,
                                               value=str(cOptionSimConstants.m_GammaValueDefault),
                                               validator=cNumericValidatorTextBox(iDecimals=True, iNegative=True))
        self.m_GammaValueTextBox.Bind(wx.EVT_TEXT, self.onSetGammaValueFlag)

        self.m_GammaValueSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_GammaValueDefault*cSliderConstants.m_Precision,
                                            pos=(290, 208), size=self.m_SliderSize,
                                            minValue=cOptionSimConstants.m_MinGamma*cSliderConstants.m_Precision,
                                            maxValue=cOptionSimConstants.m_MaxGamma*cSliderConstants.m_Precision,
                                            style=wx.SL_HORIZONTAL)
        self.m_GammaValueSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_GammaValueTextBox: self.onChangeValueViaSlider(event, textBox))





        wx.StaticText(self, -1, cOptionSimConstants.m_EnvironmentNoise, pos=(10, 240))
        self.m_EnvironmentNoiseTextBox = wx.TextCtrl(self, -1, pos=(170, 238), size=self.m_TextBoxSize,
                                                     value=str(cOptionSimConstants.m_EnvironmentNoiseDefault),
                                                     validator=cNumericValidatorTextBox(iDecimals=True, iNegative=True))
        self.m_EnvironmentNoiseTextBox.Bind(wx.EVT_TEXT, self.onSetEnvironmentNoiseFlag)

        self.m_EnvironmentNoiseSlider = wx.Slider(self, -1, value=cOptionSimConstants.m_EnvironmentNoiseDefault*cSliderConstants.m_Precision,
                                                  pos=(290, 238), size=self.m_SliderSize,
                                                  minValue=cOptionSimConstants.m_MinEnvironmentNoise*cSliderConstants.m_Precision,
                                                  maxValue=cOptionSimConstants.m_MaxEnvironmentNoise*cSliderConstants.m_Precision,
                                                  style=wx.SL_HORIZONTAL)
        self.m_EnvironmentNoiseSlider.Bind(wx.EVT_SCROLL, lambda event, textBox=self.m_EnvironmentNoiseTextBox: self.onChangeValueViaSlider(event, textBox))


        wx.StaticText(self, -1, cOptionSimConstants.m_UniformDraws, pos=(10, 270))
        self.m_UniformDrawsChoice = wx.ComboBox(self, -1, pos=(170, 268), size=self.m_ComboBoxSize,
                                                choices=cOptionSimConstants.m_UniformDrawsChoices,
                                                style=wx.CHOICEDLG_STYLE)
        self.m_UniformDrawsChoice.SetStringSelection(cOptionSimConstants.m_UniformDrawsDefault)
        self.m_UniformDrawsChoice.Bind(wx.EVT_COMBOBOX, self.onSetUniformDrawsFlag)


        wx.StaticText(self, -1, cOptionSimConstants.m_NumSteps, pos=(10, 300))
        self.m_NumberOfStepsTextBox = wx.TextCtrl(self, -1, pos=(170, 298), size=self.m_TextBoxSize,
                                                  value=str(cOptionSimConstants.m_NumStepsDefault),
                                                  validator=cNumericValidatorTextBox(iDecimals=False, iNegative=False))
        self.m_NumberOfStepsTextBox.Bind(wx.EVT_TEXT, self.onSetNumStepsFlag)


        ########################################################################################


        self.m_StartButton = wx.Button(self, -1, label="Start", pos=(10, 370), size=self.m_ButtonSize)
        self.m_StartButton.Bind(wx.EVT_BUTTON, self.onStartBayesactSim)

        self.m_PlotEPAPanel2D_A = cPlotEPA2D.cPlotPanel(self,
                                                        iXAxisItem=eEPA.evaluation,
                                                        iYAxisItem=eEPA.potency,
                                                        pos=(470, 0), size=(500, 300))

        self.m_PlotEPAPanel2D_B = cPlotEPA2D.cPlotPanel(self,
                                                        iXAxisItem=eEPA.activity,
                                                        iYAxisItem=eEPA.potency,
                                                        pos=(470, 350), size=(500, 300))



        self.m_StepButton = wx.Button(self, -1, label="Step", pos=(10, 400), size=self.m_ButtonSize)
        self.m_StepButton.Bind(wx.EVT_BUTTON, self.onStepBayesactSim)

        self.m_StopButton = wx.Button(self, -1, label="Stop", pos=(10, 430), size=self.m_ButtonSize)
        self.m_StopButton.Bind(wx.EVT_BUTTON, self.onStopBayesactSim)

        #self.m_PauseButton = wx.Button(self, -1, label="Pause", pos=(10, 400), size=(190, 28))
        #self.m_PauseButton.Bind(wx.EVT_BUTTON, self.onPauseBayesactSim)

        #self.m_ResumeButton = wx.Button(self, -1, label="Resume", pos=(10, 430), size=(190, 28))
        #self.m_ResumeButton.Bind(wx.EVT_BUTTON, self.onResumeBayesactSim)

        #self.m_StopButton = wx.Button(self, -1, label="Stop", pos=(10, 460), size=(190, 28))
        #self.m_StopButton.Bind(wx.EVT_BUTTON, self.onStopBayesactSim)


        wx.StaticText(self, -1, "Green:", pos=(10, 500))
        wx.StaticText(self, -1, "What client thinks of themselves", pos=(70, 500))

        wx.StaticText(self, -1, "Pink:", pos=(10, 520))
        wx.StaticText(self, -1, "What client thinks of agent", pos=(70, 520))

        wx.StaticText(self, -1, "Yellow:", pos=(10, 540))
        wx.StaticText(self, -1, "What agent thinks of themselves", pos=(70, 540))

        wx.StaticText(self, -1, "Blue:", pos=(10, 560))
        wx.StaticText(self, -1, "What agent thinks of client", pos=(70, 560))


        self.updateSettingsFromBayesact()
예제 #5
0
    def __init__(self, parent, iBayesactSim, iOptionsAgentPanel, **kwargs):
        wx.Panel.__init__(self, parent, **kwargs)

        self.m_BayesactSim = iBayesactSim
        self.m_OptionsAgentPanel = iOptionsAgentPanel

        self.m_BayesactSimThread = None

        macButtonYDiscrepancy = 0
        if (cSystemConstants.m_OS == cSystemConstants.m_MacOS):
            macButtonYDiscrepancy = -5


        # These are for all the options you can fill into the simulation
        ########################################################################################
        self.m_TextBoxSize = wx.DefaultSize
        self.m_ComboBoxSize = wx.DefaultSize

        self.m_RandomSeedStaticText = wx.StaticText(self, -1, "Random Seed", pos=(100, 50))
        self.m_RandomSeedTextBox = wx.TextCtrl(self, -1, pos=(270, 48), size=self.m_TextBoxSize,
                                               value=str(self.m_BayesactSim.rseed),
                                               validator=cNumericValidatorTextBox(iDecimals=False, iNegative=False))
        self.m_RandomSeedButton = wx.Button(self, -1, "?", pos=(70, 50+macButtonYDiscrepancy), size=(20, 20))
        self.m_RandomSeedButton.Bind(wx.EVT_BUTTON, lambda event, message="Copy this down to repeat simulations", title="Help": self.onSpawnMessageBox(event, message, title))


        self.m_NumberOfSamplesStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_NumberOfSamples, pos=(100, 80))
        self.m_NumberOfSamplesTextBox = wx.TextCtrl(self, -1, pos=(270, 78), size=self.m_TextBoxSize,
                                                   value=str(cOptionSimConstants.m_NumberOfSamplesDefault),
                                                   validator=cNumericValidatorTextBox(iDecimals=False, iNegative=False))
        self.m_NumberOfSamplesTextBox.Bind(wx.EVT_TEXT, self.onSetNumSamples)
        self.m_NumberOfSamplesButton = wx.Button(self, -1, "?", pos=(70, 80+macButtonYDiscrepancy), size=(20, 20))
        self.m_NumberOfSamplesButton.Bind(wx.EVT_BUTTON, lambda event, message="Number of Samples to experiment\nThe maximum number of samples to show on plots is set in constants", title="Help": self.onSpawnMessageBox(event, message, title))



        self.m_ClientKnowledgeStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_ClientKnowledge, pos=(100, 110))
        self.m_ClientKnowledgeChoice = wx.ComboBox(self, -1, pos=(270, 108), size=self.m_ComboBoxSize,
                                                   choices=cOptionSimConstants.m_KnowledgeChoices,
                                                   style=wx.CHOICEDLG_STYLE)
        self.m_ClientKnowledgeChoice.SetStringSelection(cOptionSimConstants.m_ClientKnowledgeDefault)
        self.m_ClientKnowledgeButton = wx.Button(self, -1, "?", pos=(70, 110+macButtonYDiscrepancy), size=(20, 20))
        self.m_ClientKnowledgeButton.Bind(wx.EVT_BUTTON, lambda event, message="Client Knowledge:\n0: knows own id, not client id\n1: knows own id, knows client id is one of the num_confusers possibilities\n2: knows own id, knows client id", title="Help": self.onSpawnMessageBox(event, message, title))

        self.m_AgentKnowledgeStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_AgentKnowledge, pos=(100, 140))
        self.m_AgentKnowledgeChoice = wx.ComboBox(self, -1, pos=(270, 138), size=self.m_ComboBoxSize,
                                                  choices=cOptionSimConstants.m_KnowledgeChoices,
                                                  style=wx.CHOICEDLG_STYLE)
        self.m_AgentKnowledgeChoice.SetStringSelection(cOptionSimConstants.m_AgentKnowledgeDefault)
        self.m_AgentKnowledgeButton = wx.Button(self, -1, "?", pos=(70, 140+macButtonYDiscrepancy), size=(20, 20))
        self.m_AgentKnowledgeButton.Bind(wx.EVT_BUTTON, lambda event, message="Agent Knowledge:\n0: knows own id, not client id\n1: knows own id, knows client id is one of the num_confusers possibilities\n2: knows own id, knows client id", title="Help": self.onSpawnMessageBox(event, message, title))


        self.m_RougheningNoiseStaticText = wx.StaticText(self, -1, cOptionSimConstants.m_RougheningNoise, pos=(100, 170))
        self.m_RougheningNoiseTextBox = wx.TextCtrl(self, -1, pos=(270, 168), size=self.m_TextBoxSize,
                                                    value=str(cOptionSimConstants.m_RougheningNoiseDefault),
                                                    validator=cNumericValidatorTextBox(iDecimals=True, iNegative=True))
        self.m_RougheningNoiseButton = wx.Button(self, -1, "?", pos=(70, 170+macButtonYDiscrepancy), size=(20, 20))
        self.m_RougheningNoiseButton.Bind(wx.EVT_BUTTON, lambda event, message="Automatically set by number of samples\nYou may manually adjust this", title="Help": self.onSpawnMessageBox(event, message, title))


        self.m_MimicInteractStaticText = wx.StaticText(self, -1, "Mimic Interact", pos=(100, 200))
        self.m_MimicInteractCheckBox = wx.CheckBox(self, -1, pos=(270, 200))
        self.m_MimicInteractCheckBox.Bind(wx.EVT_CHECKBOX, self.onCheckMimicInteract)