Jump to content

vs.AddChoice - continuously adds values to pull down


Recommended Posts

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

image.png.53a52f1b9c140b85da5ba63b52977652.png

image.png.f9aca76aea79b13217bbddeaddd95383.png

Link to comment

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 by spettitt
  • Like 1
Link to comment

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

  • Like 2
Link to comment

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...