ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Active_prgs/Redgrave/RelativitySearchReport_UI.py
Revision: 896
Committed: Tue May 27 21:52:52 2025 UTC (10 months ago) by nino.borges
Content type: text/x-python
File size: 4010 byte(s)
Log Message:
Changed it so that the Workspace control now appears on the same line as the Service Provider control.

File Contents

# Content
1
2 """
3
4 RelativitySearchReport_UI
5
6 Created by:
7 Emanuel Borges
8 05.25.2025
9
10 UI for the program that creates the Relativity Saved Search Report.
11
12 """
13
14
15 import wx
16 import os
17
18 version = '0.02'
19
20 class MyFrame(wx.Frame):
21 def __init__(self, parent, ID, title, pos=wx.DefaultPosition):
22 wx.Frame.__init__(self, parent, ID, title, pos, size=(600, 300))
23 self.panel = wx.Panel(self, -1)
24
25 self.serviceProviders = ["Foo", "Bar"]
26 self.workspaceOptions = {
27 "Foo": ["Spam", "Eggs", "EggsEggs"],
28 "Bar": ["Rabbit", "Lamp"]
29 }
30
31 self.CreateControls()
32 self.CreateButtons()
33
34 mainSizer = wx.BoxSizer(wx.VERTICAL)
35 mainSizer.Add(self.controlsSizer, 0, wx.ALL | wx.EXPAND, 20)
36 mainSizer.Add(self.filePicker, 0, wx.ALL | wx.EXPAND, 20)
37 mainSizer.Add(self.buttonSizer, 0, wx.ALL | wx.CENTER, 10)
38
39 self.panel.SetSizer(mainSizer)
40 self.CreateStatusBar()
41 self.SetStatusText("Ready.")
42
43 self.okButton.Disable()
44
45 def CreateControls(self):
46 self.controlsSizer = wx.BoxSizer(wx.HORIZONTAL)
47
48 self.serviceProviderLabel = wx.StaticText(self.panel, label="Service Provider")
49 self.serviceProviderChoice = wx.Choice(self.panel, choices=self.serviceProviders)
50 self.serviceProviderChoice.Bind(wx.EVT_CHOICE, self.OnServiceProviderSelected)
51
52 self.workspaceLabel = wx.StaticText(self.panel, label="Workspace")
53 self.workspaceChoice = wx.Choice(self.panel, choices=[])
54 self.workspaceChoice.Bind(wx.EVT_CHOICE, self.OnAnySelectionChanged)
55
56 serviceSizer = wx.BoxSizer(wx.VERTICAL)
57 serviceSizer.Add(self.serviceProviderLabel, 0, wx.BOTTOM, 5)
58 serviceSizer.Add(self.serviceProviderChoice, 0, wx.RIGHT, 15)
59
60 workspaceSizer = wx.BoxSizer(wx.VERTICAL)
61 workspaceSizer.Add(self.workspaceLabel, 0, wx.BOTTOM, 5)
62 workspaceSizer.Add(self.workspaceChoice)
63
64 self.controlsSizer.Add(serviceSizer, 0, wx.RIGHT, 20)
65 self.controlsSizer.Add(workspaceSizer)
66
67 self.filePicker = wx.FilePickerCtrl(self.panel, message="Select a CSV file", wildcard="CSV files (*.csv)|*.csv")
68 self.filePicker.Bind(wx.EVT_FILEPICKER_CHANGED, self.OnAnySelectionChanged)
69
70 def CreateButtons(self):
71 self.okButton = wx.Button(self.panel, -1, "Ok")
72 self.cancelButton = wx.Button(self.panel, -1, "Cancel")
73
74 self.okButton.Bind(wx.EVT_BUTTON, self.OnProcess)
75 self.cancelButton.Bind(wx.EVT_BUTTON, self.CloseWindow)
76
77 self.buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
78 self.buttonSizer.Add(self.okButton, 0, wx.ALL, 10)
79 self.buttonSizer.Add(self.cancelButton, 0, wx.ALL, 10)
80
81 def OnServiceProviderSelected(self, event):
82 selected_provider = self.serviceProviderChoice.GetStringSelection()
83 self.workspaceChoice.Set(self.workspaceOptions.get(selected_provider, []))
84 self.workspaceChoice.SetSelection(wx.NOT_FOUND)
85 self.OnAnySelectionChanged(None)
86
87 def OnAnySelectionChanged(self, event):
88 service_selected = self.serviceProviderChoice.GetSelection() != wx.NOT_FOUND
89 workspace_selected = self.workspaceChoice.GetSelection() != wx.NOT_FOUND
90 file_selected = bool(self.filePicker.GetPath())
91 if service_selected and workspace_selected and file_selected:
92 self.okButton.Enable()
93 else:
94 self.okButton.Disable()
95
96 def OnProcess(self, event):
97 print(f"Service Provider: {self.serviceProviderChoice.GetStringSelection()}")
98 print(f"Workspace: {self.workspaceChoice.GetStringSelection()}")
99 print(f"CSV File: {self.filePicker.GetPath()}")
100
101 def CloseWindow(self, event):
102 self.Close(True)
103
104
105 class MyApp(wx.App):
106 def OnInit(self):
107 self.frame = MyFrame(None, -1, "Excel Report Generator")
108 self.frame.Show(True)
109 self.SetTopWindow(self.frame)
110 return True
111
112
113 if __name__ == '__main__':
114 app = MyApp(0)
115 app.MainLoop()
116