forked from cromer/pamac-classic
work on pamac-install to install local packages from file manager or terminal
This commit is contained in:
parent
15081cce7e
commit
916ca6a8e3
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
__pycache__
|
||||
.goutputstream*
|
||||
test*
|
||||
build
|
||||
|
131
data/applications/pamac-install.desktop
Normal file
131
data/applications/pamac-install.desktop
Normal file
@ -0,0 +1,131 @@
|
||||
[Desktop Entry]
|
||||
Name=Software Install
|
||||
Name[af]=Sagteware installeer
|
||||
Name[ar]=تثبيت البرامج
|
||||
Name[as]=চফ্টৱেৰ ইনস্টল
|
||||
Name[ast]=Instalador de software
|
||||
Name[be]=Усталяванне апраграмавання
|
||||
Name[bg]=Инсталиране на софтуер
|
||||
Name[bn_IN]=সফ্টওয়্যার ইনস্টলেশন
|
||||
Name[ca]=Instal·lació de programari
|
||||
Name[ca@valencia]=Instal·lació de programari
|
||||
Name[cs]=Instalace softwaru
|
||||
Name[da]=Softwareinstallation
|
||||
Name[de]=Software-Installation
|
||||
Name[el]=Εγκατάσταση λογισμικού
|
||||
Name[en_GB]=Software Install
|
||||
Name[es]=Instalador de software
|
||||
Name[et]=Tarkvara paigaldamine
|
||||
Name[eu]=Paketeen instalatzailea
|
||||
Name[fa]=نصب نرمافزار
|
||||
Name[fi]=Ohjelmistojen asennus
|
||||
Name[fr]=Installation de logiciels
|
||||
Name[gl]=Instalador de software
|
||||
Name[gu]=સોફ્ટવેર સ્થાપન
|
||||
Name[he]=התקנת תכנה
|
||||
Name[hi]=सॉफ्टवेयर संस्थापित करें
|
||||
Name[hu]=Szoftvertelepítő
|
||||
Name[id]=Pasang Perangkat Lunak
|
||||
Name[it]=Installatore software
|
||||
Name[ja]=ソフトウェアのインストール
|
||||
Name[kn]=ತಂತ್ರಾಂಶ ಅನುಸ್ಥಾಪನೆ
|
||||
Name[ko]=소프트웨어 설치
|
||||
Name[lt]=Programinės įrangos įdiegimas
|
||||
Name[lv]=Programmatūras instalēšana
|
||||
Name[mk]=Инсталација на софтвер
|
||||
Name[ml]=സോഫ്റ്റ്വെയര് ഇന്സ്റ്റോള്
|
||||
Name[mr]=सॉफ्टवेअर प्रतिष्ठापन
|
||||
Name[nb]=Programvareinstallasjon
|
||||
Name[nl]=Software-installatie
|
||||
Name[pa]=ਸਾਫਟਵੇਅਰ ਇੰਸਟਾਲ ਕਰੋ
|
||||
Name[pl]=Instalacja oprogramowania
|
||||
Name[pt]=Instalar Software
|
||||
Name[pt_BR]=Instalação de programas
|
||||
Name[ru]=Установка программ
|
||||
Name[sk]=Inštalácia softvéru
|
||||
Name[sl]=Nameščanje programske opreme
|
||||
Name[sr]=Инсталација софтвера
|
||||
Name[sr@latin]=Instalacija softvera
|
||||
Name[sv]=Programinstallation
|
||||
Name[ta]=மென்பொருள் நிறுவல்
|
||||
Name[te]=సాఫ్ట్వేర్ స్థాపన
|
||||
Name[th]=ติดตั้งซอฟต์แวร์
|
||||
Name[tr]=Yazılım Kur
|
||||
Name[ug]=يۇمشاق دېتال ئورنات
|
||||
Name[uk]=Установлення програм
|
||||
Name[vi]=Cài phần mềm
|
||||
Name[zh_CN]=软件安装程序
|
||||
Name[zh_HK]=軟件安裝
|
||||
Name[zh_TW]=軟體安裝
|
||||
Comment=Install selected software on the system
|
||||
Comment[af]=Installeer gekose sagteware op die stelsel
|
||||
Comment[ar]=ثبت البرمجيات المختارة على النظام
|
||||
Comment[as]=চিস্টেমত নিৰ্বাচিত চফ্টৱেৰ ইনস্টল কৰক
|
||||
Comment[ast]=Instalar el software escoyíu nel sistema
|
||||
Comment[be]=Усталяваць вылучанае апраграмаванне ў сістэму
|
||||
Comment[bg]=Инсталиране на избрания софтуер на системата
|
||||
Comment[bn]=সিস্টেমের মধ্যে নির্বাচিত সফ্টওয়্যার ইনস্টল
|
||||
Comment[bn_IN]=সিস্টেমের মধ্যে নির্বাচিত সফ্টওয়্যার ইনস্টল করুন
|
||||
Comment[ca]=Instal·la el programari seleccionat en el sistema
|
||||
Comment[ca@valencia]=Instal·la el programari seleccionat en el sistema
|
||||
Comment[cs]=Instalovat vybraný software do tohoto systému
|
||||
Comment[da]=Installér valgt software på systemet
|
||||
Comment[de]=Ausgewählte Software auf dem System installieren
|
||||
Comment[el]=Εγκατάσταση του επιλεγμένου λογισμικού στο σύστημα
|
||||
Comment[en@shaw]=𐑦𐑯𐑕𐑑𐑷𐑤 𐑕𐑩𐑤𐑧𐑒𐑑𐑩𐑛 𐑕𐑪𐑓𐑑𐑢𐑺 𐑪𐑯 𐑞 𐑕𐑦𐑕𐑑𐑩𐑥
|
||||
Comment[en_GB]=Install selected software on the system
|
||||
Comment[eo]=Instali elektitan programaron sur the sistemo
|
||||
Comment[es]=Instalar el software seleccionado en el sistema
|
||||
Comment[et]=Valitud tarkvara paigaldamine arvutisse
|
||||
Comment[eu]=Instalatu hautatutako softwarea sisteman
|
||||
Comment[fa]=نصب نرمافزار انتخاب شده بر روی سیستم
|
||||
Comment[fi]=Asenna valitut ohjelmistot järjestelmään
|
||||
Comment[fr]=Installer le logiciel sélectionné sur le système
|
||||
Comment[gl]=Instalar o programa seleccionado no sistema
|
||||
Comment[gu]=સિસ્ટમ પર પસંદ થયેલ સોફ્ટવેરને સ્થાપિત કરો
|
||||
Comment[he]=התקנת התוכנות הנבחרות על המערכת
|
||||
Comment[hi]=सिस्टम पर चयनित सॉफ्टवेयर संस्थापित करें
|
||||
Comment[hu]=A kijelölt szoftverek telepítése a rendszerre
|
||||
Comment[id]=Pasang perangkat lunak yang dipilih pada sistem
|
||||
Comment[it]=Installa il software selezionato sul sistema
|
||||
Comment[ja]=選択されたソフトウェアをシステムにインストールします
|
||||
Comment[kn]=ಆರಿಸಲಾದ ತಂತ್ರಾಂಶವನ್ನು ಗಣಕದಲ್ಲಿ ಅನುಸ್ಥಾಪಿಸು
|
||||
Comment[ko]=선택한 소프트웨어를 시스템에 설치합니다
|
||||
Comment[lt]=Įdiegti pasirinktą programinę įrangą sistemoje
|
||||
Comment[lv]=Instalēt izvēlēto programmatūru sistēmā
|
||||
Comment[mk]=Инсталирај го избраниот софтвер на системот
|
||||
Comment[ml]=തെരഞ്ഞെടുത്ത സോഫ്റ്റ്വെയറുകള് സിസ്റ്റമില് ഇന്സ്റ്റോള് ചെയ്യുക
|
||||
Comment[mr]=नीवडलेले सॉफ्टवेअर प्रणालीवर प्रतिष्ठापीत करा
|
||||
Comment[nb]=Installer valgt programvare på systemet
|
||||
Comment[nl]=Geselecteerde software op het systeem installeren
|
||||
Comment[nn]=Installer vald programvare på systemet
|
||||
Comment[or]=ତନ୍ତ୍ରରେ ବଚ୍ଛିତ ସଫ୍ଟୱେର ସ୍ଥାପନ କରନ୍ତୁ
|
||||
Comment[pa]=ਚੁਣੇ ਸਾਫਟਵੇਅਰ ਸਿਸਟਮ ਉੱਤੇ ਇੰਸਟਾਲ ਕਰੋ
|
||||
Comment[pl]=Instalacja wybranego oprogramowania w systemie
|
||||
Comment[pt]=Instalar software seleccionado no sistema
|
||||
Comment[pt_BR]=Instale o programa selecionado no sistema
|
||||
Comment[ro]=Instalează pachetele selectate pe sistem
|
||||
Comment[ru]=Установить в систему выбранные программы
|
||||
Comment[sk]=Nainštalovať na systéme zvolený softvér
|
||||
Comment[sl]=Namestitev izbrane programske opreme v sistem
|
||||
Comment[sr]=Инсталирајте изабране програме на систем
|
||||
Comment[sr@latin]=Instalirajte izabrane programe na sistem
|
||||
Comment[sv]=Installera markerad programvara på systemet
|
||||
Comment[ta]=தேர்ந்தெடுக்கப்பட்ட மென்பொருளை கணினியில் நிறுவவும்
|
||||
Comment[te]=ఎంచుకున్న సాఫ్ట్వేర్ను వ్యవస్థ నందు స్థాపించు
|
||||
Comment[th]=ติดตั้งซอฟต์แวร์ที่เลือกไว้ลงในระบบ
|
||||
Comment[tr]=Seçili yazılımı sisteme kur
|
||||
Comment[ug]=تاللانغان يۇمشاق دېتالنى سىستېمىغا ئورنات
|
||||
Comment[uk]=Встановити у систему вибрані програми
|
||||
Comment[vi]=Cài đặt phần mềm đã chọn vào hệ thống
|
||||
Comment[zh_CN]=在系统中安装选定的软件
|
||||
Comment[zh_HK]=安裝選取的軟件到系統中
|
||||
Comment[zh_TW]=安裝選取的軟體到系統中
|
||||
Categories=System;
|
||||
Exec=pamac-install %F
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Icon=system-software-install
|
||||
StartupNotify=true
|
||||
NoDisplay=true
|
||||
MimeType=application/x-xz-compressed-tar;
|
@ -137,4 +137,3 @@ Type=Application
|
||||
Categories=GNOME;GTK;System;
|
||||
#NotShowIn=KDE;
|
||||
StartupNotify=true
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
[Desktop Entry]
|
||||
Name=Pamac Tray Icon
|
||||
Name=Update Notifier
|
||||
Icon=update-notifier
|
||||
Exec=pamac-tray
|
||||
Terminal=false
|
||||
|
@ -133,4 +133,3 @@ Type=Application
|
||||
Categories=GNOME;GTK;System;
|
||||
#NotShowIn=KDE
|
||||
StartupNotify=true
|
||||
|
||||
|
@ -97,6 +97,22 @@ class PamacDBusService(dbus.service.Object):
|
||||
formatted_event = 'Upgraded {pkgname} ({oldversion} -> {newversion})'.format(pkgname = tupel[1].name, oldversion = tupel[1].version, newversion = tupel[0].version)
|
||||
common.write_log_file(formatted_event)
|
||||
print(formatted_event)
|
||||
elif ID is 15:
|
||||
self.action = _('Downgrading')+'...'
|
||||
self.icon = '/usr/share/pamac/icons/24x24/status/rollback.png'
|
||||
print('Downgrading a package')
|
||||
elif ID is 16:
|
||||
#formatted_event = 'Downgraded {pkgname} ({oldversion} -> {newversion})'.format(pkgname = tupel[1].name, oldversion = tupel[1].version, newversion = tupel[0].version)
|
||||
#common.write_log_file(formatted_event)
|
||||
#print(formatted_event)
|
||||
elif ID is 17:
|
||||
self.action = _('Reinstalling')+'...'
|
||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-add.png'
|
||||
print('Reinstalling a package')
|
||||
#elif ID is 18:
|
||||
#formatted_event = 'Reinstalled {pkgname} ({pkgversion})'.format(pkgname = tupel[0].name, pkgversion = tupel[0].version)
|
||||
#common.write_log_file(formatted_event)
|
||||
#print(formatted_event)
|
||||
elif ID is 19:
|
||||
self.action = _('Checking integrity')+'...'
|
||||
self.icon = '/usr/share/pamac/icons/24x24/status/package-search.png'
|
||||
@ -326,6 +342,19 @@ class PamacDBusService(dbus.service.Object):
|
||||
finally:
|
||||
return self.error
|
||||
|
||||
@dbus.service.method('org.manjaro.pamac', 's', 's')
|
||||
def Load(self, tarball_path):
|
||||
self.error = ''
|
||||
try:
|
||||
pkg = self.handle.load_pkg(tarball_path)
|
||||
if pkg:
|
||||
self.t.add_pkg(pkg)
|
||||
print(pkg)
|
||||
except pyalpm.error as e:
|
||||
self.error += ' --> '+str(e)+'\n'
|
||||
finally:
|
||||
return self.error
|
||||
|
||||
@dbus.service.method('org.manjaro.pamac', '', 's')
|
||||
def Prepare(self):
|
||||
self.error = ''
|
||||
|
131
pamac-install.py
131
pamac-install.py
@ -6,50 +6,86 @@ from sys import argv
|
||||
import dbus
|
||||
from pamac import common, transaction, main
|
||||
|
||||
def error(error):
|
||||
# i18n
|
||||
import gettext
|
||||
import locale
|
||||
locale.bindtextdomain('pamac', '/usr/share/locale')
|
||||
gettext.bindtextdomain('pamac', '/usr/share/locale')
|
||||
gettext.textdomain('pamac')
|
||||
_ = gettext.gettext
|
||||
|
||||
def exiting(msg):
|
||||
transaction.StopDaemon()
|
||||
common.rm_pid_file()
|
||||
print('exiting')
|
||||
loop.quit()
|
||||
|
||||
def reply(reply):
|
||||
transaction.StopDaemon()
|
||||
common.rm_pid_file()
|
||||
print('exiting')
|
||||
loop.quit()
|
||||
|
||||
def install(pkgnames):
|
||||
transaction.to_add = []
|
||||
transaction.to_remove = []
|
||||
pkg_to_install = []
|
||||
for pkgname in pkgnames:
|
||||
if not pkgname in transaction.localpkgs.keys():
|
||||
transaction.to_add.append(pkgname)
|
||||
pkg_to_install.append(transaction.syncpkgs[pkgname])
|
||||
main.check_conflicts('normal', pkg_to_install)
|
||||
if transaction.to_add:
|
||||
if transaction.init_transaction(noconflicts = True, needed =True):
|
||||
for pkgname in transaction.to_add:
|
||||
transaction.Add(pkgname)
|
||||
for pkgname in transaction.to_remove:
|
||||
transaction.Remove(pkgname)
|
||||
_error = transaction.Prepare()
|
||||
if _error:
|
||||
main.handle_error(_error)
|
||||
error(_error)
|
||||
else:
|
||||
main.finalize()
|
||||
loop.run()
|
||||
else:
|
||||
main.WarningDialog.format_secondary_text('Nothing to do')
|
||||
response = main.WarningDialog.run()
|
||||
if response:
|
||||
main.WarningDialog.hide()
|
||||
reply('')
|
||||
|
||||
bus = dbus.SystemBus()
|
||||
bus.add_signal_receiver(reply, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionDone")
|
||||
bus.add_signal_receiver(error, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionError")
|
||||
bus.add_signal_receiver(exiting, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionDone")
|
||||
bus.add_signal_receiver(exiting, dbus_interface = "org.manjaro.pamac", signal_name = "EmitTransactionError")
|
||||
|
||||
def new_on_TransCancelButton_clicked(self, *arg):
|
||||
main.ProgressWindow.hide()
|
||||
main.ConfDialog.hide()
|
||||
transaction.Release()
|
||||
exiting('')
|
||||
|
||||
def new_on_TransValidButton_clicked(self, *arg):
|
||||
main.ConfDialog.hide()
|
||||
main.finalize()
|
||||
|
||||
main.Handler.on_TransCancelButton_clicked = new_on_TransCancelButton_clicked
|
||||
main.Handler.on_TransValidButton_clicked = new_on_TransValidButton_clicked
|
||||
main.interface.connect_signals(main.Handler())
|
||||
|
||||
def get_pkgs(pkgs):
|
||||
get_error = ''
|
||||
for pkg in pkgs:
|
||||
if '.pkg.tar.' in pkg:
|
||||
transaction.to_load.add(pkg)
|
||||
elif pkg in transaction.syncpkgs.keys():
|
||||
transaction.to_add.add(pkg)
|
||||
else:
|
||||
if get_error:
|
||||
get_error += '\n'
|
||||
get_error += _('{pkgname} is not a valid path or package name').format(pkgname = pkg)
|
||||
if get_error:
|
||||
main.handle_error(get_error)
|
||||
exiting(get_error)
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def install(pkgs):
|
||||
if get_pkgs(pkgs):
|
||||
main.check_conflicts()
|
||||
if transaction.to_add | transaction.to_load:
|
||||
if transaction.init_transaction(noconflicts = True):
|
||||
for pkgname in transaction.to_add:
|
||||
transaction.Add(pkgname)
|
||||
for pkg_path in transaction.to_load:
|
||||
transaction.Load(pkg_path)
|
||||
for pkgname in transaction.to_remove:
|
||||
transaction.Remove(pkgname)
|
||||
_error = transaction.Prepare()
|
||||
if _error:
|
||||
main.handle_error(_error)
|
||||
exiting(_error)
|
||||
else:
|
||||
transaction.get_to_remove()
|
||||
transaction.get_to_add()
|
||||
do_syncfirst, updates = transaction.get_updates()
|
||||
transaction.to_update = set([pkg.name for pkg in updates])
|
||||
transaction.to_add -= transaction.to_update
|
||||
main.set_transaction_sum()
|
||||
main.ConfDialog.show_all()
|
||||
loop.run()
|
||||
else:
|
||||
main.WarningDialog.format_secondary_text(_('Nothing to do'))
|
||||
response = main.WarningDialog.run()
|
||||
if response:
|
||||
main.WarningDialog.hide()
|
||||
exiting('')
|
||||
|
||||
loop = GObject.MainLoop()
|
||||
|
||||
@ -58,18 +94,17 @@ transaction.update_db()
|
||||
do_syncfirst, updates = transaction.get_updates()
|
||||
|
||||
if common.pid_file_exists():
|
||||
main.ErrorDialog.format_secondary_text('Another instance of Pamac is running')
|
||||
main.ErrorDialog.format_secondary_text(_('Pamac is already running'))
|
||||
response = main.ErrorDialog.run()
|
||||
if response:
|
||||
main.ErrorDialog.hide()
|
||||
transaction.StopDaemon()
|
||||
elif updates:
|
||||
main.ErrorDialog.format_secondary_text('Some updates are available.\nPlease update your system first')
|
||||
response = main.ErrorDialog.run()
|
||||
if response:
|
||||
main.ErrorDialog.hide()
|
||||
transaction.StopDaemon()
|
||||
#~ elif updates:
|
||||
#~ main.ErrorDialog.format_secondary_text(_('Some updates are available.\nPlease update your system first'))
|
||||
#~ response = main.ErrorDialog.run()
|
||||
#~ if response:
|
||||
#~ main.ErrorDialog.hide()
|
||||
#~ transaction.StopDaemon()
|
||||
else:
|
||||
common.write_pid_file()
|
||||
pkgname_to_install = argv[1:]
|
||||
install(pkgname_to_install)
|
||||
pkgs_to_install = argv[1:]
|
||||
install(pkgs_to_install)
|
||||
|
@ -72,7 +72,7 @@ update_bottom_label = interface.get_object('update_bottom_label')
|
||||
def action_signal_handler(action):
|
||||
if action:
|
||||
progress_label.set_text(action)
|
||||
if (_('Installing') in action) or (_('Removing') in action) or (_('Upgrading') in action) or (_('Configuring') in action):
|
||||
if (_('Installing') in action) or (_('Reinstalling') in action) or (_('Downgrading') in action) or (_('Removing') in action) or (_('Upgrading') in action) or (_('Configuring') in action):
|
||||
ProgressCancelButton.set_visible(False)
|
||||
else:
|
||||
ProgressCancelButton.set_visible(True)
|
||||
@ -343,7 +343,8 @@ def set_transaction_sum():
|
||||
if transaction.to_add or transaction.to_update:
|
||||
dsize = 0
|
||||
for name in transaction.to_add | transaction.to_update:
|
||||
dsize += transaction.syncpkgs[name].download_size
|
||||
if name in transaction.syncpkgs.keys():
|
||||
dsize += transaction.syncpkgs[name].download_size
|
||||
sum_bottom_label.set_markup(_('<b>Total download size: </b>')+common.format_size(dsize))
|
||||
if transaction.to_remove:
|
||||
to_remove = sorted(transaction.to_remove)
|
||||
@ -498,6 +499,11 @@ def check_conflicts():
|
||||
while Gtk.events_pending():
|
||||
Gtk.main_iteration()
|
||||
to_check = [transaction.syncpkgs[name] for name in transaction.to_add | transaction.to_update]
|
||||
if transaction.to_load:
|
||||
for path in transaction.to_load:
|
||||
pkg = transaction.handle.load_pkg(path)
|
||||
if pkg:
|
||||
to_check.append(pkg)
|
||||
already_checked = set(pkg.name for pkg in to_check)
|
||||
depends = [to_check]
|
||||
warning = ''
|
||||
@ -798,6 +804,8 @@ def check_conflicts():
|
||||
ManagerWindow.get_root_window().set_cursor(Gdk.Cursor(Gdk.CursorType.ARROW))
|
||||
print('check result:')
|
||||
print(' to add:', transaction.to_add if transaction.to_add else 'None')
|
||||
if transaction.to_load:
|
||||
print(' to load:', transaction.to_load)
|
||||
print(' will not be removed:', transaction.to_remove & wont_be_removed if transaction.to_remove & wont_be_removed else 'None')
|
||||
transaction.to_remove -= wont_be_removed
|
||||
print(' to remove:', transaction.to_remove if transaction.to_remove else 'None')
|
||||
@ -859,7 +867,8 @@ class Handler:
|
||||
else:
|
||||
transaction.get_to_remove()
|
||||
transaction.get_to_add()
|
||||
transaction.to_update = transaction.to_add & set(transaction.localpkgs.keys())
|
||||
do_syncfirst, updates = transaction.get_updates()
|
||||
transaction.to_update = set([pkg.name for pkg in updates])
|
||||
transaction.to_add -= transaction.to_update
|
||||
set_transaction_sum()
|
||||
ConfDialog.show_all()
|
||||
|
@ -10,6 +10,7 @@ from pamac import config, common
|
||||
|
||||
to_remove = set()
|
||||
to_add = set()
|
||||
to_load = set()
|
||||
to_update = set()
|
||||
to_provide = set()
|
||||
handle = None
|
||||
@ -43,6 +44,7 @@ Init = proxy.get_dbus_method('Init','org.manjaro.pamac')
|
||||
Sysupgrade = proxy.get_dbus_method('Sysupgrade','org.manjaro.pamac')
|
||||
Remove = proxy.get_dbus_method('Remove','org.manjaro.pamac')
|
||||
Add = proxy.get_dbus_method('Add','org.manjaro.pamac')
|
||||
Load = proxy.get_dbus_method('Load','org.manjaro.pamac')
|
||||
Prepare = proxy.get_dbus_method('Prepare','org.manjaro.pamac')
|
||||
To_Remove = proxy.get_dbus_method('To_Remove','org.manjaro.pamac')
|
||||
To_Add = proxy.get_dbus_method('To_Add','org.manjaro.pamac')
|
||||
|
Loading…
Reference in New Issue
Block a user