utils refactoring
This commit is contained in:
parent
ae903cf405
commit
729bd84d2b
39 changed files with 97 additions and 74 deletions
0
toxygen/utils/__init__.py
Normal file
0
toxygen/utils/__init__.py
Normal file
49
toxygen/utils/ui.py
Normal file
49
toxygen/utils/ui.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
from PyQt5 import QtWidgets
|
||||
import utils.util as util
|
||||
|
||||
|
||||
def tr(s):
|
||||
return QtWidgets.QApplication.translate('Toxygen', s)
|
||||
|
||||
|
||||
def question(text, title=None):
|
||||
reply = QtWidgets.QMessageBox.question(None, title or 'Toxygen', text,
|
||||
QtWidgets.QMessageBox.Yes,
|
||||
QtWidgets.QMessageBox.No)
|
||||
return reply == QtWidgets.QMessageBox.Yes
|
||||
|
||||
|
||||
def message_box(text, title=None):
|
||||
m_box = QtWidgets.QMessageBox()
|
||||
m_box.setText(tr(text))
|
||||
m_box.setWindowTitle(title or 'Toxygen')
|
||||
m_box.exec_()
|
||||
|
||||
|
||||
def text_dialog(text, title='', default_value=''):
|
||||
text, ok = QtWidgets.QInputDialog.getText(None, title, text, QtWidgets.QLineEdit.Normal, default_value)
|
||||
|
||||
return text, ok
|
||||
|
||||
|
||||
def directory_dialog(caption=''):
|
||||
return QtWidgets.QFileDialog.getExistingDirectory(None, caption, util.curr_directory(),
|
||||
QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||
|
||||
|
||||
def file_dialog(caption, file_filter=None):
|
||||
return QtWidgets.QFileDialog.getOpenFileName(None, caption, util.curr_directory(), file_filter,
|
||||
options=QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||
|
||||
|
||||
def save_file_dialog(caption, filter=None):
|
||||
return QtWidgets.QFileDialog.getSaveFileName(None, caption, util.curr_directory(),
|
||||
filter=filter,
|
||||
options=QtWidgets.QFileDialog.ShowDirsOnly | QtWidgets.QFileDialog.DontUseNativeDialog)
|
||||
|
||||
|
||||
def close_all_windows():
|
||||
QtWidgets.QApplication.closeAllWindows()
|
||||
|
||||
|
||||
# TODO: all dialogs
|
158
toxygen/utils/util.py
Normal file
158
toxygen/utils/util.py
Normal file
|
@ -0,0 +1,158 @@
|
|||
import os
|
||||
import time
|
||||
import shutil
|
||||
import sys
|
||||
import re
|
||||
import platform
|
||||
|
||||
|
||||
def cached(func):
|
||||
saved_result = None
|
||||
|
||||
def wrapped_func():
|
||||
nonlocal saved_result
|
||||
if saved_result is None:
|
||||
saved_result = func()
|
||||
|
||||
return saved_result
|
||||
|
||||
return wrapped_func
|
||||
|
||||
|
||||
def log(data):
|
||||
try:
|
||||
with open(curr_directory() + '/logs.log', 'a') as fl:
|
||||
fl.write(str(data) + '\n')
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
def curr_directory(current_file=None):
|
||||
return os.path.dirname(os.path.realpath(current_file or __file__))
|
||||
|
||||
|
||||
def get_base_directory(current_file=None):
|
||||
return os.path.dirname(curr_directory(current_file or __file__))
|
||||
|
||||
|
||||
@cached
|
||||
def get_images_directory():
|
||||
return get_app_directory('images')
|
||||
|
||||
|
||||
@cached
|
||||
def get_styles_directory():
|
||||
return get_app_directory('styles')
|
||||
|
||||
|
||||
@cached
|
||||
def get_sounds_directory():
|
||||
return get_app_directory('sounds')
|
||||
|
||||
|
||||
@cached
|
||||
def get_stickers_directory():
|
||||
return get_app_directory('stickers')
|
||||
|
||||
|
||||
@cached
|
||||
def get_smileys_directory():
|
||||
return get_app_directory('smileys')
|
||||
|
||||
|
||||
@cached
|
||||
def get_translations_directory():
|
||||
return get_app_directory('translations')
|
||||
|
||||
|
||||
@cached
|
||||
def get_plugins_directory():
|
||||
return get_app_directory('plugins')
|
||||
|
||||
|
||||
@cached
|
||||
def get_libs_directory():
|
||||
return get_app_directory('libs')
|
||||
|
||||
|
||||
def get_app_directory(directory_name):
|
||||
return os.path.join(get_base_directory(), directory_name)
|
||||
|
||||
|
||||
def get_profile_name_from_path(path):
|
||||
return os.path.basename(path)[:-4]
|
||||
|
||||
|
||||
def get_views_path(view_name):
|
||||
ui_folder = os.path.join(get_base_directory(), 'ui')
|
||||
views_folder = os.path.join(ui_folder, 'views')
|
||||
|
||||
return os.path.join(views_folder, view_name + '.ui')
|
||||
|
||||
|
||||
def curr_time():
|
||||
return time.strftime('%H:%M')
|
||||
|
||||
|
||||
def get_unix_time():
|
||||
return int(time.time())
|
||||
|
||||
|
||||
def join_path(a, b):
|
||||
return os.path.join(a, b)
|
||||
|
||||
|
||||
def copy(src, dest):
|
||||
if not os.path.exists(dest):
|
||||
os.makedirs(dest)
|
||||
src_files = os.listdir(src)
|
||||
for file_name in src_files:
|
||||
full_file_name = os.path.join(src, file_name)
|
||||
if os.path.isfile(full_file_name):
|
||||
shutil.copy(full_file_name, dest)
|
||||
else:
|
||||
copy(full_file_name, os.path.join(dest, file_name))
|
||||
|
||||
|
||||
def remove(folder):
|
||||
if os.path.isdir(folder):
|
||||
shutil.rmtree(folder)
|
||||
|
||||
|
||||
def convert_time(t):
|
||||
offset = time.timezone + time_offset() * 60
|
||||
sec = int(t) - offset
|
||||
m, s = divmod(sec, 60)
|
||||
h, m = divmod(m, 60)
|
||||
d, h = divmod(h, 24)
|
||||
return '%02d:%02d' % (h, m)
|
||||
|
||||
|
||||
@cached
|
||||
def time_offset():
|
||||
hours = int(time.strftime('%H'))
|
||||
minutes = int(time.strftime('%M'))
|
||||
sec = int(time.time()) - time.timezone
|
||||
m, s = divmod(sec, 60)
|
||||
h, m = divmod(m, 60)
|
||||
d, h = divmod(h, 24)
|
||||
result = hours * 60 + minutes - h * 60 - m
|
||||
return result
|
||||
|
||||
|
||||
@cached
|
||||
def is_64_bit():
|
||||
return sys.maxsize > 2 ** 32
|
||||
|
||||
|
||||
def is_re_valid(regex):
|
||||
try:
|
||||
re.compile(regex)
|
||||
except re.error:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
|
||||
def get_platform():
|
||||
return platform.system()
|
Loading…
Add table
Add a link
Reference in a new issue