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: 496
Committed: Fri Dec 20 15:52:59 2013 UTC (12 years, 3 months ago) by nino.borges
Content type: text/x-python
File size: 31062 byte(s)
Log Message:
Moved the main mcp code to the trunk, for easier versioning.

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 nino.borges 258 import wx, MCP_Lib, MCP_CopyUp_Request,os,WorkDirDialog
14 nino.borges 464 import wx.lib.agw.pybusyinfo as PBI
15 nino.borges 458 from math import pi
16     import wx.lib.agw.speedmeter as SM
17 ninoborges 8 import wx.lib.filebrowsebutton as filebrowse
18    
19     class MyFrame(wx.Frame):
20     def __init__(self, parent, ID, title, pos=wx.DefaultPosition):
21 nino.borges 258 self.workDir = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working")
22 nino.borges 203 wx.Frame.__init__(self, parent, ID, title, pos, size =(585,450))
23 ninoborges 8 self.panel = wx.Panel(self,-1)
24     #self.panel.SetBackgroundColour("yellow green")
25     casesListStaticText = wx.StaticText(self.panel, -1, "Select Case: ",wx.DefaultPosition)
26 nino.borges 189 #casesList,casesDir = MCP_Lib.GetCaseList()
27 nino.borges 232 print "connecting to matter tracking access db..."
28     self.accessDB = MCP_Lib.AccessDBConnection(r"\\chiads01\app\DS_CaseTrack\TPM_CaseTracking.mdb")
29     print "connected to DB."
30 nino.borges 476 print "Waiting for Access..."
31 nino.borges 462 self.myCases, self.myActiveCases, self.officeCases, self.allCases, casesDir, self.casePathStyleMatrix = MCP_Lib.GetCaseList('',self.accessDB)
32 nino.borges 476 print "Access done."
33 nino.borges 189 self.casesListChoice = wx.Choice(self.panel, -1, wx.DefaultPosition, choices=self.myCases)
34 ninoborges 8 platformStaticText = wx.StaticText(self.panel, -1, "Select Platform:",wx.DefaultPosition)
35 nino.borges 464 self.platformChoices = ["Concordance DIS","Concordance LN","Relativity"]
36     self.platformListChoice = wx.Choice(self.panel, -1, wx.DefaultPosition, choices=self.platformChoices)
37 nino.borges 258
38 nino.borges 453 upLoadCatagoryStaticText = wx.StaticText(self.panel, -1, "Upload Type:",wx.DefaultPosition)
39 nino.borges 458 upLoadCatagoriesList = ['Processed Review Data','Hard Copy Review Data','Loose Unprocessed Review Data','Subset Tiffs','Other Party Production Data','Generic (Old Cases Only)',]
40 nino.borges 453 self.upLoadCatagory = wx.Choice(self.panel, -1, wx.DefaultPosition, choices=upLoadCatagoriesList)
41     self.upLoadCatagory.SetSelection(0)
42     self.upLoadCatagory.Enable(False)
43    
44 nino.borges 203 #workDirStaticText = wx.StaticText(self.panel, -1, "Select Work Dir:",wx.DefaultPosition)
45     #self.workDirControl = wx.TextCtrl(self.panel,-1,os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"), size=(296,-1))
46     #workDirBrowseButton = wx.Button(self.panel, -1, "Browse", (10, 10))
47 ninoborges 8
48    
49     self.radio1 = wx.RadioButton(self.panel, -1, 'Individual File',style=wx.RB_GROUP)
50     self.fileBowserControl = wx.TextCtrl(self.panel, -1,size=(296,-1))
51     self.fileBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
52    
53     self.requestAssistanceCheckBox = wx.CheckBox(self.panel,-1,": Request Data Analyst Assistance")
54     self.requestAssistanceCheckBox.Enable(False) ## Change me when you go live with this service.
55    
56     self.radio2 = wx.RadioButton(self.panel, -1, 'Entire folder of Files')
57     self.dirBowserControl = wx.TextCtrl(self.panel, -1, size=(296,-1))
58     self.dirBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
59     self.dirBowserControl.Enable(False)
60     self.dirBowserButton.Enable(False)
61    
62 nino.borges 203 self.radio3 = wx.RadioButton(self.panel, -1, 'From Vendor Folder')
63     self.vendorBowserControl = wx.TextCtrl(self.panel, -1, size=(296,-1))
64     self.vendorBowserButton = wx.Button(self.panel, -1, "Browse", (10, 10))
65     self.vendorBowserControl.Enable(False)
66     self.vendorBowserButton.Enable(False)
67 ninoborges 8
68 nino.borges 203
69 ninoborges 8 self.CreateBoxesSection()
70     copyUpTypeStaticBox = wx.StaticBox(self.panel, -1, 'Copy Up:')
71     copyUpTypeStaticBoxSizer = wx.StaticBoxSizer(copyUpTypeStaticBox, wx.VERTICAL)
72    
73     radio1Sizer = wx.FlexGridSizer(1,3,10,10)
74     radio1Sizer.Add(self.radio1, 0, 0)
75     radio1Sizer.Add(self.fileBowserControl, 0)
76     radio1Sizer.Add(self.fileBowserButton, 0)
77     copyUpTypeStaticBoxSizer.Add(radio1Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
78 nino.borges 203
79 ninoborges 8 radio2Sizer = wx.FlexGridSizer(1,3,10,10)
80     radio2Sizer.Add(self.radio2, 0)
81     radio2Sizer.Add(self.dirBowserControl, 0)
82     radio2Sizer.Add(self.dirBowserButton, 0)
83 nino.borges 203
84 ninoborges 8 copyUpTypeStaticBoxSizer.Add(radio2Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
85 nino.borges 203 radio3Sizer = wx.FlexGridSizer(1,3,10,10)
86     radio3Sizer.Add(self.radio3, 0)
87     radio3Sizer.Add(self.vendorBowserControl, 0)
88     radio3Sizer.Add(self.vendorBowserButton, 0)
89     copyUpTypeStaticBoxSizer.Add(radio3Sizer, 0, wx.ALL|wx.ALIGN_LEFT,20)
90 ninoborges 8
91 nino.borges 453 #casesSizer = wx.FlexGridSizer(2,2,15,5)
92     #casesSizer.Add(casesListStaticText)
93     #casesSizer.Add(self.casesListChoice)
94     #casesSizer.Add(platformStaticText)
95     #casesSizer.Add(self.platformListChoice)
96    
97     casesSizer = wx.GridBagSizer(8,12)
98     casesSizer.Add(casesListStaticText,pos=(0,0))
99     casesSizer.Add(self.casesListChoice,pos=(0,1), span = (1,3))
100     casesSizer.Add(platformStaticText,pos=(1,0))
101     casesSizer.Add(self.platformListChoice,pos=(1,1))
102     casesSizer.Add(upLoadCatagoryStaticText,pos=(1,2))
103     casesSizer.Add(self.upLoadCatagory,pos=(1,3))
104    
105 ninoborges 8 #casesSizer = wx.BoxSizer(wx.HORIZONTAL)
106     #casesSizer.Add(casesListStaticText,0,wx.ALL,5)
107     #casesSizer.Add(self.casesListChoice,0,wx.ALL,5)
108     #casesSizer.Add(platformStaticText,0,wx.ALL,5)
109     #casesSizer.Add(self.platformListChoice,0,wx.ALL,5)
110 nino.borges 203 #workDirSizer = wx.BoxSizer(wx.HORIZONTAL)
111     #workDirSizer.Add(workDirStaticText,0,wx.ALL,5)
112     #workDirSizer.Add(self.workDirControl,0,wx.ALL,5)
113     #workDirSizer.Add(workDirBrowseButton,0,wx.ALL,5)
114 ninoborges 8 mainSizer = wx.BoxSizer(wx.VERTICAL)
115     mainSizer.Add(casesSizer,0,wx.ALL, 20)
116 nino.borges 203 #mainSizer.Add(workDirSizer,0,wx.ALL, 10)
117 ninoborges 8 mainSizer.Add(copyUpTypeStaticBoxSizer, 0, wx.ALL, 10)
118     mainSizer.Add(self.requestAssistanceCheckBox,0,wx.ALL|wx.ALIGN_CENTER,5)
119 nino.borges 203
120    
121 ninoborges 8 mainSizer.Add(self.buttonSizer,0, wx.ALL|wx.ALIGN_BOTTOM|wx.ALIGN_CENTER, 10)
122    
123     self.panel.SetSizer(mainSizer)
124 nino.borges 189 self.CreateMenuBar()
125 nino.borges 464 self.Bind(wx.EVT_CHOICE, self.OnCaseSelect, self.casesListChoice)
126 nino.borges 453 self.Bind(wx.EVT_CHOICE, self.OnPlatformSelect, self.platformListChoice)
127 ninoborges 8 self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio1)
128     self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio2)
129 nino.borges 203 self.Bind(wx.EVT_RADIOBUTTON, self.OnRadio, self.radio3)
130     #self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, workDirBrowseButton)
131 ninoborges 8 self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.fileBowserButton)
132     self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.dirBowserButton)
133 nino.borges 203 self.Bind(wx.EVT_BUTTON, self.OnBrowseClick, self.vendorBowserButton)
134 ninoborges 8 self.Bind(wx.EVT_BUTTON, self.OnProcess, self.oKButton)
135     self.Bind(wx.EVT_BUTTON, self.CloseWindow, self.cancelButton)
136    
137     def OnRadio(self,event):
138     radioObj = event.GetEventObject()
139     selection = radioObj.GetLabel()
140     if selection == "Individual File":
141     self.fileBowserControl.Enable(True)
142     self.fileBowserButton.Enable(True)
143    
144     self.dirBowserControl.Enable(False)
145     self.dirBowserButton.Enable(False)
146 nino.borges 203 self.vendorBowserControl.Enable(False)
147     self.vendorBowserButton.Enable(False)
148    
149 ninoborges 8 self.dirBowserControl.SetValue("")
150 nino.borges 203 self.vendorBowserControl.SetValue("")
151    
152     elif selection == "Entire folder of Files":
153     self.dirBowserControl.Enable(True)
154     self.dirBowserButton.Enable(True)
155    
156     self.fileBowserControl.Enable(False)
157     self.fileBowserButton.Enable(False)
158     self.vendorBowserControl.Enable(False)
159     self.vendorBowserButton.Enable(False)
160    
161     self.fileBowserControl.SetValue("")
162     self.vendorBowserControl.SetValue("")
163    
164 ninoborges 8 else:
165 nino.borges 203 self.vendorBowserControl.Enable(True)
166     self.vendorBowserButton.Enable(True)
167    
168 ninoborges 8 self.fileBowserControl.Enable(False)
169     self.fileBowserButton.Enable(False)
170 nino.borges 203 self.dirBowserControl.Enable(False)
171     self.dirBowserButton.Enable(False)
172    
173 ninoborges 8 self.fileBowserControl.SetValue("")
174 nino.borges 203 self.dirBowserControl.SetValue("")
175 ninoborges 8
176     #if self.selectedText:
177     # self.selectedText.Enable(False)
178     #radioSelected = event.GetEventObject()
179     #text = self.texts[radioSelected.GetLabel()]
180     #text.Enable(True)
181     #self.selectedText = text
182    
183 nino.borges 464 def OnCaseSelect(self,event):
184     """They selected a new case, so reset platform choice and disable style"""
185     self.platformListChoice.SetItems(self.platformChoices)
186     self.upLoadCatagory.SetSelection(0)
187     self.upLoadCatagory.Enable(False)
188    
189 nino.borges 453 def OnPlatformSelect(self,event):
190     platform = self.platformListChoice.GetStringSelection()
191     if platform == 'Concordance DIS':
192     self.upLoadCatagory.Enable(False)
193     else:
194 nino.borges 464 caseName = self.casesListChoice.GetStringSelection()
195     clientMatter = caseName.split("_(")[1]
196     clientMatter = clientMatter[:-1]
197     casePathStyle = self.casePathStyleMatrix[clientMatter]
198     clientMatter = clientMatter.replace('-','.')
199     print casePathStyle
200     if casePathStyle == "NEW":
201     self.upLoadCatagory.Enable(True)
202     elif casePathStyle == "OLD":
203     self.upLoadCatagory.Enable(False)
204     else:
205     ## Make them pick one now.
206     dlg = wx.SingleChoiceDialog(
207     self, """A Case Path Style for this case has not yet been selected.\nPlease choose between using the old case path style\nor the new case path style below.\n\nIf you select the New case path style,\nyour folders on IDS will be created automatically.""", 'Case Path Style',
208     ['New Case Path Style', 'Old Case Path Style'],
209     wx.CHOICEDLG_STYLE
210     )
211     if dlg.ShowModal() == wx.ID_OK:
212     if dlg.GetStringSelection()[:3] == "New":
213     if platform == "Concordance LN":
214     platform = "Concordance"
215     print "new selected, making folders..."
216     message = "Please wait while the standard folder structure is created on IDS..."
217     busy = PBI.PyBusyInfo(message, parent=self, title="MCP: System Busy.")
218     MCP_Lib.CreateCasePathStyleFolders(platform,clientMatter)
219     print "folders made."
220     del busy
221     doneDlg = wx.MessageDialog(self, "MCP: The standard case folders have been created and your case path style options have been saved.", "MCP: Process Complete",wx.OK, wx.DefaultPosition)
222     self.accessDB.UpdateCasePathStyle(clientMatter,"NEW")
223     doneDlg.ShowModal()
224     doneDlg.Destroy()
225     self.upLoadCatagory.Enable(True)
226     else:
227     self.accessDB.UpdateCasePathStyle(clientMatter,"OLD")
228     doneDlg = wx.MessageDialog(self, "MCP: Your case path style options have been saved.", "MCP: Process Complete",wx.OK, wx.DefaultPosition)
229     doneDlg.ShowModal()
230     doneDlg.Destroy()
231     self.upLoadCatagory.Enable(False)
232     else:
233     self.platformListChoice.SetItems(self.platformChoices)
234     self.upLoadCatagory.Enable(False)
235     dlg.Destroy()
236    
237 nino.borges 453
238    
239 ninoborges 8 def OnBrowseClick(self,event):
240     eventCode = event.GetId()
241 nino.borges 476 #print "DEBUG: %s" % eventCode
242 nino.borges 203 #if eventCode == -209:
243     # dlg = wx.DirDialog(self, message = "Working Directory Path: ", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
244     # if dlg.ShowModal() == wx.ID_OK:
245     # dirPath = dlg.GetPath()
246     # dlg.Destroy()
247     # self.workDirControl.SetValue(dirPath)
248 nino.borges 476 if eventCode == -214:
249 ninoborges 8 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)
250     #dlg = wx.FileDialog(self, message = "Select directory to copy up: ", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
251     if dlg.ShowModal() == wx.ID_OK:
252     filePath = dlg.GetPath()
253     dlg.Destroy()
254 nino.borges 235 ## Test here to see if it's a zip. if not, give them warning about uncompressed size.
255 nino.borges 266 if os.path.splitext(filePath)[1].upper() in MCP_Lib.GetArchiveFileTypeList():
256     if os.path.splitext(filePath)[1].upper() == ".ZIP":
257     pass
258     else:
259     warningDlg = wx.MessageDialog(self,"MCP: You are attempting to copy an archive file that is not ZIP. The COMPRESSED SIZE will be gathered only.\nPlease change this size, once uncompressed, in View Edit.","WARNING!",wx.OK | wx.ICON_INFORMATION)
260     warningDlg.ShowModal()
261     warningDlg.Destroy()
262 ninoborges 8 self.fileBowserControl.SetValue(filePath)
263 nino.borges 476 elif eventCode == -218:
264 ninoborges 8 dlg = wx.DirDialog(self, message = "Select directory to copy up:", defaultPath = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working"))
265     if dlg.ShowModal() == wx.ID_OK:
266     dirPath = dlg.GetPath()
267     dlg.Destroy()
268     self.dirBowserControl.SetValue(dirPath)
269 nino.borges 476 elif eventCode == -221:
270 nino.borges 232 platform = self.platformListChoice.GetStringSelection()
271     if platform == 'Concordance LN':
272     platform = 'Concordance'
273     elif platform == 'Concordance DIS':
274     platform = None
275     if platform:
276 nino.borges 458 #expdtObj = MCP_Lib.ExpeDatConnection(platform)
277 nino.borges 232 caseName = self.casesListChoice.GetStringSelection()
278     clientMatter = caseName.split("_(")[1]
279     clientMatter = clientMatter[:-1]
280     clientMatter = clientMatter.replace('-','.')
281     vendorFolder = self.accessDB.GetVendorFolderPath(clientMatter)
282     if vendorFolder:
283 nino.borges 458 #waitDlg = WaitingOnDialog(self,"IDS Connection")
284     #waitDlg.ShowModal()
285     #waitDlg.Show(True)
286     #folderMatrix = expdtObj.GatherFullDirListMatrix('Uploads/%s'%vendorFolder)
287     #waitDlg.Destroy()
288     dlg = VendorBrowserDialog(self,vendorFolder,'Uploads/%s'%vendorFolder,platform)
289 nino.borges 232 if dlg.ShowModal() == wx.ID_OK:
290     vendorPath = dlg.GetValues()
291     dlg.Destroy()
292 nino.borges 266 if os.path.splitext(vendorPath)[1].upper() in MCP_Lib.GetArchiveFileTypeList():
293     if os.path.splitext(vendorPath)[1].upper() == ".ZIP":
294     pass
295     else:
296     warningDlg = wx.MessageDialog(self,"MCP: You are attempting to copy an archive file that is not ZIP. The COMPRESSED SIZE will be gathered only. Please change this value when you uncompress, in View Edit.","WARNING!",wx.OK | wx.ICON_INFORMATION)
297     warningDlg.ShowModal()
298     warningDlg.Destroy()
299 nino.borges 232 self.vendorBowserControl.SetValue(vendorPath)
300     else:
301     diag = wx.MessageDialog(self,"MCP: No vendor folder is currently linked to this case.","Does not exist",wx.OK | wx.ICON_INFORMATION)
302     diag.ShowModal()
303     diag.Destroy()
304     else:
305     diag = wx.MessageDialog(self,"MCP: Copying from LN to DIS is not yet supported.","ERROR",wx.OK | wx.ICON_INFORMATION)
306     diag.ShowModal()
307     diag.Destroy()
308 ninoborges 8
309     def CreateBoxesSection(self):
310     self.oKButton = wx.Button(self.panel, wx.ID_OK)
311     self.oKButton.SetDefault()
312     self.oKButton.SetSize(self.oKButton.GetBestSize())
313     self.cancelButton = wx.Button(self.panel, wx.ID_CANCEL)
314     self.cancelButton.SetSize(self.cancelButton.GetBestSize())
315     self.buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
316     self.buttonSizer.Add(self.oKButton,0,wx.ALL,10)
317     self.buttonSizer.Add(self.cancelButton,0,wx.ALL,10)
318    
319 nino.borges 189 def MenuData(self):
320     return(("View",
321     ("My Cases", "Chooses from your assigned cases.",self.OnChangeCaseView,"RADIO"),
322 nino.borges 454 ("My Active Cases", "Chooses from your assigned cases, filtered by Active Cases.",self.OnChangeCaseView,"RADIO"),
323 nino.borges 189 ("My Office Cases", "Chooses from cases assigned to everyone in your office.",self.OnChangeCaseView,"RADIO"),
324     ("All Cases", "Chooses from all cases.",self.OnChangeCaseView,"RADIO")),
325 nino.borges 203 ("&Settings",
326     ("&Working Directory", "Allows you to change the local Buffer directory.", self.OnChangeWorkDir,"")),
327 nino.borges 189 ("&Help",
328     ("&About", "Displays the About Window.", self.OnAbout,"")))
329    
330     def CreateMenuBar(self):
331     menuBar = wx.MenuBar()
332     count = 1
333     for eachMenuData in self.MenuData():
334     menuLabel = eachMenuData[0]
335     menuItems = eachMenuData[1:]
336     menuBar.Append(self.CreateMenu(menuItems), menuLabel)
337     count = count + 1
338     self.SetMenuBar(menuBar)
339    
340    
341     def CreateMenu(self, menuData):
342     menu = wx.Menu()
343     for eachLabel, eachStatus, eachHandler, eachType in menuData:
344     if not eachLabel:
345     menu.AppendSeparator()
346     continue
347     if eachType == "RADIO":
348     menuItem = menu.AppendRadioItem(-1,eachLabel,eachStatus)
349     else:
350     menuItem = menu.Append(-1, eachLabel, eachStatus)
351     self.Bind(wx.EVT_MENU, eachHandler, menuItem)
352     return menu
353    
354 ninoborges 8 def CloseWindow(self, event):
355     self.Close(True)
356 nino.borges 189
357     def OnChangeCaseView(self,event):
358     self.casesListChoice.Clear()
359     eventID = event.GetId()
360 nino.borges 476 print eventID
361 nino.borges 189 if eventID == 100:
362     #change it to my cases
363     self.casesListChoice.SetItems(self.myCases)
364    
365 nino.borges 454 if eventID == 101:
366     #change it to my active cases
367     self.casesListChoice.SetItems(self.myActiveCases)
368 nino.borges 189
369 nino.borges 454 if eventID == 102:
370 nino.borges 189 #change it to office cases
371     self.casesListChoice.SetItems(self.officeCases)
372    
373    
374 nino.borges 454 if eventID == 103:
375 nino.borges 189 #change it to all cases
376     self.casesListChoice.SetItems(self.allCases)
377    
378    
379 nino.borges 203 def OnChangeWorkDir(self,event):
380 nino.borges 258 dlg = WorkDirDialog.WorkDirDialog(self, self.workDir)
381     if dlg.ShowModal() == wx.ID_OK:
382     self.workDir = dlg.GetValues()
383     #print self.workDir
384     dlg.Destroy()
385    
386 ninoborges 8
387     def OnProcess(self, event):
388     caseName = self.casesListChoice.GetStringSelection()
389     platform = self.platformListChoice.GetStringSelection()
390 nino.borges 485 if self.upLoadCatagory.IsEnabled():
391     uploadType = self.upLoadCatagory.GetStringSelection()
392     else:
393     uploadType = 'Generic (Old Cases Only)'
394 nino.borges 235 ## CHANGE to the new place
395     #workDir = self.workDirControl.GetValue()
396 nino.borges 258 #workDir = os.path.join(os.environ.get("USERPROFILE"),"Desktop\\Working")
397 nino.borges 235
398 ninoborges 8 if self.radio1.GetValue():
399     startSelection = self.fileBowserControl.GetValue()
400 nino.borges 236 sourceMediaLocation = 'local'
401     elif self.radio2.GetValue():
402     startSelection = self.dirBowserControl.GetValue()
403     sourceMediaLocation = 'local'
404 ninoborges 8 else:
405 nino.borges 236 startSelection = self.vendorBowserControl.GetValue()
406     sourceMediaLocation = 'remote'
407 ninoborges 8 #startSelection = r"C:\Documents and Settings\eborges\Desktop\Working\Misc_Documents.zip"
408     self.Show(False)
409     #print "workdir is %s"%workDir
410 nino.borges 457 MCP_CopyUp_Request.Process(caseName, self.workDir, startSelection, platform, sourceMediaLocation, uploadType)
411 ninoborges 8
412     #diag = wx.MessageDialog(self,"All Items processed and copied!!", "Complete",wx.OK | wx.ICON_INFORMATION)
413     #diag.ShowModal()
414     #diag.Destroy()
415     self.Destroy()
416    
417 nino.borges 189 def OnAbout(self, event):
418     """
419     OnAbout(self,event) Displays an about dialog with developer and bug reporting info
420     """
421     dlg = wx.MessageDialog(self, "MCP is a case organization program.\n"
422     "\n\n"
423     "For questions or comments about this program\n"
424     "or to report a bug, please email the program\n"
425     "creator at Nino.Borges@gmail.com\n\n"
426     "MCP is\n"
427     "Copyright (c) 2011 Emanuel Borges.\n"
428     "All rights reserved.\n"
429     "(Nino.Borges@gmail.com)\n",
430     "About MCP", wx.OK | wx.ICON_INFORMATION)
431     dlg.ShowModal()
432     dlg.Destroy()
433 ninoborges 8
434    
435 nino.borges 203 class VendorBrowserDialog(wx.Dialog):
436 nino.borges 458 def __init__(self, parent, vendorFolder, rootPath,platform):
437 nino.borges 203 wx.Dialog.__init__(self, parent, -1, "Vendor Folder Browser", style = wx.DEFAULT_DIALOG_STYLE, size = (300,400))
438     #wx.Dialog.__init__(self, parent,title= "Vendor Folder Browser", size = (300,400))
439     self.vendorFolder = vendorFolder
440 nino.borges 458 self.rootPath = rootPath
441     self.expedatObj = MCP_Lib.ExpeDatConnection(platform)
442 nino.borges 203
443     il = wx.ImageList(16,16)
444     self.fldridx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER,wx.ART_OTHER, (16,16)))
445     self.fldropenidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN,wx.ART_OTHER, (16,16)))
446     self.fileidx = il.Add(wx.ArtProvider.GetBitmap(wx.ART_NORMAL_FILE,wx.ART_OTHER, (16,16)))
447    
448     self.vendorTree = wx.TreeCtrl(self, size=(200,310))
449     self.vendorTree.AssignImageList(il)
450    
451     rootVendorFolderId = self.vendorTree.AddRoot(vendorFolder)
452 nino.borges 458 ids = {self.rootPath:rootVendorFolderId}
453 nino.borges 203
454 nino.borges 458 waitDlg = WaitingOnDialog(self,"IDS Connection")
455     waitDlg.Show(True)
456     #wx.Yield()
457     self.AddTreeNodes(ids)
458     waitDlg.Destroy()
459    
460 nino.borges 203 #childVendorFolderId2 = self.vendorTree.AppendItem(rootVendorFolderId,"test2")
461     #childVendorFolderId = self.vendorTree.AppendItem(childVendorFolderId2,"test")
462     self.vendorTree.Expand(rootVendorFolderId)
463    
464    
465     self.vendorTree.SetItemImage(rootVendorFolderId, self.fldridx, wx.TreeItemIcon_Normal)
466     self.vendorTree.SetItemImage(rootVendorFolderId, self.fldropenidx, wx.TreeItemIcon_Expanded)
467     ## this will need a if its a file do this else do the previous
468     #self.vendorTree.SetItemImage(childVendorFolderId, self.fileidx, wx.TreeItemIcon_Normal)
469    
470     mainSizer = wx.BoxSizer(wx.VERTICAL)
471     mainSizer.Add(self.vendorTree, 0, wx.EXPAND|wx.ALL, 5)
472    
473     oKButton = wx.Button(self, wx.ID_OK)
474     oKButton.SetDefault()
475     cancelButton = wx.Button(self, wx.ID_CANCEL)
476     buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
477     buttonSizer.Add(oKButton,0,wx.ALL,5)
478     buttonSizer.Add(cancelButton,0,wx.ALL,5)
479     mainSizer.Add(buttonSizer, 0, wx.ALIGN_CENTER|wx.ALL, 15)
480     self.SetSizer(mainSizer)
481     self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, self.vendorTree)
482 ninoborges 8
483 nino.borges 203
484 nino.borges 458 def AddTreeNodes(self, ids):
485     for (dirpath, dirnames, filenames) in self.expedatObj.ExpeDatWalk(self.rootPath):
486     for dirname in dirnames:
487     fullpath = os.path.join(dirpath, dirname)
488     ids[fullpath] = self.vendorTree.AppendItem(ids[dirpath], dirname)
489     self.vendorTree.SetItemImage(ids[fullpath], self.fldridx,wx.TreeItemIcon_Normal)
490     self.vendorTree.SetItemImage(ids[fullpath], self.fldropenidx,wx.TreeItemIcon_Expanded)
491     for filename in sorted(filenames):
492     newItem = self.vendorTree.AppendItem(ids[dirpath], filename)
493     self.vendorTree.SetItemImage(newItem, self.fileidx, wx.TreeItemIcon_Normal)
494    
495    
496     #def AddTreeNodes(self, parentItem, items):
497     # """
498     # Recursively traverses the data structure, adding tree nodes to
499     # match it.
500     # """
501     # for item in items:
502     # if type(item) == str:
503     # newItem = self.vendorTree.AppendItem(parentItem, item)
504     # #self.tree.SetItemText(newItem, "A description of %s" % item, 1)
505     # self.vendorTree.SetItemImage(newItem, self.fileidx,
506     # wx.TreeItemIcon_Normal)
507     # else:
508     # newItem = self.vendorTree.AppendItem(parentItem, item[0])
509     # #self.tree.SetItemText(newItem, "A description of %s" % item[0], 1)
510     # self.vendorTree.SetItemImage(newItem, self.fldridx,
511     # wx.TreeItemIcon_Normal)
512     # self.vendorTree.SetItemImage(newItem, self.fldropenidx,
513     # wx.TreeItemIcon_Expanded)
514     #
515     # self.AddTreeNodes(newItem, item[1])
516    
517 nino.borges 203 def OnSelChanged(self, event):
518     self.item = event.GetItem()
519     if self.item:
520     self.vendorFileSelected = self.vendorTree.GetItemText(self.item)
521     event.Skip()
522    
523     def GetValues(self):
524     vendorPath = self.vendorFileSelected
525     upItem = self.vendorTree.GetItemParent(self.item)
526     while upItem:
527     vendorPath = os.path.join(self.vendorTree.GetItemText(upItem),vendorPath)
528     upItem = self.vendorTree.GetItemParent(upItem)
529     return vendorPath
530    
531 nino.borges 458 class WaitingOnDialog(wx.Dialog):
532     def __init__(self, parent, waitingOnThing):
533     wx.Dialog.__init__(self, parent, -1, "Waiting on %s ..."%waitingOnThing, style = wx.DEFAULT_DIALOG_STYLE, size = (200,200))
534     self.SpeedWindow2 = SM.SpeedMeter(self,agwStyle=SM.SM_DRAW_HAND |SM.SM_DRAW_SECTORS |SM.SM_DRAW_MIDDLE_TEXT |
535     SM.SM_DRAW_SECONDARY_TICKS |
536     SM.SM_DRAW_PARTIAL_FILLER |
537     SM.SM_DRAW_SHADOW
538     )
539     # We Want To Simulate A Clock. Somewhat Tricky, But Did The Job
540     self.SpeedWindow2.SetAngleRange(pi/2, 5*pi/2)
541 nino.borges 203
542 nino.borges 458 intervals = range(0, 13)
543     self.SpeedWindow2.SetIntervals(intervals)
544    
545     colours = [wx.SystemSettings_GetColour(0)]*12
546     self.SpeedWindow2.SetIntervalColours(colours)
547    
548     ticks = [str(interval) for interval in intervals]
549     ticks[-1] = ""
550     ticks[0] = "12"
551     self.SpeedWindow2.SetTicks(ticks)
552     self.SpeedWindow2.SetTicksColour(wx.BLUE)
553     self.SpeedWindow2.SetTicksFont(wx.Font(11, wx.SCRIPT, wx.NORMAL, wx.BOLD, True))
554     self.SpeedWindow2.SetNumberOfSecondaryTicks(4)
555    
556     # Set The Colour For The External Arc
557     self.SpeedWindow2.SetArcColour(wx.BLUE)
558    
559     self.SpeedWindow2.SetHandColour(wx.BLACK)
560    
561     self.SpeedWindow2.SetMiddleText("0 s")
562     self.SpeedWindow2.SetMiddleTextColour(wx.RED)
563    
564     # We Set The Background Colour Of The SpeedMeter OutSide The Control
565     self.SpeedWindow2.SetSpeedBackground(wx.WHITE)
566    
567     # Set The Colour For The Shadow
568     self.SpeedWindow2.SetShadowColour(wx.Colour(128, 128, 128))
569    
570     self.SpeedWindow2.SetSpeedValue(0.0)
571    
572    
573     # These Are Cosmetics For The Second SpeedMeter Control
574    
575     # Create The Timer For The Clock
576     self.timer = wx.PyTimer(self.ClockTimer)
577     self.currvalue = 0
578    
579     bsizer2 = wx.BoxSizer(wx.VERTICAL)
580    
581     #hsizer2 = wx.BoxSizer(wx.HORIZONTAL)
582     #stattext2 = wx.StaticText(self, -1, "A Simple Clock", style=wx.ALIGN_CENTER)
583    
584     #button2 = wx.Button(self, -1, "Stop")
585     self.stopped = 0
586     #button2.Bind(wx.EVT_BUTTON, self.OnStopClock)
587     #button2.SetToolTip(wx.ToolTip("Click To Stop/Resume The Clock"))
588    
589     #hsizer2.Add(button2, 0, wx.LEFT, 5)
590     #hsizer2.Add(stattext2, 1, wx.EXPAND)
591    
592     bsizer2.Add(self.SpeedWindow2, 1, wx.EXPAND)
593     #bsizer2.Add(hsizer2, 0, wx.EXPAND)
594     self.SetSizer(bsizer2)
595     wx.Yield()
596     self.timer.Start(1000)
597     #self.timer3.Start(500)
598     wx.Yield()
599    
600    
601     #mainSizer = wx.BoxSizer(wx.VERTICAL)
602     #mainSizer.Add(SpeedWindow2, 0, wx.EXPAND|wx.ALL, 5)
603     #self.SetSizer(mainSizer)
604     def ClockTimer(self):
605     if self.currvalue >= 59:
606     self.currvalue = 0
607     else:
608     self.currvalue = self.currvalue + 1
609     wx.Yield()
610    
611     self.SpeedWindow2.SetMiddleText(str(self.currvalue) + " s")
612     self.SpeedWindow2.SetSpeedValue(self.currvalue/5.0)
613    
614    
615     def OnStopClock(self, event):
616    
617     btn = event.GetEventObject()
618    
619     if self.stopped == 0:
620     self.stopped = 1
621     self.timer.Stop()
622     btn.SetLabel("Resume")
623     else:
624     self.stopped = 0
625     self.timer.Start()
626     btn.SetLabel("Stop")
627    
628    
629    
630 ninoborges 8 class MyApp(wx.App):
631     def OnInit(self):
632 nino.borges 466 image = wx.Image("DDSC-LTsmall_2.jpg", wx.BITMAP_TYPE_JPEG)
633     bmp = image.ConvertToBitmap()
634     wx.SplashScreen(bmp, wx.SPLASH_CENTRE_ON_PARENT |wx.SPLASH_TIMEOUT, 2000, None, -1)
635     wx.Yield()
636 ninoborges 8 prgVersion = MCP_Lib.GetMCPVersion()
637     self.frame = MyFrame(None, -1, "MCP Copy Up Request %s"%prgVersion)
638     self.frame.Show(True)
639     self.SetTopWindow(self.frame)
640     return True
641    
642    
643     if __name__ == '__main__':
644     app = MyApp(0)
645     app.MainLoop()