diff --git a/ .gitignore b/ .gitignore deleted file mode 100644 index a095fff..0000000 --- a/ .gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/venv/ -/.idea/ -/build/ \ No newline at end of file diff --git a/Calc3D.py b/Calc3D.py index 83fd836..21b5816 100644 --- a/Calc3D.py +++ b/Calc3D.py @@ -6,21 +6,14 @@ import gettext import requests from calculating import calculating, amortization, cost_prise -from setts import window_setts +from setts import window_setts, language, currency_setts from texts import calc, about, new_marge, ver, not_connect -from update import upd_check +from update import upd_check, upd_start now = datetime.datetime.now() -with open('setts.json') as file: - old_data = json.load(file) - if old_data['settings']["locale"] == 'English': - locale = 'en_US' - else: - locale = 'ru_RU' - -lang = gettext.translation('locale', localedir='locale', languages=[locale]) +lang = gettext.translation('locale', localedir='locale', languages=[language()]) lang.install() _ = lang.gettext @@ -39,11 +32,11 @@ def create_window(): [Sgi.Txt('_' * 46)], [Sgi.Text('0', size=(7, 1), font=('Consolas', 32), text_color='white', key='result', auto_size_text=True, justification='right', expand_x=True), - Sgi.Text(_('руб.'), font=('Consolas', 32), text_color='white', key='result')], + Sgi.Text(currency_setts(), font=('Consolas', 32), text_color='white', key='result')], [Sgi.Text(_('Себестоимость:'), font=12, text_color='white'), Sgi.Text('0', size=(7, 1), font=12, text_color='white', key='cost', auto_size_text=True, justification='right', expand_x=True), - Sgi.Text(_('руб.'), font=('Consolas', 12), text_color='white', key='cost')], + Sgi.Text(currency_setts(), font=('Consolas', 12), text_color='white', key='cost')], [Sgi.Txt('_' * 46, pad=(10, 5))], [Sgi.Text(_('Время печати')), Sgi.Push(), Sgi.InputText('0', size=(5, 20)), Sgi.Text(_('ч.')), Sgi.InputText('0', size=(5, 0)), Sgi.Text(_('мин. '))], @@ -53,9 +46,9 @@ def create_window(): Sgi.Text(_('шт. '))], [Sgi.Txt('_' * 46)], [Sgi.Text(_('Моделирование')), Sgi.Push(), Sgi.InputText('0', size=(10, 20), justification='right', ), - Sgi.Text(_('руб. '))], + Sgi.Text(f'{currency_setts()} ')], [Sgi.Text(_('Постобработка')), Sgi.Push(), Sgi.InputText('0', size=(10, 20), justification='right', ), - Sgi.Text(_('руб. '))], + Sgi.Text(f'{currency_setts()} ')], [Sgi.Txt('_' * 46)], [Sgi.Txt(' ' * 15), Sgi.ReadFormButton(_('Рассчитать'), size=(10, 2)), Sgi.Cancel(_('Выход'), size=(10, 2))] @@ -64,6 +57,7 @@ def create_window(): def main(): + upd_start() window = create_window() while True: diff --git a/lists.py b/lists.py index 3d09a4e..868fe5c 100644 --- a/lists.py +++ b/lists.py @@ -22,3 +22,5 @@ themes_list = ['Black', 'BlueMono', 'BluePurple', 'BrightColors', 'BrownBlue', ' 'SandyBeach', 'SystemDefault', 'SystemDefault1', 'SystemDefaultForReal', 'Tan', 'TanBlue', 'TealMono', 'Topanga'] lang_list = ['Русский', 'English'] + +currency_list = ['руб.', '$', '€'] diff --git a/locale/en_US/LC_MESSAGES/locale.mo b/locale/en_US/LC_MESSAGES/locale.mo index c9fdd60..2e8bc0a 100644 Binary files a/locale/en_US/LC_MESSAGES/locale.mo and b/locale/en_US/LC_MESSAGES/locale.mo differ diff --git a/locale/ru_RU/LC_MESSAGES/locale.mo b/locale/ru_RU/LC_MESSAGES/locale.mo new file mode 100644 index 0000000..1715104 Binary files /dev/null and b/locale/ru_RU/LC_MESSAGES/locale.mo differ diff --git a/setts.py b/setts.py index 842f469..5f87d9a 100644 --- a/setts.py +++ b/setts.py @@ -1,23 +1,39 @@ import json import PySimpleGUI as Sgi import gettext +import os from texts import amortization_calc, new_sets -from lists import themes_list, lang_list +from lists import themes_list, lang_list, currency_list -with open('setts.json') as file: - old_data = json.load(file) - if old_data['settings']["locale"] == 'English': - locale = 'en_US' - else: - locale = 'ru_RU' +def language(): + with open(os.path.expanduser('setts.json')) as file: + old_data = json.load(file) + if old_data['settings']["locale"] == 'English': + locale = 'en_US' + else: + locale = 'ru_RU' + return locale -lang = gettext.translation('locale', localedir='locale', languages=[locale]) + +lang = gettext.translation('locale', localedir='locale', languages=[language()]) lang.install() _ = lang.gettext +def currency_setts(): + with open('setts.json') as file: + old_data = json.load(file) + if old_data['settings']["currency"] == 'руб.': + currency = 'руб.' + elif old_data['settings']["currency"] == '$': + currency = '$' + else: + currency = '€' + return currency + + def window_setts(): with open('setts.json') as file: old_data = json.load(file) @@ -29,6 +45,7 @@ def window_setts(): mk = old_data["settings"]["mk"] a = old_data["settings"]["a"] locale = old_data['settings']["locale"] + currency = old_data['settings']["currency"] try: spi = old_data["settings"]["spi"] except KeyError: @@ -46,7 +63,8 @@ def window_setts(): [Sgi.Text(_('Тариф электроэнергии, кВт/ч')), Sgi.Push(), Sgi.InputText(h, size=(10, 10), justification='right')], [Sgi.Text(_('Коэффициент выбраковки')), Sgi.Push(), Sgi.InputText(d, size=(10, 10), justification='right')], - [Sgi.Text(_('Стоимость катушки, руб.')), Sgi.Push(), Sgi.InputText(st, size=(10, 10), justification='right')], + [Sgi.Text(_('Стоимость катушки, ')+f'{currency_setts()}'), Sgi.Push(), + Sgi.InputText(st, size=(10, 10), justification='right')], [Sgi.Text(_('Вес катушки, гр.')), Sgi.Push(), Sgi.Combo(['225', '250', '450', '500', '750', '850', '1000', '2250', '2500'], size=(8, 20), default_value=mk)], @@ -54,8 +72,8 @@ def window_setts(): [Sgi.Text('')] ] layout2 = [ - [Sgi.Text(_('Стоимость вашего принтера, руб.')), Sgi.Push(), Sgi.InputText(a, size=(10, 10), - justification='right')], + [Sgi.Text(_('Стоимость вашего принтера, ')+f'{currency_setts()}'), Sgi.Push(), Sgi.InputText(a, size=(10, 10), + justification='right')], [Sgi.Text(_('Срок полезного использования, лет.')), Sgi.Push(), Sgi.InputText(spi, size=(10, 10), justification='right')], [Sgi.Text('_' * 45)], [Sgi.Text(amortization_calc)], @@ -65,6 +83,7 @@ def window_setts(): [Sgi.Text(_('Оформление'))], [Sgi.Text(_("Выбор темы")), Sgi.Push(), Sgi.Combo(themes_list, size=(20, 20), default_value=theme)], [Sgi.Text(_("Язык")), Sgi.Push(), Sgi.Combo(lang_list, size=(20, 20), default_value=locale)], + [Sgi.Text(_("Валюта")), Sgi.Push(), Sgi.Combo(currency_list, size=(20, 20), default_value=currency_setts())], ] tab_group = [ @@ -85,6 +104,10 @@ def window_setts(): new_locale = locale else: new_locale = values[9] + if values[10] == currency: + new_currency = currency + else: + new_currency = values[10] if values[0] == p: new_p = p else: @@ -128,7 +151,8 @@ def window_setts(): "a": new_a, "spi": new_spi, "marge": new_marg, - "locale": new_locale + "locale": new_locale, + "currency": new_currency } } diff --git a/texts.py b/texts.py index c1fce74..5354874 100644 --- a/texts.py +++ b/texts.py @@ -2,7 +2,6 @@ import gettext import json import os - if not os.path.isfile('setts.json'): with open('setts.json', 'w') as file: data = {"settings": {"theme": "Dark", @@ -14,7 +13,8 @@ if not os.path.isfile('setts.json'): "a": "0", "spi": "3", "marg": "0", - "locale": "Ru"}} + "locale": "Ru", + "currency": "руб."}} json.dump(data, file, indent=2) with open('setts.json') as file: @@ -28,53 +28,49 @@ lang = gettext.translation('locale', localedir='locale', languages=[locale]) lang.install() _ = lang.gettext - calc = (_("Формула расчета стоимости печати выглядит так:\n\n" - "S = ((p/1000*t/60*h)+(md*d*st/mk)+am+post))*x+mod\n\n" - "где:\n" - "S - стоимость печати, руб.\n" - "p - мощность принтера, Вт\n" - "t - время печати, мин.\n" - "h - тариф на электроэнергию, кВт/ч\n" - "md - вес детали, гр.\n" - "st - стоимость катушки пластика, руб.\n" - "mk - вес пластика в катушке, гр.\n" - "d - коэффициент выбраковки\n" - "am - амортизация, руб.\n" - "post - стоимость постобработки, руб.\n" - "х - количество печатаемых дубликатов, шт.\n" - "mod - стоимость моделирования, руб.\n\n" - "При этом в расчете вес детали, умножается на 1.5,\n" - "это сделано для выбраковки и тестовой печати," - "т.е. при калькуляции вес одной детали для печати\n" - "считается как 1,5 детали " - "Можете изменить этот пункт в настройках.\n\n")) + "S = ((p/1000*t/60*h)+(md*d*st/mk)+am+post))*x+mod\n\n" + "где:\n" + "S - стоимость печати, руб.\n" + "p - мощность принтера, Вт\n" + "t - время печати, мин.\n" + "h - тариф на электроэнергию, кВт/ч\n" + "md - вес детали, гр.\n" + "st - стоимость катушки пластика, руб.\n" + "mk - вес пластика в катушке, гр.\n" + "d - коэффициент выбраковки\n" + "am - амортизация, руб.\n" + "post - стоимость постобработки, руб.\n" + "х - количество печатаемых дубликатов, шт.\n" + "mod - стоимость моделирования, руб.\n\n" + "При этом в расчете вес детали, умножается на 1.5,\n" + "это сделано для выбраковки и тестовой печати," + "т.е. при калькуляции вес одной детали для печати\n" + "считается как 1,5 детали " + "Можете изменить этот пункт в настройках.\n\n")) -about = (_("Программа написана потому, что мне было скучно\n" - "Использовать её или нет дело ваше, мне все равно\n" - "Распространяется по принципу 'как есть'\n" - "По вопросам и предложениям писать в телеграм на @RisenYT\n\n")) +about = (_("По вопросам и предложениям писать в телеграм на @RisenYT\n\n")) amortization_calc = (_('Как считается амортизация:\n\n' - 'Отчисления записываются \n' - 'частями в зависимости от времени \n' - 'печати конкретного изделия\n' - 'Рекомендую задавать СПИ (это время\n' - 'окупаемости принтера) 3 года.\n' - 'Калькулятор считает амортизацию в\n' - 'минуту и умножает на количество минут,\n' - 'которые принтер будет печатать.')) + 'Отчисления записываются \n' + 'частями в зависимости от времени \n' + 'печати конкретного изделия\n' + 'Рекомендую задавать СПИ (это время\n' + 'окупаемости принтера) 3 года.\n' + 'Калькулятор считает амортизацию в\n' + 'минуту и умножает на количество минут,\n' + 'которые принтер будет печатать.')) not_connect = (_('Невозможно проверить обновление.\n\n' - 'Отсутствует подключение к интернету\n' - 'или программа заблокирована фаерволом.\n\n' - 'Для продолжения работы нажмите "Ok"')) + 'Отсутствует подключение к интернету\n' + 'или программа заблокирована фаерволом.\n\n' + 'Для продолжения работы нажмите "Ok"')) new_sets = (_('Задайте стоимость принтера, \n' - 'срок полезного использования\n' - 'в настройках амортизации\n')) + 'срок полезного использования\n' + 'в настройках амортизации\n')) new_marge = (_('Задайте процент желаемой наценки\n' - 'в настройках (можно просто проставить ноль)')) + 'в настройках (можно просто проставить ноль)')) -ver = '0.6.0' +ver = '0.6.1' diff --git a/update.py b/update.py index 663db17..d74355d 100644 --- a/update.py +++ b/update.py @@ -6,15 +6,10 @@ import os import gettext from texts import ver +from setts import language -with open(os.path.expanduser('setts.json')) as file: - old_data = json.load(file) - if old_data['settings']["locale"] == 'English': - locale = 'en_US' - else: - locale = 'ru_RU' -lang = gettext.translation('locale', localedir='locale', languages=[locale]) +lang = gettext.translation('locale', localedir='locale', languages=[language()]) lang.install() _ = lang.gettext @@ -50,7 +45,7 @@ def upd_check(): else: Sgi.theme(set_theme) layout = [ - [Sgi.Text(_(f"Последняя версия: {version_new}\nВаша версия: {version_old}\n\nОбновление не требуется"))], + [Sgi.Text(_('Последняя версия: ')+f'{version_new}'+_('\nВаша версия: ')+f'{version_old}'+_('\n\nОбновление не требуется'))], [Sgi.Button(_(' Закрыть '))] ]