ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Active_prgs/Redgrave/RelativitySearchReport_UI.py
Revision: 894
Committed: Tue May 27 21:15:10 2025 UTC (10 months ago) by nino.borges
Content type: text/x-python
File size: 3841 byte(s)
Log Message:
GUI for the Relativity Search Report Creator

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 class MyFrame(wx.Frame):
19 def __init__(self, parent, ID, title, pos=wx.DefaultPosition):
20 wx.Frame.__init__(self, parent, ID, title, pos, size=(600, 300))
21 self.panel = wx.Panel(self, -1)
22
23 self.serviceProviders = ["Foo", "Bar"]
24 self.workspaceOptions = {
25 "Foo": ["Spam", "Eggs", "EggsEggs"],
26 "Bar": ["Rabbit", "Lamp"]
27 }
28
29 self.CreateControls()
30 self.CreateButtons()
31
32 mainSizer = wx.BoxSizer(wx.VERTICAL)
33 mainSizer.Add(self.controlsSizer, 0, wx.ALL | wx.EXPAND, 20)
34 mainSizer.Add(self.filePicker, 0, wx.ALL | wx.EXPAND, 20)
35 mainSizer.Add(self.buttonSizer, 0, wx.ALL | wx.CENTER, 10)
36
37 self.panel.SetSizer(mainSizer)
38 self.CreateStatusBar()
39 self.SetStatusText("Ready.")
40
41 self.okButton.Disable()
42
43 def CreateControls(self):
44 self.controlsSizer = wx.FlexGridSizer(rows=2, cols=2, vgap=15, hgap=15)
45
46 self.serviceProviderLabel = wx.StaticText(self.panel, label="Service Provider")
47 self.serviceProviderChoice = wx.Choice(self.panel, choices=self.serviceProviders)
48 self.serviceProviderChoice.Bind(wx.EVT_CHOICE, self.OnServiceProviderSelected)
49
50 self.workspaceLabel = wx.StaticText(self.panel, label="Workspace")
51 self.workspaceChoice = wx.Choice(self.panel, choices=[])
52 self.workspaceChoice.Bind(wx.EVT_CHOICE, self.OnAnySelectionChanged)
53
54 self.filePicker = wx.FilePickerCtrl(self.panel, message="Select a CSV file", wildcard="CSV files (*.csv)|*.csv")
55 self.filePicker.Bind(wx.EVT_FILEPICKER_CHANGED, self.OnAnySelectionChanged)
56
57 self.controlsSizer.AddMany([
58 (self.serviceProviderLabel, 0, wx.ALIGN_CENTER_VERTICAL),
59 (self.serviceProviderChoice, 1, wx.EXPAND),
60 (self.workspaceLabel, 0, wx.ALIGN_CENTER_VERTICAL),
61 (self.workspaceChoice, 1, wx.EXPAND),
62 ])
63
64 def CreateButtons(self):
65 self.okButton = wx.Button(self.panel, -1, "Ok")
66 self.cancelButton = wx.Button(self.panel, -1, "Cancel")
67
68 self.okButton.Bind(wx.EVT_BUTTON, self.OnProcess)
69 self.cancelButton.Bind(wx.EVT_BUTTON, self.CloseWindow)
70
71 self.buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
72 self.buttonSizer.Add(self.okButton, 0, wx.ALL, 10)
73 self.buttonSizer.Add(self.cancelButton, 0, wx.ALL, 10)
74
75 def OnServiceProviderSelected(self, event):
76 selected_provider = self.serviceProviderChoice.GetStringSelection()
77 self.workspaceChoice.Set(self.workspaceOptions.get(selected_provider, []))
78 self.workspaceChoice.SetSelection(wx.NOT_FOUND)
79 self.OnAnySelectionChanged(None)
80
81 def OnAnySelectionChanged(self, event):
82 service_selected = self.serviceProviderChoice.GetSelection() != wx.NOT_FOUND
83 workspace_selected = self.workspaceChoice.GetSelection() != wx.NOT_FOUND
84 file_selected = bool(self.filePicker.GetPath())
85 if service_selected and workspace_selected and file_selected:
86 self.okButton.Enable()
87 else:
88 self.okButton.Disable()
89
90 def OnProcess(self, event):
91 print(f"Service Provider: {self.serviceProviderChoice.GetStringSelection()}")
92 print(f"Workspace: {self.workspaceChoice.GetStringSelection()}")
93 print(f"CSV File: {self.filePicker.GetPath()}")
94
95 def CloseWindow(self, event):
96 self.Close(True)
97
98
99 class MyApp(wx.App):
100 def OnInit(self):
101 self.frame = MyFrame(None, -1, "Excel Report Generator")
102 self.frame.Show(True)
103 self.SetTopWindow(self.frame)
104 return True
105
106
107 if __name__ == '__main__':
108 app = MyApp(0)
109 app.MainLoop()