diff -r d51af006fa6b -r 64d8f52bc8c8 dialogs/BrowseLocationsDialog.py --- a/dialogs/BrowseLocationsDialog.py Fri Aug 11 15:18:19 2017 +0300 +++ b/dialogs/BrowseLocationsDialog.py Mon Aug 14 19:13:01 2017 +0300 @@ -37,16 +37,16 @@ def GetDirFilterChoiceOptions(): _ = lambda x : x - return [(_("All"), [LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY]), - (_("Input"), [LOCATION_VAR_INPUT]), - (_("Output"), [LOCATION_VAR_OUTPUT]), + return [(_("All"), [LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY]), + (_("Input"), [LOCATION_VAR_INPUT]), + (_("Output"), [LOCATION_VAR_OUTPUT]), (_("Memory"), [LOCATION_VAR_MEMORY])] DIRFILTERCHOICE_OPTIONS = dict([(_(option), filter) for option, filter in GetDirFilterChoiceOptions()]) def GetTypeFilterChoiceOptions(): _ = lambda x : x - return [_("All"), - _("Type and derivated"), + return [_("All"), + _("Type and derivated"), _("Type strict")] # turn LOCATIONDATATYPES inside-out @@ -60,81 +60,81 @@ #------------------------------------------------------------------------------- class BrowseLocationsDialog(wx.Dialog): - + def __init__(self, parent, var_type, controller): wx.Dialog.__init__(self, parent, title=_('Browse Locations'), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER) - + main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=3, vgap=10) main_sizer.AddGrowableCol(0) main_sizer.AddGrowableRow(1) - + locations_label = wx.StaticText(self, label=_('Locations available:')) - main_sizer.AddWindow(locations_label, border=20, + main_sizer.AddWindow(locations_label, border=20, flag=wx.TOP|wx.LEFT|wx.RIGHT|wx.GROW) - - self.LocationsTree = wx.TreeCtrl(self, + + self.LocationsTree = wx.TreeCtrl(self, style=wx.TR_HAS_BUTTONS|wx.TR_SINGLE|wx.SUNKEN_BORDER|wx.TR_HIDE_ROOT|wx.TR_LINES_AT_ROOT) self.LocationsTree.SetInitialSize(wx.Size(-1, 300)) - self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnLocationsTreeItemActivated, + self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnLocationsTreeItemActivated, self.LocationsTree) - main_sizer.AddWindow(self.LocationsTree, border=20, + main_sizer.AddWindow(self.LocationsTree, border=20, flag=wx.LEFT|wx.RIGHT|wx.GROW) - + button_gridsizer = wx.FlexGridSizer(cols=5, hgap=5, rows=1, vgap=0) button_gridsizer.AddGrowableCol(1) button_gridsizer.AddGrowableCol(3) button_gridsizer.AddGrowableRow(0) - main_sizer.AddSizer(button_gridsizer, border=20, + main_sizer.AddSizer(button_gridsizer, border=20, flag=wx.BOTTOM|wx.LEFT|wx.RIGHT|wx.GROW) - + direction_label = wx.StaticText(self, label=_('Direction:')) button_gridsizer.AddWindow(direction_label, flag=wx.ALIGN_CENTER_VERTICAL) - + self.DirFilterChoice = wx.ComboBox(self, style=wx.CB_READONLY) self.Bind(wx.EVT_COMBOBOX, self.OnFilterChoice, self.DirFilterChoice) button_gridsizer.AddWindow(self.DirFilterChoice, flag=wx.GROW|wx.ALIGN_CENTER_VERTICAL) - + filter_label = wx.StaticText(self, label=_('Type:')) button_gridsizer.AddWindow(filter_label, flag=wx.ALIGN_CENTER_VERTICAL) - + self.TypeFilterChoice = wx.ComboBox(self, style=wx.CB_READONLY) self.Bind(wx.EVT_COMBOBOX, self.OnFilterChoice, self.TypeFilterChoice) button_gridsizer.AddWindow(self.TypeFilterChoice, flag=wx.GROW|wx.ALIGN_CENTER_VERTICAL) - + button_sizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE) self.Bind(wx.EVT_BUTTON, self.OnOK, button_sizer.GetAffirmativeButton()) button_gridsizer.AddSizer(button_sizer, flag=wx.ALIGN_RIGHT) - + self.SetSizer(main_sizer) - + self.Controller = controller self.VarType = var_type self.BaseVarType = self.Controller.GetBaseType(self.VarType) self.VarTypeSize = LOCATION_SIZES[self.BaseVarType] self.Locations = self.Controller.GetVariableLocationTree() - + # Define Tree item icon list self.TreeImageList = wx.ImageList(16, 16) self.TreeImageDict = {} - + # Icons for items for imgname, itemtype in [ - ("CONFIGURATION", LOCATION_CONFNODE), - ("RESOURCE", LOCATION_MODULE), - ("PROGRAM", LOCATION_GROUP), - ("VAR_INPUT", LOCATION_VAR_INPUT), - ("VAR_OUTPUT", LOCATION_VAR_OUTPUT), + ("CONFIGURATION", LOCATION_CONFNODE), + ("RESOURCE", LOCATION_MODULE), + ("PROGRAM", LOCATION_GROUP), + ("VAR_INPUT", LOCATION_VAR_INPUT), + ("VAR_OUTPUT", LOCATION_VAR_OUTPUT), ("VAR_LOCAL", LOCATION_VAR_MEMORY)]: self.TreeImageDict[itemtype]=self.TreeImageList.Add(GetBitmap(imgname)) - + # Assign icon list to TreeCtrls self.LocationsTree.SetImageList(self.TreeImageList) - + # Set a options for the choice for option, filter in GetDirFilterChoiceOptions(): self.DirFilterChoice.Append(_(option)) @@ -143,34 +143,34 @@ self.TypeFilterChoice.Append(_(option)) self.TypeFilterChoice.SetStringSelection(_("All")) self.RefreshFilters() - + self.RefreshLocationsTree() self.Fit() - + def RefreshFilters(self): self.DirFilter = DIRFILTERCHOICE_OPTIONS[self.DirFilterChoice.GetStringSelection()] self.TypeFilter = self.TypeFilterChoice.GetSelection() - + def RefreshLocationsTree(self): root = self.LocationsTree.GetRootItem() if not root.IsOk(): root = self.LocationsTree.AddRoot("") self.GenerateLocationsTreeBranch(root, self.Locations) - + def FilterType(self, location_type, location_size): if self.TypeFilter == 0: return True - + if location_size != self.VarTypeSize: return False - + if self.TypeFilter == 1: return self.Controller.IsOfType(location_type, self.BaseVarType) elif self.TypeFilter == 2: return location_type == self.VarType - + return True - + def GenerateLocationsTreeBranch(self, root, locations): to_delete = [] item, root_cookie = self.LocationsTree.GetFirstChild(root) @@ -194,21 +194,21 @@ item, root_cookie = self.LocationsTree.GetNextChild(root, root_cookie) for item in to_delete: self.LocationsTree.Delete(item) - + def OnLocationsTreeItemActivated(self, event): infos = self.LocationsTree.GetPyData(event.GetItem()) if infos["type"] not in [LOCATION_CONFNODE, LOCATION_MODULE, LOCATION_GROUP]: wx.CallAfter(self.EndModal, wx.ID_OK) event.Skip() - + def OnFilterChoice(self, event): self.RefreshFilters() self.RefreshLocationsTree() - + def GetValues(self): selected = self.LocationsTree.GetSelection() return self.LocationsTree.GetPyData(selected) - + def OnOK(self, event): selected = self.LocationsTree.GetSelection() var_infos = None