satellites selective loading in the picons downloader

This commit is contained in:
DYefremov
2018-10-21 11:12:57 +03:00
parent 348b0743b4
commit 499c1aa104
3 changed files with 74 additions and 13 deletions

View File

@@ -1529,7 +1529,7 @@ class MainAppWindow:
data = r[9].split("_")
ids["{}:{}:{}".format(data[3], data[5], data[6])] = r[9]
dialog = PiconsDialog(self._main_window, self._options, ids, Profile(self._profile))
dialog = PiconsDialog(self._main_window, self._options, ids, self._sat_positions, Profile(self._profile))
dialog.show()
self.update_picons()

View File

@@ -73,18 +73,43 @@ Author: Dmitriy Yefremov
<column type="gboolean"/>
</columns>
</object>
<object class="GtkListStore" id="sat_position_list_store">
<columns>
<!-- column-name pos -->
<column type="gchararray"/>
</columns>
<object class="GtkImage" id="remove_selection_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">edit-undo</property>
</object>
<object class="GtkListStore" id="satellites_liststore">
<object class="GtkMenu" id="providers_popup_menu">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkImageMenuItem" id="select_all_popup_item">
<property name="label">gtk-select-all</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<signal name="activate" handler="on_select_all" object="providers_tree_view" swapped="no"/>
</object>
</child>
<child>
<object class="GtkImageMenuItem" id="unselect_all_popup_item">
<property name="label" translatable="yes">Remove selection</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="image">remove_selection_image</property>
<property name="use_stock">False</property>
<signal name="activate" handler="on_unselect_all" object="providers_tree_view" swapped="no"/>
</object>
</child>
</object>
<object class="GtkListStore" id="satellites_list_store">
<columns>
<!-- column-name satellite -->
<column type="gchararray"/>
<!-- column-name url -->
<column type="gchararray"/>
<!-- column-name pos -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkDialog" id="picons_dialog">
@@ -328,7 +353,7 @@ Author: Dmitriy Yefremov
<object class="GtkTreeView" id="satellites_tree_view">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">satellites_liststore</property>
<property name="model">satellites_list_store</property>
<property name="headers_visible">False</property>
<property name="search_column">0</property>
<property name="activate_on_single_click">True</property>
@@ -351,9 +376,25 @@ Author: Dmitriy Yefremov
</child>
<child>
<object class="GtkTreeViewColumn" id="sat_url_column">
<property name="visible">False</property>
<property name="title" translatable="yes">Url</property>
<child>
<object class="GtkCellRendererText" id="url_cell_renderer"/>
<attributes>
<attribute name="text">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="sat_pos_columnt">
<property name="visible">False</property>
<property name="title" translatable="yes">Pos</property>
<child>
<object class="GtkCellRendererText" id="pos_cell_renderer"/>
<attributes>
<attribute name="text">2</attribute>
</attributes>
</child>
</object>
</child>
@@ -423,6 +464,8 @@ Author: Dmitriy Yefremov
<property name="can_focus">True</property>
<property name="has_focus">True</property>
<property name="model">providers_list_store</property>
<signal name="button-press-event" handler="on_popup_menu" object="providers_popup_menu" swapped="no"/>
<signal name="select-all" handler="on_select_all" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview_selection"/>
</child>
@@ -476,6 +519,7 @@ Author: Dmitriy Yefremov
</child>
<child>
<object class="GtkTreeViewColumn" id="on_id_column">
<property name="visible">False</property>
<property name="title" translatable="yes">ONID</property>
<child>
<object class="GtkCellRendererText" id="onid_cellrenderertext"/>
@@ -487,6 +531,7 @@ Author: Dmitriy Yefremov
</child>
<child>
<object class="GtkTreeViewColumn" id="ssid_column">
<property name="visible">False</property>
<property name="title" translatable="yes">SSID</property>
<child>
<object class="GtkCellRendererText" id="ssid_cellrenderertext"/>

View File

@@ -14,12 +14,13 @@ from app.properties import Profile
from app.tools.satellites import SatellitesParser, SatelliteSource
from .uicommons import Gtk, Gdk, UI_RESOURCES_PATH, TEXT_DOMAIN, TV_ICON
from .dialogs import show_dialog, DialogType, get_message
from .main_helper import update_entry_data, append_text_to_tview, scroll_to
from .main_helper import update_entry_data, append_text_to_tview, scroll_to, on_popup_menu
class PiconsDialog:
def __init__(self, transient, options, picon_ids, profile=Profile.ENIGMA_2):
def __init__(self, transient, options, picon_ids, sat_positions, profile=Profile.ENIGMA_2):
self._picon_ids = picon_ids
self._sat_positions = sat_positions
self._TMP_DIR = tempfile.gettempdir() + "/"
self._BASE_URL = "www.lyngsat.com/packages/"
self._PATTERN = re.compile("^https://www\.lyngsat\.com/[\w-]+\.html$")
@@ -40,7 +41,10 @@ class PiconsDialog:
"on_notebook_switch_page": self.on_notebook_switch_page,
"on_convert": self.on_convert,
"on_satellites_view_realize": self.on_satellites_view_realize,
"on_satellite_selection": self.on_satellite_selection}
"on_satellite_selection": self.on_satellite_selection,
"on_select_all": self.on_select_all,
"on_unselect_all": self.on_unselect_all,
"on_popup_menu": on_popup_menu}
builder = Gtk.Builder()
builder.set_translation_domain(TEXT_DOMAIN)
@@ -106,9 +110,12 @@ class PiconsDialog:
def append_satellites(self, model, sats):
for sat in sats:
s = "{} ({})".format(sat[0], sat[1])
pos = sat[1]
name = "{} ({})".format(sat[0], pos)
pos = "{}{}".format("-" if pos[-1] == "W" else "", pos[:-1])
if not self._terminate and model:
model.append((s, sat[3]))
if pos in self._sat_positions:
model.append((name, sat[3], pos))
yield True
def on_satellite_selection(self, view, path, column):
@@ -262,6 +269,15 @@ class PiconsDialog:
model.set_value(model.get_iter(path), 7, not toggle.get_active())
self.update_receive_button_state()
def on_select_all(self, view):
self.update_selection(view, True)
def on_unselect_all(self, view):
self.update_selection(view, False)
def update_selection(self, view, select):
view.get_model().foreach(lambda mod, path, itr: mod.set_value(itr, 7, select))
def on_url_changed(self, entry):
suit = self._PATTERN.search(entry.get_text())
entry.set_name("GtkEntry" if suit else "digit-entry")