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

# 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 nino.borges 896 version = '0.02'
19    
20 nino.borges 894 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 nino.borges 896 self.controlsSizer = wx.BoxSizer(wx.HORIZONTAL)
47 nino.borges 894
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 nino.borges 896 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 nino.borges 894 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 nino.borges 896