ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Active_prgs/MCP/Trunk/MCP_CopyUp_Request_UI.py
Revision: 203
Committed: Fri Nov 16 22:55:58 2012 UTC (13 years, 4 months ago) by nino.borges
Content type: text/x-python
Original Path: Python/NinoCode/Active_prgs/MCP/MCP_CopyUp_Request_UI.py
File size: 17624 byte(s)
Log Message:
Added Vendor Folder capability to lib and to the UI

File Contents

# User Rev Content
1 ninoborges 8 """
2    
3     MCP_CopyUp_Request_UI
4    
5     Created by
6     Emanuel Borges
7     10.25.2010
8    
9     This is the GUI to the MCP_CopyUp_Request program.
10    
11     """
12    
13     import wx, MCP_Lib, MCP_CopyUp_Request,os
14     import wx.lib.filebrowsebutton as filebrowse
15    
16     class MyFrame(wx.Frame):
17     def __init__(self, parent, ID, title, pos=wx.DefaultPosition):
18 nino.borges 203 wx.Frame.__init__(self, parent, ID, title, pos, size =(585,450))
19 ninoborges 8 self.panel = wx.Panel(self,-1)
20     #self.panel.SetBackgroundColour("yellow green")
21     casesListStaticText = wx.StaticText(self.panel, -1, "Select Case: ",wx.DefaultPosition)
22 nino.borges 189 #casesList,casesDir = MCP_Lib.GetCaseList()
23     self.myCases, self.officeCases, self.allCases, casesDir = MCP_Lib.GetCaseList()
24     self.casesListChoice = wx.Choice(self.panel, -1, wx.DefaultPosition, choices=self.myCases)
25 ninoborges 8 platformStaticText = wx.StaticText(self.panel, -1, "Select Platform:",wx.DefaultPosition)
26     platformChoices = ["Concordance DIS","Concordance LN","Relativity"]
27     self.platformListChoice = wx.Choice(self.panel, -1, wx.DefaultPosition, choices=platformChoices)
28 nino.borges 203 #workDirStaticText = wx.StaticText(self.panel, -1, "Select Work Dir:",wx.DefaultPosition)
29     #self.workDirControl = wx.TextCtrl(self.panel,-1,os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"), size=(296,-1))
30     #workDirBrowseButton = wx.Button(self.panel, -1, "Browse", (10, 10))
31 ninoborges 8
32    
33     self.radio1 = wx.RadioButton(self.panel, -1, 'Individual File',style=wx.RB_GROUP)
34     self.fileBowserControl = wx.TextCtrl(self.panel, -1,size=(296,-1))
35     self.fileBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
36    
37     self.requestAssistanceCheckBox = wx.CheckBox(self.panel,-1,": Request Data Analyst Assistance")
38     self.requestAssistanceCheckBox.Enable(False) ## Change me when you go live with this service.
39    
40     self.radio2 = wx.RadioButton(self.panel, -1, 'Entire folder of Files')
41     self.dirBowserControl = wx.TextCtrl(self.panel, -1, size=(296,-1))
42     self.dirBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
43     self.dirBowserControl.Enable(False)
44     self.dirBowserButton.Enable(False)
45    
46 nino.borges 203 self.radio3 = wx.RadioButton(self.panel, -1, 'From Vendor Folder')
47     self.vendorBowserControl = wx.TextCtrl(self.panel, -1, size=(296,-1))
48     self.vendorBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
49     self.vendorBowserControl.Enable(False)
50     self.vendorBowserButton.Enable(False)
51 ninoborges 8
52 nino.borges 203
53 ninoborges 8 self.CreateBoxesSection()
54     copyUpTypeStaticBox = wx.StaticBox(self.panel, -1, 'Copy Up:')
55     copyUpTypeStaticBoxSizer = wx.StaticBoxSizer(copyUpTypeStaticBox, wx.VERTICAL)
56    
57     radio1Sizer = wx.FlexGridSizer(1,3,10,10)
58     radio1Sizer.Add(self.radio1, 0, 0)
59     radio1Sizer.Add(self.fileBowserControl, 0)
60     radio1Sizer.Add(self.fileBowserButton, 0)
61     copyUpTypeStaticBoxSizer.Add(radio1Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
62 nino.borges 203
63 ninoborges 8 radio2Sizer = wx.FlexGridSizer(1,3,10,10)
64     radio2Sizer.Add(self.radio2, 0)
65     radio2Sizer.Add(self.dirBowserControl, 0)
66     radio2Sizer.Add(self.dirBowserButton, 0)
67 nino.borges 203
68 ninoborges 8 copyUpTypeStaticBoxSizer.Add(radio2Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
69 nino.borges 203 radio3Sizer = wx.FlexGridSizer(1,3,10,10)
70     radio3Sizer.Add(self.radio3, 0)
71     radio3Sizer.Add(self.vendorBowserControl, 0)
72     radio3Sizer.Add(self.vendorBowserButton, 0)
73     copyUpTypeStaticBoxSizer.Add(radio3Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
74 ninoborges 8
75     casesSizer = wx.FlexGridSizer(2,2,15,5)
76     casesSizer.Add(casesListStaticText)
77     casesSizer.Add(self.casesListChoice)
78     casesSizer.Add(platformStaticText)
79     casesSizer.Add(self.platformListChoice)
80     #casesSizer = wx.BoxSizer(wx.HORIZONTAL)
81     #casesSizer.Add(casesListStaticText,0,wx.ALL,5)
82     #casesSizer.Add(self.casesListChoice,0,wx.ALL,5)
83     #casesSizer.Add(platformStaticText,0,wx.ALL,5)
84     #casesSizer.Add(self.platformListChoice,0,wx.ALL,5)
85 nino.borges 203 #workDirSizer = wx.BoxSizer(wx.HORIZONTAL)
86     #workDirSizer.Add(workDirStaticText,0,wx.ALL,5)
87     #workDirSizer.Add(self.workDirControl,0,wx.ALL,5)
88     #workDirSizer.Add(workDirBrowseButton,0,wx.ALL,5)
89 ninoborges 8 mainSizer = wx.BoxSizer(wx.VERTICAL)
90     mainSizer.Add(casesSizer,0,wx.ALL, 20)
91 nino.borges 203 #mainSizer.Add(workDirSizer,0,wx.ALL, 10)
92 ninoborges 8 mainSizer.Add(copyUpTypeStaticBoxSizer, 0, wx.ALL, 10)
93     mainSizer.Add(self.requestAssistanceCheckBox,0,wx.ALL|wx.ALIGN_CENTER,5)
94 nino.borges 203
95    
96 ninoborges 8 mainSizer.Add(self.buttonSizer,0, wx.ALL|wx.ALIGN_BOTTOM|wx.ALIGN_CENTER, 10)
97    
98     self.panel.SetSizer(mainSizer)
99 nino.borges 189 self.CreateMenuBar()
100 ninoborges 8 self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio1)
101     self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio2)
102 nino.borges 203 self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio3)
103     #self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, workDirBrowseButton)
104 ninoborges 8 self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.fileBowserButton)
105     self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.dirBowserButton)
106 nino.borges 203 self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.vendorBowserButton)
107 ninoborges 8 self.Bind(wx.EVT_BUTTON, self.OnProcess, self.oKButton)
108     self.Bind(wx.EVT_BUTTON, self.CloseWindow, self.cancelButton)
109    
110     def OnRadio(self,event):
111     radioObj = event.GetEventObject()
112     selection = radioObj.GetLabel()
113     if selection == "Individual File":
114     self.fileBowserControl.Enable(True)
115     self.fileBowserButton.Enable(True)
116    
117     self.dirBowserControl.Enable(False)
118     self.dirBowserButton.Enable(False)
119 nino.borges 203 self.vendorBowserControl.Enable(False)
120     self.vendorBowserButton.Enable(False)
121    
122 ninoborges 8 self.dirBowserControl.SetValue("")
123 nino.borges 203 self.vendorBowserControl.SetValue("")
124    
125     elif selection == "Entire folder of Files":
126     self.dirBowserControl.Enable(True)
127     self.dirBowserButton.Enable(True)
128    
129     self.fileBowserControl.Enable(False)
130     self.fileBowserButton.Enable(False)
131     self.vendorBowserControl.Enable(False)
132     self.vendorBowserButton.Enable(False)
133    
134     self.fileBowserControl.SetValue("")
135     self.vendorBowserControl.SetValue("")
136    
137 ninoborges 8 else:
138 nino.borges 203 self.vendorBowserControl.Enable(True)
139     self.vendorBowserButton.Enable(True)
140    
141 ninoborges 8 self.fileBowserControl.Enable(False)
142     self.fileBowserButton.Enable(False)
143 nino.borges 203 self.dirBowserControl.Enable(False)
144     self.dirBowserButton.Enable(False)
145    
146 ninoborges 8 self.fileBowserControl.SetValue("")
147 nino.borges 203 self.dirBowserControl.SetValue("")
148 ninoborges 8
149     #if self.selectedText:
150     # self.selectedText.Enable(False)
151     #radioSelected = event.GetEventObject()
152     #text = self.texts[radioSelected.GetLabel()]
153     #text.Enable(True)
154     #self.selectedText = text
155    
156     def OnBrowseClick(self,event):
157     eventCode = event.GetId()
158     #print eventCode
159 nino.borges 203 #if eventCode == -209:
160     # dlg = wx.DirDialog(self, message = "Working Directory Path: ", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
161     # if dlg.ShowModal() == wx.ID_OK:
162     # dirPath = dlg.GetPath()
163     # dlg.Destroy()
164     # self.workDirControl.SetValue(dirPath)
165 ninoborges 8 if eventCode == -209:
166     dlg = wx.FileDialog(self, message="Select file to copy up:",defaultDir=os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"), defaultFile="",wildcard= "*.*",style=wx.OPEN | wx.CHANGE_DIR)
167     #dlg = wx.FileDialog(self, message = "Select directory to copy up: ", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
168     if dlg.ShowModal() == wx.ID_OK:
169     filePath = dlg.GetPath()
170     dlg.Destroy()
171     self.fileBowserControl.SetValue(filePath)
172 nino.borges 203 elif eventCode == -213:
173 ninoborges 8 dlg = wx.DirDialog(self, message = "Select directory to copy up:", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
174     if dlg.ShowModal() == wx.ID_OK:
175     dirPath = dlg.GetPath()
176     dlg.Destroy()
177     self.dirBowserControl.SetValue(dirPath)
178 nino.borges 203 elif eventCode == -216:
179     expdtObj = MCP_Lib.ExpeDatConnection('Relativity')
180     folderMatrix = expdtObj.GatherFullDirListMatrix('Uploads/mwevendor09')
181     dlg = VendorBrowserDialog(self,'mwevendor09',folderMatrix)#"foo001",['test1','test2',['foosub',['testr',]],])
182     if dlg.ShowModal() == wx.ID_OK:
183     vendorPath = dlg.GetValues()
184     dlg.Destroy()
185     self.vendorBowserControl.SetValue(vendorPath)
186 ninoborges 8
187     def CreateBoxesSection(self):
188     self.oKButton = wx.Button(self.panel, wx.ID_OK)
189     self.oKButton.SetDefault()
190     self.oKButton.SetSize(self.oKButton.GetBestSize())
191     self.cancelButton = wx.Button(self.panel, wx.ID_CANCEL)
192     self.cancelButton.SetSize(self.cancelButton.GetBestSize())
193     self.buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
194     self.buttonSizer.Add(self.oKButton,0,wx.ALL,10)
195     self.buttonSizer.Add(self.cancelButton,0,wx.ALL,10)
196    
197 nino.borges 189 def MenuData(self):
198     return(("View",
199     ("My Cases", "Chooses from your assigned cases.",self.OnChangeCaseView,"RADIO"),
200     ("My Office Cases", "Chooses from cases assigned to everyone in your office.",self.OnChangeCaseView,"RADIO"),
201     ("All Cases", "Chooses from all cases.",self.OnChangeCaseView,"RADIO")),
202 nino.borges 203 ("&Settings",
203     ("&Working Directory", "Allows you to change the local Buffer directory.", self.OnChangeWorkDir,"")),
204 nino.borges 189 ("&Help",
205     ("&About", "Displays the About Window.", self.OnAbout,"")))
206    
207     def CreateMenuBar(self):
208     menuBar = wx.MenuBar()
209     count = 1
210     for eachMenuData in self.MenuData():
211     menuLabel = eachMenuData[0]
212     menuItems = eachMenuData[1:]
213     menuBar.Append(self.CreateMenu(menuItems), menuLabel)
214     count = count + 1
215     self.SetMenuBar(menuBar)
216    
217    
218     def CreateMenu(self, menuData):
219     menu = wx.Menu()
220     for eachLabel, eachStatus, eachHandler, eachType in menuData:
221     if not eachLabel:
222     menu.AppendSeparator()
223     continue
224     if eachType == "RADIO":
225     menuItem = menu.AppendRadioItem(-1,eachLabel,eachStatus)
226     else:
227     menuItem = menu.Append(-1, eachLabel, eachStatus)
228     self.Bind(wx.EVT_MENU, eachHandler, menuItem)
229     return menu
230    
231 ninoborges 8 def CloseWindow(self, event):
232     self.Close(True)
233 nino.borges 189
234     def OnChangeCaseView(self,event):
235     self.casesListChoice.Clear()
236     eventID = event.GetId()
237     if eventID == 100:
238     #change it to my cases
239     self.casesListChoice.SetItems(self.myCases)
240    
241    
242     if eventID == 101:
243     #change it to office cases
244     self.casesListChoice.SetItems(self.officeCases)
245    
246    
247     if eventID == 102:
248     #change it to all cases
249     self.casesListChoice.SetItems(self.allCases)
250    
251    
252 nino.borges 203 def OnChangeWorkDir(self,event):
253     pass
254 ninoborges 8
255     def OnProcess(self, event):
256     caseName = self.casesListChoice.GetStringSelection()
257     platform = self.platformListChoice.GetStringSelection()
258     workDir = self.workDirControl.GetValue()
259     #workDir = r"E:"
260     if self.radio1.GetValue():
261     startSelection = self.fileBowserControl.GetValue()
262     else:
263     startSelection = self.dirBowserControl.GetValue()
264     #startSelection = r"C:\Documents and Settings\eborges\Desktop\Working\Misc_Documents.zip"
265     self.Show(False)
266     #print "workdir is %s"%workDir
267     MCP_CopyUp_Request.Process(caseName, workDir, startSelection, platform)
268    
269     #diag = wx.MessageDialog(self,"All Items processed and copied!!", "Complete",wx.OK | wx.ICON_INFORMATION)
270     #diag.ShowModal()
271     #diag.Destroy()
272     self.Destroy()
273    
274 nino.borges 189 def OnAbout(self, event):
275     """
276     OnAbout(self,event) Displays an about dialog with developer and bug reporting info
277     """
278     dlg = wx.MessageDialog(self, "MCP is a case organization program.\n"
279     "\n\n"
280     "For questions or comments about this program\n"
281     "or to report a bug, please email the program\n"
282     "creator at Nino.Borges@gmail.com\n\n"
283     "MCP is\n"
284     "Copyright (c) 2011 Emanuel Borges.\n"
285     "All rights reserved.\n"
286     "(Nino.Borges@gmail.com)\n",
287     "About MCP", wx.OK | wx.ICON_INFORMATION)
288     dlg.ShowModal()
289     dlg.Destroy()
290 ninoborges 8
291    
292 nino.borges 203 class VendorBrowserDialog(wx.Dialog):
293     def __init__(self, parent, vendorFolder, treeMatrix):
294     wx.Dialog.__init__(self, parent, -1, "Vendor Folder Browser", style = wx.DEFAULT_DIALOG_STYLE, size = (300,400))
295     #wx.Dialog.__init__(self, parent,title= "Vendor Folder Browser", size = (300,400))
296     self.vendorFolder = vendorFolder
297    
298     il = wx.ImageList(16,16)
299     self.fldridx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER,wx.ART_OTHER, (16,16)))
300     self.fldropenidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN,wx.ART_OTHER, (16,16)))
301     self.fileidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE,wx.ART_OTHER, (16,16)))
302    
303     self.vendorTree = wx.TreeCtrl(self, size=(200,310))
304     self.vendorTree.AssignImageList(il)
305    
306     rootVendorFolderId = self.vendorTree.AddRoot(vendorFolder)
307    
308     self.AddTreeNodes(rootVendorFolderId, treeMatrix)
309     #childVendorFolderId2 = self.vendorTree.AppendItem(rootVendorFolderId,"test2")
310     #childVendorFolderId = self.vendorTree.AppendItem(childVendorFolderId2,"test")
311     self.vendorTree.Expand(rootVendorFolderId)
312    
313    
314     self.vendorTree.SetItemImage(rootVendorFolderId, self.fldridx, wx.TreeItemIcon_Normal)
315     self.vendorTree.SetItemImage(rootVendorFolderId, self.fldropenidx, wx.TreeItemIcon_Expanded)
316     ## this will need a if its a file do this else do the previous
317     #self.vendorTree.SetItemImage(childVendorFolderId, self.fileidx, wx.TreeItemIcon_Normal)
318    
319     mainSizer = wx.BoxSizer(wx.VERTICAL)
320     mainSizer.Add(self.vendorTree, 0, wx.EXPAND|wx.ALL, 5)
321    
322     oKButton = wx.Button(self, wx.ID_OK)
323     oKButton.SetDefault()
324     cancelButton = wx.Button(self, wx.ID_CANCEL)
325     buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
326     buttonSizer.Add(oKButton,0,wx.ALL,5)
327     buttonSizer.Add(cancelButton,0,wx.ALL,5)
328     mainSizer.Add(buttonSizer, 0, wx.ALIGN_CENTER|wx.ALL, 15)
329     self.SetSizer(mainSizer)
330     self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, self.vendorTree)
331 ninoborges 8
332 nino.borges 203 def AddTreeNodes(self, parentItem, items):
333     """
334     Recursively traverses the data structure, adding tree nodes to
335     match it.
336     """
337     for item in items:
338     if type(item) == str:
339     newItem = self.vendorTree.AppendItem(parentItem, item)
340     #self.tree.SetItemText(newItem, "A description of %s" % item, 1)
341     self.vendorTree.SetItemImage(newItem, self.fileidx,
342     wx.TreeItemIcon_Normal)
343     else:
344     newItem = self.vendorTree.AppendItem(parentItem, item[0])
345     #self.tree.SetItemText(newItem, "A description of %s" % item[0], 1)
346     self.vendorTree.SetItemImage(newItem, self.fldridx,
347     wx.TreeItemIcon_Normal)
348     self.vendorTree.SetItemImage(newItem, self.fldropenidx,
349     wx.TreeItemIcon_Expanded)
350    
351     self.AddTreeNodes(newItem, item[1])
352    
353     def OnSelChanged(self, event):
354     self.item = event.GetItem()
355     if self.item:
356     self.vendorFileSelected = self.vendorTree.GetItemText(self.item)
357     event.Skip()
358    
359     def GetValues(self):
360     vendorPath = self.vendorFileSelected
361     upItem = self.vendorTree.GetItemParent(self.item)
362     while upItem:
363     vendorPath = os.path.join(self.vendorTree.GetItemText(upItem),vendorPath)
364     upItem = self.vendorTree.GetItemParent(upItem)
365     return vendorPath
366    
367    
368 ninoborges 8 class MyApp(wx.App):
369     def OnInit(self):
370     prgVersion = MCP_Lib.GetMCPVersion()
371     self.frame = MyFrame(None, -1, "MCP Copy Up Request %s"%prgVersion)
372     self.frame.Show(True)
373     self.SetTopWindow(self.frame)
374     return True
375    
376    
377     if __name__ == '__main__':
378     app = MyApp(0)
379     app.MainLoop()