Beispiel #1
0
 def setup(self, attribute, window, aguidata):
     if self.aguidata != aguidata:
         self.control.Destroy()
         self.label.Destroy()            
         self.__init__(attribute, window, aguidata)
         return
     else:
         Base.setup( self, attribute, window, aguidata)
Beispiel #2
0
 def setup(self, attribute, window, aguidata):
     if self.aguidata != aguidata:
         self.control.Destroy()
         self.label.Destroy()
         self.__init__(attribute, window, aguidata)
         return
     else:
         Base.setup(self, attribute, window, aguidata)
Beispiel #3
0
 def setup(self, attribute, window, aguidata):
     sub_attributes = aguidata.get('sub_attributes', [])
     old_attributes = self.aguidata['sub_attributes']
     if sub_attributes != old_attributes:
         self.control.Destroy()
         self.label.Destroy()
         self.__init__(self, attribute, window, aguidata)
         return
     else:
         Base.setup(self, attribute, window, aguidata)
Beispiel #4
0
 def setup(self, attribute, window, aguidata):
     sub_attributes = aguidata.get('sub_attributes',[])
     old_attributes = self.aguidata['sub_attributes']
     if sub_attributes != old_attributes:
         self.control.Destroy()
         self.label.Destroy()
         self.__init__(self, attribute, window, aguidata)
         return
     else:
         Base.setup( self, attribute, window, aguidata)
Beispiel #5
0
    def __init__(self, attribute, window, aguidata, **kwargs):
        # control
        control = wx.Panel(parent=window)
        height = aguidata.get('height', WX_STANDARD_HEIGHT * 3)
        control.MinSize = (-1, height + 2)
        sizer = wx.GridBagSizer()
        control.SetSizer(sizer)
        self.list = []
        listbox = wx.ListBox(control, -1)
        listbox.MaxSize = (-1, height)
        listbox.MinSize = (-1, height)
        self.listbox = listbox

        #add button
        add = wx.BitmapButton(control,
                              -1,
                              None,
                              size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
        bmp = wx.ArtProvider.GetBitmap(wx.ART_ADD_BOOKMARK, wx.ART_TOOLBAR,
                                       WX_BUTTON_BMP_SIZE)
        add.SetBitmapLabel(bmp)
        add.SetToolTipString("Add a group")
        add.Bind(wx.EVT_BUTTON, self.evt_add_button)
        #delete button
        delete = wx.BitmapButton(control,
                                 -1,
                                 None,
                                 size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
        bmp = wx.ArtProvider.GetBitmap(wx.ART_DELETE, wx.ART_TOOLBAR,
                                       WX_BUTTON_BMP_SIZE)
        delete.SetBitmapLabel(bmp)
        delete.SetToolTipString("Delete selected group")
        delete.Bind(wx.EVT_BUTTON, self.evt_delete_button)
        #info button
        #        info = wx.BitmapButton(control, -1, None,
        #                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
        #        bmp = wx.ArtProvider.GetBitmap(wx.ART_TIP,
        #                                       wx.ART_TOOLBAR, WX_BUTTON_BMP_SIZE)
        #        info.SetBitmapLabel(bmp)
        #        info.SetToolTipString("Info about using Opioid2D groups")
        #        info.Bind(wx.EVT_BUTTON, self.evt_info_button)
        line = wx.StaticLine(control, pos=(0, 0))
        line.MaxSize = (-1, 1)
        sizer.Add(line, (3, 0), flag=wx.EXPAND)
        sizer.Add(listbox, (0, 0), (3, 1), flag=wx.EXPAND | wx.EAST, border=4)
        sizer.Add(delete, (0, 1))
        sizer.Add(add, (1, 1))
        sizer.Add(info, (2, 1))
        sizer.AddGrowableCol(0)
        #sizer.AddGrowableRow(3)

        kwargs['control_widget'] = control
        Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #6
0
 def __init__(self, attribute, window, aguidata={}, **kwargs):
     self.tree = None
     # control
     control = wx.Panel(window)
     sizer = wx.BoxSizer()
     control.SetSizer(sizer)
     self.list = NodeTreeListCtrl(window.object, parent=control)
     control.SetMinSize( (self.list.get_full_width()+10, -1))
     sizer.Add( self.list, 1, wx.EXPAND)
     #control.SetMinSize((control.get_full_width(), -1))
     kwargs['control_widget'] = control
     Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #7
0
 def __init__(self, attribute, window, aguidata={}, **kwargs):
     self.tree = None
     # control
     control = wx.Panel(window)
     sizer = wx.BoxSizer()
     control.SetSizer(sizer)
     self.list = NodeTreeListCtrl(window.object, parent=control)
     control.SetMinSize((self.list.get_full_width() + 10, -1))
     sizer.Add(self.list, 1, wx.EXPAND)
     #control.SetMinSize((control.get_full_width(), -1))
     kwargs['control_widget'] = control
     Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #8
0
    def __init__(self, attribute, window, aguidata, **kwargs):
        # control
        control = wx.Panel(parent=window)
        height = aguidata.get('height', WX_STANDARD_HEIGHT * 3)
        control.MinSize = (-1, height+2)
        sizer = wx.GridBagSizer()
        control.SetSizer(sizer)
        self.list = []
        listbox = wx.ListBox(control, -1)
        listbox.MaxSize = (-1, height)
        listbox.MinSize = (-1, height)
        self.listbox = listbox
        
        #add button
        add = wx.BitmapButton(control, -1, None,
                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
        bmp = wx.ArtProvider.GetBitmap(wx.ART_ADD_BOOKMARK, 
                                       wx.ART_TOOLBAR, WX_BUTTON_BMP_SIZE)
        add.SetBitmapLabel(bmp)       
        add.SetToolTipString("Add a group")
        add.Bind(wx.EVT_BUTTON, self.evt_add_button)
        #delete button
        delete = wx.BitmapButton(control, -1, None,
                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
        bmp = wx.ArtProvider.GetBitmap(wx.ART_DELETE, 
                                       wx.ART_TOOLBAR, WX_BUTTON_BMP_SIZE)
        delete.SetBitmapLabel(bmp)       
        delete.SetToolTipString("Delete selected group")
        delete.Bind(wx.EVT_BUTTON, self.evt_delete_button)
        #info button
#        info = wx.BitmapButton(control, -1, None,
#                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
#        bmp = wx.ArtProvider.GetBitmap(wx.ART_TIP, 
#                                       wx.ART_TOOLBAR, WX_BUTTON_BMP_SIZE)
#        info.SetBitmapLabel(bmp)
#        info.SetToolTipString("Info about using Opioid2D groups")
#        info.Bind(wx.EVT_BUTTON, self.evt_info_button)
        line = wx.StaticLine(control,pos=(0,0))
        line.MaxSize = (-1,1)
        sizer.Add(line,(3,0),flag=wx.EXPAND)
        sizer.Add(listbox, (0, 0),(3, 1), flag=wx.EXPAND | wx.EAST, border = 4)
        sizer.Add(delete, (0, 1))
        sizer.Add(add, (1, 1))
        sizer.Add(info, (2, 1))
        sizer.AddGrowableCol(0)
        #sizer.AddGrowableRow(3)
        
        kwargs['control_widget'] = control
        Base.__init__(self, attribute, window, aguidata, **kwargs)     
Beispiel #9
0
    def __init__(self, attribute, window, aguidata, **kwargs):
        #widgets
        control = wx.Panel(window, size=(1, WX_STANDARD_HEIGHT))
        control.SetMinSize((-1, WX_STANDARD_HEIGHT))
        self.object = getattr(window.object, attribute)
        #x
        xTextSizer = AguiLabelSizer(control, 'X:')
        xText = wx.TextCtrl(control,
                            -1,
                            size=wx.Size(30, WX_STANDARD_HEIGHT),
                            style=wx.TAB_TRAVERSAL | wx.TE_PROCESS_ENTER)
        control.SetMinSize(wx.Size(0, WX_STANDARD_HEIGHT))
        control.Bind(wx.EVT_TEXT_ENTER, self.apply)
        #y
        yTextSizer = AguiLabelSizer(control, ' Y:')
        yText = wx.TextCtrl(control,
                            -1,
                            size=wx.Size(30, WX_STANDARD_HEIGHT),
                            style=wx.TAB_TRAVERSAL | wx.TE_PROCESS_ENTER)
        control.SetMinSize(wx.Size(0, WX_STANDARD_HEIGHT))
        control.Bind(wx.EVT_TEXT_ENTER, self.apply)
        #button
        newViewButton = PugButton(control, self.object, True, attribute,
                                  window)
        self.xText = xText
        self.yText = yText
        self.xTextSizer = xTextSizer
        self.yTextSizer = yTextSizer
        self.newViewButton = newViewButton

        # sizers
        controlSizer = wx.BoxSizer(orient=wx.HORIZONTAL)
        control.SetSizer(controlSizer)
        controlSizer.AddSizer(xTextSizer, flag=wx.EXPAND)
        controlSizer.Add(xText, 1)
        controlSizer.AddSizer(yTextSizer, flag=wx.EXPAND)
        controlSizer.Add(yText, 1)
        controlSizer.AddSpacer((5, 5))
        controlSizer.Add(newViewButton)

        kwargs['control_widget'] = control
        Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #10
0
    def __init__(self, attribute, window, aguidata, **kwargs):
        #widgets
        control = wx.Panel(window, size = (1,WX_STANDARD_HEIGHT))
        control.SetMinSize((-1,WX_STANDARD_HEIGHT))
        self.object = getattr(window.object,attribute)
        #x
        xTextSizer = AguiLabelSizer(control, 'X:')
        xText = wx.TextCtrl( control, -1, 
                              size=wx.Size(30, WX_STANDARD_HEIGHT), 
                              style=wx.TAB_TRAVERSAL | wx.TE_PROCESS_ENTER)
        control.SetMinSize(wx.Size(0, WX_STANDARD_HEIGHT))
        control.Bind(wx.EVT_TEXT_ENTER, self.apply)
        #y
        yTextSizer = AguiLabelSizer(control, ' Y:')
        yText = wx.TextCtrl( control, -1, 
                              size=wx.Size(30, WX_STANDARD_HEIGHT), 
                              style=wx.TAB_TRAVERSAL | wx.TE_PROCESS_ENTER)
        control.SetMinSize(wx.Size(0, WX_STANDARD_HEIGHT))
        control.Bind(wx.EVT_TEXT_ENTER, self.apply)
        #button
        newViewButton = PugButton(control, self.object,
                               True, attribute, window)
        self.xText = xText
        self.yText = yText
        self.xTextSizer = xTextSizer
        self.yTextSizer = yTextSizer
        self.newViewButton = newViewButton 

        # sizers
        controlSizer = wx.BoxSizer(orient=wx.HORIZONTAL)
        control.SetSizer(controlSizer)
        controlSizer.AddSizer(xTextSizer,flag=wx.EXPAND)
        controlSizer.Add(xText,1)
        controlSizer.AddSizer(yTextSizer,flag=wx.EXPAND)
        controlSizer.Add(yText,1)
        controlSizer.AddSpacer((5,5))        
        controlSizer.Add(newViewButton)

        kwargs['control_widget'] = control
        Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #11
0
    def __init__(self, attribute, window, aguidata={}, **kwargs):
        #attributes
        self.subfolder = aguidata.get('subfolder', "")
        self.fullpath = aguidata.get('fullpath', False)
        self.wildcards = aguidata.get('wildcards', "All files (*.*)|*.*")
        self.type = aguidata.get('type', "file")
        SPACING = 4  # for button

        # control
        control = wx.Panel(window, size=(1, WX_STANDARD_HEIGHT))
        control.SetMinSize((-1, WX_STANDARD_HEIGHT))
        control.value = ''
        text = AguiTextCtrl(control)
        text.SetEditable(False)
        text.Bind(wx.EVT_KEY_DOWN, self.keydown)
        control.text = text
        browseBmp = wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR,
                                             WX_BUTTON_BMP_SIZE)
        browseButton = wx.BitmapButton(control,
                                       bitmap=browseBmp,
                                       size=WX_BUTTON_SIZE)
        if self.type == "folder":
            browseButton.SetToolTipString('Browse for folder')
        else:
            browseButton.SetToolTipString('Browse for file')
        browseButton.Bind(wx.EVT_BUTTON, self.browse, browseButton)

        controlSizer = wx.BoxSizer(orient=wx.HORIZONTAL)
        control.SetSizer(controlSizer)
        controlSizer.Add(browseButton, 0)
        controlSizer.Add(text, 1, wx.EXPAND | wx.WEST, SPACING)
        #        controlSizer.AddMany([(textSizer,1,wx.EXPAND | wx.EAST, SPACING),
        #                              (browseButton,0)])
        #        control.SetSize(controlSizer.MinSize)
        #        control.SetMinSize((-1,controlSizer.MinSize[1]))
        kwargs['control_widget'] = control
        Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #12
0
    def __init__(self, attribute, window, aguidata={}, **kwargs):
        #attributes
        self.subfolder = aguidata.get('subfolder',"")
        self.fullpath = aguidata.get('fullpath', False)
        self.wildcards = aguidata.get('wildcards',"All files (*.*)|*.*")
        self.type = aguidata.get('type',"file")                        
        SPACING = 4 # for button
        
        # control
        control = wx.Panel(window, size=(1,WX_STANDARD_HEIGHT))
        control.SetMinSize((-1,WX_STANDARD_HEIGHT))
        control.value = ''
        text = AguiTextCtrl(control)
        text.SetEditable(False)
        text.Bind(wx.EVT_KEY_DOWN, self.keydown)
        control.text = text
        browseBmp = wx.ArtProvider.GetBitmap( wx.ART_FILE_OPEN, wx.ART_TOOLBAR,
                                              WX_BUTTON_BMP_SIZE)
        browseButton = wx.BitmapButton(control, bitmap=browseBmp, 
                                       size=WX_BUTTON_SIZE)
        if self.type == "folder":
            browseButton.SetToolTipString('Browse for folder')
        else:
            browseButton.SetToolTipString('Browse for file')
        browseButton.Bind(wx.EVT_BUTTON, self.browse, browseButton)

        controlSizer = wx.BoxSizer(orient=wx.HORIZONTAL)
        control.SetSizer(controlSizer)
        controlSizer.Add(browseButton,0)
        controlSizer.Add(text,1,wx.EXPAND | wx.WEST, SPACING)
#        controlSizer.AddMany([(textSizer,1,wx.EXPAND | wx.EAST, SPACING),
#                              (browseButton,0)])
#        control.SetSize(controlSizer.MinSize)
#        control.SetMinSize((-1,controlSizer.MinSize[1]))
        kwargs['control_widget'] = control
        Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #13
0
    def __init__(self, attribute, window, aguidata={}, **kwargs):
        #control
        control = wx.Panel(parent=window)
        sizer = wx.GridBagSizer()
        control.SetSizer(sizer)
        self.list = []
        #generate list
        self.list_generator = aguidata.get('list_generator', None)
        add = delete = info = arrange_up = arrange_down = None
        #add button
        if aguidata.get('add', False):
            addinfo = aguidata['add']
            if len(addinfo) > 0:
                addfn = addinfo[0]
            else:
                addfn = self.evt_add_button
            if len(addinfo) > 1:
                tooltip = addinfo[1]
            else:
                tooltip = "Add an item"
            add = wx.BitmapButton(control, -1, 
                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
            add_image = wx.Bitmap(get_image_path("add.png"), wx.BITMAP_TYPE_PNG)
            add.SetBitmapLabel(add_image)       
            add.SetToolTipString(tooltip)
            add.Bind(wx.EVT_BUTTON, addfn)
        #delete button
        if aguidata.get('delete', False):
            deleteinfo = aguidata['delete']
            if len(deleteinfo) > 0:
                deletefn = deleteinfo[0]
            else:
                deletefn = self.evt_delete_button
            if len(deleteinfo) > 1:
                tooltip = deleteinfo[1]
            else:
                tooltip = "Delete an item"
            delete = wx.BitmapButton(control, -1, 
                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
            remove_image = wx.Bitmap(get_image_path("delete.png"), 
                                     wx.BITMAP_TYPE_PNG)
            delete.SetBitmapLabel(remove_image)       
            delete.SetToolTipString(tooltip)
            delete.Bind(wx.EVT_BUTTON, deletefn)
        #info button
        if aguidata.get('info', False):
            infoinfo = aguidata['info']
            self.infotext = infoinfo[0]
            if len(infoinfo) > 1:
                tooltip = infoinfo[1]
            else:
                tooltip = "Info about this list"        
            info = wx.BitmapButton(control, -1,
                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT))
            bmp = wx.ArtProvider.GetBitmap(wx.ART_TIP, 
                                           wx.ART_TOOLBAR, WX_BUTTON_BMP_SIZE)
            info.SetBitmapLabel(bmp)
            info.SetToolTipString(tooltip)
            info.Bind(wx.EVT_BUTTON, self.evt_info_button)
            
        #arrange buttons
        if aguidata.get('arrange_up', False):
            arrange_upinfo = aguidata['arrange_up']
            if len(arrange_upinfo) > 0:
                arrange_upfn = arrange_upinfo[0]
            else:
                arrange_upfn = self.evt_arrange_up_button
            if len(arrange_upinfo) > 1:
                tooltip = arrange_upinfo[1]
            else:
                tooltip = "Move selected item up"
            arrange_up = wx.BitmapButton(control, -1, 
                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT/2))
            arrange_up_image = wx.Bitmap(get_image_path("arrow_up.png"), 
                                     wx.BITMAP_TYPE_PNG)
            arrange_up.SetBitmapLabel(arrange_up_image)       
            arrange_up.SetToolTipString(tooltip)
            arrange_up.Bind(wx.EVT_BUTTON, arrange_upfn)
        if aguidata.get('arrange_down', False):
            arrange_downinfo = aguidata['arrange_down']
            if len(arrange_downinfo) > 0:
                arrange_downfn = arrange_downinfo[0]
            else:
                arrange_downfn = self.evt_arrange_down_button
            if len(arrange_downinfo) > 1:
                tooltip = arrange_downinfo[1]
            else:
                tooltip = "Move selected item down"
            arrange_down = wx.BitmapButton(control, -1, 
                                size=(WX_STANDARD_HEIGHT, WX_STANDARD_HEIGHT/2))
            arrange_down_image = wx.Bitmap(get_image_path("arrow_down.png"), 
                                     wx.BITMAP_TYPE_PNG)
            arrange_down.SetBitmapLabel(arrange_down_image)       
            arrange_down.SetToolTipString(tooltip)
            arrange_down.Bind(wx.EVT_BUTTON, arrange_downfn)
        line = wx.StaticLine(control,pos=(0,0))
        line.MaxSize = (-1,1)
        buttons = 0
        defaultsize = 0
        for button in [delete, add, info, arrange_up, arrange_down]:
            if button:
                sizer.Add(button, (buttons,1))
                defaultsize += button.GetSize()[1]
                buttons+=1
        height = aguidata.get('height', defaultsize)
        control.MinSize = (-1, height+2)
        listbox = wx.ListBox(control, -1)
        listbox.MaxSize = (-1, height)
        listbox.MinSize = (-1, height)
        self.listbox = listbox
        sizer.Add(line,(buttons,0),flag=wx.EXPAND)
        sizer.Add(listbox, (0, 0),(buttons, 1), flag=wx.EXPAND | wx.EAST, 
                  border = 4)
        sizer.AddGrowableCol(0)

        kwargs['control_widget'] = control
        Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #14
0
 def setup(self, attribute, window, aguidata={}):
     aguidata.setdefault('control_only',True)
     self.list.set_object( window.object)
     Base.setup( self, attribute, window, aguidata)
Beispiel #15
0
 def apply(self, event=None):
     Base.apply(self, event)
     if event:
         event.EventObject.select_all()
Beispiel #16
0
    def __init__(self, attribute, window, aguidata={},**kwargs):
        #attributes
        self.kwargs = kwargs
        object = getattr(window.object,attribute)
        labelText = aguidata.get('label', 
                                 ''.join([PUGFRAME_ATTRIBUTE_PREFIX,attribute]))
        self.subControlList = []
        sub_attributes = aguidata.get('sub_attributes',[])
        if not sub_attributes:
            aguidata['sub_attributes'] = []
            kwargs['aguidata'] = aguidata
            kwargs['control_widget'] = None
            kwargs['label_widget'] = None
            Base.__init__(self, attribute, window, **kwargs)
                         
        SPACING = 4 # for button
        
        # control
        control = wx.Panel(window)
        controlSizer = wx.BoxSizer(orient=wx.VERTICAL)
        control.SetSizer(controlSizer)

        #label
        label = wx.Panel(window, 
                         size=(1,WX_STANDARD_HEIGHT))
        labelSizer = wx.FlexGridSizer(1, 2, 0, 0)
        labelSizer.AddGrowableCol(0)
        label.SetSizer(labelSizer)
        
        subnum = 0
        subcount = len(sub_attributes)
        for sub in sub_attributes:
            subnum += 1
            controlText = AguiTextCtrl(control, aguidata.get('format_floats',
                                                             None))
            controlText.Bind(wx.EVT_TEXT_ENTER, self.apply)
            controlText.Bind(wx.EVT_KILL_FOCUS, self.apply)
            controlHSizer = wx.BoxSizer(orient=wx.HORIZONTAL)
            controlHSizer.Add(controlText,1)
            controlSizer.AddSizer(controlHSizer, flag=wx.EXPAND)               
            self.subControlList += [(sub,controlText)]
            rightLabel = AguiLabelSizer(label, sub, subnum == subcount)
            rightLabel.SetMinSize((-1,controlText.MinSize[1]+1))
            if subnum == 1:
                if aguidata.get('no_button', False):
                    button_spacing = 0
                else:
                    # show view button in top row of control
                    newViewButton = PugButton(control, object, True, attribute, 
                                              window,
                                              targetObjectFn=self.get_object)
                    self.newViewButton = newViewButton      
                    button_spacing = SPACING + newViewButton.Size[0]
                    controlHSizer.AddSpacer((SPACING,SPACING))
                    controlHSizer.Add(newViewButton)
                    # show main label in top row of label
                leftLabel = AguiLabelSizer( label, labelText, subcount == 1)
                label.textCtrl = leftLabel.textCtrl # tooltip target
                    
            else:
                if subnum == subcount and button_spacing:
                    #add line at far right for bottom subattribute
                    underline = AguiLabelSizer( control, '')
                    underline.SetMinSize((button_spacing, -1))
                    controlHSizer.AddSizer(underline,0, flag = wx.EXPAND)
                else:
                    controlHSizer.AddSpacer((button_spacing, SPACING))
                # empty left area for rows 2 and on
                leftLabel = AguiLabelSizer( label, '', subnum == subcount)    
            leftLabel.SetMinSize((-1,controlText.MinSize[1]+1))
            labelSizer.SetRows( subnum)
            labelSizer.AddSizer(leftLabel, flag = wx.EXPAND)
            labelSizer.AddSizer(rightLabel, flag = wx.EXPAND)

        control.SetSize(controlSizer.MinSize)
        control.SetMinSize((-1,controlSizer.MinSize[1]))
        label.SetMinSize(control.MinSize)
        kwargs['aguidata'] = aguidata
        kwargs['control_widget'] = control
        kwargs['label_widget'] = label
        Base.__init__(self, attribute, window, **kwargs)
Beispiel #17
0
 def refresh(self, event=None):
     if PigDirector.project_started:
         self.list.refresh_tree()
     Base.refresh(self, event)
Beispiel #18
0
 def apply(self, event=None):
     Base.apply(self, event)
     if event:
         event.EventObject.select_all()
Beispiel #19
0
    def __init__(self, attribute, window, aguidata={}, **kwargs):
        #control
        control = wx.Panel(parent=window)
        sizer = wx.GridBagSizer()
        control.SetSizer(sizer)
        self.list = []
        #generate list
        self.list_generator = aguidata.get('list_generator', None)
        add = delete = info = arrange_up = arrange_down = None
        #add button
        if aguidata.get('add', False):
            addinfo = aguidata['add']
            if len(addinfo) > 0:
                addfn = addinfo[0]
            else:
                addfn = self.evt_add_button
            if len(addinfo) > 1:
                tooltip = addinfo[1]
            else:
                tooltip = "Add an item"
            add = wx.BitmapButton(control,
                                  -1,
                                  size=(WX_STANDARD_HEIGHT,
                                        WX_STANDARD_HEIGHT))
            add_image = wx.Bitmap(get_image_path("add.png"),
                                  wx.BITMAP_TYPE_PNG)
            add.SetBitmapLabel(add_image)
            add.SetToolTipString(tooltip)
            add.Bind(wx.EVT_BUTTON, addfn)
        #delete button
        if aguidata.get('delete', False):
            deleteinfo = aguidata['delete']
            if len(deleteinfo) > 0:
                deletefn = deleteinfo[0]
            else:
                deletefn = self.evt_delete_button
            if len(deleteinfo) > 1:
                tooltip = deleteinfo[1]
            else:
                tooltip = "Delete an item"
            delete = wx.BitmapButton(control,
                                     -1,
                                     size=(WX_STANDARD_HEIGHT,
                                           WX_STANDARD_HEIGHT))
            remove_image = wx.Bitmap(get_image_path("delete.png"),
                                     wx.BITMAP_TYPE_PNG)
            delete.SetBitmapLabel(remove_image)
            delete.SetToolTipString(tooltip)
            delete.Bind(wx.EVT_BUTTON, deletefn)
        #info button
        if aguidata.get('info', False):
            infoinfo = aguidata['info']
            self.infotext = infoinfo[0]
            if len(infoinfo) > 1:
                tooltip = infoinfo[1]
            else:
                tooltip = "Info about this list"
            info = wx.BitmapButton(control,
                                   -1,
                                   size=(WX_STANDARD_HEIGHT,
                                         WX_STANDARD_HEIGHT))
            bmp = wx.ArtProvider.GetBitmap(wx.ART_TIP, wx.ART_TOOLBAR,
                                           WX_BUTTON_BMP_SIZE)
            info.SetBitmapLabel(bmp)
            info.SetToolTipString(tooltip)
            info.Bind(wx.EVT_BUTTON, self.evt_info_button)

        #arrange buttons
        if aguidata.get('arrange_up', False):
            arrange_upinfo = aguidata['arrange_up']
            if len(arrange_upinfo) > 0:
                arrange_upfn = arrange_upinfo[0]
            else:
                arrange_upfn = self.evt_arrange_up_button
            if len(arrange_upinfo) > 1:
                tooltip = arrange_upinfo[1]
            else:
                tooltip = "Move selected item up"
            arrange_up = wx.BitmapButton(control,
                                         -1,
                                         size=(WX_STANDARD_HEIGHT,
                                               WX_STANDARD_HEIGHT / 2))
            arrange_up_image = wx.Bitmap(get_image_path("arrow_up.png"),
                                         wx.BITMAP_TYPE_PNG)
            arrange_up.SetBitmapLabel(arrange_up_image)
            arrange_up.SetToolTipString(tooltip)
            arrange_up.Bind(wx.EVT_BUTTON, arrange_upfn)
        if aguidata.get('arrange_down', False):
            arrange_downinfo = aguidata['arrange_down']
            if len(arrange_downinfo) > 0:
                arrange_downfn = arrange_downinfo[0]
            else:
                arrange_downfn = self.evt_arrange_down_button
            if len(arrange_downinfo) > 1:
                tooltip = arrange_downinfo[1]
            else:
                tooltip = "Move selected item down"
            arrange_down = wx.BitmapButton(control,
                                           -1,
                                           size=(WX_STANDARD_HEIGHT,
                                                 WX_STANDARD_HEIGHT / 2))
            arrange_down_image = wx.Bitmap(get_image_path("arrow_down.png"),
                                           wx.BITMAP_TYPE_PNG)
            arrange_down.SetBitmapLabel(arrange_down_image)
            arrange_down.SetToolTipString(tooltip)
            arrange_down.Bind(wx.EVT_BUTTON, arrange_downfn)
        line = wx.StaticLine(control, pos=(0, 0))
        line.MaxSize = (-1, 1)
        buttons = 0
        defaultsize = 0
        for button in [delete, add, info, arrange_up, arrange_down]:
            if button:
                sizer.Add(button, (buttons, 1))
                defaultsize += button.GetSize()[1]
                buttons += 1
        height = aguidata.get('height', defaultsize)
        control.MinSize = (-1, height + 2)
        listbox = wx.ListBox(control, -1)
        listbox.MaxSize = (-1, height)
        listbox.MinSize = (-1, height)
        self.listbox = listbox
        sizer.Add(line, (buttons, 0), flag=wx.EXPAND)
        sizer.Add(listbox, (0, 0), (buttons, 1),
                  flag=wx.EXPAND | wx.EAST,
                  border=4)
        sizer.AddGrowableCol(0)

        kwargs['control_widget'] = control
        Base.__init__(self, attribute, window, aguidata, **kwargs)
Beispiel #20
0
    def __init__(self, attribute, window, aguidata={}, **kwargs):
        #attributes
        self.kwargs = kwargs
        object = getattr(window.object, attribute)
        labelText = aguidata.get(
            'label', ''.join([PUGFRAME_ATTRIBUTE_PREFIX, attribute]))
        self.subControlList = []
        sub_attributes = aguidata.get('sub_attributes', [])
        if not sub_attributes:
            aguidata['sub_attributes'] = []
            kwargs['aguidata'] = aguidata
            kwargs['control_widget'] = None
            kwargs['label_widget'] = None
            Base.__init__(self, attribute, window, **kwargs)

        SPACING = 4  # for button

        # control
        control = wx.Panel(window)
        controlSizer = wx.BoxSizer(orient=wx.VERTICAL)
        control.SetSizer(controlSizer)

        #label
        label = wx.Panel(window, size=(1, WX_STANDARD_HEIGHT))
        labelSizer = wx.FlexGridSizer(1, 2, 0, 0)
        labelSizer.AddGrowableCol(0)
        label.SetSizer(labelSizer)

        subnum = 0
        subcount = len(sub_attributes)
        for sub in sub_attributes:
            subnum += 1
            controlText = AguiTextCtrl(control,
                                       aguidata.get('format_floats', None))
            controlText.Bind(wx.EVT_TEXT_ENTER, self.apply)
            controlText.Bind(wx.EVT_KILL_FOCUS, self.apply)
            controlHSizer = wx.BoxSizer(orient=wx.HORIZONTAL)
            controlHSizer.Add(controlText, 1)
            controlSizer.AddSizer(controlHSizer, flag=wx.EXPAND)
            self.subControlList += [(sub, controlText)]
            rightLabel = AguiLabelSizer(label, sub, subnum == subcount)
            rightLabel.SetMinSize((-1, controlText.MinSize[1] + 1))
            if subnum == 1:
                if aguidata.get('no_button', False):
                    button_spacing = 0
                else:
                    # show view button in top row of control
                    newViewButton = PugButton(control,
                                              object,
                                              True,
                                              attribute,
                                              window,
                                              targetObjectFn=self.get_object)
                    self.newViewButton = newViewButton
                    button_spacing = SPACING + newViewButton.Size[0]
                    controlHSizer.AddSpacer((SPACING, SPACING))
                    controlHSizer.Add(newViewButton)
                    # show main label in top row of label
                leftLabel = AguiLabelSizer(label, labelText, subcount == 1)
                label.textCtrl = leftLabel.textCtrl  # tooltip target

            else:
                if subnum == subcount and button_spacing:
                    #add line at far right for bottom subattribute
                    underline = AguiLabelSizer(control, '')
                    underline.SetMinSize((button_spacing, -1))
                    controlHSizer.AddSizer(underline, 0, flag=wx.EXPAND)
                else:
                    controlHSizer.AddSpacer((button_spacing, SPACING))
                # empty left area for rows 2 and on
                leftLabel = AguiLabelSizer(label, '', subnum == subcount)
            leftLabel.SetMinSize((-1, controlText.MinSize[1] + 1))
            labelSizer.SetRows(subnum)
            labelSizer.AddSizer(leftLabel, flag=wx.EXPAND)
            labelSizer.AddSizer(rightLabel, flag=wx.EXPAND)

        control.SetSize(controlSizer.MinSize)
        control.SetMinSize((-1, controlSizer.MinSize[1]))
        label.SetMinSize(control.MinSize)
        kwargs['aguidata'] = aguidata
        kwargs['control_widget'] = control
        kwargs['label_widget'] = label
        Base.__init__(self, attribute, window, **kwargs)
Beispiel #21
0
 def setup(self, attribute, window, aguidata={}):
     aguidata.setdefault('control_only', True)
     self.list.set_object(window.object)
     Base.setup(self, attribute, window, aguidata)
Beispiel #22
0
 def refresh(self, event=None):
     if PigDirector.project_started:
         self.list.refresh_tree()
     Base.refresh(self, event)