forked from tecwindow/WikiSearch
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsettings.py
More file actions
141 lines (110 loc) · 4.67 KB
/
settings.py
File metadata and controls
141 lines (110 loc) · 4.67 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import wx
import configparser
import os
import sys
from ChLanguages import *
class Settings:
def __init__(self):
AppData = os.getenv("AppData")
AppData = AppData + "/" + "WikiSearch"
if not os.path.exists(AppData):
os.mkdir(AppData)
filename = "Settingss.ini"
self.path = AppData + "/" + filename
self.config = configparser.ConfigParser()
self.DefaultSettings = {
"Language": "english",
"ActivEscape": "False",
"ResultsNumber": "20",
"AutoUpdate": "True",
"CloseMessage": "True",
"SearchLanguage": "English"
}
def WriteSettings(self, **NewSettings):
try:
self.config.add_section("default")
except configparser.DuplicateSectionError:
pass
self.config.set("default", "language", NewSettings["Language"])
self.config.set("default", "activ escape", NewSettings["ActivEscape"])
self.config.set("default", "results number", NewSettings["ResultsNumber"])
self.config.set("default", "auto update", NewSettings["AutoUpdate"])
self.config.set("default", "close message", NewSettings["CloseMessage"])
self.config.set("default", "search language", NewSettings["SearchLanguage"])
with open(self.path, "w") as config_file:
self.config.write(config_file)
def ReadSettings(self):
while 1:
try:
self.config.read(self.path)
CurrentSettings = {
"Language": self.config.get("default", "language"),
"ActivEscape": self.config.get("default", "activ escape"),
"ResultsNumber": self.config.get("default", "results number"),
"AutoUpdate": self.config.get("default", "auto update"),
"CloseMessage": self.config.get("default", "close message"),
"SearchLanguage": self.config.get("default", "search language")
}
break
except:
self.WriteSettings(**self.DefaultSettings)
continue
return CurrentSettings
#end of class
# Create main window with wx.
class SettingsDialog(wx.Dialog):
def __init__(self):
super().__init__(None, title=_("Program Settings"), size=(400, 335))
#make window in center.
self.Center()
#make window Minimum size.
self.Maximize(False)
self.CurrentSettings = Settings().ReadSettings()
# Creating panel
Panel = wx.Panel(self)
# Creating ComboBox for languages
wx.StaticText(Panel, -1, _("Choose language:"), pos=(15,20), size=(380, 30))
self.ProgramLanguage = wx.ComboBox(Panel, -1, choices=['arabic', 'english', 'spanish'], pos=(15, 50), size=(120, 40), style=wx.CB_READONLY+wx.CB_SORT)
self.ProgramLanguage.Value = self.CurrentSettings["Language"]
# Creating SpinCtrl for Results Number
wx.StaticText(Panel, -1, _("Choose the number of results:"), pos=(140,20), size=(380, 30))
self.NumberResults = wx.SpinCtrl(Panel, -1, "20", min=1, max=100, style=wx.SP_ARROW_KEYS, pos=(160, 50), size=(50, 20))
self.NumberResults.Value = self.CurrentSettings["ResultsNumber"]
# Creating Check Boxes
self.VerificationMsg = wx.CheckBox(Panel, -1, label=_("Show Close message when at least an article is open"), pos=(10, 80), size=(380, 30))
if self.CurrentSettings["CloseMessage"] == "True":
self.VerificationMsg.Value = True
self.AutoUpdate = wx.CheckBox(Panel, -1, label=_("Check for updates automatically"), pos=(10, 110), size=(380, 30))
if self.CurrentSettings["AutoUpdate"] == "True":
self.AutoUpdate.Value = True
self.CloseArticleWithScape = wx.CheckBox(Panel, -1, label=_("Close the article via the Escape key"), pos=(10, 140), size=(380, 30))
if self.CurrentSettings["ActivEscape"] == "True":
self.CloseArticleWithScape.Value = True
# Create Buttons
self.SaveSettings = wx.Button(Panel, -1, _("&Save changes"), pos=(10,190), size=(100,30))
self.SaveSettings.SetDefault()
self.GoBack = wx.Button(Panel, wx.ID_CANCEL, _("&Cancel"), pos=(120,190), size=(80,30))
#event for Save Settings button
self.SaveSettings.Bind(wx.EVT_BUTTON, self.OnSaveSettings)
# Show Main window
self.Show()
#Save Settings function
def OnSaveSettings(self, event):
NewSettings = {
"Language": self.ProgramLanguage.Value,
"ResultsNumber": str(self.NumberResults.Value),
"CloseMessage": str(self.VerificationMsg.Value),
"AutoUpdate": str(self.AutoUpdate.Value),
"ActivEscape": str(self.CloseArticleWithScape.Value),
"SearchLanguage": self.CurrentSettings["SearchLanguage"]
}
Settings().WriteSettings(**NewSettings)
self.Destroy()
if NewSettings["Language"] != self.CurrentSettings["Language"]:
ConfirmRestartProgram = wx.MessageDialog(self, _("""You must restart the program for the new language to take effect.
Do you want to restart the program now?"""), _("Confirm"), style=wx.YES_NO+wx.YES_DEFAULT+wx.ICON_WARNING+wx.ICON_QUESTION)
if ConfirmRestartProgram.ShowModal() == wx.ID_YES:
os.execv(sys.executable, ['python'] + sys.argv)
else:
return None
#end of class