128 lines
3.5 KiB
Python
128 lines
3.5 KiB
Python
from datetime import datetime
|
|
import os
|
|
from typing import Tuple
|
|
from PyQt5.QtCore import QSettings
|
|
from rscder.utils.license import LicenseHelper
|
|
|
|
class Settings(QSettings):
|
|
|
|
def __init__(self, key):
|
|
super().__init__()
|
|
self.key = key
|
|
def __enter__(self):
|
|
self.beginGroup(self.key)
|
|
return self
|
|
|
|
def __exit__(self, *args, **kargs):
|
|
self.endGroup()
|
|
|
|
class Plugin:
|
|
|
|
PRE='plugin'
|
|
|
|
@property
|
|
def root(self):
|
|
return './3rd'
|
|
|
|
@property
|
|
def plugins(self):
|
|
with Settings(Settings.Plugin.PRE) as s:
|
|
return s.value('plugins', [])
|
|
|
|
@plugins.setter
|
|
def plugins(self, value):
|
|
with Settings(Settings.Plugin.PRE) as s:
|
|
s.setValue('plugins', value)
|
|
|
|
|
|
class Project:
|
|
|
|
PRE= 'project'
|
|
|
|
@property
|
|
def cell_size(self) -> Tuple[int, int]:
|
|
with Settings(self.PRE) as s:
|
|
return s.value('cell_size', (100, 100))
|
|
|
|
@cell_size.setter
|
|
def cell_size(self, value:Tuple[int, int]):
|
|
with Settings(self.PRE) as s:
|
|
s.setValue('cell_size', value)
|
|
|
|
@property
|
|
def max_memory(self):
|
|
with Settings(self.PRE) as s:
|
|
return s.value('max_memory', 100)
|
|
|
|
@max_memory.setter
|
|
def max_memory(self, value):
|
|
with Settings(self.PRE) as s:
|
|
s.setValue('max_memory', value)
|
|
|
|
@property
|
|
def max_threads(self):
|
|
with Settings(self.PRE) as s:
|
|
return s.value('max_threads', 4)
|
|
|
|
@max_threads.setter
|
|
def max_threads(self, value):
|
|
with Settings(self.PRE) as s:
|
|
s.setValue('max_threads', value)
|
|
|
|
class General:
|
|
|
|
PRE='general'
|
|
|
|
@property
|
|
def size(self):
|
|
with Settings(Settings.General.PRE) as s:
|
|
return s.value('size', (800, 600))
|
|
|
|
@size.setter
|
|
def size(self, value):
|
|
with Settings(Settings.General.PRE) as s:
|
|
s.setValue('size', value)
|
|
|
|
@property
|
|
def end_date(self):
|
|
if not os.path.exists('lic/license.lic'):
|
|
return datetime.now()
|
|
|
|
with open('lic/license.lic', 'r') as f:
|
|
lic = f.read()[::-1]
|
|
|
|
lic_helper = LicenseHelper()
|
|
try:
|
|
lic_dic = lic_helper.read_license(lic)
|
|
|
|
if lic_helper.check_license_date(lic_dic['time_str']) and lic_helper.check_license_psw(lic_dic['psw']):
|
|
return lic_dic['time_str']
|
|
else:
|
|
return datetime.now()
|
|
except:
|
|
return datetime.now()
|
|
|
|
@property
|
|
def license(self):
|
|
if not os.path.exists('lic/license.lic'):
|
|
return False
|
|
|
|
with open('lic/license.lic', 'r') as f:
|
|
lic = f.read()[::-1]
|
|
|
|
lic_helper = LicenseHelper()
|
|
try:
|
|
lic_dic = lic_helper.read_license(lic)
|
|
|
|
if lic_helper.check_license_date(lic_dic['time_str']) and lic_helper.check_license_psw(lic_dic['psw']):
|
|
return True
|
|
else:
|
|
return False
|
|
except:
|
|
return False
|
|
|
|
@property
|
|
def root(self):
|
|
with Settings(Settings.General.PRE) as s:
|
|
return s.value('root', './')
|
|
|