separated data upload for the services tab

This commit is contained in:
DYefremov
2025-09-23 13:13:10 +03:00
parent 394b7c4c01
commit 958320e573
2 changed files with 158 additions and 68 deletions

View File

@@ -4770,97 +4770,185 @@ Author: Dmitriy Yefremov
<property name="can-focus">False</property>
<property name="stack">stack</property>
</object>
<object class="GtkButtonBox" id="toolbar_main_box">
<object class="GtkPopover" id="send_popover">
<property name="can-focus">False</property>
<child>
<object class="GtkButtonBox">
<property name="width-request">100</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="border-width">5</property>
<property name="orientation">vertical</property>
<property name="homogeneous">True</property>
<property name="layout-style">expand</property>
<child>
<object class="GtkModelButton" id="send_srv_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="action-name">app.on_send</property>
<property name="text" translatable="yes">All</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkModelButton" id="send_bq_button">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="action-name">app.upload_bouquets</property>
<property name="text" translatable="yes">Bouquets</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkBox" id="toolbar_main_box">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="homogeneous">True</property>
<property name="layout-style">expand</property>
<property name="spacing">2</property>
<child>
<object class="GtkButton" id="open_tool_button">
<object class="GtkButtonBox" id="osv_button_box">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Open</property>
<property name="action-name">app.on_data_open</property>
<property name="can-focus">False</property>
<property name="layout-style">expand</property>
<child>
<object class="GtkImage" id="open_image">
<object class="GtkButton" id="open_tool_button">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-open-symbolic</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Open</property>
<property name="action-name">app.on_data_open</property>
<child>
<object class="GtkImage" id="open_image">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-open-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="save_tool_button">
<property name="can-focus">False</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Save</property>
<property name="action-name">app.on_data_save</property>
<child>
<object class="GtkImage" id="save_image">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-save-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkButton" id="receive_button">
<object class="GtkButtonBox" id="send_receive_button_box">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Download from the receiver</property>
<property name="action-name">app.on_receive</property>
<property name="always-show-image">True</property>
<property name="layout-style">expand</property>
<child>
<object class="GtkImage" id="download_image">
<property name="width-request">32</property>
<object class="GtkButton" id="receive_button">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">network-receive-symbolic</property>
<property name="icon_size">1</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Download from the receiver</property>
<property name="action-name">app.on_receive</property>
<property name="always-show-image">True</property>
<child>
<object class="GtkImage" id="download_image">
<property name="width-request">32</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">network-receive-symbolic</property>
<property name="icon_size">1</property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="send_button">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Transfer to receiver</property>
<property name="action-name">app.on_send</property>
<property name="always-show-image">True</property>
<child>
<object class="GtkImage" id="send_image">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">network-transmit-symbolic</property>
<property name="icon_size">1</property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="send_menu_button">
<property name="visible" bind-source="send_button" bind-property="visible" bind-flags="invert-boolean">False</property>
<property name="can-focus">False</property>
<property name="focus-on-click">False</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Transfer to receiver</property>
<property name="popover">send_popover</property>
<child>
<object class="GtkImage" id="send_menu_image">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">network-transmit-symbolic</property>
<property name="icon_size">1</property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="send_button">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Transfer to receiver</property>
<property name="action-name">app.on_send</property>
<property name="always-show-image">True</property>
<child>
<object class="GtkImage" id="send_image">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">network-transmit-symbolic</property>
<property name="icon_size">1</property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkButton" id="save_tool_button">
<property name="can-focus">False</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Save</property>
<property name="action-name">app.on_data_save</property>
<child>
<object class="GtkImage" id="save_image">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">document-save-symbolic</property>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">3</property>
<property name="position">5</property>
</packing>
</child>
</object>

View File

@@ -40,7 +40,7 @@ from urllib.parse import urlparse, unquote
from gi.repository import GLib, Gio, GObject
from app.commons import run_idle, log, run_task, run_with_delay, init_logger, DefaultDict
from app.connections import (HttpAPI, download_data, DownloadType, upload_data, STC_XML_FILE)
from app.connections import (HttpAPI, download_data, DownloadType, upload_data)
from app.eparser import get_blacklist, write_blacklist, write_bouquet
from app.eparser import get_services, get_bouquets, write_bouquets, write_services, Bouquets, Bouquet, Service
from app.eparser.ecommons import CAS, Flag, BouquetService, TrType
@@ -398,6 +398,7 @@ class Application(Gtk.Application):
self._bq_name_label = builder.get_object("bq_name_label")
self._iptv_model = builder.get_object("iptv_list_store")
self._iptv_menu_button = builder.get_object("iptv_menu_button")
self._send_button = builder.get_object("send_button")
# Setting custom sort function for position column.
self._services_view.get_model().set_sort_func(Column.SRV_POS, self.position_sort_func, Column.SRV_POS)
# App info
@@ -1174,6 +1175,7 @@ class Application(Gtk.Application):
def on_visible_page(self, stack, param):
self._page = Page(stack.get_visible_child_name())
self._send_button.set_visible(self._page is not Page.SERVICES)
self._fav_paned.set_visible(self._page in self._fav_pages)
self.is_data_save_enabled = self._page in self.DATA_SAVE_PAGES
self.is_data_open_enabled = self._page in self.DATA_OPEN_PAGES