-
Notifications
You must be signed in to change notification settings - Fork 0
/
settings.py
123 lines (94 loc) · 2.9 KB
/
settings.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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import configparser
import tkinter as tk
import os
# OnTop = 0
# Wrap = 1
# EditLock = 0
# ExitEsc = 1
# AutoSave = 0
# SearchRange = 101
# searchX = 712
# searchY = 116
# NoBackup = 1
class MemPadSettings:
def __init__(self):
conf = configparser.ConfigParser(default_section = "Main", allow_no_value=True )
conf.optionxform = lambda option: option
self.settings_file = MemPadSettings.app_path + "/settings.ini"
if not os.path.exists(self.settings_file):
with open(self.settings_file, 'w') as file:
file.write(self.get_default_settings())
file.close()
conf.read(self.settings_file )
self.conf = conf
self.values = {}
self.tkVariables = {}
self.types = {}
@staticmethod
def get_instance(app_path = None, is_app = None, theme = None):
if not hasattr(MemPadSettings, '_instance'):
MemPadSettings.app_path = app_path
MemPadSettings.is_app = is_app
MemPadSettings.theme = theme
MemPadSettings._instance = MemPadSettings()
return MemPadSettings._instance
def get_default_settings(self):
return """
[Main]
ext = .lst
Iwidth = 296
Font = Tahoma,16,0,$FFFFFF
iFont = Tahoma,11,0,$FFFFFF
BGcolor = $804000
BGIcolor = $224488
OnTop = 0
Wrap = 1
EditLock = 0
ExitEsc = 1
AutoSave = 0
SearchRange = 101
searchX = 0
searchY = 0
NoBackup = 1
Win98crypt = 0
renderMarkdown = 1
DecryptFailWarn = 0
MRU = MemPadX.lst
LatestFiles = MemPadX.lst
NumKeep = 10
winX = 0
winY = 136
WinWidth = 800
WinHeight = 600
"""
def save(self):
with open(self.settings_file, 'w') as configfile:
self.conf.write(configfile)
def getVariable(self, name, var_type = 'str'):
if not name in self.tkVariables:
strval = self.conf.get('Main', name)
if(var_type == 'bool'):
self.tkVariables[name] = tk.BooleanVar()
value = (strval == "1")
elif(var_type == 'str'):
self.tkVariables[name] = tk.Variable()
value = strval
elif(var_type == 'int'):
self.tkVariables[name] = tk.IntVar()
value = str(strval)
else:
print('NOPE type not found',name, var_type)
self.tkVariables[name].set(value)
self.types[name] = var_type
return self.tkVariables[name]
def getValue(self, name, var_type = 'str'):
var = self.getVariable(name, var_type)
return var.get()
def setValue(self, name, value):
self.tkVariables[name].set(value)
self.hasChanged(name)
def hasChanged(self, name):
value = self.tkVariables[name].get()
if isinstance(value, bool):
value = '1' if value else '0'
self.conf.set('Main', name, str(value))