forked from cromer/pamac-classic
pamac-daemon moved as bin, many fixes
This commit is contained in:
parent
96728a14b0
commit
5dd644ecc4
@ -36,111 +36,6 @@
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
<object class="GtkWindow" id="ProgressWindow">
|
|
||||||
<property name="width_request">250</property>
|
|
||||||
<property name="height_request">60</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="title" translatable="yes">Progress</property>
|
|
||||||
<property name="resizable">False</property>
|
|
||||||
<property name="modal">True</property>
|
|
||||||
<property name="window_position">center-on-parent</property>
|
|
||||||
<property name="default_width">250</property>
|
|
||||||
<property name="default_height">60</property>
|
|
||||||
<property name="icon">/usr/share/pamac/icons/22x22/status/setup.png</property>
|
|
||||||
<property name="type_hint">dialog</property>
|
|
||||||
<property name="deletable">False</property>
|
|
||||||
<property name="has_resize_grip">False</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="box7">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="margin_left">5</property>
|
|
||||||
<property name="margin_right">5</property>
|
|
||||||
<property name="margin_top">5</property>
|
|
||||||
<property name="margin_bottom">5</property>
|
|
||||||
<property name="orientation">vertical</property>
|
|
||||||
<property name="spacing">3</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkBox" id="box1">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="spacing">6</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkImage" id="action_icon">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="pixbuf">/usr/share/pamac/icons/24x24/status/setup.png</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkLabel" id="progresslabel2">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="label" translatable="yes">label</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkProgressBar" id="progressbar2">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="pulse_step">0.050000000000000003</property>
|
|
||||||
<property name="text" translatable="yes"> </property>
|
|
||||||
<property name="show_text">True</property>
|
|
||||||
<property name="ellipsize">end</property>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">1</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButtonBox" id="buttonbox1">
|
|
||||||
<property name="visible">True</property>
|
|
||||||
<property name="can_focus">False</property>
|
|
||||||
<property name="layout_style">end</property>
|
|
||||||
<child>
|
|
||||||
<object class="GtkButton" id="ProgressCancelButton">
|
|
||||||
<property name="label">gtk-cancel</property>
|
|
||||||
<property name="can_focus">True</property>
|
|
||||||
<property name="receives_default">True</property>
|
|
||||||
<property name="use_stock">True</property>
|
|
||||||
<property name="xalign">1</property>
|
|
||||||
<signal name="clicked" handler="on_ProgressCancelButton_clicked" swapped="no"/>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">0</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<packing>
|
|
||||||
<property name="expand">False</property>
|
|
||||||
<property name="fill">True</property>
|
|
||||||
<property name="position">2</property>
|
|
||||||
</packing>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
</child>
|
|
||||||
</object>
|
|
||||||
<object class="GtkMessageDialog" id="QuestionDialog">
|
<object class="GtkMessageDialog" id="QuestionDialog">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="border_width">5</property>
|
<property name="border_width">5</property>
|
||||||
|
@ -611,6 +611,111 @@
|
|||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
<object class="GtkWindow" id="ProgressWindow">
|
||||||
|
<property name="width_request">250</property>
|
||||||
|
<property name="height_request">60</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="title" translatable="yes">Progress</property>
|
||||||
|
<property name="resizable">False</property>
|
||||||
|
<property name="modal">True</property>
|
||||||
|
<property name="window_position">center-on-parent</property>
|
||||||
|
<property name="default_width">250</property>
|
||||||
|
<property name="default_height">60</property>
|
||||||
|
<property name="icon">/usr/share/pamac/icons/22x22/status/setup.png</property>
|
||||||
|
<property name="type_hint">dialog</property>
|
||||||
|
<property name="deletable">False</property>
|
||||||
|
<property name="has_resize_grip">False</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="box8">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="margin_left">5</property>
|
||||||
|
<property name="margin_right">5</property>
|
||||||
|
<property name="margin_top">5</property>
|
||||||
|
<property name="margin_bottom">5</property>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="spacing">3</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="box9">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="spacing">6</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkImage" id="action_icon">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="pixbuf">/usr/share/pamac/icons/24x24/status/setup.png</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="progresslabel2">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="label" translatable="yes">label</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkProgressBar" id="progressbar2">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="pulse_step">0.050000000000000003</property>
|
||||||
|
<property name="text" translatable="yes"> </property>
|
||||||
|
<property name="show_text">True</property>
|
||||||
|
<property name="ellipsize">end</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">1</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButtonBox" id="buttonbox3">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="layout_style">end</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkButton" id="ProgressCancelButton">
|
||||||
|
<property name="label">gtk-cancel</property>
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="receives_default">True</property>
|
||||||
|
<property name="use_stock">True</property>
|
||||||
|
<property name="xalign">1</property>
|
||||||
|
<signal name="clicked" handler="on_ProgressCancelButton_clicked" swapped="no"/>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">0</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="expand">False</property>
|
||||||
|
<property name="fill">True</property>
|
||||||
|
<property name="position">2</property>
|
||||||
|
</packing>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
<object class="GtkListStore" id="choose_list">
|
<object class="GtkListStore" id="choose_list">
|
||||||
<columns>
|
<columns>
|
||||||
<!-- column-name gboolean1 -->
|
<!-- column-name gboolean1 -->
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
from gi.repository import Gtk
|
from gi.repository import Gtk
|
||||||
|
|
||||||
import pyalpm
|
import pyalpm
|
||||||
|
import dbus
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
from time import strftime, localtime
|
from time import strftime, localtime
|
||||||
|
|
||||||
@ -15,11 +16,6 @@ interface.add_from_file('/usr/share/pamac/gui/dialogs.glade')
|
|||||||
ErrorDialog = interface.get_object('ErrorDialog')
|
ErrorDialog = interface.get_object('ErrorDialog')
|
||||||
WarningDialog = interface.get_object('WarningDialog')
|
WarningDialog = interface.get_object('WarningDialog')
|
||||||
QuestionDialog = interface.get_object('QuestionDialog')
|
QuestionDialog = interface.get_object('QuestionDialog')
|
||||||
ProgressWindow = interface.get_object('ProgressWindow')
|
|
||||||
progress_bar = interface.get_object('progressbar2')
|
|
||||||
progress_label = interface.get_object('progresslabel2')
|
|
||||||
action_icon = interface.get_object('action_icon')
|
|
||||||
ProgressCancelButton = interface.get_object('ProgressCancelButton')
|
|
||||||
|
|
||||||
interface.add_from_file('/usr/share/pamac/gui/manager.glade')
|
interface.add_from_file('/usr/share/pamac/gui/manager.glade')
|
||||||
ManagerWindow = interface.get_object("ManagerWindow")
|
ManagerWindow = interface.get_object("ManagerWindow")
|
||||||
@ -39,15 +35,56 @@ sum_bottom_label = interface.get_object('sum_bottom_label')
|
|||||||
ChooseDialog = interface.get_object('ChooseDialog')
|
ChooseDialog = interface.get_object('ChooseDialog')
|
||||||
choose_list = interface.get_object('choose_list')
|
choose_list = interface.get_object('choose_list')
|
||||||
choose_label = interface.get_object('choose_label')
|
choose_label = interface.get_object('choose_label')
|
||||||
|
ProgressWindow = interface.get_object('ProgressWindow')
|
||||||
|
progress_bar = interface.get_object('progressbar2')
|
||||||
|
progress_label = interface.get_object('progresslabel2')
|
||||||
|
action_icon = interface.get_object('action_icon')
|
||||||
|
ProgressCancelButton = interface.get_object('ProgressCancelButton')
|
||||||
|
|
||||||
interface.add_from_file('/usr/share/pamac/gui/updater.glade')
|
interface.add_from_file('/usr/share/pamac/gui/updater.glade')
|
||||||
UpdaterWindow = interface.get_object("UpdaterWindow")
|
UpdaterWindow = interface.get_object("UpdaterWindow")
|
||||||
update_listore = interface.get_object('update_list')
|
update_listore = interface.get_object('update_list')
|
||||||
update_label = interface.get_object('update_label')
|
update_label = interface.get_object('update_label')
|
||||||
|
|
||||||
|
def action_signal_handler(action):
|
||||||
|
progress_label.set_text(action)
|
||||||
|
#if 'Downloading' in action:
|
||||||
|
# print('cancel enabled')
|
||||||
|
# ProgressCancelButton.set_visible(True)
|
||||||
|
#else:
|
||||||
|
ProgressCancelButton.set_visible(False)
|
||||||
|
#print('cancel disabled')
|
||||||
|
|
||||||
|
def icon_signal_handler(icon):
|
||||||
|
action_icon.set_from_file(icon)
|
||||||
|
|
||||||
|
def target_signal_handler(target):
|
||||||
|
progress_bar.set_text(target)
|
||||||
|
|
||||||
|
def percent_signal_handler(percent):
|
||||||
|
if percent == '0':
|
||||||
|
progress_bar.pulse()
|
||||||
|
else:
|
||||||
|
progress_bar.set_fraction(float(percent))
|
||||||
|
|
||||||
|
bus = dbus.SystemBus()
|
||||||
|
bus.add_signal_receiver(action_signal_handler, dbus_interface = "org.manjaro.pamac", signal_name = "EmitAction")
|
||||||
|
bus.add_signal_receiver(icon_signal_handler, dbus_interface = "org.manjaro.pamac", signal_name = "EmitIcon")
|
||||||
|
bus.add_signal_receiver(target_signal_handler, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTarget")
|
||||||
|
bus.add_signal_receiver(percent_signal_handler, dbus_interface = "org.manjaro.pamac", signal_name = "EmitPercent")
|
||||||
|
|
||||||
installed_column.set_sort_column_id(1)
|
installed_column.set_sort_column_id(1)
|
||||||
name_column.set_sort_column_id(0)
|
name_column.set_sort_column_id(0)
|
||||||
|
|
||||||
|
pkg_name_list = []
|
||||||
|
pkg_object_dict = {}
|
||||||
|
pkg_installed_dict = {}
|
||||||
|
list_dict = None
|
||||||
|
current_group = None
|
||||||
|
transaction_type = None
|
||||||
|
transaction_dict = {}
|
||||||
|
mode = None
|
||||||
|
|
||||||
def get_groups():
|
def get_groups():
|
||||||
tmp_list = []
|
tmp_list = []
|
||||||
for repo in transaction.handle.get_syncdbs():
|
for repo in transaction.handle.get_syncdbs():
|
||||||
@ -58,15 +95,6 @@ def get_groups():
|
|||||||
for name in tmp_list:
|
for name in tmp_list:
|
||||||
groups_list.append([name])
|
groups_list.append([name])
|
||||||
|
|
||||||
pkg_name_list = []
|
|
||||||
pkg_object_dict = {}
|
|
||||||
pkg_installed_dict = {}
|
|
||||||
list_dict = None
|
|
||||||
current_group = None
|
|
||||||
transaction_type = None
|
|
||||||
transaction_dict = {}
|
|
||||||
mode = None
|
|
||||||
|
|
||||||
def set_list_dict_search(*patterns):
|
def set_list_dict_search(*patterns):
|
||||||
global pkg_name_list
|
global pkg_name_list
|
||||||
global pkg_object_dict
|
global pkg_object_dict
|
||||||
@ -255,7 +283,7 @@ def handle_error(error):
|
|||||||
transaction.ErrorDialog.hide()
|
transaction.ErrorDialog.hide()
|
||||||
transaction.t_lock = False
|
transaction.t_lock = False
|
||||||
transaction.Release()
|
transaction.Release()
|
||||||
transaction.ProgressWindow.hide()
|
ProgressWindow.hide()
|
||||||
if mode == 'manager':
|
if mode == 'manager':
|
||||||
transaction.to_add = []
|
transaction.to_add = []
|
||||||
transaction.to_remove = []
|
transaction.to_remove = []
|
||||||
@ -278,7 +306,7 @@ def handle_reply(reply):
|
|||||||
transaction.ErrorDialog.hide()
|
transaction.ErrorDialog.hide()
|
||||||
transaction.t_lock = False
|
transaction.t_lock = False
|
||||||
transaction.Release()
|
transaction.Release()
|
||||||
transaction.ProgressWindow.hide()
|
ProgressWindow.hide()
|
||||||
transaction.to_add = []
|
transaction.to_add = []
|
||||||
transaction.to_remove = []
|
transaction.to_remove = []
|
||||||
transaction_dict.clear()
|
transaction_dict.clear()
|
||||||
@ -297,9 +325,9 @@ def do_refresh():
|
|||||||
"""Sync databases like pacman -Sy"""
|
"""Sync databases like pacman -Sy"""
|
||||||
if transaction.t_lock is False:
|
if transaction.t_lock is False:
|
||||||
transaction.t_lock = True
|
transaction.t_lock = True
|
||||||
transaction.progress_label.set_text('Refreshing...')
|
progress_label.set_text('Refreshing...')
|
||||||
transaction.action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/refresh-cache.png')
|
action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/refresh-cache.png')
|
||||||
transaction.ProgressWindow.show_all()
|
ProgressWindow.show_all()
|
||||||
while Gtk.events_pending():
|
while Gtk.events_pending():
|
||||||
Gtk.main_iteration()
|
Gtk.main_iteration()
|
||||||
transaction.Refresh(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
|
transaction.Refresh(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
|
||||||
@ -377,10 +405,10 @@ def do_sysupgrade():
|
|||||||
ConfDialog.show_all()
|
ConfDialog.show_all()
|
||||||
|
|
||||||
def finalize():
|
def finalize():
|
||||||
transaction.progress_label.set_text('Preparing...')
|
progress_label.set_text('Preparing...')
|
||||||
transaction.action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/setup.png')
|
action_icon.set_from_file('/usr/share/pamac/icons/24x24/status/setup.png')
|
||||||
transaction.progress_bar.set_text('')
|
progress_bar.set_text('')
|
||||||
transaction.ProgressWindow.show_all()
|
ProgressWindow.show_all()
|
||||||
while Gtk.events_pending():
|
while Gtk.events_pending():
|
||||||
Gtk.main_iteration()
|
Gtk.main_iteration()
|
||||||
transaction.Commit(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
|
transaction.Commit(reply_handler = handle_reply, error_handler = handle_error, timeout = 2000*1000)
|
||||||
@ -522,8 +550,16 @@ def check_conflicts(pkg_list):
|
|||||||
response = transaction.WarningDialog.run()
|
response = transaction.WarningDialog.run()
|
||||||
if response:
|
if response:
|
||||||
transaction.WarningDialog.hide()
|
transaction.WarningDialog.hide()
|
||||||
|
pkg_list = {}
|
||||||
for pkgname in transaction.to_remove:
|
for pkgname in transaction.to_remove:
|
||||||
pkg = transaction.localpkgs[pkgname]
|
pkg_list[pkgname] = transaction.localpkgs[pkgname]
|
||||||
|
for pkgname in transaction.to_add:
|
||||||
|
pkg = transaction.syncpkgs[pkgname]
|
||||||
|
for replace in pkg.replaces:
|
||||||
|
provide = pyalpm.find_satisfier(pkg_list.values(), replace)
|
||||||
|
if provide:
|
||||||
|
pkg_list.pop(provide.name)
|
||||||
|
for pkg in pkg_list.values():
|
||||||
required = pkg.compute_requiredby()
|
required = pkg.compute_requiredby()
|
||||||
if required:
|
if required:
|
||||||
str_required = ''
|
str_required = ''
|
||||||
@ -633,7 +669,7 @@ class Handler:
|
|||||||
|
|
||||||
def on_TransCancelButton_clicked(self, *arg):
|
def on_TransCancelButton_clicked(self, *arg):
|
||||||
global transaction_type
|
global transaction_type
|
||||||
transaction.ProgressWindow.hide()
|
ProgressWindow.hide()
|
||||||
ConfDialog.hide()
|
ConfDialog.hide()
|
||||||
transaction.t_lock = False
|
transaction.t_lock = False
|
||||||
transaction.Release()
|
transaction.Release()
|
||||||
@ -758,10 +794,8 @@ class Handler:
|
|||||||
do_refresh()
|
do_refresh()
|
||||||
|
|
||||||
def on_ProgressCancelButton_clicked(self, *arg):
|
def on_ProgressCancelButton_clicked(self, *arg):
|
||||||
transaction.t_lock = False
|
print('cancelled')
|
||||||
transaction.Release()
|
#handle_reply('')
|
||||||
transaction.ProgressWindow.hide()
|
|
||||||
have_updates()
|
|
||||||
|
|
||||||
def main(_mode):
|
def main(_mode):
|
||||||
if common.pid_file_exists():
|
if common.pid_file_exists():
|
||||||
|
@ -1,340 +0,0 @@
|
|||||||
#! /usr/bin/python
|
|
||||||
# -*-coding:utf-8-*-
|
|
||||||
|
|
||||||
import dbus
|
|
||||||
import dbus.service
|
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
|
||||||
from gi.repository import GObject
|
|
||||||
|
|
||||||
import pyalpm
|
|
||||||
import traceback
|
|
||||||
from pamac import config, common
|
|
||||||
|
|
||||||
class PamacDBusService(dbus.service.Object):
|
|
||||||
def __init__(self):
|
|
||||||
bus=dbus.SystemBus()
|
|
||||||
bus_name = dbus.service.BusName('org.manjaro.pamac', bus)
|
|
||||||
dbus.service.Object.__init__(self, bus_name, '/org/manjaro/pamac')
|
|
||||||
self.t = None
|
|
||||||
self.error = ''
|
|
||||||
self.warning = ''
|
|
||||||
self.action = 'Preparing...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/setup.png'
|
|
||||||
self.target = ''
|
|
||||||
self.percent = 0
|
|
||||||
self.total_size = 0
|
|
||||||
self.already_transferred = 0
|
|
||||||
config.handle.dlcb = self.cb_dl
|
|
||||||
config.handle.totaldlcb = self.totaldlcb
|
|
||||||
config.handle.eventcb = self.cb_event
|
|
||||||
config.handle.questioncb = self.cb_conv
|
|
||||||
config.handle.progresscb = self.cb_progress
|
|
||||||
config.handle.logcb = self.cb_log
|
|
||||||
|
|
||||||
@dbus.service.signal('org.manjaro.pamac')
|
|
||||||
def EmitAction(self, action):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@dbus.service.signal('org.manjaro.pamac')
|
|
||||||
def EmitIcon(self, icon):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@dbus.service.signal('org.manjaro.pamac')
|
|
||||||
def EmitTarget(self, target):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@dbus.service.signal('org.manjaro.pamac')
|
|
||||||
def EmitPercent(self, percent):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def cb_event(self, ID, event, tupel):
|
|
||||||
if ID is 1:
|
|
||||||
self.action = 'Checking dependencies...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
|
|
||||||
elif ID is 3:
|
|
||||||
self.action = 'Checking file conflicts...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
|
|
||||||
elif ID is 5:
|
|
||||||
self.action = 'Resolving dependencies...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/setup.png'
|
|
||||||
elif ID is 7:
|
|
||||||
self.action = 'Checking inter conflicts...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
|
|
||||||
elif ID is 9:
|
|
||||||
self.action = 'Installing...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-add.png'
|
|
||||||
elif ID is 10:
|
|
||||||
formatted_event = 'Installed {} ({})'.format(tupel[0].name, tupel[0].version)
|
|
||||||
common.write_log_file(formatted_event)
|
|
||||||
print(formatted_event)
|
|
||||||
elif ID is 11:
|
|
||||||
self.action = 'Removing...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-delete.png'
|
|
||||||
elif ID is 12:
|
|
||||||
formatted_event = 'Removed {} ({})'.format(tupel[0].name, tupel[0].version)
|
|
||||||
common.write_log_file(formatted_event)
|
|
||||||
print(formatted_event)
|
|
||||||
elif ID is 13:
|
|
||||||
self.action = 'Upgrading...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-update.png'
|
|
||||||
elif ID is 14:
|
|
||||||
formatted_event = 'Upgraded {} ({} -> {})'.format(tupel[1].name, tupel[1].version, tupel[0].version)
|
|
||||||
common.write_log_file(formatted_event)
|
|
||||||
print(formatted_event)
|
|
||||||
elif ID is 15:
|
|
||||||
self.action = 'Checking integrity...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
|
|
||||||
self.already_transferred = 0
|
|
||||||
elif ID is 17:
|
|
||||||
self.action = 'Loading packages files...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
|
|
||||||
print('Loading packages files')
|
|
||||||
elif ID is 26:
|
|
||||||
self.action = 'Configuring...'
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/setup.png'
|
|
||||||
print('Configuring a package')
|
|
||||||
elif ID is 27:
|
|
||||||
print('Downloading a file')
|
|
||||||
else :
|
|
||||||
self.action = ''
|
|
||||||
self.EmitTarget('')
|
|
||||||
self.EmitPercent(str(0))
|
|
||||||
self.EmitAction(self.action)
|
|
||||||
self.EmitIcon(self.icon)
|
|
||||||
print(ID,event)
|
|
||||||
|
|
||||||
def cb_conv(self, *args):
|
|
||||||
print("conversation", args)
|
|
||||||
|
|
||||||
def cb_log(self, level, line):
|
|
||||||
#global t
|
|
||||||
_logmask = pyalpm.LOG_ERROR | pyalpm.LOG_WARNING
|
|
||||||
if not (level & _logmask):
|
|
||||||
return
|
|
||||||
if level & pyalpm.LOG_ERROR:
|
|
||||||
self.error += "ERROR: "+line
|
|
||||||
#t.release()
|
|
||||||
elif level & pyalpm.LOG_WARNING:
|
|
||||||
self.warning += "WARNING: "+line
|
|
||||||
elif level & pyalpm.LOG_DEBUG:
|
|
||||||
line = "DEBUG: " + line
|
|
||||||
print(line)
|
|
||||||
elif level & pyalpm.LOG_FUNCTION:
|
|
||||||
line = "FUNC: " + line
|
|
||||||
print(line)
|
|
||||||
|
|
||||||
def totaldlcb(self, _total_size):
|
|
||||||
self.total_size = _total_size
|
|
||||||
|
|
||||||
def cb_dl(self, _target, _transferred, total):
|
|
||||||
if self.total_size > 0:
|
|
||||||
fraction = (_transferred+self.already_transferred)/self.total_size
|
|
||||||
size = 0
|
|
||||||
if (t.to_remove or t.to_add):
|
|
||||||
for pkg in t.to_remove+t.to_add:
|
|
||||||
if pkg.name+'-'+pkg.version in _target:
|
|
||||||
size = pkg.size
|
|
||||||
if _transferred == size:
|
|
||||||
self.already_transferred += size
|
|
||||||
self.action = 'Downloading '+common.format_size(self.total_size)
|
|
||||||
self.target = _target
|
|
||||||
if fraction > 1:
|
|
||||||
self.percent = 0
|
|
||||||
else:
|
|
||||||
self.percent = fraction
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-download.png'
|
|
||||||
else:
|
|
||||||
self.action = 'Refreshing...'
|
|
||||||
self.target = _target
|
|
||||||
self.percent = 0
|
|
||||||
self.icon = '/usr/share/pamac/icons/24x24/status/refresh-cache.png'
|
|
||||||
self.EmitAction(self.action)
|
|
||||||
self.EmitIcon(self.icon)
|
|
||||||
self.EmitTarget(self.target)
|
|
||||||
self.EmitPercent(str(self.percent))
|
|
||||||
|
|
||||||
def cb_progress(self, _target, _percent, n, i):
|
|
||||||
self.target = _target+' ('+str(i)+'/'+str(n)+')'
|
|
||||||
self.percent = _percent/100
|
|
||||||
self.EmitTarget(self.target)
|
|
||||||
self.EmitPercent(str(self.percent))
|
|
||||||
|
|
||||||
def policykit_test(self, sender,connexion, action):
|
|
||||||
bus = dbus.SystemBus()
|
|
||||||
proxy_dbus = connexion.get_object('org.freedesktop.DBus','/org/freedesktop/DBus/Bus', False)
|
|
||||||
dbus_info = dbus.Interface(proxy_dbus,'org.freedesktop.DBus')
|
|
||||||
sender_pid = dbus_info.GetConnectionUnixProcessID(sender)
|
|
||||||
proxy_policykit = bus.get_object('org.freedesktop.PolicyKit1','/org/freedesktop/PolicyKit1/Authority',False)
|
|
||||||
policykit_authority = dbus.Interface(proxy_policykit,'org.freedesktop.PolicyKit1.Authority')
|
|
||||||
|
|
||||||
Subject = ('unix-process', {'pid': dbus.UInt32(sender_pid, variant_level=1),
|
|
||||||
'start-time': dbus.UInt64(0, variant_level=1)})
|
|
||||||
(is_authorized,is_challenge,details) = policykit_authority.CheckAuthorization(Subject, action, {'': ''}, dbus.UInt32(1), '')
|
|
||||||
return is_authorized
|
|
||||||
|
|
||||||
@dbus.service.signal('org.manjaro.pamac')
|
|
||||||
def EmitAvailableUpdates(self, updates_nb):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def CheckUpdates(self):
|
|
||||||
updates = False
|
|
||||||
for pkg in config.handle.get_localdb().pkgcache:
|
|
||||||
candidate = pyalpm.sync_newversion(pkg, config.handle.get_syncdbs())
|
|
||||||
if candidate:
|
|
||||||
updates = True
|
|
||||||
self.EmitAvailableUpdates(updates)
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', '', 's')
|
|
||||||
def Refresh(self):
|
|
||||||
global t
|
|
||||||
#~ global error
|
|
||||||
#~ error = ''
|
|
||||||
for db in config.handle.get_syncdbs():
|
|
||||||
try:
|
|
||||||
t = config.handle.init_transaction()
|
|
||||||
db.update(force=False)
|
|
||||||
t.release()
|
|
||||||
except pyalpm.error as e:
|
|
||||||
self.error += str(e)+'\n'
|
|
||||||
t.release()
|
|
||||||
#break
|
|
||||||
self.CheckUpdates()
|
|
||||||
return self.error
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', 'a{sb}', 's', sender_keyword='sender', connection_keyword='connexion')
|
|
||||||
def Init(self, options, sender=None, connexion=None):
|
|
||||||
global t
|
|
||||||
global error
|
|
||||||
if self.policykit_test(sender,connexion,'org.manjaro.pamac.init_release'):
|
|
||||||
error = ''
|
|
||||||
try:
|
|
||||||
t = config.handle.init_transaction(**options)
|
|
||||||
print('Init:',t.flags)
|
|
||||||
except pyalpm.error:
|
|
||||||
error = traceback.format_exc()
|
|
||||||
finally:
|
|
||||||
return error
|
|
||||||
else :
|
|
||||||
return 'You are not authorized'
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', '', 's')
|
|
||||||
def Sysupgrade(self):
|
|
||||||
global t
|
|
||||||
global error
|
|
||||||
error = ''
|
|
||||||
try:
|
|
||||||
t.sysupgrade(downgrade=False)
|
|
||||||
print('to_upgrade:',t.to_add)
|
|
||||||
except pyalpm.error:
|
|
||||||
error = traceback.format_exc()
|
|
||||||
finally:
|
|
||||||
return error
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', 's', 's')
|
|
||||||
def Remove(self, pkgname):
|
|
||||||
global t
|
|
||||||
global error
|
|
||||||
error = ''
|
|
||||||
try:
|
|
||||||
pkg = config.handle.get_localdb().get_pkg(pkgname)
|
|
||||||
if pkg is not None:
|
|
||||||
t.remove_pkg(pkg)
|
|
||||||
except pyalpm.error:
|
|
||||||
error = traceback.format_exc()
|
|
||||||
finally:
|
|
||||||
return error
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', 's', 's')
|
|
||||||
def Add(self, pkgname):
|
|
||||||
global t
|
|
||||||
global error
|
|
||||||
error = ''
|
|
||||||
try:
|
|
||||||
for repo in config.handle.get_syncdbs():
|
|
||||||
pkg = repo.get_pkg(pkgname)
|
|
||||||
if pkg:
|
|
||||||
t.add_pkg(pkg)
|
|
||||||
break
|
|
||||||
except pyalpm.error:
|
|
||||||
error = traceback.format_exc()
|
|
||||||
finally:
|
|
||||||
return error
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', '', 's')
|
|
||||||
def Prepare(self):
|
|
||||||
global t
|
|
||||||
global error
|
|
||||||
error = ''
|
|
||||||
try:
|
|
||||||
t.prepare()
|
|
||||||
print('to_add:',t.to_add)
|
|
||||||
print('to_remove:',t.to_remove)
|
|
||||||
except pyalpm.error:
|
|
||||||
error = traceback.format_exc()
|
|
||||||
finally:
|
|
||||||
return error
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', '', 'as')
|
|
||||||
def To_Remove(self):
|
|
||||||
global t
|
|
||||||
liste = []
|
|
||||||
for pkg in t.to_remove:
|
|
||||||
liste.append(pkg.name)
|
|
||||||
return liste
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', '', 'as')
|
|
||||||
def To_Add(self):
|
|
||||||
global t
|
|
||||||
liste = []
|
|
||||||
for pkg in t.to_add:
|
|
||||||
liste.append(pkg.name)
|
|
||||||
return liste
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', '', 's', sender_keyword='sender', connection_keyword='connexion')#, async_callbacks=('success', 'nosuccess'))
|
|
||||||
def Commit(self, sender=None, connexion=None):#success, nosuccess, sender=None, connexion=None):
|
|
||||||
global t
|
|
||||||
global error
|
|
||||||
error = ''
|
|
||||||
if self.policykit_test(sender,connexion,'org.manjaro.pamac.commit'):
|
|
||||||
try:
|
|
||||||
t.commit()
|
|
||||||
#success('')
|
|
||||||
except pyalpm.error:
|
|
||||||
error = traceback.format_exc()
|
|
||||||
#nosuccess(error)
|
|
||||||
except dbus.exceptions.DBusException:
|
|
||||||
pass
|
|
||||||
finally:
|
|
||||||
self.CheckUpdates()
|
|
||||||
return error
|
|
||||||
else :
|
|
||||||
return 'You are not authorized'
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac', '', 's', sender_keyword='sender', connection_keyword='connexion')
|
|
||||||
def Release(self, sender=None, connexion=None):
|
|
||||||
global t
|
|
||||||
global error
|
|
||||||
if self.policykit_test(sender,connexion,'org.manjaro.pamac.init_release'):
|
|
||||||
error = ''
|
|
||||||
try:
|
|
||||||
t.release()
|
|
||||||
except pyalpm.error:
|
|
||||||
error = traceback.format_exc()
|
|
||||||
finally:
|
|
||||||
return error
|
|
||||||
else :
|
|
||||||
return 'You are not authorized'
|
|
||||||
|
|
||||||
@dbus.service.method('org.manjaro.pamac')
|
|
||||||
def StopDaemon(self):
|
|
||||||
global t
|
|
||||||
try:
|
|
||||||
t.release()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
mainloop.quit()
|
|
||||||
|
|
||||||
DBusGMainLoop(set_as_default=True)
|
|
||||||
myservice = PamacDBusService()
|
|
||||||
mainloop = GObject.MainLoop()
|
|
||||||
mainloop.run()
|
|
@ -25,11 +25,6 @@ interface.add_from_file('/usr/share/pamac/gui/dialogs.glade')
|
|||||||
ErrorDialog = interface.get_object('ErrorDialog')
|
ErrorDialog = interface.get_object('ErrorDialog')
|
||||||
WarningDialog = interface.get_object('WarningDialog')
|
WarningDialog = interface.get_object('WarningDialog')
|
||||||
QuestionDialog = interface.get_object('QuestionDialog')
|
QuestionDialog = interface.get_object('QuestionDialog')
|
||||||
ProgressWindow = interface.get_object('ProgressWindow')
|
|
||||||
progress_bar = interface.get_object('progressbar2')
|
|
||||||
progress_label = interface.get_object('progresslabel2')
|
|
||||||
action_icon = interface.get_object('action_icon')
|
|
||||||
ProgressCancelButton = interface.get_object('ProgressCancelButton')
|
|
||||||
|
|
||||||
def get_handle():
|
def get_handle():
|
||||||
global handle
|
global handle
|
||||||
@ -65,32 +60,6 @@ Commit = proxy.get_dbus_method('Commit','org.manjaro.pamac')
|
|||||||
Release = proxy.get_dbus_method('Release','org.manjaro.pamac')
|
Release = proxy.get_dbus_method('Release','org.manjaro.pamac')
|
||||||
StopDaemon = proxy.get_dbus_method('StopDaemon','org.manjaro.pamac')
|
StopDaemon = proxy.get_dbus_method('StopDaemon','org.manjaro.pamac')
|
||||||
|
|
||||||
def action_signal_handler(action):
|
|
||||||
progress_label.set_text(action)
|
|
||||||
#~ if 'Downloading' in action:
|
|
||||||
#~ print('cancel enabled')
|
|
||||||
#~ ProgressCancelButton.set_visible(True)
|
|
||||||
#~ else:
|
|
||||||
ProgressCancelButton.set_visible(False)
|
|
||||||
#~ print('cancel disabled')
|
|
||||||
|
|
||||||
def icon_signal_handler(icon):
|
|
||||||
action_icon.set_from_file(icon)
|
|
||||||
|
|
||||||
def target_signal_handler(target):
|
|
||||||
progress_bar.set_text(target)
|
|
||||||
|
|
||||||
def percent_signal_handler(percent):
|
|
||||||
#~ if percent == '0':
|
|
||||||
#~ progress_bar.pulse()
|
|
||||||
#~ else:
|
|
||||||
progress_bar.set_fraction(float(percent))
|
|
||||||
|
|
||||||
bus.add_signal_receiver(action_signal_handler, dbus_interface = "org.manjaro.pamac", signal_name = "EmitAction")
|
|
||||||
bus.add_signal_receiver(icon_signal_handler, dbus_interface = "org.manjaro.pamac", signal_name = "EmitIcon")
|
|
||||||
bus.add_signal_receiver(target_signal_handler, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTarget")
|
|
||||||
bus.add_signal_receiver(percent_signal_handler, dbus_interface = "org.manjaro.pamac", signal_name = "EmitPercent")
|
|
||||||
|
|
||||||
def init_transaction(**options):
|
def init_transaction(**options):
|
||||||
"Transaction initialization"
|
"Transaction initialization"
|
||||||
global t_lock
|
global t_lock
|
||||||
@ -123,11 +92,7 @@ def get_updates():
|
|||||||
if name in localpkgs.keys():
|
if name in localpkgs.keys():
|
||||||
candidate = pyalpm.sync_newversion(localpkgs[name], handle.get_syncdbs())
|
candidate = pyalpm.sync_newversion(localpkgs[name], handle.get_syncdbs())
|
||||||
if candidate:
|
if candidate:
|
||||||
for repo in handle.get_syncdbs():
|
list_first.append(candidate)
|
||||||
pkg = repo.get_pkg(candidate.name)
|
|
||||||
if pkg:
|
|
||||||
list_first.append(pkg)
|
|
||||||
break
|
|
||||||
if list_first:
|
if list_first:
|
||||||
do_syncfirst = True
|
do_syncfirst = True
|
||||||
return do_syncfirst, list_first
|
return do_syncfirst, list_first
|
||||||
@ -135,9 +100,5 @@ def get_updates():
|
|||||||
for pkg in localpkgs.values():
|
for pkg in localpkgs.values():
|
||||||
candidate = pyalpm.sync_newversion(pkg, handle.get_syncdbs())
|
candidate = pyalpm.sync_newversion(pkg, handle.get_syncdbs())
|
||||||
if candidate:
|
if candidate:
|
||||||
for repo in handle.get_syncdbs():
|
result.append(candidate)
|
||||||
pkg = repo.get_pkg(candidate.name)
|
|
||||||
if pkg:
|
|
||||||
result.append(pkg)
|
|
||||||
break
|
|
||||||
return do_syncfirst, result
|
return do_syncfirst, result
|
||||||
|
Loading…
Reference in New Issue
Block a user