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()
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()
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()
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)