spettitt Posted December 22, 2023 Share Posted December 22, 2023 I have a list ('filtered') that I'm trying to use to populate the options for some pull down menus. Using vs.AddChoice, the text values do appear pull down correctly. But when the user selects one, it re-runs the vs.AddChoice calls and adds duplicates to the pull down list. If I put the vs.AddChoice inside the CreateDialog function it doesn't do anything. It only seems to function inside the dialog handler...I just need it to stop adding the duplicates. Any ideas please? intccts = [] extccts = [] retskt = None retdir = None curnum = 0 hdev = None ndev = None curccts = {} validccts = [] kW12Int = 4 kW8Int = 5 kW11Int = 6 kW7Int = 7 kW10Int = 8 kW6Int = 9 kW9Int = 10 kW5Int = 11 kW4Int = 12 kW3Int = 13 kW2Int = 14 kW12Ext = 15 kW8Ext = 16 kW11Ext = 17 kW7Ext = 18 kW10Ext = 19 kW6Ext = 20 kW9Ext = 21 kW5Ext = 22 kW4Ext = 23 kW3Ext = 24 kW2Ext = 25 kW1Ext = 26 kW1Int = 27 ###### UI def ui(ndev, filtered): kOK = 1 kCancel = 2 global kW12Int, kW8Int, kW11Int, kW7Int, kW10Int, kW6Int, kW9Int, kW5Int, kW4Int, kW3Int, kW2Int, kW12Ext, kW8Ext, kW11Ext, kW7Ext, kW10Ext, kW6Ext, kW9Ext, kW5Ext, kW4Ext, kW3Ext, kW2Ext, kW1Ext, kW1Int kCtrLabel12 = 28 kCtrLabel8 = 29 kCtrLabel11 = 30 kCtrLabel7 = 31 kCtrLabel10 = 32 kCtrLabel6 = 33 kCtrLabel9 = 34 kCtrLabel5 = 35 kCtrLabel4 = 36 kCtrLabel3 = 37 kCtrLabel2 = 38 kCtrLabel1 = 39 kWayHeader = 40 kCTP_Name = 42 kExtCircuitHeader = 43 kIntCircuitHeader = 44 def CreateDialog(): dialog = vs.CreateLayout( 'MWC', False, 'OK', 'Cancel') vs.CreateStaticText( dialog, kCTP_Name, ndev, -1 ) vs.SetStaticTextStyle( dialog, kCTP_Name, 1 ) vs.SetStaticTextColor( dialog, kCTP_Name, 255, 255, 255) vs.CreateStaticText( dialog, kIntCircuitHeader, 'Internal Circuit', 16 ) vs.CreateStaticText( dialog, kWayHeader, 'Way', 6 ) vs.SetStaticTextStyle( dialog, kWayHeader, 1 ) vs.SetStaticTextColor( dialog, kWayHeader, 127, 0, 0) vs.CreateStaticText( dialog, kExtCircuitHeader, 'External Circuit', -1 ) vs.CreatePullDownMenu( dialog, kW1Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel1, '1', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel1, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel1, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW1Ext, 16 ) vs.CreatePullDownMenu( dialog, kW2Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel2, '2', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel2, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel2, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW2Ext, 16 ) vs.CreatePullDownMenu( dialog, kW3Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel3, '3', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel3, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel3, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW3Ext, 16 ) vs.CreatePullDownMenu( dialog, kW4Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel4, '4', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel4, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel4, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW4Ext, 16 ) vs.CreatePullDownMenu( dialog, kW5Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel5, '5', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel5, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel5, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW5Ext, 16 ) vs.CreatePullDownMenu( dialog, kW6Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel6, '6', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel6, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel6, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW6Ext, 16 ) vs.CreatePullDownMenu( dialog, kW7Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel7, '7', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel7, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel7, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW7Ext, 16 ) vs.CreatePullDownMenu( dialog, kW8Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel8, '8', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel8, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel8, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW8Ext, 16 ) vs.CreatePullDownMenu( dialog, kW9Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel9, '9', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel9, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel9, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW9Ext, 16 ) vs.CreatePullDownMenu( dialog, kW10Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel10, '10', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel10, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel10, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW10Ext, 16 ) vs.CreatePullDownMenu( dialog, kW11Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel11, '11', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel11, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel11, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW11Ext, 16 ) vs.CreatePullDownMenu( dialog, kW12Int, 16 ) vs.CreateStaticText( dialog, kCtrLabel12, '12', 6 ) vs.SetStaticTextStyle( dialog, kCtrLabel12, 1 ) vs.SetStaticTextColor( dialog, kCtrLabel12, 127, 0, 0) vs.CreatePullDownMenu( dialog, kW12Ext, 16 ) vs.SetFirstLayoutItem( dialog, kCTP_Name ) vs.SetBelowItem( dialog, kCTP_Name, kIntCircuitHeader, 0, 0 ) vs.SetRightItem( dialog, kIntCircuitHeader, kWayHeader, 0, 0 ) vs.SetBelowItem( dialog, kIntCircuitHeader, kW1Int, 0, 0 ) vs.SetRightItem( dialog, kWayHeader, kExtCircuitHeader, 0, 0 ) vs.SetRightItem( dialog, kW1Int, kCtrLabel1, 0, 0 ) vs.SetBelowItem( dialog, kW1Int, kW2Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel1, kW1Ext, 0, 0 ) vs.SetRightItem( dialog, kW2Int, kCtrLabel2, 0, 0 ) vs.SetBelowItem( dialog, kW2Int, kW3Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel2, kW2Ext, 0, 0 ) vs.SetRightItem( dialog, kW3Int, kCtrLabel3, 0, 0 ) vs.SetBelowItem( dialog, kW3Int, kW4Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel3, kW3Ext, 0, 0 ) vs.SetRightItem( dialog, kW4Int, kCtrLabel4, 0, 0 ) vs.SetBelowItem( dialog, kW4Int, kW5Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel4, kW4Ext, 0, 0 ) vs.SetRightItem( dialog, kW5Int, kCtrLabel5, 0, 0 ) vs.SetBelowItem( dialog, kW5Int, kW6Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel5, kW5Ext, 0, 0 ) vs.SetRightItem( dialog, kW6Int, kCtrLabel6, 0, 0 ) vs.SetBelowItem( dialog, kW6Int, kW7Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel6, kW6Ext, 0, 0 ) vs.SetRightItem( dialog, kW7Int, kCtrLabel7, 0, 0 ) vs.SetBelowItem( dialog, kW7Int, kW8Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel7, kW7Ext, 0, 0 ) vs.SetRightItem( dialog, kW8Int, kCtrLabel8, 0, 0 ) vs.SetBelowItem( dialog, kW8Int, kW9Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel8, kW8Ext, 0, 0 ) vs.SetRightItem( dialog, kW9Int, kCtrLabel9, 0, 0 ) vs.SetBelowItem( dialog, kW9Int, kW10Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel9, kW9Ext, 0, 0 ) vs.SetRightItem( dialog, kW10Int, kCtrLabel10, 0, 0 ) vs.SetBelowItem( dialog, kW10Int, kW11Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel10, kW10Ext, 0, 0 ) vs.SetRightItem( dialog, kW11Int, kCtrLabel11, 0, 0 ) vs.SetBelowItem( dialog, kW11Int, kW12Int, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel11, kW11Ext, 0, 0 ) vs.SetRightItem( dialog, kW12Int, kCtrLabel12, 0, 0 ) vs.SetRightItem( dialog, kCtrLabel12, kW12Ext, 0, 0 ) return dialog def DialogHandler(item, data): vs.AddChoice(dlogID, kW1Int, 'Test', 0) vs.AddChoice(dlogID, kW1Int, 'Test2', 1) # this continuously adds options to the drop down as more things are selected in the list if item == 1: pass return item dlogID = CreateDialog() result = False if vs.RunLayoutDialog(dlogID, DialogHandler) == 1: result = True return result Quote Link to comment
spettitt Posted December 22, 2023 Author Share Posted December 22, 2023 (edited) Sorted it, it needs to be like this: def DialogHandler(item, data): #vs.AddChoice(dlogID, kW1Int, 'Test', 0) #vs.AddChoice(dlogID, kW1Int, 'Test2', 1) if item == 12255: vs.AddChoice(dlogID, kW1Int, 'Test', 0) vs.AddChoice(dlogID, kW1Int, 'Test2', 1) return item No idea what the magical 12255 number does, but it works. Will leave this here for future explorers. Edited December 22, 2023 by spettitt 1 Quote Link to comment
MullinRJ Posted December 22, 2023 Share Posted December 22, 2023 12255 is "SetupDialogC", and is found in the dialog event loop. It is an event that is passed to your dialog event loop once before the dialog returns any of your events, i.e., before you do anything. This event is where you perform all of your setup actions. There is also 12256 for "SetDownDialogC", which is called once after the dialog returns all of your events, i.e., after you press the OK or Cancel buttons. HTH, Raymond 2 Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.