📄 customtreectrl.py
字号:
import wx
import string
import os
import wx.lib.colourselect as csel
import wx.lib.customtreectrl as CT
from Main import opj
import images
#---------------------------------------------------------------------------
penstyle = ["wx.SOLID", "wx.TRANSPARENT", "wx.DOT", "wx.LONG_DASH", "wx.DOT_DASH", "wx.USER_DASH",
"wx.BDIAGONAL_HATCH", "wx.CROSSDIAG_HATCH", "wx.FDIAGONAL_HATCH", "wx.CROSS_HATCH",
"wx.HORIZONTAL_HATCH", "wx.VERTICAL_HATCH"]
ArtIDs = [ "None",
"wx.ART_ADD_BOOKMARK",
"wx.ART_DEL_BOOKMARK",
"wx.ART_HELP_SIDE_PANEL",
"wx.ART_HELP_SETTINGS",
"wx.ART_HELP_BOOK",
"wx.ART_HELP_FOLDER",
"wx.ART_HELP_PAGE",
"wx.ART_GO_BACK",
"wx.ART_GO_FORWARD",
"wx.ART_GO_UP",
"wx.ART_GO_DOWN",
"wx.ART_GO_TO_PARENT",
"wx.ART_GO_HOME",
"wx.ART_FILE_OPEN",
"wx.ART_PRINT",
"wx.ART_HELP",
"wx.ART_TIP",
"wx.ART_REPORT_VIEW",
"wx.ART_LIST_VIEW",
"wx.ART_NEW_DIR",
"wx.ART_HARDDISK",
"wx.ART_FLOPPY",
"wx.ART_CDROM",
"wx.ART_REMOVABLE",
"wx.ART_FOLDER",
"wx.ART_FOLDER_OPEN",
"wx.ART_GO_DIR_UP",
"wx.ART_EXECUTABLE_FILE",
"wx.ART_NORMAL_FILE",
"wx.ART_TICK_MARK",
"wx.ART_CROSS_MARK",
"wx.ART_ERROR",
"wx.ART_QUESTION",
"wx.ART_WARNING",
"wx.ART_INFORMATION",
"wx.ART_MISSING_IMAGE",
"SmileBitmap"
]
keyMap = {
wx.WXK_BACK : "WXK_BACK",
wx.WXK_TAB : "WXK_TAB",
wx.WXK_RETURN : "WXK_RETURN",
wx.WXK_ESCAPE : "WXK_ESCAPE",
wx.WXK_SPACE : "WXK_SPACE",
wx.WXK_DELETE : "WXK_DELETE",
wx.WXK_START : "WXK_START",
wx.WXK_LBUTTON : "WXK_LBUTTON",
wx.WXK_RBUTTON : "WXK_RBUTTON",
wx.WXK_CANCEL : "WXK_CANCEL",
wx.WXK_MBUTTON : "WXK_MBUTTON",
wx.WXK_CLEAR : "WXK_CLEAR",
wx.WXK_SHIFT : "WXK_SHIFT",
wx.WXK_ALT : "WXK_ALT",
wx.WXK_CONTROL : "WXK_CONTROL",
wx.WXK_MENU : "WXK_MENU",
wx.WXK_PAUSE : "WXK_PAUSE",
wx.WXK_CAPITAL : "WXK_CAPITAL",
wx.WXK_PRIOR : "WXK_PRIOR",
wx.WXK_NEXT : "WXK_NEXT",
wx.WXK_END : "WXK_END",
wx.WXK_HOME : "WXK_HOME",
wx.WXK_LEFT : "WXK_LEFT",
wx.WXK_UP : "WXK_UP",
wx.WXK_RIGHT : "WXK_RIGHT",
wx.WXK_DOWN : "WXK_DOWN",
wx.WXK_SELECT : "WXK_SELECT",
wx.WXK_PRINT : "WXK_PRINT",
wx.WXK_EXECUTE : "WXK_EXECUTE",
wx.WXK_SNAPSHOT : "WXK_SNAPSHOT",
wx.WXK_INSERT : "WXK_INSERT",
wx.WXK_HELP : "WXK_HELP",
wx.WXK_NUMPAD0 : "WXK_NUMPAD0",
wx.WXK_NUMPAD1 : "WXK_NUMPAD1",
wx.WXK_NUMPAD2 : "WXK_NUMPAD2",
wx.WXK_NUMPAD3 : "WXK_NUMPAD3",
wx.WXK_NUMPAD4 : "WXK_NUMPAD4",
wx.WXK_NUMPAD5 : "WXK_NUMPAD5",
wx.WXK_NUMPAD6 : "WXK_NUMPAD6",
wx.WXK_NUMPAD7 : "WXK_NUMPAD7",
wx.WXK_NUMPAD8 : "WXK_NUMPAD8",
wx.WXK_NUMPAD9 : "WXK_NUMPAD9",
wx.WXK_MULTIPLY : "WXK_MULTIPLY",
wx.WXK_ADD : "WXK_ADD",
wx.WXK_SEPARATOR : "WXK_SEPARATOR",
wx.WXK_SUBTRACT : "WXK_SUBTRACT",
wx.WXK_DECIMAL : "WXK_DECIMAL",
wx.WXK_DIVIDE : "WXK_DIVIDE",
wx.WXK_F1 : "WXK_F1",
wx.WXK_F2 : "WXK_F2",
wx.WXK_F3 : "WXK_F3",
wx.WXK_F4 : "WXK_F4",
wx.WXK_F5 : "WXK_F5",
wx.WXK_F6 : "WXK_F6",
wx.WXK_F7 : "WXK_F7",
wx.WXK_F8 : "WXK_F8",
wx.WXK_F9 : "WXK_F9",
wx.WXK_F10 : "WXK_F10",
wx.WXK_F11 : "WXK_F11",
wx.WXK_F12 : "WXK_F12",
wx.WXK_F13 : "WXK_F13",
wx.WXK_F14 : "WXK_F14",
wx.WXK_F15 : "WXK_F15",
wx.WXK_F16 : "WXK_F16",
wx.WXK_F17 : "WXK_F17",
wx.WXK_F18 : "WXK_F18",
wx.WXK_F19 : "WXK_F19",
wx.WXK_F20 : "WXK_F20",
wx.WXK_F21 : "WXK_F21",
wx.WXK_F22 : "WXK_F22",
wx.WXK_F23 : "WXK_F23",
wx.WXK_F24 : "WXK_F24",
wx.WXK_NUMLOCK : "WXK_NUMLOCK",
wx.WXK_SCROLL : "WXK_SCROLL",
wx.WXK_PAGEUP : "WXK_PAGEUP",
wx.WXK_PAGEDOWN : "WXK_PAGEDOWN",
wx.WXK_NUMPAD_SPACE : "WXK_NUMPAD_SPACE",
wx.WXK_NUMPAD_TAB : "WXK_NUMPAD_TAB",
wx.WXK_NUMPAD_ENTER : "WXK_NUMPAD_ENTER",
wx.WXK_NUMPAD_F1 : "WXK_NUMPAD_F1",
wx.WXK_NUMPAD_F2 : "WXK_NUMPAD_F2",
wx.WXK_NUMPAD_F3 : "WXK_NUMPAD_F3",
wx.WXK_NUMPAD_F4 : "WXK_NUMPAD_F4",
wx.WXK_NUMPAD_HOME : "WXK_NUMPAD_HOME",
wx.WXK_NUMPAD_LEFT : "WXK_NUMPAD_LEFT",
wx.WXK_NUMPAD_UP : "WXK_NUMPAD_UP",
wx.WXK_NUMPAD_RIGHT : "WXK_NUMPAD_RIGHT",
wx.WXK_NUMPAD_DOWN : "WXK_NUMPAD_DOWN",
wx.WXK_NUMPAD_PRIOR : "WXK_NUMPAD_PRIOR",
wx.WXK_NUMPAD_PAGEUP : "WXK_NUMPAD_PAGEUP",
wx.WXK_NUMPAD_NEXT : "WXK_NUMPAD_NEXT",
wx.WXK_NUMPAD_PAGEDOWN : "WXK_NUMPAD_PAGEDOWN",
wx.WXK_NUMPAD_END : "WXK_NUMPAD_END",
wx.WXK_NUMPAD_BEGIN : "WXK_NUMPAD_BEGIN",
wx.WXK_NUMPAD_INSERT : "WXK_NUMPAD_INSERT",
wx.WXK_NUMPAD_DELETE : "WXK_NUMPAD_DELETE",
wx.WXK_NUMPAD_EQUAL : "WXK_NUMPAD_EQUAL",
wx.WXK_NUMPAD_MULTIPLY : "WXK_NUMPAD_MULTIPLY",
wx.WXK_NUMPAD_ADD : "WXK_NUMPAD_ADD",
wx.WXK_NUMPAD_SEPARATOR : "WXK_NUMPAD_SEPARATOR",
wx.WXK_NUMPAD_SUBTRACT : "WXK_NUMPAD_SUBTRACT",
wx.WXK_NUMPAD_DECIMAL : "WXK_NUMPAD_DECIMAL",
wx.WXK_NUMPAD_DIVIDE : "WXK_NUMPAD_DIVIDE"
}
#---------------------------------------------------------------------------
# Just A Dialog To Select Pen Styles
#---------------------------------------------------------------------------
class PenDialog(wx.Dialog):
def __init__(self, parent=None, id=-1, title="", pos=wx.DefaultPosition,
size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE, oldpen=None,
pentype=0):
wx.Dialog.__init__(self, parent, id, title, pos, size, style)
self.colourbutton = csel.ColourSelect(self)
self.spinwidth = wx.SpinCtrl(self, -1, "1", min=1, max=3, style=wx.SP_ARROW_KEYS)
self.combostyle = wx.ComboBox(self, -1, choices=penstyle, style=wx.CB_DROPDOWN|wx.CB_READONLY)
choices = ["[1, 1]", "[2, 2]", "[3, 3]", "[4, 4]"]
self.combodash = wx.ComboBox(self, -1, choices=choices, style=wx.CB_DROPDOWN|wx.CB_READONLY)
self.okbutton = wx.Button(self, wx.ID_OK)
self.cancelbutton = wx.Button(self, wx.ID_CANCEL)
self.oldpen = oldpen
self.parent = parent
self.pentype = pentype
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_COMBOBOX, self.OnStyle, self.combostyle)
self.Bind(wx.EVT_BUTTON, self.OnOk, self.okbutton)
self.Bind(wx.EVT_BUTTON, self.OnCancel, self.cancelbutton)
def __set_properties(self):
self.SetTitle("Pen Dialog Selector")
self.colourbutton.SetMinSize((25, 25))
self.colourbutton.SetColour(self.oldpen.GetColour())
style = self.oldpen.GetStyle()
for count, st in enumerate(penstyle):
if eval(st) == style:
self.combostyle.SetSelection(count)
if count == 5:
self.combodash.Enable(True)
else:
self.combodash.Enable(False)
break
if self.combodash.IsEnabled():
dashes = repr(self.oldpen.GetDashes())
self.combodash.SetValue(dashes)
self.spinwidth.SetValue(self.oldpen.GetWidth())
self.okbutton.SetDefault()
if self.pentype == 1:
self.spinwidth.Enable(False)
def __do_layout(self):
mainsizer = wx.BoxSizer(wx.VERTICAL)
bottomsizer = wx.BoxSizer(wx.HORIZONTAL)
middlesizer = wx.BoxSizer(wx.VERTICAL)
stylesizer = wx.BoxSizer(wx.HORIZONTAL)
widthsizer = wx.BoxSizer(wx.HORIZONTAL)
coloursizer = wx.BoxSizer(wx.HORIZONTAL)
label_1 = wx.StaticText(self, -1, "Please Choose The Pen Settings:")
label_1.SetFont(wx.Font(8, wx.DEFAULT, wx.NORMAL, wx.BOLD, 0, ""))
mainsizer.Add(label_1, 0, wx.ALL|wx.ADJUST_MINSIZE, 10)
label_2 = wx.StaticText(self, -1, "Pen Colour")
coloursizer.Add(label_2, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
coloursizer.Add((5, 5), 1, wx.ADJUST_MINSIZE, 0)
coloursizer.Add(self.colourbutton, 0, wx.ALL|wx.ADJUST_MINSIZE, 5)
middlesizer.Add(coloursizer, 0, wx.EXPAND, 0)
label_3 = wx.StaticText(self, -1, "Pen Width")
widthsizer.Add(label_3, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
widthsizer.Add((5, 5), 1, wx.ADJUST_MINSIZE, 0)
widthsizer.Add(self.spinwidth, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
middlesizer.Add(widthsizer, 0, wx.EXPAND, 0)
label_4 = wx.StaticText(self, -1, "Pen Style")
stylesizer.Add(label_4, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
stylesizer.Add((5, 5), 1, wx.ADJUST_MINSIZE, 0)
stylesizer.Add(self.combostyle, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
stylesizer.Add(self.combodash, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 5)
middlesizer.Add(stylesizer, 0, wx.BOTTOM|wx.EXPAND, 5)
mainsizer.Add(middlesizer, 1, wx.EXPAND, 0)
bottomsizer.Add(self.okbutton, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 20)
bottomsizer.Add((20, 20), 1, wx.ADJUST_MINSIZE, 0)
bottomsizer.Add(self.cancelbutton, 0, wx.ALL|wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 20)
mainsizer.Add(bottomsizer, 0, wx.EXPAND, 0)
self.SetAutoLayout(True)
self.SetSizer(mainsizer)
mainsizer.Fit(self)
mainsizer.SetSizeHints(self)
self.Layout()
self.Centre()
def OnStyle(self, event):
choice = event.GetEventObject().GetValue()
self.combodash.Enable(choice==5)
event.Skip()
def OnOk(self, event):
colour = self.colourbutton.GetColour()
style = eval(self.combostyle.GetValue())
width = int(self.spinwidth.GetValue())
dashes = None
if self.combostyle.GetSelection() == 5:
dashes = eval(self.combodash.GetValue())
pen = wx.Pen(colour, width, style)
if dashes:
pen.SetDashes(dashes)
pen.SetCap(wx.CAP_BUTT)
if self.pentype == 0:
self.parent.SetConnectionPen(pen)
else:
self.parent.SetBorderPen(pen)
self.Destroy()
event.Skip()
def OnCancel(self, event):
self.Destroy()
event.Skip()
#---------------------------------------------------------------------------
# Just A Dialog To Select Tree Buttons Icons
#---------------------------------------------------------------------------
class TreeButtonsDialog(wx.Dialog):
def __init__(self, parent=None, id=-1, title="", pos=wx.DefaultPosition,
size=wx.DefaultSize, style=wx.DEFAULT_DIALOG_STYLE, oldicons=None):
wx.Dialog.__init__(self, parent, id, title, pos, size, style)
self.listicons = wx.ListBox(self, -1, choices=["Set 1", "Set 2", "Set 3", "Set 4", "Set 5"], style=wx.LB_SINGLE)
bitmap_plus = opj("bitmaps/plus" + str(oldicons+1) + ".ico")
bitmap_minus = opj("bitmaps/minus" + str(oldicons+1) + ".ico")
bitmap_plus = wx.Image(bitmap_plus, wx.BITMAP_TYPE_ICO)
bitmap_plus.Rescale(24, 24)
bitmap_plus = bitmap_plus.ConvertToBitmap()
bitmap_minus = wx.Image(bitmap_minus, wx.BITMAP_TYPE_ICO)
bitmap_minus.Rescale(24, 24)
bitmap_minus = bitmap_minus.ConvertToBitmap()
self.bitmap_plus = wx.StaticBitmap(self, -1, bitmap_plus)
self.bitmap_minus = wx.StaticBitmap(self, -1, bitmap_minus)
self.okbutton = wx.Button(self, wx.ID_OK)
self.cancelbutton = wx.Button(self, wx.ID_CANCEL)
self.parent = parent
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_BUTTON, self.OnOk, self.okbutton)
self.Bind(wx.EVT_BUTTON, self.OnCancel, self.cancelbutton)
self.Bind(wx.EVT_LISTBOX, self.OnListBox, self.listicons)
def __set_properties(self):
self.SetTitle("Tree Buttons Selector")
self.listicons.SetSelection(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -