pamac-tray refreshes its status if pacman was run and fixes

This commit is contained in:
guinux 2013-12-18 19:10:50 +01:00
parent ead2927d37
commit eb5d87a500
7 changed files with 71 additions and 5 deletions

40
pamac-check_updates.py Executable file
View File

@ -0,0 +1,40 @@
#! /usr/bin/python3
# -*- coding:utf-8 -*-
# pamac - A Python implementation of alpm
# Copyright (C) 2013 Guillaume Benoit <guillaume@manjaro.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
from gi.repository import GObject
from pamac import common, transaction
import dbus
def handle_updates(updates):
transaction.StopDaemon()
loop.quit()
loop = GObject.MainLoop()
if not common.pid_file_exists():
bus = dbus.SystemBus()
bus.add_signal_receiver(handle_updates, dbus_interface = "org.manjaro.pamac", signal_name = "EmitAvailableUpdates")
transaction.get_dbus_methods()
try:
transaction.CheckUpdates()
except:
pass
else:
loop.run()

View File

@ -465,10 +465,10 @@ class PamacDBusService(dbus.service.Object):
if self.local_packages:
self.aur_updates_pkgs = aur.multiinfo(self.local_packages)
self.aur_updates_checked = True
for aur_pkg in self.aur_updates_pkgs:
comp = pyalpm.vercmp(aur_pkg.version, self.localdb.get_pkg(aur_pkg.name).version)
if comp == 1:
updates.append((aur_pkg.name, aur_pkg.version, aur_pkg.db.name, aur_pkg.tarpath, aur_pkg.download_size))
for aur_pkg in self.aur_updates_pkgs:
comp = pyalpm.vercmp(aur_pkg.version, self.localdb.get_pkg(aur_pkg.name).version)
if comp == 1:
updates.append((aur_pkg.name, aur_pkg.version, aur_pkg.db.name, aur_pkg.tarpath, aur_pkg.download_size))
self.EmitAvailableUpdates((syncfirst, updates))
@dbus.service.method('org.manjaro.pamac', 'b', '')

View File

@ -29,16 +29,19 @@ def handle_reply(reply):
def handle_error(error):
transaction.StopDaemon()
common.rm_pid_file()
print('check updates failed')
loop.quit()
def handle_updates(updates):
common.rm_pid_file()
transaction.StopDaemon()
loop.quit()
loop = GObject.MainLoop()
if not common.pid_file_exists():
common.write_pid_file()
print('checking updates')
bus = dbus.SystemBus()
bus.add_signal_receiver(handle_reply, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionDone")

20
pamac-tray.py Normal file → Executable file
View File

@ -23,6 +23,7 @@ from subprocess import call
import dbus
from dbus.mainloop.glib import DBusGMainLoop
from threading import Thread
from time import sleep
from pamac import common
@ -92,6 +93,24 @@ class Tray:
def refresh():
Thread(target = call, args = (['/usr/bin/pamac-refresh'],)).start()
return True
def check_updates():
Thread(target = call, args = (['/usr/bin/pamac-check_updates'],)).start()
locked = False
def check_pacman_running():
global locked
if locked:
if not common.lock_file_exists():
locked = False
check_updates()
else:
if common.lock_file_exists():
if not common.pid_file_exists():
locked = True
sleep(0.5)
return True
def set_icon(update_data):
global icon
@ -118,4 +137,5 @@ tray = Tray()
Notify.init(_('Update Manager'))
refresh()
GObject.timeout_add(3*3600*1000, refresh)
GObject.idle_add(check_pacman_running)
Gtk.main()

0
pamac-updater.py Normal file → Executable file
View File

View File

@ -49,6 +49,9 @@ from pamac import config
pid_file = '/tmp/pamac.pid'
lock_file = join(config.pacman_conf.options['DBPath'], 'db.lck')
def lock_file_exists():
return isfile(lock_file)
def pid_file_exists():
return isfile(pid_file)

View File

@ -343,7 +343,7 @@ msgstr "Beberapa pemutakhiran tersedia.\nHarap mutakhirkan sistem terlebih dahul
msgid ""
"{pkgname} is provided by {number} packages.\n"
"Please choose those you would like to install:"
msgstr "{pkgname{ disediakan oleh {number} paket.\nHarap pilih yang ingin kamu instal:"
msgstr "{pkgname} disediakan oleh {number} paket.\nHarap pilih yang ingin kamu instal:"
#: pamac/transaction.py:233
msgid "Refreshing"