1909 #------------------------------------------------------------------------------- |
1909 #------------------------------------------------------------------------------- |
1910 # Library Tree Management Functions |
1910 # Library Tree Management Functions |
1911 #------------------------------------------------------------------------------- |
1911 #------------------------------------------------------------------------------- |
1912 |
1912 |
1913 def RefreshLibraryTree(self): |
1913 def RefreshLibraryTree(self): |
1914 to_delete = [] |
1914 if self.Controler is not None: |
1915 blocktypes = self.Controler.GetBlockTypes() |
1915 to_delete = [] |
1916 root = self.LibraryTree.GetRootItem() |
1916 blocktypes = self.Controler.GetBlockTypes() |
1917 if not root.IsOk(): |
1917 root = self.LibraryTree.GetRootItem() |
1918 root = self.LibraryTree.AddRoot("") |
1918 if not root.IsOk(): |
1919 if wx.VERSION >= (2, 6, 0): |
1919 root = self.LibraryTree.AddRoot("") |
1920 category_item, root_cookie = self.LibraryTree.GetFirstChild(root) |
1920 if wx.VERSION >= (2, 6, 0): |
1921 else: |
1921 category_item, root_cookie = self.LibraryTree.GetFirstChild(root) |
1922 category_item, root_cookie = self.LibraryTree.GetFirstChild(root, 0) |
|
1923 for category in blocktypes: |
|
1924 category_name = category["name"] |
|
1925 if not category_item.IsOk(): |
|
1926 category_item = self.LibraryTree.AppendItem(root, _(category_name)) |
|
1927 if wx.Platform != '__WXMSW__': |
|
1928 category_item, root_cookie = self.LibraryTree.GetNextChild(root, root_cookie) |
|
1929 else: |
1922 else: |
1930 self.LibraryTree.SetItemText(category_item, _(category_name)) |
1923 category_item, root_cookie = self.LibraryTree.GetFirstChild(root, 0) |
1931 self.LibraryTree.SetPyData(category_item, {"type" : CATEGORY}) |
1924 for category in blocktypes: |
1932 if wx.VERSION >= (2, 6, 0): |
1925 category_name = category["name"] |
1933 blocktype_item, category_cookie = self.LibraryTree.GetFirstChild(category_item) |
1926 if not category_item.IsOk(): |
1934 else: |
1927 category_item = self.LibraryTree.AppendItem(root, _(category_name)) |
1935 blocktype_item, category_cookie = self.LibraryTree.GetFirstChild(category_item, 0) |
|
1936 for blocktype in category["list"]: |
|
1937 if not blocktype_item.IsOk(): |
|
1938 blocktype_item = self.LibraryTree.AppendItem(category_item, blocktype["name"]) |
|
1939 if wx.Platform != '__WXMSW__': |
1928 if wx.Platform != '__WXMSW__': |
1940 blocktype_item, category_cookie = self.LibraryTree.GetNextChild(category_item, category_cookie) |
1929 category_item, root_cookie = self.LibraryTree.GetNextChild(root, root_cookie) |
1941 else: |
1930 else: |
1942 self.LibraryTree.SetItemText(blocktype_item, blocktype["name"]) |
1931 self.LibraryTree.SetItemText(category_item, _(category_name)) |
1943 self.LibraryTree.SetPyData(blocktype_item, {"type" : BLOCK, "block_type" : blocktype["type"], "inputs" : tuple([type for name, type, modifier in blocktype["inputs"]])}) |
1932 self.LibraryTree.SetPyData(category_item, {"type" : CATEGORY}) |
1944 blocktype_item, category_cookie = self.LibraryTree.GetNextChild(category_item, category_cookie) |
1933 if wx.VERSION >= (2, 6, 0): |
1945 while blocktype_item.IsOk(): |
1934 blocktype_item, category_cookie = self.LibraryTree.GetFirstChild(category_item) |
1946 to_delete.append(blocktype_item) |
1935 else: |
1947 blocktype_item, category_cookie = self.LibraryTree.GetNextChild(category_item, category_cookie) |
1936 blocktype_item, category_cookie = self.LibraryTree.GetFirstChild(category_item, 0) |
1948 category_item, root_cookie = self.LibraryTree.GetNextChild(root, root_cookie) |
1937 for blocktype in category["list"]: |
1949 while category_item.IsOk(): |
1938 if not blocktype_item.IsOk(): |
1950 to_delete.append(category_item) |
1939 blocktype_item = self.LibraryTree.AppendItem(category_item, blocktype["name"]) |
1951 category_item, root_cookie = self.LibraryTree.GetNextChild(root, root_cookie) |
1940 if wx.Platform != '__WXMSW__': |
1952 for item in to_delete: |
1941 blocktype_item, category_cookie = self.LibraryTree.GetNextChild(category_item, category_cookie) |
1953 self.LibraryTree.Delete(item) |
1942 else: |
|
1943 self.LibraryTree.SetItemText(blocktype_item, blocktype["name"]) |
|
1944 self.LibraryTree.SetPyData(blocktype_item, {"type" : BLOCK, "block_type" : blocktype["type"], "inputs" : tuple([type for name, type, modifier in blocktype["inputs"]])}) |
|
1945 blocktype_item, category_cookie = self.LibraryTree.GetNextChild(category_item, category_cookie) |
|
1946 while blocktype_item.IsOk(): |
|
1947 to_delete.append(blocktype_item) |
|
1948 blocktype_item, category_cookie = self.LibraryTree.GetNextChild(category_item, category_cookie) |
|
1949 category_item, root_cookie = self.LibraryTree.GetNextChild(root, root_cookie) |
|
1950 while category_item.IsOk(): |
|
1951 to_delete.append(category_item) |
|
1952 category_item, root_cookie = self.LibraryTree.GetNextChild(root, root_cookie) |
|
1953 for item in to_delete: |
|
1954 self.LibraryTree.Delete(item) |
1954 |
1955 |
1955 def OnLibraryTreeItemSelected(self, event): |
1956 def OnLibraryTreeItemSelected(self, event): |
1956 selected = event.GetItem() |
1957 selected = event.GetItem() |
1957 pydata = self.LibraryTree.GetPyData(selected) |
1958 pydata = self.LibraryTree.GetPyData(selected) |
1958 if pydata is not None and pydata["type"] != CATEGORY: |
1959 if pydata is not None and pydata["type"] != CATEGORY: |