def __init__(self, parent, id=-1, ctrlStyle=(wx.LC_REPORT | wx.LC_SINGLE_SEL)): wx.Panel.__init__(self, parent, id, style=wx.WANTS_CHARS) sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.SetSizeHints(-1, 50) #--ListCtrl listId = self.listId = wx.NewId() self.list = ListCtrl(self, listId, style=ctrlStyle) self.checkboxes = globals.images['mash.checkboxes'] #--Columns self.PopulateColumns() #--Items self.sortDirty = 0 self.PopulateItems() #--Events wx.EVT_SIZE(self, self.OnSize) #--Events: Items self.hitIcon = 0 wx.EVT_LEFT_DOWN(self.list, self.OnLeftDown) wx.EVT_COMMAND_RIGHT_CLICK(self.list, listId, self.DoItemMenu) #--Events: Columns wx.EVT_LIST_COL_CLICK(self, listId, self.DoItemSort) wx.EVT_LIST_COL_RIGHT_CLICK(self, listId, self.DoColumnMenu) wx.EVT_LIST_COL_END_DRAG(self, listId, self.OnColumnResize)
def __init__(self, parent, wxId, id, style=0): self.style = style if style == List.STYLE_CHECKBOX: # Listbox with checkable items. base.Widget.__init__(self, wx.CheckListBox(parent, wxId)) elif style == List.STYLE_COLUMNS: base.Widget.__init__(self, wx.ListCtrl(parent, wxId, style=wx.LC_REPORT)) #wx.SIMPLE_BORDER))) wx.EVT_LEFT_DOWN(self.getWxWidget(), self.onLeftUp) wx.EVT_LIST_ITEM_SELECTED(parent, wxId, self.onItemSelected) wx.EVT_LIST_ITEM_DESELECTED(parent, wxId, self.onItemDeselected) wx.EVT_LIST_COL_CLICK(parent, wxId, self.onColumnClick) else: # Normal listbox. if style == List.STYLE_MULTIPLE: styleFlags = wx.LB_EXTENDED elif style == List.STYLE_SINGLE: styleFlags = wx.LB_SINGLE base.Widget.__init__(self, wx.ListBox(parent, wxId, style=styleFlags)) # Will be used when sending notifications. self.widgetId = id self.expandingColumnIndex = -1 self.items = [] self.columns = [] wx.EVT_SIZE(self.getWxWidget(), self.onSize)
def CreateControls(self): """Create our sub-controls""" wx.EVT_LIST_COL_CLICK(self, self.GetId(), self.OnReorder) wx.EVT_LIST_ITEM_SELECTED(self, self.GetId(), self.OnNodeSelected) wx.EVT_MOTION(self, self.OnMouseMove) wx.EVT_LIST_ITEM_ACTIVATED(self, self.GetId(), self.OnNodeActivated) self.CreateColumns()
def __init__(self,parent,id=-1,ctrlStyle=(wx.LC_REPORT|wx.LC_SINGLE_SEL)): """Init.""" wx.Panel.__init__(self,parent,id, style=wx.WANTS_CHARS) sizer = wx.BoxSizer(wx.VERTICAL) self.SetSizer(sizer) self.SetSizeHints(-1,50) #--ListCtrl listId = self.listId = wx.NewId() self.list = ListCtrl(self, listId, style=ctrlStyle) self.checkboxes = singletons.images['mash.checkboxes'] #--Columns self.PopulateColumns() #--Items self.sortDirty = 0 self.PopulateItems() self.hitIcon = 0 self.mouseItem = None #--Events wx.EVT_SIZE(self, self.OnSize) wx.EVT_LEFT_DOWN(self.list,self.OnLeftDown) wx.EVT_COMMAND_RIGHT_CLICK(self.list, listId, self.DoItemMenu) wx.EVT_LIST_COL_CLICK(self, listId, self.DoItemSort) wx.EVT_LIST_COL_RIGHT_CLICK(self, listId, self.DoColumnMenu) wx.EVT_LIST_COL_END_DRAG(self, listId, self.OnColumnResize) wx.EVT_MOTION(self.list, self.OnMouse) wx.EVT_LEAVE_WINDOW(self.list, self.OnMouse) # Theming if interface.style['lists.font.color'] is not None: [self.list.SetItemTextColour(x, interface.style['lists.font.color']) for x in xrange(self.list.GetItemCount())] self.fontDefaultColor = interface.style['lists.font.color'] else: self.fontDefaultColor = wx.SystemSettings.GetColour(wx.SYS_COLOUR_LISTBOXTEXT) self.list.Bind(wx.EVT_ENTER_WINDOW, self.hoverInCtrl)
def CreateControls( self ): """Create our sub-controls""" wx.EVT_LIST_COL_CLICK( self, self.GetId(), self.OnReorder ) for i,column in enumerate( self.columns ): column.index = i self.InsertColumn( i, column.name ) self.SetColumnWidth( i, wx.LIST_AUTOSIZE ) self.SetItemCount(0)
def create_widget(self): self.widget = wx.ListCtrl(self.parent.widget, self.id, style=self.style) # add a couple of columns just for a better appearance (for now) self.widget.InsertColumn(0, _('List Control:')) self.widget.InsertColumn(1, self.name) wx.EVT_LIST_COL_CLICK(self.widget, self.widget.GetId(), self.on_set_focus)
def __init__(self, parent, evt_focus, evt_select, config): self.config = config self.selected = set() self.evt_select = evt_select wx.ListCtrl.__init__(self, parent, wx.ID_ANY, style=wx.LC_REPORT) wx.EVT_LIST_COL_CLICK(self, -1, self.evt_col_click) wx.EVT_LIST_ITEM_FOCUSED(self, -1, evt_focus) wx.EVT_LIST_ITEM_SELECTED(self, -1, self.evt_item_selected) wx.EVT_LIST_ITEM_DESELECTED(self, -1, self.evt_item_deselected)
def CreateControls(self): """Create our sub-controls""" wx.EVT_LIST_COL_CLICK(self, self.GetId(), self.OnReorder) wx.EVT_LIST_ITEM_SELECTED(self, self.GetId(), self.OnNodeSelected) wx.EVT_MOTION(self, self.OnMouseMove) wx.EVT_LIST_ITEM_ACTIVATED(self, self.GetId(), self.OnNodeActivated) for i, column in enumerate(self.columns): column.index = i self.InsertColumn(i, column.name) if not windows or column.targetWidth is None: self.SetColumnWidth(i, wx.LIST_AUTOSIZE) else: self.SetColumnWidth(i, column.targetWidth) self.SetItemCount(0)
def __init__(self, parent): wx.Panel.__init__(self, parent=parent) self.busItf = None self.objDesc = None self.sortedColumn = 0 self.sortAscending = True self.colData = {} # Create ListCtrl for objects self.lstObjs = wx.ListCtrl(parent=self, style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VRULES) wx.EVT_LIST_COL_CLICK(self, self.lstObjs.GetId(), self._onListCtrlColClick) # Put in a sizer sizer = wx.BoxSizer(orient=wx.HORIZONTAL) sizer.Add(self.lstObjs, proportion=1, flag=wx.EXPAND) self.SetSizer(sizer)
def dispose(self): """ Disposes of the contents of an editor. """ # Remove all of the wx event handlers: control = self.control parent = control.GetParent() id = control.GetId() wx.EVT_LIST_BEGIN_DRAG(parent, id, None) wx.EVT_LIST_BEGIN_LABEL_EDIT(parent, id, None) wx.EVT_LIST_END_LABEL_EDIT(parent, id, None) wx.EVT_LIST_ITEM_SELECTED(parent, id, None) wx.EVT_LIST_ITEM_DESELECTED(parent, id, None) wx.EVT_LIST_KEY_DOWN(parent, id, None) wx.EVT_LIST_ITEM_ACTIVATED(parent, id, None) wx.EVT_LIST_COL_END_DRAG(parent, id, None) wx.EVT_LIST_COL_RIGHT_CLICK(parent, id, None) wx.EVT_LIST_COL_CLICK(parent, id, None) wx.EVT_LEFT_DOWN(control, None) wx.EVT_LEFT_DCLICK(control, None) wx.EVT_RIGHT_DOWN(control, None) wx.EVT_RIGHT_DCLICK(control, None) wx.EVT_MOTION(control, None) wx.EVT_SIZE(control, None) self.context_object.on_trait_change( self.update_editor, self.extended_name + '_items', remove=True) if self.factory.auto_update: self.context_object.on_trait_change( self.refresh_editor, self.extended_name + '.-', remove=True) self.on_trait_change(self._refresh, 'adapter.+update', remove=True) self.on_trait_change(self._rebuild_all, 'adapter.columns', remove=True) super(TabularEditor, self).dispose()
def __init__(self, parent, aFileName = None): wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS) # our actual list tID = wx.NewId() self.list = gmXdtListCtrl( self, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER | wx.LC_VRULES )#|wx.LC_HRULES) self.list.InsertColumn(0, _("XDT field")) self.list.InsertColumn(1, _("XDT field content")) self.filename = aFileName # set up events wx.EVT_SIZE(self, self.OnSize) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) wx.EVT_LIST_ITEM_DESELECTED(self, tID, self.OnItemDeselected) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_DELETE_ITEM(self, tID, self.OnItemDelete) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_LIST_COL_RIGHT_CLICK(self, tID, self.OnColRightClick) # wx.EVT_LIST_COL_BEGIN_DRAG(self, tID, self.OnColBeginDrag) # wx.EVT_LIST_COL_DRAGGING(self, tID, self.OnColDragging) # wx.EVT_LIST_COL_END_DRAG(self, tID, self.OnColEndDrag) wx.EVT_LEFT_DCLICK(self.list, self.OnDoubleClick) wx.EVT_RIGHT_DOWN(self.list, self.OnRightDown) if wx.Platform == '__WXMSW__': wx.EVT_COMMAND_RIGHT_CLICK(self.list, tID, self.OnRightClick) elif wx.Platform == '__WXGTK__': wx.EVT_RIGHT_UP(self.list, self.OnRightClick)
def __init__(self, parent, quote, filter = False, market = None, filterEnabled=True, tradableOnly=False): iTradeSizedDialog.__init__(self,parent,-1,message('quote_select_title'), size=(460, 460),style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) self.m_parent = parent # init if quote: self.m_isin = quote.isin() self.m_ticker = quote.ticker() self.m_market = quote.market() self.m_place = quote.place() else: self.m_isin = '' self.m_ticker = '' self.m_market = market self.m_place = market2place(market) self.m_filter = filter self.m_qlist = QLIST_ALL self.m_qlist_tradableOnly = tradableOnly self.m_editing = True tID = wx.NewId() self.m_imagelist = wx.ImageList(16,16) self.sm_q = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'quote.png'))) self.sm_i = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'invalid.png'))) self.sm_up = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_up.png'))) self.sm_dn = self.m_imagelist.Add(wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_down.png'))) # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("horizontal") pane.SetSizerProps(expand=True) # pane : ISIN or Name selection label = wx.StaticText(pane, -1, message('quote_select_isin')) label.SetSizerProps(valign='center') tID = wx.NewId() self.wxIsinCtrl = wx.TextCtrl(pane, tID, self.m_isin) self.wxIsinCtrl.SetSizerProps(expand=True) wx.EVT_TEXT(self, tID, self.OnISINEdited) label = wx.StaticText(pane, -1, message('quote_select_ticker')) label.SetSizerProps(valign='center') tID = wx.NewId() self.wxTickerCtrl = wx.TextCtrl(pane, tID, self.m_ticker) self.wxTickerCtrl.SetSizerProps(expand=True) wx.EVT_TEXT(self, tID, self.OnTickerEdited) # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("horizontal") pane.SetSizerProps(expand=True) # pane : market & list filters self.wxLabelMarketCtrl = wx.StaticText(pane, -1, message('quote_select_market')) self.wxLabelMarketCtrl.SetSizerProps(valign='center') self.wxMarketCtrl = wx.ComboBox(pane,-1, "", style=wx.CB_DROPDOWN|wx.CB_READONLY) self.wxMarketCtrl.SetSizerProps(expand=True) wx.EVT_COMBOBOX(self,self.wxMarketCtrl.GetId(),self.OnMarket) count = 0 idx = 0 for eachCtrl in list_of_markets(bFilterMode=False): self.wxMarketCtrl.Append(eachCtrl,eachCtrl) if eachCtrl==self.m_market: idx = count count = count + 1 self.wxMarketCtrl.SetSelection(idx) self.wxLabelQListCtrl = wx.StaticText(pane, -1, message('quote_select_list')) self.wxLabelQListCtrl.SetSizerProps(valign='center') self.wxQListCtrl = wx.ComboBox(pane,-1, "", style=wx.CB_DROPDOWN|wx.CB_READONLY) self.wxQListCtrl.SetSizerProps(expand=True) wx.EVT_COMBOBOX(self,self.wxQListCtrl.GetId(),self.OnQuoteList) self.wxQListCtrl.Append(message('quote_select_alllist'),QLIST_ALL) self.wxQListCtrl.Append(message('quote_select_syslist'),QLIST_SYSTEM) self.wxQListCtrl.Append(message('quote_select_usrlist'),QLIST_USER) if not self.m_qlist_tradableOnly: self.wxQListCtrl.Append(message('quote_select_indiceslist'),QLIST_INDICES) self.wxQListCtrl.Append(message('quote_select_trackerslist'),QLIST_TRACKERS) self.wxQListCtrl.SetSelection(self.m_qlist) # select traded or not tID = wx.NewId() self.wxFilterCtrl = wx.CheckBox(container, tID, message('quote_select_filterfield')) self.wxFilterCtrl.SetValue(self.m_filter) wx.EVT_CHECKBOX(self, tID, self.OnFilter) self.wxFilterCtrl.Enable(filterEnabled) # List self.m_list = iTradeSelectorListCtrl(container, tID, style = wx.LC_REPORT | wx.SUNKEN_BORDER,size=(440, 380)) self.m_list.SetSizerProps(expand=True) self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) # Now that the list exists we can init the other base class, # see wxPython/lib/mixins/listctrl.py wxl.ColumnSorterMixin.__init__(self, 5) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) # Last Row : OK and Cancel btnpane = sc.SizedPanel(container, -1) btnpane.SetSizerType("horizontal") btnpane.SetSizerProps(expand=True) # context help if wx.Platform != "__WXMSW__": btn = wx.ContextHelpButton(btnpane) # OK self.wxOK = wx.Button(btnpane, wx.ID_OK, message('valid')) self.wxOK.SetDefault() self.wxOK.SetHelpText(message('valid_desc')) wx.EVT_BUTTON(self, wx.ID_OK, self.OnValid) # CANCEL btn = wx.Button(btnpane, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) # set the right filter and fit everything self.OnFilter() EVT_POSTINIT(self, self.OnPostInit) wx.PostEvent(self,PostInitEvent())
def init(self, parent): """ Finishes initializing the editor by creating the underlying toolkit widget. """ factory = self.factory # Set up the adapter to use: self.adapter = factory.adapter # Determine the style to use for the list control: style = wx.LC_REPORT | wx.LC_VIRTUAL | wx.BORDER_NONE if factory.editable_labels: style |= wx.LC_EDIT_LABELS if factory.horizontal_lines: style |= wx.LC_HRULES if factory.vertical_lines: style |= wx.LC_VRULES if not factory.multi_select: style |= wx.LC_SINGLE_SEL if not factory.show_titles: style |= wx.LC_NO_HEADER # Create the list control and link it back to us: self.control = control = wxListCtrl( parent, -1, style=style, can_edit=factory.editable, edit_labels=factory.editable_labels) control._editor = self # Create the list control column: #fixme: what do we do here? #control.InsertColumn( 0, '' ) # Set up the list control's event handlers: id = control.GetId() wx.EVT_LIST_BEGIN_DRAG(parent, id, self._begin_drag) wx.EVT_LIST_BEGIN_LABEL_EDIT(parent, id, self._begin_label_edit) wx.EVT_LIST_END_LABEL_EDIT(parent, id, self._end_label_edit) wx.EVT_LIST_ITEM_SELECTED(parent, id, self._item_selected) wx.EVT_LIST_ITEM_DESELECTED(parent, id, self._item_selected) wx.EVT_LIST_KEY_DOWN(parent, id, self._key_down) wx.EVT_LIST_ITEM_ACTIVATED(parent, id, self._item_activated) wx.EVT_LIST_COL_END_DRAG(parent, id, self._size_modified) wx.EVT_LIST_COL_RIGHT_CLICK(parent, id, self._column_right_clicked) wx.EVT_LIST_COL_CLICK(parent, id, self._column_clicked) wx.EVT_LEFT_DOWN(control, self._left_down) wx.EVT_LEFT_DCLICK(control, self._left_dclick) wx.EVT_RIGHT_DOWN(control, self._right_down) wx.EVT_RIGHT_DCLICK(control, self._right_dclick) wx.EVT_MOTION(control, self._motion) wx.EVT_SIZE(control, self._size_modified) # Set up the drag and drop target: if PythonDropTarget is not None: control.SetDropTarget(PythonDropTarget(self)) # Set up the selection listener (if necessary): if factory.multi_select: self.sync_value(factory.selected, 'multi_selected', 'both', is_list=True) self.sync_value(factory.selected_row, 'multi_selected_rows', 'both', is_list=True) else: self.sync_value(factory.selected, 'selected', 'both') self.sync_value(factory.selected_row, 'selected_row', 'both') # Synchronize other interesting traits as necessary: self.sync_value(factory.update, 'update', 'from') self.sync_value(factory.activated, 'activated', 'to') self.sync_value(factory.activated_row, 'activated_row', 'to') self.sync_value(factory.clicked, 'clicked', 'to') self.sync_value(factory.dclicked, 'dclicked', 'to') self.sync_value(factory.right_clicked, 'right_clicked', 'to') self.sync_value(factory.right_dclicked, 'right_dclicked', 'to') self.sync_value(factory.column_clicked, 'column_clicked', 'to') # Make sure we listen for 'items' changes as well as complete list # replacements: try: self.context_object.on_trait_change(self.update_editor, self.extended_name + '_items', dispatch='ui') except: pass # If the user has requested automatic update, attempt to set up the # appropriate listeners: if factory.auto_update: self.context_object.on_trait_change(self.refresh_editor, self.extended_name + '.-', dispatch='ui') # Create the mapping from user supplied images to wx.ImageList indices: for image_resource in factory.images: self._add_image(image_resource) # Refresh the editor whenever the adapter changes: self.on_trait_change(self._refresh, 'adapter.+update', dispatch='ui') # Rebuild the editor columns and headers whenever the adapter's # 'columns' changes: self.on_trait_change(self._rebuild_all, 'adapter.columns', dispatch='ui') # Make sure the tabular view gets initialized: self._rebuild() # Set the list control's tooltip: self.set_tooltip()
def __init__(self, parent, ctrl): wx.Dialog.__init__(self, parent, -1, "Character name database", style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) self.ctrl = ctrl hsizer = wx.BoxSizer(wx.HORIZONTAL) vsizer = wx.BoxSizer(wx.VERTICAL) vsizer.Add(wx.StaticText(self, -1, "Search in:")) self.typeList = wx.ListCtrl(self, -1, style=wx.LC_REPORT | wx.LC_HRULES | wx.LC_VRULES) self.typeList.InsertColumn(0, "Count") self.typeList.InsertColumn(1, "Type") for i in range(len(nameArr.typeNamesById)): typeName = nameArr.typeNamesById[i] self.typeList.InsertStringItem(i, str(nameArr.typeNamesCnt[typeName])) self.typeList.SetStringItem(i, 1, typeName) self.typeList.SetItemData(i, i) self.typeList.SetColumnWidth(0, wx.LIST_AUTOSIZE) self.typeList.SetColumnWidth(1, wx.LIST_AUTOSIZE) w = 0 w += self.typeList.GetColumnWidth(0) w += self.typeList.GetColumnWidth(1) util.setWH(self.typeList, w + 15, 425) self.typeList.SortItems(self.CmpFreq) self.selectAllTypes() vsizer.Add(self.typeList, 1, wx.EXPAND | wx.BOTTOM, 5) selectAllBtn = wx.Button(self, -1, "Select all") vsizer.Add(selectAllBtn) hsizer.Add(vsizer, 0, wx.EXPAND) vsizer = wx.BoxSizer(wx.VERTICAL) hsizer2 = wx.BoxSizer(wx.HORIZONTAL) vsizer2 = wx.BoxSizer(wx.VERTICAL) searchBtn = wx.Button(self, -1, "Search") wx.EVT_BUTTON(self, searchBtn.GetId(), self.OnSearch) vsizer2.Add(searchBtn, 0, wx.BOTTOM | wx.TOP, 10) self.searchEntry = wx.TextCtrl(self, -1, style=wx.TE_PROCESS_ENTER) vsizer2.Add(self.searchEntry, 0, wx.EXPAND) tmp = wx.Button(self, -1, "Insert") wx.EVT_BUTTON(self, tmp.GetId(), self.OnInsertName) vsizer2.Add(tmp, 0, wx.BOTTOM | wx.TOP, 10) hsizer2.Add(vsizer2, 1, wx.RIGHT, 10) self.nameRb = wx.RadioBox( self, -1, "Name", style=wx.RA_SPECIFY_COLS, majorDimension=1, choices=["begins with", "contains", "ends in"]) hsizer2.Add(self.nameRb) self.sexRb = wx.RadioBox(self, -1, "Sex", style=wx.RA_SPECIFY_COLS, majorDimension=1, choices=["Male", "Female", "Both"]) self.sexRb.SetSelection(2) hsizer2.Add(self.sexRb, 0, wx.LEFT, 5) vsizer.Add(hsizer2, 0, wx.EXPAND | wx.ALIGN_CENTER) vsizer.Add(wx.StaticText(self, -1, "Results:")) self.list = MyListCtrl(self) vsizer.Add(self.list, 1, wx.EXPAND | wx.BOTTOM, 5) self.foundLabel = wx.StaticText(self, -1, "", style=wx.ALIGN_CENTRE | wx.ST_NO_AUTORESIZE) vsizer.Add(self.foundLabel, 0, wx.EXPAND) hsizer.Add(vsizer, 20, wx.EXPAND | wx.LEFT, 10) wx.EVT_TEXT_ENTER(self, self.searchEntry.GetId(), self.OnSearch) wx.EVT_BUTTON(self, selectAllBtn.GetId(), self.selectAllTypes) wx.EVT_LIST_COL_CLICK(self, self.typeList.GetId(), self.OnHeaderClick) util.finishWindow(self, hsizer) self.OnSearch() self.searchEntry.SetFocus()
def __init__(self, parent, portfolio, operation, except_portfolio=None): iTradeSizedDialog.__init__(self, parent, -1, message('portfolio_%s_title' % operation), style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER, size=(420, 420)) # init if portfolio: self.m_name = portfolio.filename() self.m_accountref = portfolio.accountref() else: self.m_name = '' self.m_accountref = '' self.m_except = except_portfolio # container container = self.GetContentsPane() container.SetSizerType("vertical") # resizable pane pane = sc.SizedPanel(container, -1) pane.SetSizerType("form") pane.SetSizerProps(expand=True) # Row 1 label = wx.StaticText(pane, -1, message('portfolio_select_textfield')) label.SetSizerProps(valign='center') self.wxNameCtrl = wx.TextCtrl(pane, -1, self.m_name, size=(80, -1)) self.wxNameCtrl.SetSizerProps(expand=True) # Row 2 : tID = wx.NewId() self.m_imagelist = wx.ImageList(16, 16) self.sm_q = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'quote.png'))) self.sm_i = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'invalid.png'))) self.sm_up = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_up.png'))) self.sm_dn = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_down.png'))) self.m_list = iTradeSelectorListCtrl(container, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER, size=(400, 380)) self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) self.m_list.SetSizerProps(expand=True) self.PopulateList() # Now that the list exists we can init the other base class, # see wxPython/lib/mixins/listctrl.py wxl.ColumnSorterMixin.__init__(self, 3) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) # Last Row : OK and Cancel btnpane = sc.SizedPanel(container, -1) btnpane.SetSizerType("horizontal") btnpane.SetSizerProps(expand=True) if operation == 'delete': msg = message('portfolio_properties_btndelete') msgdesc = message('portfolio_properties_btndeletedesc') elif operation == 'select': msg = message('portfolio_properties_btnselect') msgdesc = message('portfolio_properties_btnselectdesc') else: msg = message('valid') msgdesc = message('valid_desc') # context help if wx.Platform != "__WXMSW__": btn = wx.ContextHelpButton(btnpane) # OK btn = wx.Button(btnpane, wx.ID_OK, msg) btn.SetDefault() btn.SetHelpText(msgdesc) wx.EVT_BUTTON(self, wx.ID_OK, self.OnValid) # CANCEL btn = wx.Button(btnpane, wx.ID_CANCEL, message('cancel')) btn.SetHelpText(message('cancel_desc')) # a little trick to make sure that you can't resize the dialog to # less screen space than the controls need self.Fit() self.SetMinSize(self.GetSize()) self.wxNameCtrl.SetFocus()
def __init__(self, *args, **kwds): # begin wxGlade: MainLibFrame.__init__ kwds["style"] = wx.DEFAULT_FRAME_STYLE wx.Frame.__init__(self, *args, **kwds) # tell wx about our hard coded IDs so wx.NewId() doesn't collide # with them for i in range(ID_MINNUM, ID_MAXNUM): wx.RegisterId(i) # set up list control self.list = wx.ListView(self, -1, style=wx.LC_REPORT | wx.SUNKEN_BORDER) self.list.InsertColumn(0, "Artist", width=150) self.list.InsertColumn(1, "Album", width=350) self.list.InsertColumn(2, "Date", width=100) wx.EVT_LIST_COL_CLICK(self, -1, self.OnListSort) wx.EVT_LIST_ITEM_RIGHT_CLICK(self, -1, self.OnListClick) wx.EVT_LIST_ITEM_ACTIVATED(self, -1, self.OnListDoubleClick) wx.EVT_LIST_ITEM_FOCUSED(self, -1, self.OnListSelect) # set up controls in properties panel self.bmpCoverArt = wx.StaticBitmap(self, -1) self.lblArtist = wx.StaticText(self, -1, "Welcome to Flacenstein") self.lblAlbum = wx.StaticText(self, -1, "Right click to select library items") self.ggeProgress = wx.Gauge(self, -1, 1) # Menu Bar self.library_menubar = wx.MenuBar() self.SetMenuBar(self.library_menubar) wxglade_tmp_menu = wx.Menu() wxglade_tmp_menu.Append(ID_OPEN, "Load Library\tCTRL-O", "", wx.ITEM_NORMAL) wxglade_tmp_menu.Append(ID_SAVE, "Save Library\tCTRL-S", "", wx.ITEM_NORMAL) wxglade_tmp_menu.Append(ID_EXPORT, "Export List", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendSeparator() wxglade_tmp_menu.Append(ID_SETPATH, "Configure Paths", "", wx.ITEM_NORMAL) wxglade_tmp_menu.Append(ID_RESCAN, "Rescan\tF5", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendSeparator() wxglade_tmp_menu.Append(ID_RIP, "Rip...", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendSeparator() wxglade_tmp_menu.Append(wx.ID_EXIT, "Quit\tCTRL-Q", "", wx.ITEM_NORMAL) self.library_menubar.Append(wxglade_tmp_menu, "Library") wxglade_tmp_menu = wx.Menu() wxglade_tmp_menu.Append(ID_LOADSELECT, "Load Selection\tCTRL-G", "", wx.ITEM_NORMAL) wxglade_tmp_menu.Append(ID_SAVESELECT, "Save Selection\tCTRL-D", "", wx.ITEM_NORMAL) wxglade_tmp_menu.AppendSeparator() wxglade_tmp_menu.Append(ID_SELECTALL, "All\tCTRL-A", "", wx.ITEM_NORMAL) wxglade_tmp_menu.Append(ID_SELECTNONE, "None", "", wx.ITEM_NORMAL) self.library_menubar.Append(wxglade_tmp_menu, "Select") tmp_menu = wx.Menu() tmp_menu.Append(ID_CONFIGURE, "Configure", "", wx.ITEM_NORMAL) # mnuStop has to be explicitly created so that we can call .Enable() self.mnuStop = wx.MenuItem(tmp_menu, ID_STOP, "Stop", "", wx.ITEM_NORMAL) tmp_menu.AppendItem(self.mnuStop) tmp_menu.AppendSeparator() self.transforms = {} for xfm in flaccfg.XFM_MODS: global xfmmod xfmmod = __import__('flacenstein.xfm%s' % xfm, globals(), locals(), 'xfm%s' % xfm) i = wx.NewId() self.transforms[i] = xfm tmp_menu.Append(i, xfmmod.description, "", wx.ITEM_NORMAL) works = xfmmod.ready() tmp_menu.Enable(i, works) if not works: print '"%s" module failed self-tests and is disabled.' % \ xfmmod.description wx.EVT_MENU(self, i, self.OnTransform) del xfmmod self.library_menubar.Append(tmp_menu, "Transform") wx.EVT_MENU(self, ID_OPEN, self.OnOpen) wx.EVT_MENU(self, ID_SAVE, self.OnSave) wx.EVT_MENU(self, ID_EXPORT, self.OnExport) wx.EVT_MENU(self, ID_SETPATH, self.OnSetPath) wx.EVT_MENU(self, ID_RESCAN, self.OnRescan) wx.EVT_MENU(self, wx.ID_EXIT, self.OnQuit) wx.EVT_MENU(self, ID_SELECTALL, self.OnSelectAll) wx.EVT_MENU(self, ID_SELECTNONE, self.OnSelectNone) wx.EVT_MENU(self, ID_LOADSELECT, self.OnLoadSelection) wx.EVT_MENU(self, ID_SAVESELECT, self.OnSaveSelection) wx.EVT_MENU(self, ID_CONFIGURE, self.OnConfigure) wx.EVT_MENU(self, ID_STOP, self.OnStop) wx.EVT_MENU(self, ID_RIP, self.OnRip) # Menu Bar end self.library_statusbar = self.CreateStatusBar(1, 0) self.__set_properties() self.__do_layout() # end wxGlade # horrible kludge to try to work around the fact that on my home # machine, e.RequestMore(True) in an idle handler appears to do # nothing: idle events stop coming in if you don't move the mouse, # etc. self.timer = wx.Timer(self, ID_TIMER) wx.EVT_TIMER(self, ID_TIMER, self.OnIdle) #wx.EVT_IDLE(self, self.OnIdle) self.listdict = {} self.sortfields = ["artist", "date"] self.savefile = "flaclibrary.dat" self.listfile = "flacselection.lst" self.outpath = "/tmp/flac" self.parallelism = flaccfg.DEFAULT_PARALLELISM self.children = {} self.jobs = [] self.workinprogress = False self.mnuStop.Enable(False) self.lib = flaclib.FlacLibrary("/mnt/flac") self.lib.statusnotify = self.statusNotify if os.path.isfile(flaccfg.DEFAULT_LIBRARY): self.loadLibrary(flaccfg.DEFAULT_LIBRARY) else: self.lib.scan() self.displayLibrary() self.setState(STATE_IDLE)
def __init__(self, parent, market): # context help pre = wx.PreDialog() pre.SetExtraStyle(wx.DIALOG_EX_CONTEXTHELP) title = message('quote_list_title') pre.Create(parent, -1, title, size=(590, 460)) self.PostCreate(pre) self.m_parent = parent self.m_dirty = False self.m_market = market self.m_qlist = QLIST_USER tID = wx.NewId() self.m_imagelist = wx.ImageList(16, 16) self.sm_q = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'quote.png'))) self.sm_i = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'invalid.png'))) self.sm_up = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_up.png'))) self.sm_dn = self.m_imagelist.Add( wx.Bitmap(os.path.join(itrade_config.dirRes, 'sm_down.png'))) self.m_list = iTradeSelectorListCtrl(self, tID, style=wx.LC_REPORT | wx.SUNKEN_BORDER, size=(570, 380)) self.m_list.SetImageList(self.m_imagelist, wx.IMAGE_LIST_SMALL) # Now that the list exists we can init the other base class, # see wxPython/lib/mixins/listctrl.py wxl.ColumnSorterMixin.__init__(self, 7) wx.EVT_LIST_COL_CLICK(self, tID, self.OnColClick) wx.EVT_SIZE(self, self.OnSize) wx.EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) wx.EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) sizer = wx.BoxSizer(wx.VERTICAL) # market selection box = wx.BoxSizer(wx.HORIZONTAL) label = wx.StaticText(self, -1, message('quote_select_market')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.wxMarketCtrl = wx.ComboBox(self, -1, "", size=wx.Size(140, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) box.Add(self.wxMarketCtrl, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_COMBOBOX(self, self.wxMarketCtrl.GetId(), self.OnMarket) count = 0 idx = 0 for eachCtrl in list_of_markets(bFilterMode=True): self.wxMarketCtrl.Append(eachCtrl, eachCtrl) if eachCtrl == self.m_market: idx = count count = count + 1 self.wxMarketCtrl.SetSelection(idx) # list selection label = wx.StaticText(self, -1, message('quote_select_list')) box.Add(label, 0, wx.ALIGN_CENTRE | wx.ALL, 5) self.wxQListCtrl = wx.ComboBox(self, -1, "", size=wx.Size(140, -1), style=wx.CB_DROPDOWN | wx.CB_READONLY) box.Add(self.wxQListCtrl, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_COMBOBOX(self, self.wxQListCtrl.GetId(), self.OnQuoteList) self.wxQListCtrl.Append(message('quote_select_alllist'), QLIST_ALL) self.wxQListCtrl.Append(message('quote_select_syslist'), QLIST_SYSTEM) self.wxQListCtrl.Append(message('quote_select_usrlist'), QLIST_USER) self.wxQListCtrl.Append(message('quote_select_indiceslist'), QLIST_INDICES) self.wxQListCtrl.Append(message('quote_select_trackerslist'), QLIST_TRACKERS) self.wxQListCtrl.SetSelection(self.m_qlist) self.wxCount = wx.StaticText(self, -1, '--') box.Add(self.wxCount, 0, wx.ALIGN_CENTRE | wx.ALL, 5) sizer.AddSizer(box, 0, wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) box = wx.BoxSizer(wx.HORIZONTAL) box.Add(self.m_list, 0, wx.ALIGN_CENTRE | wx.ALL, 5) sizer.Add(box, 0, wx.ALIGN_CENTRE | wx.ALL, 5) box2 = wx.BoxSizer(wx.VERTICAL) self.wxNEW = wx.Button(self, wx.ID_NEW, message('listquote_new')) self.wxNEW.SetHelpText(message('listquote_new_desc')) box2.Add(self.wxNEW, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_NEW, self.OnNewQuote) self.wxPROP = wx.Button(self, wx.ID_PROPERTIES, message('listquote_edit')) self.wxPROP.SetHelpText(message('listquote_edit_desc')) box2.Add(self.wxPROP, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_PROPERTIES, self.OnEditQuote) self.wxDELETE = wx.Button(self, wx.ID_DELETE, message('listquote_delete')) self.wxDELETE.SetHelpText(message('listquote_delete_desc')) box2.Add(self.wxDELETE, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_DELETE, self.OnDeleteQuote) box.Add(box2, 0, wx.ALIGN_CENTRE | wx.ALL, 5) box = wx.BoxSizer(wx.HORIZONTAL) # context help if wx.Platform != "__WXMSW__": btn = wx.ContextHelpButton(self) box.Add(btn, 0, wx.ALIGN_CENTRE | wx.ALL, 5) # CANCEL btn = wx.Button(self, wx.ID_CANCEL, message('close')) btn.SetHelpText(message('close_desc')) wx.EVT_BUTTON(self, wx.ID_CANCEL, self.OnCancel) box.Add(btn, 0, wx.ALIGN_CENTRE | wx.ALL, 5) # SAVE btn.SetDefault() self.wxSAVE = wx.Button(self, wx.ID_APPLY, message('listquote_save')) self.wxSAVE.SetHelpText(message('listquote_save_desc')) box.Add(self.wxSAVE, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_APPLY, self.OnSave) # DOWNLOAD self.wxOK = wx.Button(self, wx.ID_OK, '') self.wxOK.SetHelpText('') box.Add(self.wxOK, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_OK, self.OnDownload) # CLEAR self.wxCLEAR = wx.Button(self, wx.ID_CLEAR, '') self.wxCLEAR.SetHelpText('') box.Add(self.wxCLEAR, 0, wx.ALIGN_CENTRE | wx.ALL, 5) wx.EVT_BUTTON(self, wx.ID_CLEAR, self.OnClear) sizer.AddSizer(box, 0, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 5) self.SetAutoLayout(True) self.SetSizerAndFit(sizer) EVT_POSTINIT(self, self.OnPostInit) wx.PostEvent(self, PostInitEvent())