-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.py
103 lines (77 loc) · 2.97 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import wx
import os
import sys
from configparser import ConfigParser
from ui.settingsTab import SettingsTab
from ui.teamsTab import TeamsTab
from ui.caseFilesTab import CaseTab
from ui.caseListTab import CaseListTab
from services.loggingService import LoggingService
# start logging service
LoggingService.setup_logging()
# Load configuration
config = ConfigParser()
config.read(os.path.expanduser('~/.myapp.cfg'))
# Set document path
DOC_PATH = config.get('DEFAULT', 'DOC_PATH', fallback=None)
# Main application window
def load_config_vars():
return {
'BASE_URL': config.get('DEFAULT', 'BASE_URL', fallback=None),
'SIXS_API_KEY': config.get('DEFAULT', 'SIXS_API_KEY', fallback=None),
'SIXS_BASIC_AUTH': config.get('DEFAULT', 'SIXS_BASIC_AUTH', fallback=None),
'DOC_PATH': config.get('DEFAULT', 'DOC_PATH', fallback=None),
}
def check_config_vars(config_vars):
for var_name, var_value in config_vars.items():
if not var_value:
wx.MessageBox(f"Configuration variable {var_name} is not set or is blank", "Warning",
wx.OK | wx.ICON_WARNING)
class Mywin(wx.Frame):
def __init__(self, parent, title):
# Load configuration variables
self.caseListTab = None
self.caseTab = None
self.TeamsTab = None
self.settingsTab = None
self.richTextTab = None
self.designTab = None
config_vars = load_config_vars()
# Check configuration variables
check_config_vars(config_vars)
# Initialize window
super(Mywin, self).__init__(parent, title=title, size=(800, 600), style=wx.DEFAULT_FRAME_STYLE | (
wx.STAY_ON_TOP if config.getboolean('DEFAULT', 'ALWAYS_ON_TOP', fallback=False) else 0))
# Set icon
self.set_icon()
# Initialize panel and notebook
panel = wx.Panel(self)
self.nb = wx.Notebook(panel)
# Initialize tabs
self.init_tabs()
# Adjust the tabs' margin
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.nb, 1, wx.EXPAND | wx.ALL, 5)
panel.SetSizer(sizer)
self.Show()
def set_icon(self):
if getattr(sys, 'frozen', False):
# we are running in a bundle
bundle_dir = sys._MEIPASS
else:
# we are running in a normal Python environment
bundle_dir = os.path.dirname(os.path.abspath(__file__))
icon_path = os.path.join(bundle_dir, 'CaseToolsIcon.ico')
self.SetIcon(wx.Icon(icon_path))
def init_tabs(self):
self.caseListTab = CaseListTab(self.nb)
self.caseTab = CaseTab(self.nb)
self.TeamsTab = TeamsTab(self.nb)
self.settingsTab = SettingsTab(self.nb)
self.nb.AddPage(self.caseListTab, "Open Cases")
self.nb.AddPage(self.caseTab, "Files")
self.nb.AddPage(self.TeamsTab, "Teams Tools")
self.nb.AddPage(self.settingsTab, "Settings")
app = wx.App()
Mywin(None, "Case Tools")
app.MainLoop()