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

# User Rev Content
1 nino.borges 894
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()