From 47df44c202bf64d19651bf7e0e6bfea5a1c9e618 Mon Sep 17 00:00:00 2001 From: Dmitriy Yefremov Date: Tue, 13 Mar 2018 10:42:56 +0300 Subject: [PATCH] little optimisation --- app/eparser/satxml.py | 8 ++++++-- app/ui/dialogs.py | 12 ++++++------ app/ui/service_details_dialog.py | 4 +--- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/eparser/satxml.py b/app/eparser/satxml.py index 27a8faed..8cc7145d 100644 --- a/app/eparser/satxml.py +++ b/app/eparser/satxml.py @@ -2,8 +2,11 @@ For more info see __COMMENT """ +from functools import lru_cache from xml.dom.minidom import parse, Document +import os + from .ecommons import POLARIZATION, FEC, SYSTEM, MODULATION, PLS_MODE, Transponder, Satellite, get_key_by_value __COMMENT = (" File was created in DemonEditor\n\n" @@ -29,7 +32,7 @@ __COMMENT = (" File was created in DemonEditor\n\n" def get_satellites(path): - return parse_satellites(path) + return parse_satellites(path, os.path.getsize(path)) def write_satellites(satellites, data_path): @@ -98,7 +101,8 @@ def parse_sat(elem): parse_transponders(elem)) -def parse_satellites(path): +@lru_cache(maxsize=1) +def parse_satellites(path, file_size): """ Parsing satellites from xml""" dom = parse(path) satellites = [] diff --git a/app/ui/dialogs.py b/app/ui/dialogs.py index ec5bfe05..e1349532 100644 --- a/app/ui/dialogs.py +++ b/app/ui/dialogs.py @@ -1,7 +1,6 @@ """ Common module for showing dialogs """ import locale from enum import Enum -from functools import lru_cache from app.commons import run_idle from . import Gtk, UI_RESOURCES_PATH, TEXT_DOMAIN @@ -57,7 +56,7 @@ def show_dialog(dialog_type: DialogType, transient, text=None, options=None, act path = path + "/" response = path - dialog.hide() + dialog.destroy() return response @@ -66,25 +65,25 @@ def show_dialog(dialog_type: DialogType, transient, text=None, options=None, act entry.set_text(text if text else "") response = dialog.run() txt = entry.get_text() - dialog.hide() + dialog.destroy() return txt if response == Gtk.ResponseType.OK else Gtk.ResponseType.CANCEL if text: dialog.set_markup(get_message(text)) response = dialog.run() - dialog.hide() + dialog.destroy() return response -@lru_cache(maxsize=10) def get_dialog_from_xml(dialog_type, transient): builder = Gtk.Builder() builder.set_translation_domain(TEXT_DOMAIN) - builder.add_from_file(UI_RESOURCES_PATH + "dialogs.glade") + builder.add_objects_from_file(UI_RESOURCES_PATH + "dialogs.glade", (dialog_type.value,)) dialog = builder.get_object(dialog_type.value) dialog.set_transient_for(transient) + return builder, dialog @@ -92,6 +91,7 @@ def get_chooser_dialog(transient, options, pattern, name): file_filter = Gtk.FileFilter() file_filter.add_pattern(pattern) file_filter.set_name(name) + return show_dialog(dialog_type=DialogType.CHOOSER, transient=transient, options=options, diff --git a/app/ui/service_details_dialog.py b/app/ui/service_details_dialog.py index f864c373..ea0913ed 100644 --- a/app/ui/service_details_dialog.py +++ b/app/ui/service_details_dialog.py @@ -1,14 +1,13 @@ import re -from functools import lru_cache from app.commons import run_idle from app.eparser import Service, get_satellites from app.eparser.ecommons import MODULATION, Inversion, ROLL_OFF, Pilot, Flag, Pids, POLARIZATION, \ get_key_by_value, get_value_by_name, FEC_DEFAULT, PLS_MODE from app.properties import Profile +from . import Gtk, Gdk, UI_RESOURCES_PATH, HIDE_ICON, TEXT_DOMAIN from .dialogs import show_dialog, DialogType, Action from .main_helper import get_base_model -from . import Gtk, Gdk, UI_RESOURCES_PATH, HIDE_ICON, TEXT_DOMAIN class ServiceDetailsDialog: @@ -259,7 +258,6 @@ class ServiceDetailsDialog: model.append((pos,)) self.select_active_text(self._sat_pos_combo_box, sat_pos) - @lru_cache(maxsize=1) def get_sat_positions(self, path): try: return ["{:.1f}".format(float(x.position) / 10) for x in get_satellites(path)]