/
CrtWidget.py
executable file
·206 lines (158 loc) · 7.84 KB
/
CrtWidget.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
import wx
##TreeCtrl = wx.TreeCtrl
import wx.lib.agw.customtreectrl as TreeCtrl
TreeCtrl=TreeCtrl.CustomTreeCtrl
from admin import *
from EqpLibrary import *
def CrtBoldText(parent,label,fontsize,color):
text=wx.StaticText(parent,-1,label)
text.SetForegroundColour(color) # set text color
font = wx.Font(fontsize, wx.DEFAULT, wx.NORMAL, wx.BOLD)
text.SetFont(font)
return text
class CrtTree(TreeCtrl):
def __init__(self,panel,rootlabel,treelist,icon1=None,icon2=None):
TreeCtrl.__init__(self,panel)
root=self.AddRoot(rootlabel)
self.GrowTree(root,treelist,icon1,icon2)
self.ExpandAll()
def GrowTree(self,parentItem,Items,icon1,icon2):
for each in Items:
if type(each)==str:
newitem=self.AppendItem(parentItem,each)
if icon1 != None or icon2 != None:
self.SetItemImage(newitem,icon1,wx.TreeItemIcon_Normal)
self.SetItemImage(newitem,icon2,wx.TreeItemIcon_Selected)
else:
newParent=self.AppendItem(parentItem,each[0])
newItems=each[1]
self.GrowTree(newParent,newItems,icon1,icon2)
class CrtTreeFrame(wx.Frame):
def __init__(self,parent,frametitle,rootlabel,treelist,img,spdistance,sxy=(800,600),pxy=(150,100)):
self.parent=parent #This parent refers to the MainGUI frame.
wx.Frame.__init__(self,parent,id=-1,size=sxy,pos=pxy,title=frametitle
,style=wx.FRAME_FLOAT_ON_PARENT|wx.RESIZE_BORDER|wx.CAPTION|wx.SYSTEM_MENU|wx.CLOSE_BOX|wx.FRAME_NO_TASKBAR|wx.FRAME_TOOL_WINDOW)
sp=wx.SplitterWindow(self)
self.panel=wx.Panel(sp)
#Make the tree.
il=wx.ImageList(16,16)
bmp1=wx.Bitmap(img[0],wx.BITMAP_TYPE_ANY)
bmp2=wx.Bitmap(img[1],wx.BITMAP_TYPE_ANY)
self.icon1=il.Add(bmp1)
self.icon2=il.Add(bmp2)
self.tree=CrtTree(sp,rootlabel,treelist,self.icon1,self.icon2)
self.tree.AssignImageList(il)
sp.SplitVertically(self.tree,self.panel,spdistance)
# binding event of double click on the tree item
self.Bind(wx.EVT_TREE_ITEM_ACTIVATED,self.OnDClick,self.tree)
# binding event of double click on the tree item
self.Bind(wx.EVT_TREE_SEL_CHANGED,self.OnClick,self.tree)
self.parent.Enable(False) #Disable the Main GUI Frame (MGF) as the main tree frame is called out.
def OnClick(self,event):
pass #Define a handler to be overriden by its inheritance due to KEY_DOWN.
def OnDClick(self,event):
pass #Define a handler to be overriden by its inheritance due to ITEM_ACTIVATED.
def __del__(self):
self.parent.Enable(True)
class CrtFrame(wx.Frame):
def __init__(self,parent,frametitle,sxy=(400,400),pxy=(250,250)):
self.parent=parent
wx.Frame.__init__(self,parent,id=-1,size=sxy,pos=pxy,title=frametitle
,style=wx.FRAME_FLOAT_ON_PARENT|wx.RESIZE_BORDER|wx.CAPTION|wx.SYSTEM_MENU|wx.CLOSE_BOX|wx.FRAME_NO_TASKBAR|wx.FRAME_TOOL_WINDOW)
self.panel=wx.Panel(self,style=wx.SUNKEN_BORDER)
self.parent.Enable(False)
def TextandChoice(self,label,ChoiceList, sxy = (-1,-1), pxy = (-1, -1)):
text=wx.StaticText(self.panel, -1, label, size=sxy, pos=pxy, style=wx.TE_LEFT)
newid=wx.NewId()
choice=wx.Choice(self.panel, id=newid, size=sxy, pos=pxy, choices=ChoiceList)
sizer=wx.GridSizer(rows=1,cols=2,hgap=5,vgap=5)
sizer.Add(text,0,wx.ALL,5)
sizer.Add(choice,0,0)
return text,choice,sizer,newid
def TextandChoice1(self,label,ChoiceList, pxy = (-1, -1), deltax = 100, deltay = 0):
text=wx.StaticText(self.panel, -1, label, size=(-1, -1), pos=pxy, style=wx.TE_LEFT)
newid=wx.NewId()
choice=wx.Choice(self.panel, id=newid, size=(-1, -1), pos = (pxy[0] + deltax, pxy[1] + deltay), choices=ChoiceList)
return text, choice, newid
def Text(self, label, sxy = (-1, -1), pxy = (10, 10)):
wx.StaticText(self.panel, -1, label, size = sxy, pos = pxy, style = wx.TE_LEFT)
def TextCtrl(self, value = '1', sxy = (-1, -1), pxy = (10, 50)):
textctrl=wx.TextCtrl(self.panel, -1, value, size = sxy, pos = pxy)
return textctrl
def OK_Button(self):
button = wx.Button(self.panel, wx.ID_OK, "OK", pos=(10, 80))
return button
def TextandCtrl(self,label,value):
text=wx.StaticText(self.panel,-1,label,size=(-1,-1),style=wx.TE_LEFT)
textctrl=wx.TextCtrl(self.panel,-1,value,size=(160,25))
sizer=wx.GridSizer(rows=1,cols=2,hgap=10,vgap=10)
sizer.Add(text,0,wx.ALL,5)
sizer.Add(textctrl,0,0)
return text,textctrl,sizer
def __del__(self):
self.parent.Enable(True)
class CheckingDialog(wx.Dialog):
def __init__(self,mainGUIframe):
mainGUIframe.Enable(False)
pixels = tuple (mainGUIframe.GetClientSize())
wx.Dialog.__init__(self,None,id=-1,size=(350,180),pos=(pixels[0]/2-175,pixels[1]/2-90),title='Updating',style=wx.FRAME_TOOL_WINDOW)
self.mainGUIframe=mainGUIframe
self.SetBackgroundColour(c_lightblue)
wx.StaticText(self,-1,'Verification of Test Parameters',pos=(20,10),style=wx.TE_LEFT)
wx.StaticLine(self,-1,pos=(10,30),size=(330,2),style=wx.LI_HORIZONTAL)
self.status=wx.StaticText(self,-1,'Verifying .... ',pos=(20,50),style=wx.TE_LEFT)
self.text=wx.StaticText(self,-1,'',pos=(20,90),style=wx.TE_LEFT)
self.okButton=wx.Button(self,wx.ID_OK,"OK",pos=(130,140))
self.okButton.Hide()
self.cancelButton=wx.Button(self,wx.ID_CANCEL,"Cancel",pos=(240,140))
self.cancelButton.Hide()
self.Bind(wx.EVT_BUTTON,self.DialogClose,self.cancelButton)
self.Bind(wx.EVT_BUTTON,self.Continue,self.okButton)
self.Show()
def Updating(self,text):
self.text.SetLabel(text)
def Uncompleted(self,text):
self.text.SetLabel(text)
self.status.SetLabel('Failed!')
self.cancelButton.Show()
def DialogClose(self,event):
self.Destroy()
def Completed(self,text,dofunction):
self.text.SetLabel(text)
self.cancelButton.Show()
self.okButton.Show()
self.status.SetLabel('Done!')
self.dofunction=dofunction
def Continue(self,event):
self.Destroy()
self.dofunction()
def __del__(self):
self.mainGUIframe.Enable(True)
class PwdCtrl():
pass
def WarningFrame(message):
dlg=wx.MessageDialog(None,message,style=wx.OK)
dlg.ShowModal()
def YesNoBox(text,dofunction,*arg):
dlg=wx.Dialog(None,-1,'Notice',size=(240,155),pos=(-1,400),style=wx.OK|wx.CANCEL|wx.FRAME_TOOL_WINDOW|wx.CAPTION)
dlgtext=wx.StaticText(dlg,-1,text,pos=(20,20))
okButton=wx.Button(dlg,wx.ID_OK,"OK",pos=(15,90))
cancelButton=wx.Button(dlg,wx.ID_CANCEL,"Cancel",pos=(130,90))
code=dlg.ShowModal()
if code==wx.ID_OK:
dofunction(*arg)
else:
pass
dlg.Destroy()
def OkBox(message):
dlg=wx.MessageBox(message,'Notice',wx.OK)
def ChoiceExclusion(window,selectedID,idlist,exlist):
idlist.remove(selectedID)
anotherid=idlist[0]
widget=window.FindWindowById(selectedID)
anotherwidget=window.FindWindowById(anotherid)
selectedchoice=widget.GetStringSelection()
exlist.remove(selectedchoice)
anotherchoice=exlist[0]
anotherwidget.SetStringSelection(anotherchoice)
return anotherid