This commit is contained in:
guinux
2017-07-29 16:35:04 +02:00
parent b64b603e82
commit d661c573f9
36 changed files with 1979 additions and 2527 deletions

View File

@@ -17,22 +17,11 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
const string VERSION = "4.3.7";
namespace Pamac {
[DBus (name = "org.manjaro.pamac")]
interface Daemon : Object {
public abstract void set_environment_variables (HashTable<string,string> variables) throws IOError;
public abstract ErrorInfos get_current_error () throws IOError;
public abstract void start_get_authorization () throws IOError;
public abstract void start_write_pamac_config (HashTable<string,Variant> new_pamac_conf) throws IOError;
public abstract void start_write_alpm_config (HashTable<string,Variant> new_alpm_conf) throws IOError;
public abstract void start_write_mirrors_config (HashTable<string,Variant> new_mirrors_conf) throws IOError;
public abstract void start_generate_mirrors_list () throws IOError;
public abstract void clean_cache (uint keep_nb, bool only_uninstalled) throws IOError;
public abstract void start_set_pkgreason (string pkgname, uint reason) throws IOError;
[DBus (name = "org.manjaro.pamac.user")]
interface UserDaemon : Object {
public abstract void refresh_handle () throws IOError;
public abstract AlpmPackage get_installed_pkg (string pkgname) throws IOError;
public abstract void start_refresh (bool force) throws IOError;
public abstract bool get_checkspace () throws IOError;
public abstract string[] get_ignorepkgs () throws IOError;
public abstract bool should_hold (string pkgname) throws IOError;
@@ -56,16 +45,36 @@ namespace Pamac {
public abstract async AURPackageDetails get_aur_details (string pkgname) throws IOError;
public abstract string[] get_pkg_uninstalled_optdeps (string pkgname) throws IOError;
public abstract void start_get_updates (bool check_aur_updates) throws IOError;
[DBus (no_reply = true)]
public abstract void quit () throws IOError;
public signal void get_updates_finished (Updates updates);
}
[DBus (name = "org.manjaro.pamac.system")]
interface SystemDaemon : Object {
public abstract void set_environment_variables (HashTable<string,string> variables) throws IOError;
public abstract string[] get_mirrors_countries () throws IOError;
public abstract ErrorInfos get_current_error () throws IOError;
public abstract bool get_lock () throws IOError;
public abstract bool unlock () throws IOError;
public abstract void start_get_authorization () throws IOError;
public abstract void start_write_pamac_config (HashTable<string,Variant> new_pamac_conf) throws IOError;
public abstract void start_write_alpm_config (HashTable<string,Variant> new_alpm_conf) throws IOError;
public abstract void start_write_mirrors_config (HashTable<string,Variant> new_mirrors_conf) throws IOError;
public abstract void start_generate_mirrors_list () throws IOError;
public abstract void clean_cache (uint keep_nb, bool only_uninstalled) throws IOError;
public abstract void start_set_pkgreason (string pkgname, uint reason) throws IOError;
public abstract void start_refresh (bool force) throws IOError;
public abstract void start_sysupgrade_prepare (bool enable_downgrade, string[] temporary_ignorepkgs) throws IOError;
public abstract void start_trans_prepare (int transflags, string[] to_install, string[] to_remove, string[] to_load, string[] to_build) throws IOError;
public abstract void choose_provider (int provider) throws IOError;
public abstract TransactionSummary get_transaction_summary () throws IOError;
public abstract void start_trans_commit () throws IOError;
public abstract void trans_release () throws IOError;
[DBus (no_reply = true)]
public abstract void trans_cancel () throws IOError;
public abstract void start_get_updates (bool check_aur_updates) throws IOError;
[DBus (no_reply = true)]
public abstract void quit () throws IOError;
public signal void get_updates_finished (Updates updates);
public signal void emit_event (uint primary_event, uint secondary_event, string[] details);
public signal void emit_providers (string depend, string[] providers);
public signal void emit_progress (uint progress, string pkgname, uint percent, uint n_targets, uint current_target);
@@ -74,7 +83,6 @@ namespace Pamac {
public signal void emit_log (uint level, string msg);
public signal void set_pkgreason_finished ();
public signal void refresh_finished (bool success);
public signal void get_updates_finished (Updates updates);
public signal void trans_prepare_finished (bool success);
public signal void trans_commit_finished (bool success);
public signal void get_authorization_finished (bool authorized);
@@ -86,11 +94,6 @@ namespace Pamac {
public signal void generate_mirrors_list_finished ();
}
public enum Mode {
MANAGER,
UPDATER
}
public class Transaction: Object {
enum Type {
@@ -99,7 +102,8 @@ namespace Pamac {
BUILD = (1 << 2)
}
Daemon daemon;
UserDaemon user_daemon;
SystemDaemon system_daemon;
Pamac.Config pamac_config;
public bool check_aur_updates { get { return pamac_config.check_aur_updates; } }
@@ -117,6 +121,7 @@ namespace Pamac {
public GenericSet<string?> to_remove;
public GenericSet<string?> to_load;
public GenericSet<string?> to_build;
public GenericSet<string?> to_update;
Queue<string> to_build_queue;
string[] aur_pkgs_to_install;
GenericSet<string?> previous_to_install;
@@ -124,8 +129,6 @@ namespace Pamac {
public GenericSet<string?> transaction_summary;
public GenericSet<string?> temporary_ignorepkgs;
public Mode mode { get; set; }
uint64 total_download;
uint64 already_downloaded;
string previous_textbar;
@@ -154,22 +157,20 @@ namespace Pamac {
//parent window
public Gtk.ApplicationWindow? application_window { get; private set; }
public signal void start_waiting ();
public signal void stop_waiting ();
public signal void start_downloading ();
public signal void stop_downloading ();
public signal void start_building ();
public signal void stop_building ();
public signal void important_details_outpout (bool must_show);
public signal void alpm_handle_refreshed ();
public signal void finished (bool success);
public signal void set_pkgreason_finished ();
public signal void get_updates_finished (Updates updates);
public signal void write_pamac_config_finished (bool recurse, uint64 refresh_period, bool no_update_hide_icon,
bool enable_aur, bool search_aur, bool check_aur_updates);
public signal void write_alpm_config_finished (bool checkspace);
public signal void write_mirrors_config_finished (string choosen_country, string choosen_generation_method);
public signal void generate_mirrors_list ();
public signal void run_preferences_dialog_finished ();
public signal void get_updates_finished (Updates updates);
public Transaction (Gtk.ApplicationWindow? application_window) {
pamac_config = new Pamac.Config ("/etc/pamac.conf");
@@ -177,17 +178,17 @@ namespace Pamac {
if (pamac_config.recurse) {
flags |= (1 << 5); //Alpm.TransFlag.RECURSE
}
to_install = new GenericSet<string?> (str_hash, str_equal);
to_remove = new GenericSet<string?> (str_hash, str_equal);
to_load = new GenericSet<string?> (str_hash, str_equal);
to_build = new GenericSet<string?> (str_hash, str_equal);
to_update = new GenericSet<string?> (str_hash, str_equal);
to_build_queue = new Queue<string> ();
previous_to_install = new GenericSet<string?> (str_hash, str_equal);
previous_to_remove = new GenericSet<string?> (str_hash, str_equal);
transaction_summary = new GenericSet<string?> (str_hash, str_equal);
temporary_ignorepkgs = new GenericSet<string?> (str_hash, str_equal);
connecting_dbus_signals ();
connecting_user_daemon ();
//creating dialogs
this.application_window = application_window;
transaction_sum_dialog = new TransactionSumDialog (application_window);
@@ -230,39 +231,7 @@ namespace Pamac {
warning_textbuffer = new StringBuilder ();
}
public void run_history_dialog () {
var file = GLib.File.new_for_path ("/var/log/pacman.log");
if (!file.query_exists ()) {
GLib.stderr.printf ("File '%s' doesn't exist.\n", file.get_path ());
} else {
StringBuilder text = new StringBuilder ();
try {
// Open file for reading and wrap returned FileInputStream into a
// DataInputStream, so we can read line by line
var dis = new DataInputStream (file.read ());
string line;
// Read lines until end of file (null) is reached
while ((line = dis.read_line ()) != null) {
// construct text in reverse order
text.prepend (line + "\n");
}
} catch (GLib.Error e) {
GLib.stderr.printf ("%s\n", e.message);
}
var history_dialog = new HistoryDialog (application_window);
history_dialog.textview.buffer.set_text (text.str, (int) text.len);
history_dialog.show ();
history_dialog.response.connect (() => {
history_dialog.destroy ();
});
while (Gtk.events_pending ()) {
Gtk.main_iteration ();
}
}
}
public async void run_preferences_dialog () {
SourceFunc callback = run_preferences_dialog.callback;
public void run_preferences_dialog () {
check_authorization.begin ((obj, res) => {
bool authorized = check_authorization.end (res);
if (authorized) {
@@ -273,73 +242,95 @@ namespace Pamac {
Gtk.main_iteration ();
}
}
Idle.add ((owned) callback);
run_preferences_dialog_finished ();
});
yield;
}
public void run_about_dialog () {
string[] authors = {"Guillaume Benoit"};
Gtk.show_about_dialog (
application_window,
"program_name", "Pamac",
"icon_name", "system-software-install",
"logo_icon_name", "system-software-install",
"comments", dgettext (null, "A Gtk3 frontend for libalpm"),
"copyright", "Copyright © 2017 Guillaume Benoit",
"authors", authors,
"version", VERSION,
"license_type", Gtk.License.GPL_3_0,
"website", "http://github.com/manjaro/pamac");
}
public ErrorInfos get_current_error () {
try {
return daemon.get_current_error ();
return system_daemon.get_current_error ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
return ErrorInfos ();
}
}
public string[] get_mirrors_countries () {
string[] countries = {};
connecting_system_daemon ();
try {
countries = system_daemon.get_mirrors_countries ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
return countries;
}
public bool get_lock () {
bool locked = false;
connecting_system_daemon ();
try {
locked = system_daemon.get_lock ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
return locked;
}
public bool unlock () {
bool unlocked = false;
try {
unlocked = system_daemon.unlock ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
return unlocked;
}
async bool check_authorization () {
SourceFunc callback = check_authorization.callback;
bool authorized = false;
ulong handler_id = daemon.get_authorization_finished.connect ((authorized_) => {
ulong handler_id = system_daemon.get_authorization_finished.connect ((authorized_) => {
authorized = authorized_;
Idle.add ((owned) callback);
});
try {
daemon.start_get_authorization ();
system_daemon.start_get_authorization ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
yield;
daemon.disconnect (handler_id);
system_daemon.disconnect (handler_id);
return authorized;
}
public void start_write_pamac_config (HashTable<string,Variant> new_pamac_conf) {
try {
daemon.start_write_pamac_config (new_pamac_conf);
system_daemon.write_pamac_config_finished.connect (on_write_pamac_config_finished);
system_daemon.start_write_pamac_config (new_pamac_conf);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
system_daemon.write_pamac_config_finished.disconnect (on_write_pamac_config_finished);
}
}
public void start_write_alpm_config (HashTable<string,Variant> new_alpm_conf) {
try {
daemon.start_write_alpm_config (new_alpm_conf);
system_daemon.write_alpm_config_finished.connect (on_write_alpm_config_finished);
system_daemon.start_write_alpm_config (new_alpm_conf);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
system_daemon.write_alpm_config_finished.disconnect (on_write_alpm_config_finished);
}
}
public void start_write_mirrors_config (HashTable<string,Variant> new_mirrors_conf) {
try {
daemon.start_write_mirrors_config (new_mirrors_conf);
system_daemon.write_mirrors_config_finished.connect (on_write_mirrors_config_finished);
system_daemon.start_write_mirrors_config (new_mirrors_conf);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
system_daemon.write_mirrors_config_finished.disconnect (on_write_mirrors_config_finished);
}
}
@@ -415,12 +406,12 @@ namespace Pamac {
progress_box.progressbar.text = "";
}
void start_progressbar_pulse () {
public void start_progressbar_pulse () {
stop_progressbar_pulse ();
pulse_timeout_id = Timeout.add (500, (GLib.SourceFunc) progress_box.progressbar.pulse);
}
void stop_progressbar_pulse () {
public void stop_progressbar_pulse () {
if (pulse_timeout_id != 0) {
Source.remove (pulse_timeout_id);
pulse_timeout_id = 0;
@@ -435,16 +426,20 @@ namespace Pamac {
important_details_outpout (false);
generate_mirrors_list ();
try {
daemon.start_generate_mirrors_list ();
system_daemon.generate_mirrors_list_data.connect (on_generate_mirrors_list_data);
system_daemon.generate_mirrors_list_finished.connect (on_generate_mirrors_list_finished);
system_daemon.start_generate_mirrors_list ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
stop_progressbar_pulse ();
system_daemon.generate_mirrors_list_data.disconnect (on_generate_mirrors_list_data);
system_daemon.generate_mirrors_list_finished.disconnect (on_generate_mirrors_list_finished);
}
}
public void clean_cache (uint keep_nb, bool only_uninstalled) {
try {
daemon.clean_cache (keep_nb, only_uninstalled);
system_daemon.clean_cache (keep_nb, only_uninstalled);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -452,30 +447,42 @@ namespace Pamac {
public void start_set_pkgreason (string pkgname, uint reason) {
try {
daemon.start_set_pkgreason (pkgname, reason);
system_daemon.set_pkgreason_finished.connect (on_set_pkgreason_finished);
system_daemon.start_set_pkgreason (pkgname, reason);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
system_daemon.set_pkgreason_finished.disconnect (on_set_pkgreason_finished);
}
}
public void start_refresh (bool force) {
string action = dgettext (null, "Synchronizing package databases") + "...";
reset_progress_box (action);
connecting_system_daemon ();
connecting_dbus_signals ();
try {
daemon.refresh_finished.connect (on_refresh_finished);
daemon.start_refresh (force);
system_daemon.refresh_finished.connect (on_refresh_finished);
system_daemon.start_refresh (force);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
daemon.refresh_finished.disconnect (on_refresh_finished);
system_daemon.refresh_finished.disconnect (on_refresh_finished);
success = false;
finish_transaction ();
}
}
public void refresh_handle () {
try {
user_daemon.refresh_handle ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
}
public bool get_checkspace () {
bool checkspace = false;
try {
checkspace = daemon.get_checkspace ();
checkspace = user_daemon.get_checkspace ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -485,7 +492,7 @@ namespace Pamac {
public string[] get_ignorepkgs () {
string[] ignorepkgs = {};
try {
ignorepkgs = daemon.get_ignorepkgs ();
ignorepkgs = user_daemon.get_ignorepkgs ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -494,7 +501,7 @@ namespace Pamac {
public AlpmPackage get_installed_pkg (string pkgname) {
try {
return daemon.get_installed_pkg (pkgname);
return user_daemon.get_installed_pkg (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
return AlpmPackage () {
@@ -508,7 +515,7 @@ namespace Pamac {
public AlpmPackage find_installed_satisfier (string depstring) {
try {
return daemon.find_installed_satisfier (depstring);
return user_daemon.find_installed_satisfier (depstring);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
return AlpmPackage () {
@@ -523,7 +530,7 @@ namespace Pamac {
public bool should_hold (string pkgname) {
bool should_hold = false;
try {
should_hold = daemon.should_hold (pkgname);
should_hold = user_daemon.should_hold (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -533,7 +540,7 @@ namespace Pamac {
public uint get_pkg_reason (string pkgname) {
uint reason = 0;
try {
reason = daemon.get_pkg_reason (pkgname);
reason = user_daemon.get_pkg_reason (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -543,7 +550,7 @@ namespace Pamac {
public uint get_pkg_origin (string pkgname) {
uint origin = 0;
try {
origin = daemon.get_pkg_origin (pkgname);
origin = user_daemon.get_pkg_origin (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -553,7 +560,7 @@ namespace Pamac {
public async AlpmPackage[] get_installed_pkgs () {
AlpmPackage[] pkgs = {};
try {
pkgs = yield daemon.get_installed_pkgs ();
pkgs = yield user_daemon.get_installed_pkgs ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -563,7 +570,7 @@ namespace Pamac {
public async AlpmPackage[] get_explicitly_installed_pkgs () {
AlpmPackage[] pkgs = {};
try {
pkgs = yield daemon.get_explicitly_installed_pkgs ();
pkgs = yield user_daemon.get_explicitly_installed_pkgs ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -573,7 +580,7 @@ namespace Pamac {
public async AlpmPackage[] get_foreign_pkgs () {
AlpmPackage[] pkgs = {};
try {
pkgs = yield daemon.get_foreign_pkgs ();
pkgs = yield user_daemon.get_foreign_pkgs ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -583,7 +590,7 @@ namespace Pamac {
public async AlpmPackage[] get_orphans () {
AlpmPackage[] pkgs = {};
try {
pkgs = yield daemon.get_orphans ();
pkgs = yield user_daemon.get_orphans ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -592,7 +599,7 @@ namespace Pamac {
public AlpmPackage get_sync_pkg (string pkgname) {
try {
return daemon.get_sync_pkg (pkgname);
return user_daemon.get_sync_pkg (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
return AlpmPackage () {
@@ -606,7 +613,7 @@ namespace Pamac {
public AlpmPackage find_sync_satisfier (string depstring) {
try {
return daemon.find_sync_satisfier (depstring);
return user_daemon.find_sync_satisfier (depstring);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
return AlpmPackage () {
@@ -621,7 +628,7 @@ namespace Pamac {
public async AlpmPackage[] search_pkgs (string search_string) {
AlpmPackage[] pkgs = {};
try {
pkgs = yield daemon.search_pkgs (search_string);
pkgs = yield user_daemon.search_pkgs (search_string);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -631,7 +638,7 @@ namespace Pamac {
public async AURPackage[] search_in_aur (string search_string) {
AURPackage[] pkgs = {};
try {
pkgs = yield daemon.search_in_aur (search_string);
pkgs = yield user_daemon.search_in_aur (search_string);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -641,7 +648,7 @@ namespace Pamac {
public string[] get_repos_names () {
string[] repos_names = {};
try {
repos_names = daemon.get_repos_names ();
repos_names = user_daemon.get_repos_names ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -651,7 +658,7 @@ namespace Pamac {
public async AlpmPackage[] get_repo_pkgs (string repo) {
AlpmPackage[] pkgs = {};
try {
pkgs = yield daemon.get_repo_pkgs (repo);
pkgs = yield user_daemon.get_repo_pkgs (repo);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -661,7 +668,7 @@ namespace Pamac {
public string[] get_groups_names () {
string[] groups_names = {};
try {
groups_names = daemon.get_groups_names ();
groups_names = user_daemon.get_groups_names ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -671,7 +678,7 @@ namespace Pamac {
public async AlpmPackage[] get_group_pkgs (string group_name) {
AlpmPackage[] pkgs = {};
try {
pkgs = yield daemon.get_group_pkgs (group_name);
pkgs = yield user_daemon.get_group_pkgs (group_name);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -681,7 +688,7 @@ namespace Pamac {
public string[] get_pkg_uninstalled_optdeps (string pkgname) {
string[] optdeps = {};
try {
optdeps = daemon.get_pkg_uninstalled_optdeps (pkgname);
optdeps = user_daemon.get_pkg_uninstalled_optdeps (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -690,7 +697,7 @@ namespace Pamac {
public AlpmPackageDetails get_pkg_details (string pkgname) {
try {
return daemon.get_pkg_details (pkgname);
return user_daemon.get_pkg_details (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
return AlpmPackageDetails () {
@@ -710,7 +717,7 @@ namespace Pamac {
public string[] get_pkg_files (string pkgname) {
try {
return daemon.get_pkg_files (pkgname);
return user_daemon.get_pkg_files (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
return {};
@@ -727,7 +734,7 @@ namespace Pamac {
maintainer = ""
};
try {
pkg = yield daemon.get_aur_details (pkgname);
pkg = yield user_daemon.get_aur_details (pkgname);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -735,9 +742,9 @@ namespace Pamac {
}
public void start_get_updates () {
daemon.get_updates_finished.connect (on_get_updates_finished);
user_daemon.get_updates_finished.connect (on_get_updates_finished);
try {
daemon.start_get_updates (pamac_config.enable_aur && pamac_config.check_aur_updates);
user_daemon.start_get_updates (pamac_config.enable_aur && pamac_config.check_aur_updates);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
success = false;
@@ -746,9 +753,9 @@ namespace Pamac {
}
void start_get_updates_for_sysupgrade () {
daemon.get_updates_finished.connect (on_get_updates_for_sysupgrade_finished);
system_daemon.get_updates_finished.connect (on_get_updates_for_sysupgrade_finished);
try {
daemon.start_get_updates (pamac_config.enable_aur && pamac_config.check_aur_updates);
system_daemon.start_get_updates (pamac_config.enable_aur && pamac_config.check_aur_updates);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
success = false;
@@ -762,9 +769,11 @@ namespace Pamac {
foreach (unowned string pkgname in temporary_ignorepkgs) {
temporary_ignorepkgs_ += pkgname;
}
connecting_system_daemon ();
connecting_dbus_signals ();
try {
// this will respond with trans_prepare_finished signal
daemon.start_sysupgrade_prepare (enable_downgrade, temporary_ignorepkgs_);
system_daemon.start_sysupgrade_prepare (enable_downgrade, temporary_ignorepkgs_);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
success = false;
@@ -780,19 +789,18 @@ namespace Pamac {
}
void on_get_updates_finished (Updates updates) {
daemon.get_updates_finished.disconnect (on_get_updates_finished);
user_daemon.get_updates_finished.disconnect (on_get_updates_finished);
get_updates_finished (updates);
}
void on_get_updates_for_sysupgrade_finished (Updates updates) {
daemon.get_updates_finished.disconnect (on_get_updates_for_sysupgrade_finished);
system_daemon.get_updates_finished.disconnect (on_get_updates_for_sysupgrade_finished);
// get syncfirst updates
if (updates.is_syncfirst) {
clear_lists ();
if (mode == Mode.MANAGER) {
sysupgrade_after_trans = true;
}
foreach (unowned UpdateInfos infos in updates.repos_updates) {
sysupgrade_after_trans = true;
no_confirm_commit = true;
foreach (unowned AlpmPackage infos in updates.repos_updates) {
to_install.add (infos.name);
}
// run as a standard transaction
@@ -800,7 +808,7 @@ namespace Pamac {
} else {
if (updates.aur_updates.length != 0) {
clear_lists ();
foreach (unowned UpdateInfos infos in updates.aur_updates) {
foreach (unowned AURPackage infos in updates.aur_updates) {
if (!(infos.name in temporary_ignorepkgs)) {
to_build.add (infos.name);
}
@@ -838,7 +846,7 @@ namespace Pamac {
void start_trans_prepare (int transflags, string[] to_install, string[] to_remove, string[] to_load, string[] to_build) {
try {
daemon.start_trans_prepare (transflags, to_install, to_remove, to_load, to_build);
system_daemon.start_trans_prepare (transflags, to_install, to_remove, to_load, to_build);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
stop_progressbar_pulse ();
@@ -867,6 +875,8 @@ namespace Pamac {
foreach (unowned string name in to_build) {
to_build_ += name;
}
connecting_system_daemon ();
connecting_dbus_signals ();
start_trans_prepare (flags, to_install_, to_remove_, to_load_, to_build_);
}
@@ -896,7 +906,7 @@ namespace Pamac {
foreach (var radiobutton in list) {
if (radiobutton.active) {
try {
daemon.choose_provider (index);
system_daemon.choose_provider (index);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -917,7 +927,7 @@ namespace Pamac {
var summary = TransactionSummary ();
transaction_sum_dialog.sum_list.clear ();
try {
summary = daemon.get_transaction_summary ();
summary = system_daemon.get_transaction_summary ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -1012,20 +1022,6 @@ namespace Pamac {
}
if (summary.to_upgrade.length > 0) {
type |= Type.UPDATE;
if (mode != Mode.UPDATER) {
foreach (unowned UpdateInfos infos in summary.to_upgrade) {
dsize += infos.download_size;
transaction_summary.add (infos.name);
transaction_sum_dialog.sum_list.insert_with_values (out iter, -1,
1, infos.name,
2, infos.new_version,
3, "(%s)".printf (infos.old_version));
}
Gtk.TreePath path = transaction_sum_dialog.sum_list.get_path (iter);
int pos = (path.get_indices ()[0]) - (summary.to_upgrade.length - 1);
transaction_sum_dialog.sum_list.get_iter (out iter, new Gtk.TreePath.from_indices (pos));
transaction_sum_dialog.sum_list.set (iter, 0, "<b>%s</b>".printf (dgettext (null, "To update") + ":"));
}
}
if (dsize == 0) {
transaction_sum_dialog.top_label.visible = false;
@@ -1038,7 +1034,7 @@ namespace Pamac {
void start_commit () {
try {
daemon.start_trans_commit ();
system_daemon.start_trans_commit ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
success = false;
@@ -1120,21 +1116,19 @@ namespace Pamac {
build_cancellable.cancel ();
} else {
try {
daemon.trans_cancel ();
system_daemon.trans_cancel ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
}
show_in_term ("\n" + dgettext (null, "Transaction cancelled") + ".\n");
progress_box.action_label.label = "";
stop_progressbar_pulse ();
stop_waiting ();
warning_textbuffer = new StringBuilder ();
}
public void release () {
try {
daemon.trans_release ();
system_daemon.trans_release ();
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -1143,7 +1137,10 @@ namespace Pamac {
public void stop_daemon () {
try {
daemon.quit ();
user_daemon.quit ();
if (system_daemon != null) {
system_daemon.quit ();
}
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
@@ -1153,11 +1150,6 @@ namespace Pamac {
string? action = null;
string? detailed_action = null;
switch (primary_event) {
case 0: //special case: wait for database lock
action = dgettext (null, "Waiting for another package manager to quit") + "...";
start_progressbar_pulse ();
start_waiting ();
break;
case 1: //Alpm.Event.Type.CHECKDEPS_START
action = dgettext (null, "Checking dependencies") + "...";
break;
@@ -1399,11 +1391,8 @@ namespace Pamac {
rates_nb = 0;
fraction = 0;
timer.start ();
if (filename.has_suffix (".db")) {
string action = dgettext (null, "Refreshing %s").printf (filename.replace (".db", "")) + "...";
reset_progress_box (action);
} else if (filename.has_suffix (".files")) {
string action = dgettext (null, "Refreshing %s").printf (filename.replace (".files", "")) + "...";
if (filename.has_suffix (".db") || filename.has_suffix (".files")) {
string action = dgettext (null, "Refreshing %s").printf (filename) + "...";
reset_progress_box (action);
}
} else if (xfered == total) {
@@ -1526,7 +1515,7 @@ namespace Pamac {
}
}
void display_error (string message, string[] details) {
public void display_error (string message, string[] details) {
var flags = Gtk.DialogFlags.MODAL;
int use_header_bar;
Gtk.Settings.get_default ().get ("gtk-dialogs-use-header", out use_header_bar);
@@ -1579,6 +1568,7 @@ namespace Pamac {
}
void finish_transaction () {
disconnecting_dbus_signals ();
transaction_summary.remove_all ();
reset_progress_box ("");
finished (success);
@@ -1588,7 +1578,6 @@ namespace Pamac {
void on_refresh_finished (bool success) {
stop_progressbar_pulse ();
this.success = success;
clear_lists ();
if (success) {
finished (success);
reset_progress_box ("");
@@ -1597,7 +1586,8 @@ namespace Pamac {
handle_error (get_current_error ());
}
previous_filename = "";
daemon.refresh_finished.disconnect (on_refresh_finished);
disconnecting_dbus_signals ();
system_daemon.refresh_finished.disconnect (on_refresh_finished);
}
void on_trans_prepare_finished (bool success) {
@@ -1606,8 +1596,9 @@ namespace Pamac {
if (success) {
show_warnings ();
Type type = set_transaction_sum ();
if (no_confirm_commit || (type == Type.UPDATE && mode == Mode.UPDATER)) {
if (no_confirm_commit || type == Type.UPDATE) {
// no_confirm_commit or only updates
to_install.remove_all ();
start_commit ();
} else if (type != 0) {
if (transaction_sum_dialog.run () == Gtk.ResponseType.OK) {
@@ -1689,6 +1680,7 @@ namespace Pamac {
sysupgrade (false);
} else if (build_after_sysupgrade) {
build_after_sysupgrade = false;
disconnecting_dbus_signals ();
// build aur updates in to_build
run ();
} else {
@@ -1724,13 +1716,16 @@ namespace Pamac {
}
void on_set_pkgreason_finished () {
system_daemon.set_pkgreason_finished.disconnect (on_set_pkgreason_finished);
set_pkgreason_finished ();
}
void on_write_pamac_config_finished (bool recurse, uint64 refresh_period, bool no_update_hide_icon,
bool enable_aur, bool search_aur, bool check_aur_updates) {
system_daemon.write_pamac_config_finished.disconnect (on_write_pamac_config_finished);
pamac_config.reload ();
if (recurse) {
flags = (1 << 4); //Alpm.TransFlag.CASCADE
if (pamac_config.recurse) {
flags |= (1 << 5); //Alpm.TransFlag.RECURSE
}
write_pamac_config_finished (recurse, refresh_period, no_update_hide_icon,
@@ -1738,10 +1733,12 @@ namespace Pamac {
}
void on_write_alpm_config_finished (bool checkspace) {
system_daemon.write_alpm_config_finished.disconnect (on_write_alpm_config_finished);
write_alpm_config_finished (checkspace);
}
void on_write_mirrors_config_finished (string choosen_country, string choosen_generation_method) {
system_daemon.write_mirrors_config_finished.disconnect (on_write_mirrors_config_finished);
write_mirrors_config_finished (choosen_country, choosen_generation_method);
}
@@ -1750,35 +1747,50 @@ namespace Pamac {
}
void on_generate_mirrors_list_finished () {
system_daemon.generate_mirrors_list_data.disconnect (on_generate_mirrors_list_data);
system_daemon.generate_mirrors_list_finished.disconnect (on_generate_mirrors_list_finished);
stop_progressbar_pulse ();
show_in_term ("");
// force a dbs refresh
start_refresh (true);
}
void connecting_dbus_signals () {
void connecting_user_daemon () {
try {
daemon = Bus.get_proxy_sync (BusType.SYSTEM, "org.manjaro.pamac", "/org/manjaro/pamac");
// Set environment variables
daemon.set_environment_variables (pamac_config.environment_variables);
// Connecting to signals
daemon.emit_event.connect (on_emit_event);
daemon.emit_providers.connect (on_emit_providers);
daemon.emit_progress.connect (on_emit_progress);
daemon.emit_download.connect (on_emit_download);
daemon.emit_totaldownload.connect (on_emit_totaldownload);
daemon.emit_log.connect (on_emit_log);
daemon.trans_prepare_finished.connect (on_trans_prepare_finished);
daemon.trans_commit_finished.connect (on_trans_commit_finished);
daemon.set_pkgreason_finished.connect (on_set_pkgreason_finished);
daemon.write_mirrors_config_finished.connect (on_write_mirrors_config_finished);
daemon.write_alpm_config_finished.connect (on_write_alpm_config_finished);
daemon.write_pamac_config_finished.connect (on_write_pamac_config_finished);
daemon.generate_mirrors_list_data.connect (on_generate_mirrors_list_data);
daemon.generate_mirrors_list_finished.connect (on_generate_mirrors_list_finished);
user_daemon = Bus.get_proxy_sync (BusType.SESSION, "org.manjaro.pamac.user", "/org/manjaro/pamac/user");
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
}
void connecting_system_daemon () {
try {
system_daemon = Bus.get_proxy_sync (BusType.SYSTEM, "org.manjaro.pamac.system", "/org/manjaro/pamac/system");
// Set environment variables
system_daemon.set_environment_variables (pamac_config.environment_variables);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
}
void connecting_dbus_signals () {
system_daemon.emit_event.connect (on_emit_event);
system_daemon.emit_providers.connect (on_emit_providers);
system_daemon.emit_progress.connect (on_emit_progress);
system_daemon.emit_download.connect (on_emit_download);
system_daemon.emit_totaldownload.connect (on_emit_totaldownload);
system_daemon.emit_log.connect (on_emit_log);
system_daemon.trans_prepare_finished.connect (on_trans_prepare_finished);
system_daemon.trans_commit_finished.connect (on_trans_commit_finished);
}
void disconnecting_dbus_signals () {
system_daemon.emit_event.disconnect (on_emit_event);
system_daemon.emit_providers.disconnect (on_emit_providers);
system_daemon.emit_progress.disconnect (on_emit_progress);
system_daemon.emit_download.disconnect (on_emit_download);
system_daemon.emit_totaldownload.disconnect (on_emit_totaldownload);
system_daemon.emit_log.disconnect (on_emit_log);
system_daemon.trans_prepare_finished.disconnect (on_trans_prepare_finished);
system_daemon.trans_commit_finished.disconnect (on_trans_commit_finished);
}
}
}