From dd71fd3eccb9d63545dd00ab2e5b176295c8c632 Mon Sep 17 00:00:00 2001 From: guinux Date: Fri, 26 Feb 2016 10:37:26 +0100 Subject: [PATCH] now transaction functions are a library, see pamac.vapi --- .gitignore | 3 + Makefile | 6 + po/files_to_translate | 6 - po/pamac.pot | 27 +- resources/Makefile | 21 +- resources/pamac.manager.gresource.xml | 10 - ...ce.xml => pamac.transaction.gresource.xml} | 4 + resources/pamac.updater.gresource.xml | 10 - src/Makefile | 80 ++- src/alpm_config.vala | 108 ++-- src/alpm_utils.vala | 12 +- src/aur_model.vala | 48 +- src/choose_dep_dialog.vala | 6 +- src/choose_ignorepkgs_dialog.vala | 6 +- src/choose_provider_dialog.vala | 4 +- src/daemon.vala | 12 +- src/history_dialog.vala | 4 +- src/installer.vala | 18 +- src/manager.vala | 14 +- src/manager_window.vala | 472 +++++++++--------- src/mirrors_config.vala | 6 +- src/package.vala | 95 ---- src/packages_model.vala | 60 ++- src/pamac_config.vala | 6 +- src/preferences_dialog.vala | 73 ++- src/progress_dialog.vala | 6 +- src/refresh.vala | 6 +- src/transaction.vala | 153 ++++-- src/transaction_info_dialog.vala | 8 +- src/transaction_sum_dialog.vala | 6 +- src/tray.vala | 10 +- src/updater.vala | 20 +- src/updater_window.vala | 82 ++- 33 files changed, 698 insertions(+), 704 deletions(-) rename resources/{pamac.installer.gresource.xml => pamac.transaction.gresource.xml} (66%) delete mode 100644 src/package.vala diff --git a/.gitignore b/.gitignore index 63ccd0e..b966ce2 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,9 @@ pkgbuild resources/*~ resources/*.c src/*.c +src/pamac.h +src/pamac.vapi +src/libpamac.so src/pamac-daemon src/pamac-tray src/pamac-manager diff --git a/Makefile b/Makefile index 51c3fbb..34684f4 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,9 @@ install: cp -r po/locale /usr/share install -Dm744 src/pamac-daemon /usr/bin/pamac-daemon install -Dm755 src/pamac-tray /usr/bin/pamac-tray + install -Dm644 src/pamac.h /usr/include/pamac.h + install -Dm644 src/pamac.vapi /usr/share/vala/vapi/pamac.vapi + install -Dm755 src/libpamac.so /usr/lib/libpamac.so install -Dm755 src/pamac-manager /usr/bin/pamac-manager install -Dm755 src/pamac-updater /usr/bin/pamac-updater install -Dm755 src/pamac-install /usr/bin/pamac-install @@ -39,6 +42,9 @@ uninstall: rm -f /usr/share/icons/24x24/status/pamac-tray-update.png rm -f /usr/share/icons/32x32/apps/system-software-install.png rm -f /usr/share/locale/*/LC_MESSAGES/pamac.mo + rm -f /usr/include/pamac.h + rm -f /usr/share/vala/vapi/pamac.vapi + rm -f /usr/lib/libpamac.so rm -f /usr/bin/pamac-daemon /usr/bin/pamac-updater /usr/bin/pamac-tray /usr/bin/pamac-manager /usr/bin/pamac-install rm -f /etc/xdg/autostart/pamac-tray.desktop rm -f /usr/share/applications/pamac-manager.desktop /usr/share/applications/pamac-updater.desktop /usr/share/applications/pamac-install.desktop diff --git a/po/files_to_translate b/po/files_to_translate index 52dc83f..ea6f4dd 100644 --- a/po/files_to_translate +++ b/po/files_to_translate @@ -4,12 +4,6 @@ ../src/tray.vala ../src/manager.vala ../src/updater.vala -../src/choose_provider_dialog.vala -../src/progress_dialog.vala -../src/history_dialog.vala -../src/transaction_info_dialog.vala -../src/transaction_sum_dialog.vala -../src/choose_dep_dialog.vala ../src/manager_window.vala ../src/aur_model.vala ../src/packages_model.vala diff --git a/po/pamac.pot b/po/pamac.pot index 919dba1..f987d85 100644 --- a/po/pamac.pot +++ b/po/pamac.pot @@ -21,7 +21,7 @@ msgstr "" msgid "Authentication is required" msgstr "" -#: ../src/daemon.vala ../src/manager_window.vala ../src/preferences_dialog.vala +#: ../src/daemon.vala ../src/transaction.vala msgid "Failed to initialize alpm library" msgstr "" @@ -85,6 +85,16 @@ msgstr "" msgid "Authentication failed" msgstr "" +#: ../src/daemon.vala +#, c-format +msgid "%s appears to be truncated: %jd/%jd bytes\n" +msgstr "" + +#: ../src/daemon.vala +#, c-format +msgid "failed retrieving file '%s' from %s : %s\n" +msgstr "" + #: ../src/transaction.vala msgid "Refreshing mirrors list" msgstr "" @@ -287,8 +297,7 @@ msgstr[1] "" msgid "Warning" msgstr "" -#: ../src/transaction.vala ../src/installer.vala ../src/manager.vala -#: ../src/updater.vala +#: ../src/transaction.vala msgid "Error" msgstr "" @@ -407,6 +416,14 @@ msgstr "" msgid "Conflicts With" msgstr "" +#: ../src/manager_window.vala +msgid "Make Dependencies" +msgstr "" + +#: ../src/manager_window.vala +msgid "Check Dependencies" +msgstr "" + #: ../src/manager_window.vala ../resources/manager_window.ui msgid "Repository" msgstr "" @@ -455,6 +472,10 @@ msgstr "" msgid "Backup files" msgstr "" +#: ../src/manager_window.vala +msgid "Package Base" +msgstr "" + #: ../src/manager_window.vala msgid "Maintainer" msgstr "" diff --git a/resources/Makefile b/resources/Makefile index b853ce5..898cd7c 100644 --- a/resources/Makefile +++ b/resources/Makefile @@ -14,27 +14,26 @@ UPDATER_RESOURCES_FILES = updater_window.ui TRANSACTION_RESOURCES_FILES = progress_dialog.ui \ choose_provider_dialog.ui \ transaction_sum_dialog.ui \ - transaction_info_dialog.ui - -PREFERENCES_RESOURCES_FILES = preferences_dialog.ui \ + transaction_info_dialog.ui \ + preferences_dialog.ui \ choose_ignorepkgs_dialog.ui +TRANSACTION_GRESOURCE_FILE = pamac.transaction.gresource.xml + MANAGER_GRESOURCE_FILE = pamac.manager.gresource.xml UPDATER_GRESOURCE_FILE = pamac.updater.gresource.xml -INSTALLER_GRESOURCE_FILE = pamac.installer.gresource.xml - -resources: manager_resources.c updater_resources.c installer_resources.c +resources: transaction_resources.c manager_resources.c updater_resources.c clean: rm -f *.c -manager_resources.c: $(MANAGER_GRESOURCE_FILE) $(MANAGER_RESOURCES_FILES) $(TRANSACTION_RESOURCES_FILES) $(PREFERENCES_RESOURCES_FILES) +transaction_resources.c: $(TRANSACTION_GRESOURCE_FILE) $(TRANSACTION_RESOURCES_FILES) + glib-compile-resources $(TRANSACTION_GRESOURCE_FILE) --target=transaction_resources.c --generate-source + +manager_resources.c: $(MANAGER_GRESOURCE_FILE) $(MANAGER_RESOURCES_FILES) glib-compile-resources $(MANAGER_GRESOURCE_FILE) --target=manager_resources.c --generate-source -updater_resources.c: $(UPDATER_GRESOURCE_FILE) $(UPDATER_RESOURCES_FILES) $(TRANSACTION_RESOURCES_FILES) $(PREFERENCES_RESOURCES_FILES) +updater_resources.c: $(UPDATER_GRESOURCE_FILE) $(UPDATER_RESOURCES_FILES) glib-compile-resources $(UPDATER_GRESOURCE_FILE) --target=updater_resources.c --generate-source - -installer_resources.c: $(INSTALLER_GRESOURCE_FILE) $(TRANSACTION_RESOURCES_FILES) - glib-compile-resources $(INSTALLER_GRESOURCE_FILE) --target=installer_resources.c --generate-source diff --git a/resources/pamac.manager.gresource.xml b/resources/pamac.manager.gresource.xml index 644affc..e66adf5 100644 --- a/resources/pamac.manager.gresource.xml +++ b/resources/pamac.manager.gresource.xml @@ -11,14 +11,4 @@ package-reinstall.png package-remove.png - - progress_dialog.ui - choose_provider_dialog.ui - transaction_sum_dialog.ui - transaction_info_dialog.ui - - - preferences_dialog.ui - choose_ignorepkgs_dialog.ui - diff --git a/resources/pamac.installer.gresource.xml b/resources/pamac.transaction.gresource.xml similarity index 66% rename from resources/pamac.installer.gresource.xml rename to resources/pamac.transaction.gresource.xml index 7ed09bc..fe0dfc7 100644 --- a/resources/pamac.installer.gresource.xml +++ b/resources/pamac.transaction.gresource.xml @@ -6,4 +6,8 @@ transaction_sum_dialog.ui transaction_info_dialog.ui + + preferences_dialog.ui + choose_ignorepkgs_dialog.ui + diff --git a/resources/pamac.updater.gresource.xml b/resources/pamac.updater.gresource.xml index 34971b8..397f598 100644 --- a/resources/pamac.updater.gresource.xml +++ b/resources/pamac.updater.gresource.xml @@ -3,14 +3,4 @@ updater_window.ui - - progress_dialog.ui - choose_provider_dialog.ui - transaction_sum_dialog.ui - transaction_info_dialog.ui - - - preferences_dialog.ui - choose_ignorepkgs_dialog.ui - diff --git a/src/Makefile b/src/Makefile index 79aecfa..ea48cf2 100644 --- a/src/Makefile +++ b/src/Makefile @@ -3,16 +3,16 @@ COMMON_VALA_FLAGS = -X -w \ --pkg=libalpm \ --pkg=gio-2.0 \ --pkg=posix \ - --pkg=json-glib-1.0 \ - --pkg=libsoup-2.4 \ + --vapidir=./ \ --vapidir=../vapi \ - --Xcc=-I../util \ + -X -I../util \ -X -D_FILE_OFFSET_BITS=64 \ -X -DGETTEXT_PACKAGE="pamac" \ --target-glib=2.38 -TRANSACTION_VALA_FLAGS = --pkg=gtk+-3.0 \ - --pkg=gmodule-2.0 \ +TRANSACTION_VALA_FLAGS = --pkg=json-glib-1.0 \ + --pkg=libsoup-2.4 \ + --pkg=gtk+-3.0 \ --pkg=gdk-3.0 \ --pkg=vte-2.91 \ -X -lm @@ -21,10 +21,9 @@ COMMON_SOURCES = ../util/alpm-util.c \ common.vala \ pamac_config.vala \ alpm_config.vala \ - alpm_utils.vala \ - aur.vala \ TRANSACTION_SOURCES = transaction.vala \ + aur.vala \ choose_provider_dialog.vala \ transaction_sum_dialog.vala \ transaction_info_dialog.vala \ @@ -34,16 +33,18 @@ PREFERENCES_SOURCES = preferences_dialog.vala \ choose_ignorepkgs_dialog.vala \ mirrors_config.vala +TRANSACTION_GRESOURCE_FILE = ../resources/pamac.transaction.gresource.xml + MANAGER_GRESOURCE_FILE = ../resources/pamac.manager.gresource.xml UPDATER_GRESOURCE_FILE = ../resources/pamac.updater.gresource.xml INSTALLER_GRESOURCE_FILE = ../resources/pamac.installer.gresource.xml -binaries: pamac-refresh pamac-daemon pamac-tray pamac-updater pamac-manager pamac-install +binaries: pamac-refresh pamac-daemon pamac-tray libpamac.so pamac-updater pamac-manager pamac-install clean: - rm -f *.c pamac-refresh pamac-daemon pamac-tray pamac-updater pamac-manager pamac-install + rm -f *.c pamac.h pamac.vapi libpamac.so pamac-refresh pamac-daemon pamac-tray pamac-updater pamac-manager pamac-install pamac-refresh: pamac_config.vala refresh.vala valac -o pamac-refresh \ @@ -61,50 +62,77 @@ pamac-tray: ../vapi/libalpm.vapi $(COMMON_SOURCES) tray.vala $(COMMON_SOURCES) \ tray.vala -pamac-daemon: ../vapi/libalpm.vapi ../vapi/polkit-gobject-1.vapi ../vapi/libcurl.vapi $(COMMON_SOURCES) mirrors_config.vala daemon.vala +pamac-daemon: ../vapi/libalpm.vapi ../vapi/polkit-gobject-1.vapi ../vapi/libcurl.vapi $(COMMON_SOURCES) aur.vala mirrors_config.vala daemon.vala valac -o pamac-daemon \ $(COMMON_VALA_FLAGS) \ --pkg=polkit-gobject-1 \ --pkg=libcurl \ + --pkg=json-glib-1.0 \ + --pkg=libsoup-2.4 \ --thread \ $(COMMON_SOURCES) \ + aur.vala \ mirrors_config.vala \ daemon.vala -pamac-manager: ../vapi/libalpm.vapi $(COMMON_SOURCES) $(TRANSACTION_SOURCES) $(PREFERENCES_SOURCES) choose_dep_dialog.vala history_dialog.vala ../resources/manager_resources.c packages_model.vala aur_model.vala manager_window.vala manager.vala - valac -o pamac-manager \ +libpamac.so: ../vapi/libalpm.vapi $(COMMON_SOURCES) $(TRANSACTION_SOURCES) $(PREFERENCES_SOURCES) ../resources/manager_resources.c + valac -o libpamac.so \ + -X -fPIC \ + -X --shared \ + -H pamac.h \ + --vapi=pamac.vapi \ + --library=libpamac \ $(COMMON_VALA_FLAGS) \ $(TRANSACTION_VALA_FLAGS) \ - --gresources=$(MANAGER_GRESOURCE_FILE) \ - ../resources/manager_resources.c \ + --gresources=$(TRANSACTION_GRESOURCE_FILE) \ + ../resources/transaction_resources.c \ $(COMMON_SOURCES) \ $(TRANSACTION_SOURCES) \ - $(PREFERENCES_SOURCES) \ + $(PREFERENCES_SOURCES) + +pamac-manager: libpamac.so choose_dep_dialog.vala history_dialog.vala transaction_info_dialog.vala ../resources/manager_resources.c ../util/alpm-util.c alpm_utils.vala packages_model.vala aur_model.vala manager_window.vala manager.vala + valac -o pamac-manager \ + $(COMMON_VALA_FLAGS) \ + -X -I. \ + -X -L. \ + -X -lpamac \ + --pkg=pamac \ + --pkg=json-glib-1.0 \ + --pkg=gtk+-3.0 \ + --pkg=gdk-3.0 \ + --gresources=$(MANAGER_GRESOURCE_FILE) \ + ../resources/manager_resources.c \ + ../util/alpm-util.c \ choose_dep_dialog.vala \ history_dialog.vala \ + alpm_utils.vala \ packages_model.vala \ aur_model.vala \ manager_window.vala \ manager.vala -pamac-updater: ../vapi/libalpm.vapi $(COMMON_SOURCES) $(TRANSACTION_SOURCES) $(PREFERENCES_SOURCES) ../resources/updater_resources.c updater_window.vala updater.vala +pamac-updater: libpamac.so ../resources/updater_resources.c updater_window.vala updater.vala valac -o pamac-updater \ $(COMMON_VALA_FLAGS) \ - $(TRANSACTION_VALA_FLAGS) \ + -X -I. \ + -X -L. \ + -X -lpamac \ + --pkg=pamac \ + --pkg=json-glib-1.0 \ + --pkg=gtk+-3.0 \ + --pkg=gdk-3.0 \ --gresources=$(UPDATER_GRESOURCE_FILE) \ ../resources/updater_resources.c \ - $(COMMON_SOURCES) \ - $(TRANSACTION_SOURCES) \ - $(PREFERENCES_SOURCES) \ updater_window.vala \ updater.vala -pamac-install: ../vapi/libalpm.vapi $(COMMON_SOURCES) $(TRANSACTION_SOURCES) ../resources/installer_resources.c installer.vala +pamac-install: libpamac.so installer.vala valac -o pamac-install \ $(COMMON_VALA_FLAGS) \ - $(TRANSACTION_VALA_FLAGS) \ - --gresources=$(INSTALLER_GRESOURCE_FILE) \ - ../resources/installer_resources.c \ - $(COMMON_SOURCES) \ - $(TRANSACTION_SOURCES) \ + -X -I. \ + -X -L. \ + -X -lpamac \ + --pkg=pamac \ + --pkg=json-glib-1.0 \ + --pkg=gtk+-3.0 \ installer.vala diff --git a/src/alpm_config.vala b/src/alpm_config.vala index d5168d5..1c9bd4a 100644 --- a/src/alpm_config.vala +++ b/src/alpm_config.vala @@ -17,18 +17,18 @@ * along with this program. If not, see . */ -namespace Alpm { +namespace Pamac { [Compact] public class Repo { public string name; - public Signature.Level siglevel; - public Signature.Level siglevel_mask; - public DB.Usage usage; + public Alpm.Signature.Level siglevel; + public Alpm.Signature.Level siglevel_mask; + public Alpm.DB.Usage usage; public GLib.List urls; public Repo (string name) { this.name = name; - siglevel = Signature.Level.USE_DEFAULT; + siglevel = Alpm.Signature.Level.USE_DEFAULT; usage = 0; urls = new GLib.List (); } @@ -44,7 +44,7 @@ namespace Alpm { } [Compact] - public class Config { + public class AlpmConfig { public string conf_path; public string? rootdir; public string? dbpath; @@ -62,16 +62,16 @@ namespace Alpm { public Alpm.List? noupgrades; public GLib.List? holdpkgs; public GLib.List? syncfirsts; - public Signature.Level siglevel; - public Signature.Level localfilesiglevel; - public Signature.Level remotefilesiglevel; - public Signature.Level siglevel_mask; - public Signature.Level localfilesiglevel_mask; - public Signature.Level remotefilesiglevel_mask; + public Alpm.Signature.Level siglevel; + public Alpm.Signature.Level localfilesiglevel; + public Alpm.Signature.Level remotefilesiglevel; + public Alpm.Signature.Level siglevel_mask; + public Alpm.Signature.Level localfilesiglevel_mask; + public Alpm.Signature.Level remotefilesiglevel_mask; public GLib.List repo_order; - public Handle? handle; + public Alpm.Handle? handle; - public Config (string path) { + public AlpmConfig (string path) { conf_path = path; reload (); } @@ -108,9 +108,9 @@ namespace Alpm { usesyslog = 0; checkspace = 0; deltaratio = 0.7; - siglevel = Signature.Level.PACKAGE | Signature.Level.PACKAGE_OPTIONAL | Signature.Level.DATABASE | Signature.Level.DATABASE_OPTIONAL; - localfilesiglevel = Signature.Level.USE_DEFAULT; - remotefilesiglevel = Signature.Level.USE_DEFAULT; + siglevel = Alpm.Signature.Level.PACKAGE | Alpm.Signature.Level.PACKAGE_OPTIONAL | Alpm.Signature.Level.DATABASE | Alpm.Signature.Level.DATABASE_OPTIONAL; + localfilesiglevel = Alpm.Signature.Level.USE_DEFAULT; + remotefilesiglevel = Alpm.Signature.Level.USE_DEFAULT; repo_order = new GLib.List (); // parse conf file parse_file (conf_path); @@ -150,7 +150,7 @@ namespace Alpm { public void get_handle () { Alpm.Errno error; - handle = Handle.new (rootdir, dbpath, out error); + handle = Alpm.Handle.new (rootdir, dbpath, out error); if (handle == null) { stderr.printf ("Failed to initialize alpm library" + " (%s)\n".printf(Alpm.strerror (error))); return; @@ -179,12 +179,12 @@ namespace Alpm { // register dbs foreach (unowned Repo repo in repo_order) { repo.siglevel = merge_siglevel (siglevel, repo.siglevel, repo.siglevel_mask); - unowned DB db = handle.register_syncdb (repo.name, repo.siglevel); + unowned Alpm.DB db = handle.register_syncdb (repo.name, repo.siglevel); foreach (unowned string url in repo.urls) { db.add_server (url.replace ("$repo", repo.name).replace ("$arch", handle.arch)); } if (repo.usage == 0) { - db.usage = DB.Usage.ALL; + db.usage = Alpm.DB.Usage.ALL; } else { db.usage = repo.usage; } @@ -373,25 +373,25 @@ namespace Alpm { } } - public DB.Usage define_usage (string conf_string) { - DB.Usage usage = 0; + public Alpm.DB.Usage define_usage (string conf_string) { + Alpm.DB.Usage usage = 0; foreach (unowned string directive in conf_string.split(" ")) { if (directive == "Sync") { - usage |= DB.Usage.SYNC; + usage |= Alpm.DB.Usage.SYNC; } else if (directive == "Search") { - usage |= DB.Usage.SEARCH; + usage |= Alpm.DB.Usage.SEARCH; } else if (directive == "Install") { - usage |= DB.Usage.INSTALL; + usage |= Alpm.DB.Usage.INSTALL; } else if (directive == "Upgrade") { - usage |= DB.Usage.UPGRADE; + usage |= Alpm.DB.Usage.UPGRADE; } else if (directive == "All") { - usage |= DB.Usage.ALL; + usage |= Alpm.DB.Usage.ALL; } } return usage; } - public void process_siglevel (string conf_string, ref Signature.Level siglevel, ref Signature.Level siglevel_mask) { + public void process_siglevel (string conf_string, ref Alpm.Signature.Level siglevel, ref Alpm.Signature.Level siglevel_mask) { foreach (unowned string directive in conf_string.split(" ")) { bool affect_package = false; bool affect_database = false; @@ -405,61 +405,61 @@ namespace Alpm { } if ("Never" in directive) { if (affect_package) { - siglevel &= ~Signature.Level.PACKAGE; - siglevel_mask |= Signature.Level.PACKAGE; + siglevel &= ~Alpm.Signature.Level.PACKAGE; + siglevel_mask |= Alpm.Signature.Level.PACKAGE; } if (affect_database) { - siglevel &= ~Signature.Level.DATABASE; - siglevel_mask |= Signature.Level.DATABASE; + siglevel &= ~Alpm.Signature.Level.DATABASE; + siglevel_mask |= Alpm.Signature.Level.DATABASE; } } else if ("Optional" in directive) { if (affect_package) { - siglevel |= (Signature.Level.PACKAGE | Signature.Level.PACKAGE_OPTIONAL); - siglevel_mask |= (Signature.Level.PACKAGE | Signature.Level.PACKAGE_OPTIONAL); + siglevel |= (Alpm.Signature.Level.PACKAGE | Alpm.Signature.Level.PACKAGE_OPTIONAL); + siglevel_mask |= (Alpm.Signature.Level.PACKAGE | Alpm.Signature.Level.PACKAGE_OPTIONAL); } if (affect_database) { - siglevel |= (Signature.Level.DATABASE | Signature.Level.DATABASE_OPTIONAL); - siglevel_mask |= (Signature.Level.DATABASE | Signature.Level.DATABASE_OPTIONAL); + siglevel |= (Alpm.Signature.Level.DATABASE | Alpm.Signature.Level.DATABASE_OPTIONAL); + siglevel_mask |= (Alpm.Signature.Level.DATABASE | Alpm.Signature.Level.DATABASE_OPTIONAL); } } else if ("Required" in directive) { if (affect_package) { - siglevel |= Signature.Level.PACKAGE; - siglevel_mask |= Signature.Level.PACKAGE; - siglevel &= ~Signature.Level.PACKAGE_OPTIONAL; - siglevel_mask |= Signature.Level.PACKAGE_OPTIONAL; + siglevel |= Alpm.Signature.Level.PACKAGE; + siglevel_mask |= Alpm.Signature.Level.PACKAGE; + siglevel &= ~Alpm.Signature.Level.PACKAGE_OPTIONAL; + siglevel_mask |= Alpm.Signature.Level.PACKAGE_OPTIONAL; } if (affect_database) { - siglevel |= Signature.Level.DATABASE; - siglevel_mask |= Signature.Level.DATABASE; - siglevel &= ~Signature.Level.DATABASE_OPTIONAL; - siglevel_mask |= Signature.Level.DATABASE_OPTIONAL; + siglevel |= Alpm.Signature.Level.DATABASE; + siglevel_mask |= Alpm.Signature.Level.DATABASE; + siglevel &= ~Alpm.Signature.Level.DATABASE_OPTIONAL; + siglevel_mask |= Alpm.Signature.Level.DATABASE_OPTIONAL; } } else if ("TrustedOnly" in directive) { if (affect_package) { - siglevel &= ~(Signature.Level.PACKAGE_MARGINAL_OK | Signature.Level.PACKAGE_UNKNOWN_OK); - siglevel_mask |= (Signature.Level.PACKAGE_MARGINAL_OK | Signature.Level.PACKAGE_UNKNOWN_OK); + siglevel &= ~(Alpm.Signature.Level.PACKAGE_MARGINAL_OK | Alpm.Signature.Level.PACKAGE_UNKNOWN_OK); + siglevel_mask |= (Alpm.Signature.Level.PACKAGE_MARGINAL_OK | Alpm.Signature.Level.PACKAGE_UNKNOWN_OK); } if (affect_database) { - siglevel &= ~(Signature.Level.DATABASE_MARGINAL_OK | Signature.Level.DATABASE_UNKNOWN_OK); - siglevel_mask |= (Signature.Level.DATABASE_MARGINAL_OK | Signature.Level.DATABASE_UNKNOWN_OK); + siglevel &= ~(Alpm.Signature.Level.DATABASE_MARGINAL_OK | Alpm.Signature.Level.DATABASE_UNKNOWN_OK); + siglevel_mask |= (Alpm.Signature.Level.DATABASE_MARGINAL_OK | Alpm.Signature.Level.DATABASE_UNKNOWN_OK); } } else if ("TrustAll" in directive) { if (affect_package) { - siglevel |= (Signature.Level.PACKAGE_MARGINAL_OK | Signature.Level.PACKAGE_UNKNOWN_OK); - siglevel_mask |= (Signature.Level.PACKAGE_MARGINAL_OK | Signature.Level.PACKAGE_UNKNOWN_OK); + siglevel |= (Alpm.Signature.Level.PACKAGE_MARGINAL_OK | Alpm.Signature.Level.PACKAGE_UNKNOWN_OK); + siglevel_mask |= (Alpm.Signature.Level.PACKAGE_MARGINAL_OK | Alpm.Signature.Level.PACKAGE_UNKNOWN_OK); } if (affect_database) { - siglevel |= (Signature.Level.DATABASE_MARGINAL_OK | Signature.Level.DATABASE_UNKNOWN_OK); - siglevel_mask |= (Signature.Level.DATABASE_MARGINAL_OK | Signature.Level.DATABASE_UNKNOWN_OK); + siglevel |= (Alpm.Signature.Level.DATABASE_MARGINAL_OK | Alpm.Signature.Level.DATABASE_UNKNOWN_OK); + siglevel_mask |= (Alpm.Signature.Level.DATABASE_MARGINAL_OK | Alpm.Signature.Level.DATABASE_UNKNOWN_OK); } } else { GLib.stderr.printf("unrecognized siglevel: %s\n", conf_string); } } - siglevel &= ~Signature.Level.USE_DEFAULT; + siglevel &= ~Alpm.Signature.Level.USE_DEFAULT; } - public Signature.Level merge_siglevel(Signature.Level sigbase, Signature.Level sigover, Signature.Level sigmask) { + public Alpm.Signature.Level merge_siglevel(Alpm.Signature.Level sigbase, Alpm.Signature.Level sigover, Alpm.Signature.Level sigmask) { return (sigmask != 0) ? (sigover & sigmask) | (sigbase & ~sigmask) : sigover; } } diff --git a/src/alpm_utils.vala b/src/alpm_utils.vala index 36d0377..a3c75e3 100644 --- a/src/alpm_utils.vala +++ b/src/alpm_utils.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2015 Guillaume Benoit + * Copyright (C) 2015-2016 Guillaume Benoit * * 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 @@ -17,22 +17,22 @@ * along with this program. If not, see . */ -public int compare_name (Alpm.Package pkg_a, Alpm.Package pkg_b) { +int compare_name (Alpm.Package pkg_a, Alpm.Package pkg_b) { return strcmp (pkg_a.name, pkg_b.name); } -public int compare_state (Alpm.Package pkg_a, Alpm.Package pkg_b) { +int compare_state (Alpm.Package pkg_a, Alpm.Package pkg_b) { return (int) (pkg_a.origin > pkg_b.origin) - (int) (pkg_a.origin < pkg_b.origin); } -public int compare_version (Alpm.Package pkg_a, Alpm.Package pkg_b) { +int compare_version (Alpm.Package pkg_a, Alpm.Package pkg_b) { return Alpm.pkg_vercmp (pkg_a.version, pkg_b.version); } -public int compare_repo (Alpm.Package pkg_a, Alpm.Package pkg_b) { +int compare_repo (Alpm.Package pkg_a, Alpm.Package pkg_b) { return strcmp (pkg_a.db.name, pkg_b.db.name); } -public int compare_size (Alpm.Package pkg_a, Alpm.Package pkg_b) { +int compare_size (Alpm.Package pkg_a, Alpm.Package pkg_b) { return (int) (pkg_a.isize > pkg_b.isize) - (int) (pkg_a.isize < pkg_b.isize); } diff --git a/src/aur_model.vala b/src/aur_model.vala index fa6009d..2fed0e9 100644 --- a/src/aur_model.vala +++ b/src/aur_model.vala @@ -20,13 +20,13 @@ Pamac.ManagerWindow manager_window; // custom sort functions -public int aur_compare_name (Json.Object pkg_a, Json.Object pkg_b) { +int aur_compare_name (Json.Object pkg_a, Json.Object pkg_b) { return strcmp (pkg_a.get_string_member ("Name"), pkg_b.get_string_member ("Name")); } -public int aur_compare_state (Json.Object pkg_a, Json.Object pkg_b) { - unowned Alpm.Package? alpm_pkg_a = manager_window.alpm_config.handle.localdb.get_pkg (pkg_a.get_string_member ("Name")); - unowned Alpm.Package? alpm_pkg_b = manager_window.alpm_config.handle.localdb.get_pkg (pkg_b.get_string_member ("Name")); +int aur_compare_state (Json.Object pkg_a, Json.Object pkg_b) { + unowned Alpm.Package? alpm_pkg_a = manager_window.transaction.alpm_config.handle.localdb.get_pkg (pkg_a.get_string_member ("Name")); + unowned Alpm.Package? alpm_pkg_b = manager_window.transaction.alpm_config.handle.localdb.get_pkg (pkg_b.get_string_member ("Name")); if (pkg_a != null) { if (pkg_b != null) { return (int) (alpm_pkg_a.origin > alpm_pkg_b.origin) - (int) (alpm_pkg_a.origin < alpm_pkg_b.origin); @@ -42,17 +42,17 @@ public int aur_compare_state (Json.Object pkg_a, Json.Object pkg_b) { } } -public int aur_compare_version (Json.Object pkg_a, Json.Object pkg_b) { +int aur_compare_version (Json.Object pkg_a, Json.Object pkg_b) { return Alpm.pkg_vercmp (pkg_a.get_string_member ("Version"), pkg_b.get_string_member ("Version")); } -public int aur_compare_votes (Json.Object pkg_a, Json.Object pkg_b) { +int aur_compare_votes (Json.Object pkg_a, Json.Object pkg_b) { return (int) (pkg_a.get_int_member ("NumVotes") > pkg_b.get_int_member ("NumVotes")) - (int) (pkg_a.get_int_member ("NumVotes") < pkg_b.get_int_member ("NumVotes")); } namespace Pamac { - public class AURModel : Object, Gtk.TreeModel { + class AURModel : Object, Gtk.TreeModel { private Json.Array pkgs_infos; private GLib.List pkgs; @@ -68,7 +68,7 @@ namespace Pamac { } // TreeModel interface - public Type get_column_type (int index) { + Type get_column_type (int index) { switch (index) { case 0: // name case 2: // version @@ -82,11 +82,11 @@ namespace Pamac { } } - public Gtk.TreeModelFlags get_flags () { + Gtk.TreeModelFlags get_flags () { return Gtk.TreeModelFlags.LIST_ONLY | Gtk.TreeModelFlags.ITERS_PERSIST; } - public void get_value (Gtk.TreeIter iter, int column, out Value val) { + void get_value (Gtk.TreeIter iter, int column, out Value val) { unowned Json.Object? pkg_info = pkgs.nth_data (iter.stamp); switch (column) { case 0: @@ -100,9 +100,9 @@ namespace Pamac { case 1: val = Value (typeof (Object)); if (pkg_info != null) { - unowned Alpm.Package? pkg = manager_window.alpm_config.handle.localdb.get_pkg (pkg_info.get_string_member ("Name")); + unowned Alpm.Package? pkg = manager_window.transaction.alpm_config.handle.localdb.get_pkg (pkg_info.get_string_member ("Name")); if (pkg != null) { - if (manager_window.alpm_config.holdpkgs.find_custom (pkg.name, strcmp) != null) { + if (manager_window.transaction.alpm_config.holdpkgs.find_custom (pkg.name, strcmp) != null) { val.set_object (manager_window.locked_icon); } else if (manager_window.transaction.to_add.contains (pkg.name)) { val.set_object (manager_window.to_reinstall_icon); @@ -121,7 +121,7 @@ namespace Pamac { case 2: val = Value (typeof (string)); if (pkg_info != null) { - unowned Alpm.Package? pkg = manager_window.alpm_config.handle.localdb.get_pkg (pkg_info.get_string_member ("Name")); + unowned Alpm.Package? pkg = manager_window.transaction.alpm_config.handle.localdb.get_pkg (pkg_info.get_string_member ("Name")); if (pkg != null) { val.set_string (pkg.version); } else { @@ -144,7 +144,7 @@ namespace Pamac { } } - public bool get_iter (out Gtk.TreeIter iter, Gtk.TreePath path) {; + bool get_iter (out Gtk.TreeIter iter, Gtk.TreePath path) {; if (path.get_depth () != 1) { return invalid_iter (out iter); } @@ -154,20 +154,20 @@ namespace Pamac { return true; } - public int get_n_columns () { + int get_n_columns () { // name, icon, version, votes return 4; } - public Gtk.TreePath? get_path (Gtk.TreeIter iter) { + Gtk.TreePath? get_path (Gtk.TreeIter iter) { return new Gtk.TreePath.from_indices (iter.stamp); } - public int iter_n_children (Gtk.TreeIter? iter) { + int iter_n_children (Gtk.TreeIter? iter) { return 0; } - public bool iter_next (ref Gtk.TreeIter iter) { + bool iter_next (ref Gtk.TreeIter iter) { int pos = (iter.stamp) + 1; if (pos >= pkgs.length ()) { return false; @@ -176,7 +176,7 @@ namespace Pamac { return true; } - public bool iter_previous (ref Gtk.TreeIter iter) { + bool iter_previous (ref Gtk.TreeIter iter) { int pos = iter.stamp; if (pos >= 0) { return false; @@ -185,23 +185,23 @@ namespace Pamac { return true; } - public bool iter_nth_child (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int n) { + bool iter_nth_child (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int n) { return invalid_iter (out iter); } - public bool iter_children (out Gtk.TreeIter iter, Gtk.TreeIter? parent) { + bool iter_children (out Gtk.TreeIter iter, Gtk.TreeIter? parent) { return invalid_iter (out iter); } - public bool iter_has_child (Gtk.TreeIter iter) { + bool iter_has_child (Gtk.TreeIter iter) { return false; } - public bool iter_parent (out Gtk.TreeIter iter, Gtk.TreeIter child) { + bool iter_parent (out Gtk.TreeIter iter, Gtk.TreeIter child) { return invalid_iter (out iter); } - private bool invalid_iter (out Gtk.TreeIter iter) { + bool invalid_iter (out Gtk.TreeIter iter) { iter = Gtk.TreeIter (); iter.stamp = -1; return false; diff --git a/src/choose_dep_dialog.vala b/src/choose_dep_dialog.vala index e900ffa..40e503e 100644 --- a/src/choose_dep_dialog.vala +++ b/src/choose_dep_dialog.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -20,14 +20,12 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/manager/choose_dep_dialog.ui")] - public class ChooseDependenciesDialog : Gtk.Dialog { + class ChooseDependenciesDialog : Gtk.Dialog { [GtkChild] public Gtk.Label label; [GtkChild] public Gtk.TreeView treeview; - [GtkChild] - public Gtk.CellRendererToggle renderertoggle; public Gtk.ListStore deps_list; diff --git a/src/choose_ignorepkgs_dialog.vala b/src/choose_ignorepkgs_dialog.vala index 75d6b7d..cda0b1b 100644 --- a/src/choose_ignorepkgs_dialog.vala +++ b/src/choose_ignorepkgs_dialog.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2015 Guillaume Benoit + * Copyright (C) 2015-2016 Guillaume Benoit * * 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 @@ -20,14 +20,12 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/preferences/choose_ignorepkgs_dialog.ui")] - public class ChooseIgnorepkgsDialog : Gtk.Dialog { + class ChooseIgnorepkgsDialog : Gtk.Dialog { [GtkChild] public Gtk.Label label; [GtkChild] public Gtk.TreeView treeview; - [GtkChild] - public Gtk.CellRendererToggle renderertoggle; public Gtk.ListStore pkgs_list; diff --git a/src/choose_provider_dialog.vala b/src/choose_provider_dialog.vala index a54ac56..12240b5 100644 --- a/src/choose_provider_dialog.vala +++ b/src/choose_provider_dialog.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -20,7 +20,7 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/transaction/choose_provider_dialog.ui")] - public class ChooseProviderDialog : Gtk.Dialog { + class ChooseProviderDialog : Gtk.Dialog { [GtkChild] public Gtk.Label label; diff --git a/src/daemon.vala b/src/daemon.vala index 314a3ca..1327d02 100644 --- a/src/daemon.vala +++ b/src/daemon.vala @@ -38,8 +38,8 @@ public class AlpmAction { namespace Pamac { [DBus (name = "org.manjaro.pamac")] - public class Daemon : Object { - private Alpm.Config alpm_config; + public class Daemon: Object { + private AlpmConfig alpm_config; public Cond provider_cond; public Mutex provider_mutex; public int? choosen_provider; @@ -76,7 +76,7 @@ namespace Pamac { public signal void generate_mirrors_list_finished (); public Daemon () { - alpm_config = new Alpm.Config ("/etc/pacman.conf"); + alpm_config = new AlpmConfig ("/etc/pacman.conf"); databases_lock_mutex = Mutex (); aur_updates_results = new Json.Array (); timer = new Timer (); @@ -283,7 +283,7 @@ namespace Pamac { } public void start_write_mirrors_config (HashTable new_mirrors_conf, GLib.BusName sender) { - var mirrors_config = new Alpm.MirrorsConfig ("/etc/pacman-mirrors.conf"); + var mirrors_config = new MirrorsConfig ("/etc/pacman-mirrors.conf"); check_authorization.begin (sender, (obj, res) => { bool authorized = check_authorization.end (res); if (authorized) { @@ -1159,7 +1159,7 @@ private int cb_fetch (string fileurl, string localpath, int force) { // as actually being transferred during curl_easy_perform () else if (remote_size != -1 && bytes_dl != -1 && bytes_dl != remote_size) { pamac_daemon.emit_log ((uint) Alpm.LogLevel.ERROR, - dgettext ("libalpm", "%s appears to be truncated: %jd/%jd bytes\n").printf ( + _("%s appears to be truncated: %jd/%jd bytes\n").printf ( fileurl, bytes_dl, remote_size)); if (remove_partial_download) { try { @@ -1214,7 +1214,7 @@ private int cb_fetch (string fileurl, string localpath, int force) { if (!fileurl.has_suffix ("db.sig")) { string hostname = url.get_uri ().split("/")[2]; pamac_daemon.emit_log ((uint) Alpm.LogLevel.ERROR, - dgettext ("libalpm", "failed retrieving file '%s' from %s : %s\n").printf ( + _("failed retrieving file '%s' from %s : %s\n").printf ( url.get_basename (), hostname, error_buffer)); } ret = -1; diff --git a/src/history_dialog.vala b/src/history_dialog.vala index bc0e4f2..6c9eb09 100644 --- a/src/history_dialog.vala +++ b/src/history_dialog.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -20,7 +20,7 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/manager/history_dialog.ui")] - public class HistoryDialog : Gtk.Dialog { + class HistoryDialog : Gtk.Dialog { [GtkChild] public Gtk.TextView textview; diff --git a/src/installer.vala b/src/installer.vala index 0cd62ce..aa05bb4 100644 --- a/src/installer.vala +++ b/src/installer.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014-2015 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -37,13 +37,13 @@ namespace Pamac { pamac_run = check_pamac_running (); if (pamac_run) { - var transaction_info_dialog = new TransactionInfoDialog (null); - transaction_info_dialog.set_title (dgettext (null, "Error")); - transaction_info_dialog.label.set_visible (true); - transaction_info_dialog.label.set_markup (dgettext (null, "Pamac is already running")); - transaction_info_dialog.expander.set_visible (false); - transaction_info_dialog.run (); - transaction_info_dialog.hide (); + var msg = new Gtk.MessageDialog (null, + Gtk.DialogFlags.MODAL, + Gtk.MessageType.ERROR, + Gtk.ButtonsType.OK, + dgettext (null, "Pamac is already running")); + msg.run (); + msg.destroy (); } else { transaction = new Pamac.Transaction (null); transaction.finished.connect (on_transaction_finished); @@ -91,7 +91,7 @@ namespace Pamac { return run; } - public void on_transaction_finished () { + void on_transaction_finished () { transaction.stop_daemon (); this.release (); } diff --git a/src/manager.vala b/src/manager.vala index dd0cc13..5099b27 100644 --- a/src/manager.vala +++ b/src/manager.vala @@ -37,13 +37,13 @@ namespace Pamac { pamac_run = check_pamac_running (); if (pamac_run) { - var transaction_info_dialog = new TransactionInfoDialog (null); - transaction_info_dialog.set_title (dgettext (null, "Error")); - transaction_info_dialog.label.set_visible (true); - transaction_info_dialog.label.set_markup (dgettext (null, "Pamac is already running")); - transaction_info_dialog.expander.set_visible (false); - transaction_info_dialog.run (); - transaction_info_dialog.hide (); + var msg = new Gtk.MessageDialog (null, + Gtk.DialogFlags.MODAL, + Gtk.MessageType.ERROR, + Gtk.ButtonsType.OK, + dgettext (null, "Pamac is already running")); + msg.run (); + msg.destroy (); } else { manager_window = new ManagerWindow (this); } diff --git a/src/manager_window.vala b/src/manager_window.vala index d33a080..e14ae81 100644 --- a/src/manager_window.vala +++ b/src/manager_window.vala @@ -17,15 +17,17 @@ * along with this program. If not, see . */ +const string VERSION = "3.2.0"; + namespace Pamac { - public struct SortInfo { + struct SortInfo { public int column_number; public Gtk.SortType sort_type; } [GtkTemplate (ui = "/org/manjaro/pamac/manager/manager_window.ui")] - public class ManagerWindow : Gtk.ApplicationWindow { + class ManagerWindow : Gtk.ApplicationWindow { // icons public Gdk.Pixbuf? installed_icon; public Gdk.Pixbuf? uninstalled_icon; @@ -36,7 +38,7 @@ namespace Pamac { // manager objects [GtkChild] - public Gtk.TreeView packages_treeview; + Gtk.TreeView packages_treeview; [GtkChild] public Gtk.TreeViewColumn packages_state_column; [GtkChild] @@ -48,9 +50,9 @@ namespace Pamac { [GtkChild] public Gtk.TreeViewColumn packages_size_column; [GtkChild] - public Gtk.TreeView aur_treeview; + Gtk.TreeView aur_treeview; [GtkChild] - public Gtk.ScrolledWindow aur_scrolledwindow; + Gtk.ScrolledWindow aur_scrolledwindow; [GtkChild] public Gtk.TreeViewColumn aur_state_column; [GtkChild] @@ -60,49 +62,45 @@ namespace Pamac { [GtkChild] public Gtk.TreeViewColumn aur_votes_column; [GtkChild] - public Gtk.Notebook filters_notebook; + Gtk.Notebook filters_notebook; [GtkChild] - public Gtk.SearchEntry search_entry; + Gtk.SearchEntry search_entry; [GtkChild] - public Gtk.TreeView search_treeview; + Gtk.TreeView search_treeview; [GtkChild] - public Gtk.TreeView groups_treeview; + Gtk.TreeView groups_treeview; [GtkChild] - public Gtk.TreeView states_treeview; + Gtk.TreeView states_treeview; [GtkChild] - public Gtk.TreeView repos_treeview; + Gtk.TreeView repos_treeview; [GtkChild] - public Gtk.Notebook packages_notebook; + Gtk.Notebook packages_notebook; [GtkChild] - public Gtk.Notebook properties_notebook; + Gtk.Notebook properties_notebook; [GtkChild] - public Gtk.TreeView deps_treeview; + Gtk.TreeView deps_treeview; [GtkChild] - public Gtk.TreeView details_treeview; + Gtk.TreeView details_treeview; [GtkChild] - public Gtk.ScrolledWindow deps_scrolledwindow; + Gtk.ScrolledWindow files_scrolledwindow; [GtkChild] - public Gtk.ScrolledWindow details_scrolledwindow; + Gtk.Label name_label; [GtkChild] - public Gtk.ScrolledWindow files_scrolledwindow; + Gtk.Label desc_label; [GtkChild] - public Gtk.Label name_label; + Gtk.Label link_label; [GtkChild] - public Gtk.Label desc_label; + Gtk.Label licenses_label; [GtkChild] - public Gtk.Label link_label; + Gtk.TextView files_textview; [GtkChild] - public Gtk.Label licenses_label; + Gtk.Box search_aur_box; [GtkChild] - public Gtk.TextView files_textview; + Gtk.Switch search_aur_button; [GtkChild] - public Gtk.Box search_aur_box; + Gtk.Button valid_button; [GtkChild] - public Gtk.Switch search_aur_button; - [GtkChild] - public Gtk.Button valid_button; - [GtkChild] - public Gtk.Button cancel_button; + Gtk.Button cancel_button; // menu Gtk.Menu right_click_menu; @@ -126,10 +124,9 @@ namespace Pamac { PackagesModel packages_list; AURModel aur_list; - public HashTable aur_search_results; - public HashTable aur_infos; - - public Alpm.Config alpm_config; + HashTable aur_search_results; + string current_package_path; + string current_aur_path; public Transaction transaction; @@ -143,7 +140,7 @@ namespace Pamac { Timeout.add (100, populate_window); } - public bool populate_window () { + bool populate_window () { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); right_click_menu = new Gtk.Menu (); @@ -196,13 +193,10 @@ namespace Pamac { transaction = new Transaction (this as Gtk.ApplicationWindow); transaction.mode = Mode.MANAGER; transaction.finished.connect (on_transaction_finished); - transaction.daemon.write_pamac_config_finished.connect (on_write_pamac_config_finished); - transaction.daemon.set_pkgreason_finished.connect (display_package_properties); + transaction.write_pamac_config_finished.connect (on_write_pamac_config_finished); + transaction.set_pkgreason_finished.connect (on_set_pkgreason_finished); - alpm_config = new Alpm.Config ("/etc/pacman.conf"); - refresh_handle (); - - unowned Alpm.Package? pkg = Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, "yaourt"); + unowned Alpm.Package? pkg = Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, "yaourt"); if (pkg != null) { support_aur (transaction.pamac_config.enable_aur, transaction.pamac_config.search_aur); } @@ -213,7 +207,6 @@ namespace Pamac { sortinfo = {0, Gtk.SortType.ASCENDING}; aur_search_results = new HashTable (str_hash, str_equal); - aur_infos = new HashTable (str_hash, str_equal); update_lists (); show_default_pkgs (); @@ -226,13 +219,17 @@ namespace Pamac { if (recurse) { transaction.flags |= Alpm.TransFlag.RECURSE; } - unowned Alpm.Package? pkg = Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, "yaourt"); + unowned Alpm.Package? pkg = Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, "yaourt"); if (pkg != null) { support_aur (enable_aur, search_aur); } } - public void support_aur (bool enable_aur, bool search_aur) { + void on_set_pkgreason_finished () { + refresh_packages_list (); + } + + void support_aur (bool enable_aur, bool search_aur) { if (enable_aur) { search_aur_button.set_active (search_aur); search_aur_box.set_visible (true); @@ -244,27 +241,20 @@ namespace Pamac { } } - public void set_buttons_sensitive (bool sensitive) { + void set_buttons_sensitive (bool sensitive) { valid_button.set_sensitive (sensitive); cancel_button.set_sensitive (sensitive); } - public void refresh_handle () { - alpm_config.get_handle (); - if (alpm_config.handle == null) { - stderr.printf (dgettext (null, "Failed to initialize alpm library")); - } - } - - public async Alpm.List search_all_dbs (string search_string) { + async Alpm.List search_all_dbs (string search_string) { var syncpkgs = new Alpm.List (); var needles = new Alpm.List (); string[] splitted = search_string.split (" "); foreach (unowned string part in splitted) { needles.add (part); } - var result = alpm_config.handle.localdb.search (needles); - foreach (var db in alpm_config.handle.syncdbs) { + var result = transaction.alpm_config.handle.localdb.search (needles); + foreach (var db in transaction.alpm_config.handle.syncdbs) { if (syncpkgs.length == 0) { syncpkgs = db.search (needles); } else { @@ -276,26 +266,26 @@ namespace Pamac { return result; } - public async Alpm.List get_group_pkgs (string grp_name) { + async Alpm.List get_group_pkgs (string grp_name) { var result = new Alpm.List (); - unowned Alpm.Group? grp = alpm_config.handle.localdb.get_group (grp_name); + unowned Alpm.Group? grp = transaction.alpm_config.handle.localdb.get_group (grp_name); if (grp != null) { foreach (var pkg in grp.packages) { result.add (pkg); } } - result.join (Alpm.find_group_pkgs (alpm_config.handle.syncdbs, grp_name).diff (result, (Alpm.List.CompareFunc) compare_name)); + result.join (Alpm.find_group_pkgs (transaction.alpm_config.handle.syncdbs, grp_name).diff (result, (Alpm.List.CompareFunc) compare_name)); //result.sort ((Alpm.List.CompareFunc) compare_name); return result; } - public async Alpm.List get_installed_pkgs () { - return alpm_config.handle.localdb.pkgcache.copy (); + async Alpm.List get_installed_pkgs () { + return transaction.alpm_config.handle.localdb.pkgcache.copy (); } - public async Alpm.List get_orphans () { + async Alpm.List get_orphans () { var result = new Alpm.List (); - foreach (var pkg in alpm_config.handle.localdb.pkgcache) { + foreach (var pkg in transaction.alpm_config.handle.localdb.pkgcache) { if (pkg.reason == Alpm.Package.Reason.DEPEND) { Alpm.List requiredby = pkg.compute_requiredby (); if (requiredby.length == 0) { @@ -311,9 +301,9 @@ namespace Pamac { return result; } - public async Alpm.List get_local_pkgs () { + async Alpm.List get_local_pkgs () { var result = new Alpm.List (); - foreach (var pkg in alpm_config.handle.localdb.pkgcache) { + foreach (var pkg in transaction.alpm_config.handle.localdb.pkgcache) { if (get_sync_pkg (pkg.name) == null) { result.add (pkg); } @@ -321,12 +311,12 @@ namespace Pamac { return result; } - public async Alpm.List get_repo_pkgs (string reponame) { + async Alpm.List get_repo_pkgs (string reponame) { var result = new Alpm.List (); - foreach (var db in alpm_config.handle.syncdbs) { + foreach (var db in transaction.alpm_config.handle.syncdbs) { if (db.name == reponame) { foreach (var sync_pkg in db.pkgcache) { - unowned Alpm.Package?local_pkg = alpm_config.handle.localdb.get_pkg (sync_pkg.name); + unowned Alpm.Package?local_pkg = transaction.alpm_config.handle.localdb.get_pkg (sync_pkg.name); if (local_pkg != null) { result.add (local_pkg); } else { @@ -338,11 +328,11 @@ namespace Pamac { return result; } -//~ public async Alpm.List get_all_pkgs () { +//~ async Alpm.List get_all_pkgs () { //~ var syncpkgs = new Alpm.List (); //~ var result = new Alpm.List (); -//~ result = alpm_config.handle.localdb.pkgcache.copy (); -//~ foreach (var db in alpm_config.handle.syncdbs) { +//~ result = transaction.alpm_config.handle.localdb.pkgcache.copy (); +//~ foreach (var db in transaction.alpm_config.handle.syncdbs) { //~ if (syncpkgs.length == 0) //~ syncpkgs = db.pkgcache.copy (); //~ else { @@ -354,9 +344,9 @@ namespace Pamac { //~ return result; //~ } - public unowned Alpm.Package? get_sync_pkg (string pkgname) { + unowned Alpm.Package? get_sync_pkg (string pkgname) { unowned Alpm.Package? pkg = null; - foreach (var db in alpm_config.handle.syncdbs) { + foreach (var db in transaction.alpm_config.handle.syncdbs) { pkg = db.get_pkg (pkgname); if (pkg != null) { break; @@ -365,7 +355,7 @@ namespace Pamac { return pkg; } - public void show_default_pkgs () { + void show_default_pkgs () { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); get_installed_pkgs.begin ((obj, res) => { var pkgs = get_installed_pkgs.end (res); @@ -373,13 +363,13 @@ namespace Pamac { }); } - public void update_lists () { + void update_lists () { Gtk.TreeIter iter; Gtk.TreeSelection selection; selection = repos_treeview.get_selection (); selection.changed.disconnect (on_repos_treeview_selection_changed); var groups_names = new GLib.List (); - foreach (var db in alpm_config.handle.syncdbs) { + foreach (var db in transaction.alpm_config.handle.syncdbs) { repos_list.insert_with_values (out iter, -1, 0, db.name); foreach (var group in db.groupcache) { if (groups_names.find_custom (group.name, strcmp) == null) { @@ -394,7 +384,7 @@ namespace Pamac { selection = groups_treeview.get_selection (); selection.changed.disconnect (on_groups_treeview_selection_changed); - foreach (var group in alpm_config.handle.localdb.groupcache) { + foreach (var group in transaction.alpm_config.handle.localdb.groupcache) { if (groups_names.find_custom (group.name, strcmp) == null) { groups_names.append (group.name); } @@ -419,7 +409,7 @@ namespace Pamac { selection.changed.connect_after (on_states_treeview_selection_changed); } - public void set_package_infos_list (Alpm.Package pkg) { + void set_package_infos_list (Alpm.Package pkg) { name_label.set_markup ("%s %s".printf (pkg.name, pkg.version)); desc_label.set_markup (Markup.escape_text (pkg.desc)); string url = Markup.escape_text (pkg.url); @@ -434,21 +424,13 @@ namespace Pamac { licenses_label.set_markup (licenses.str); } - public async Json.Object get_aur_infos (string aur_name) { - if (!aur_infos.contains (aur_name)) { - this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); - Json.Array results = AUR.multiinfo ({aur_name}); - aur_infos.insert (aur_name, results.get_object_element (0)); - this.get_window ().set_cursor (null); - } - return aur_infos.lookup (aur_name); - } - - public async void set_aur_infos_list (Json.Object pkg_info) { + async void set_aur_infos_list (Json.Object pkg_info) { unowned Json.Node? node; node = pkg_info.get_member ("Name"); unowned string name = node.get_string (); - Json.Object all_infos = yield get_aur_infos (name); + this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); + Json.Object all_infos = yield transaction.get_aur_infos (name); + this.get_window ().set_cursor (null); node = all_infos.get_member ("Version"); name_label.set_markup ("%s %s".printf (name, node.get_string ())); node = all_infos.get_member ("Description"); @@ -479,7 +461,7 @@ namespace Pamac { licenses_label.set_markup (licenses.str); } - public void set_package_deps_list (Alpm.Package pkg) { + void set_package_deps_list (Alpm.Package pkg) { deps_list.clear (); Gtk.TreeIter iter; unowned Alpm.List deps = pkg.depends; @@ -499,7 +481,7 @@ namespace Pamac { list = deps; string optdep_str = list.data.compute_string (); var optdep = new StringBuilder (optdep_str); - if (Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, optdep_str) != null) { + if (Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, optdep_str) != null) { optdep.append (" ["); optdep.append (dgettext (null, "Installed")); optdep.append ("]"); @@ -510,7 +492,7 @@ namespace Pamac { for (list = list.next (); list != null; list = list.next ()) { optdep_str = list.data.compute_string (); optdep = new StringBuilder (optdep_str); - if (Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, optdep_str) != null) { + if (Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, optdep_str) != null) { optdep.append (" ["); optdep.append (dgettext (null, "Installed")); optdep.append ("]"); @@ -580,12 +562,14 @@ namespace Pamac { } } - public async void set_aur_deps_list (Json.Object pkg_info) { + async void set_aur_deps_list (Json.Object pkg_info) { deps_list.clear (); Gtk.TreeIter iter; unowned Json.Node? node; node = pkg_info.get_member ("Name"); - Json.Object all_infos = yield get_aur_infos (node.get_string ()); + this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); + Json.Object all_infos = yield transaction.get_aur_infos (node.get_string ()); + this.get_window ().set_cursor (null); unowned Json.Array deps; uint i; uint length; @@ -636,7 +620,7 @@ namespace Pamac { deps = node.get_array (); string optdep_str = deps.get_string_element (0); var optdep = new StringBuilder (optdep_str); - if (Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, optdep_str) != null) { + if (Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, optdep_str) != null) { optdep.append (" ["); optdep.append (dgettext (null, "Installed")); optdep.append ("]"); @@ -649,7 +633,7 @@ namespace Pamac { while (i < length) { optdep_str = deps.get_string_element (i); optdep = new StringBuilder (optdep_str); - if (Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, optdep_str.split (": ", 2)[0]) != null) { + if (Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, optdep_str.split (": ", 2)[0]) != null) { optdep.append (" ["); optdep.append (dgettext (null, "Installed")); optdep.append ("]"); @@ -702,7 +686,7 @@ namespace Pamac { } } - public void set_package_details_list (Alpm.Package pkg) { + void set_package_details_list (Alpm.Package pkg) { details_list.clear (); Gtk.TreeIter iter; if (pkg.origin == Alpm.Package.From.SYNCDB) { @@ -768,7 +752,7 @@ namespace Pamac { } } - public void set_aur_details_list (Json.Object pkg_info) { + void set_aur_details_list (Json.Object pkg_info) { details_list.clear (); Gtk.TreeIter iter; unowned Json.Node? node; @@ -807,7 +791,7 @@ namespace Pamac { } } - public void set_package_files_list (Alpm.Package pkg) { + void set_package_files_list (Alpm.Package pkg) { StringBuilder text = new StringBuilder (); foreach (var file in pkg.files) { if (text.len != 0) { @@ -819,9 +803,9 @@ namespace Pamac { files_textview.buffer.set_text (text.str, (int) text.len); } - public void populate_packages_list (owned Alpm.List? pkgs) { - packages_treeview.freeze_child_notify (); - packages_treeview.set_model (null); + void populate_packages_list (owned Alpm.List? pkgs) { + Gtk.TreeSelection selection = packages_treeview.get_selection (); + selection.changed.disconnect (on_packages_treeview_selection_changed); // populate liststore packages_list = new PackagesModel ((owned) pkgs, this); @@ -849,14 +833,15 @@ namespace Pamac { } packages_treeview.set_model (packages_list); - packages_treeview.thaw_child_notify (); + selection.changed.connect (on_packages_treeview_selection_changed); + display_package_properties (); this.get_window ().set_cursor (null); } - public void populate_aur_list (Json.Array? pkgs_infos) { - aur_treeview.freeze_child_notify (); - aur_treeview.set_model (null); + void populate_aur_list (Json.Array? pkgs_infos) { + Gtk.TreeSelection selection = aur_treeview.get_selection (); + selection.changed.disconnect (on_aur_treeview_selection_changed); // populate liststore aur_list = new AURModel (pkgs_infos, this); @@ -881,12 +866,13 @@ namespace Pamac { } aur_treeview.set_model (aur_list); - aur_treeview.thaw_child_notify (); + selection.changed.connect (on_aur_treeview_selection_changed); + display_package_properties(); this.get_window ().set_cursor (null); } - public void refresh_packages_list () { + void refresh_packages_list () { switch (filters_notebook.get_current_page ()) { case 0: if (search_aur_button.get_active ()) { @@ -916,22 +902,108 @@ namespace Pamac { } } - public void display_package_properties () { + void display_package_properties () { switch (packages_notebook.get_current_page ()) { case 0: Gtk.TreeSelection selection = packages_treeview.get_selection (); GLib.List selected = selection.get_selected_rows (null); - if (selected.length () > 0) { - // display info for the first package of the selection - unowned Alpm.Package? pkg = packages_list.get_pkg_at_path (selected.nth_data (0)); - if (pkg == null) { - return; - } - if (pkg.origin == Alpm.Package.From.LOCALDB) { - files_scrolledwindow.visible = true; + unowned GLib.List? first_element = selected.nth (0); + if (first_element == null) { + Gtk.TreeIter? iter; + if (current_package_path == null) { + packages_list.get_iter_first (out iter); + selection.select_iter (iter); + current_package_path = packages_list.get_path (iter).to_string (); } else { - files_scrolledwindow.visible = false; + // check if current_package_path is valid else select first iter + if (packages_list.get_iter_from_string (out iter, current_package_path)) { + selection.select_iter (iter); + } else { + packages_list.get_iter_first (out iter); + selection.select_iter (iter); + current_package_path = packages_list.get_path (iter).to_string (); + } } + } else { + // display info for the first package of the selection + current_package_path = first_element.data.to_string (); + } + unowned Alpm.Package? pkg = packages_list.get_pkg_at_path (new Gtk.TreePath.from_string (current_package_path)); + if (pkg == null) { + return; + } + if (pkg.origin == Alpm.Package.From.LOCALDB) { + files_scrolledwindow.visible = true; + } else { + files_scrolledwindow.visible = false; + } + switch (properties_notebook.get_current_page ()) { + case 0: + set_package_infos_list (pkg); + break; + case 1: + set_package_deps_list (pkg); + break; + case 2: + set_package_details_list (pkg); + break; + case 3: + if (pkg.origin == Alpm.Package.From.LOCALDB) { + set_package_files_list (pkg); + } + break; + default: + break; + } + break; + case 1: + Gtk.TreeSelection selection = aur_treeview.get_selection (); + GLib.List selected = selection.get_selected_rows (null); + unowned GLib.List? first_element = selected.nth (0); + if (first_element == null) { + Gtk.TreeIter? iter; + if (current_aur_path == null) { + aur_list.get_iter_first (out iter); + selection.select_iter (iter); + current_aur_path = aur_list.get_path (iter).to_string (); + } else { + // check if current_package_path is valid else select first iter + if (aur_list.get_iter_from_string (out iter, current_aur_path)) { + selection.select_iter (iter); + } else { + aur_list.get_iter_first (out iter); + selection.select_iter (iter); + current_aur_path = aur_list.get_path (iter).to_string (); + } + } + } else { + // display info for the first package of the selection + current_aur_path = first_element.data.to_string (); + } + unowned Json.Object? pkg_info = aur_list.get_pkg_at_path (new Gtk.TreePath.from_string (current_aur_path)); + if (pkg_info == null) { + return; + } + unowned Alpm.Package? pkg = transaction.alpm_config.handle.localdb.get_pkg (pkg_info.get_string_member ("Name")); + if (pkg == null) { + files_scrolledwindow.visible = false; + switch (properties_notebook.get_current_page ()) { + case 0: + set_aur_infos_list.begin (pkg_info); + break; + case 1: + set_aur_deps_list.begin (pkg_info); + break; + case 2: + set_aur_details_list (pkg_info); + break; + case 3: + break; + default: + break; + } + } else { + files_scrolledwindow.visible = true; switch (properties_notebook.get_current_page ()) { case 0: set_package_infos_list (pkg); @@ -943,93 +1015,42 @@ namespace Pamac { set_package_details_list (pkg); break; case 3: - if (pkg.origin == Alpm.Package.From.LOCALDB) { - set_package_files_list (pkg); - } + set_package_files_list (pkg); break; default: break; } } break; - case 1: - Gtk.TreeSelection selection = aur_treeview.get_selection (); - GLib.List selected = selection.get_selected_rows (null); - if (selected.length () > 0) { - // display info for the first package of the selection - unowned Json.Object? pkg_info = aur_list.get_pkg_at_path (selected.nth_data (0)); - if (pkg_info == null) { - return; - } - unowned Alpm.Package? pkg = alpm_config.handle.localdb.get_pkg (pkg_info.get_string_member ("Name")); - if (pkg != null) { - files_scrolledwindow.visible = true; - switch (properties_notebook.get_current_page ()) { - case 0: - set_package_infos_list (pkg); - break; - case 1: - set_package_deps_list (pkg); - break; - case 2: - set_package_details_list (pkg); - break; - case 3: - set_package_files_list (pkg); - break; - default: - break; - } - } else { - files_scrolledwindow.visible = false; - switch (properties_notebook.get_current_page ()) { - case 0: - set_aur_infos_list.begin (pkg_info); - break; - case 1: - set_aur_deps_list.begin (pkg_info); - break; - case 2: - set_aur_details_list (pkg_info); - break; - case 3: - break; - default: - break; - } - break; - } - } - break; default: break; } } [GtkCallback] - public void on_packages_treeview_selection_changed () { + void on_packages_treeview_selection_changed () { display_package_properties (); } [GtkCallback] - public void on_aur_treeview_selection_changed () { + void on_aur_treeview_selection_changed () { display_package_properties (); } [GtkCallback] - public void on_properties_notebook_switch_page (Gtk.Widget page, uint page_num) { + void on_properties_notebook_switch_page (Gtk.Widget page, uint page_num) { display_package_properties (); } [GtkCallback] - public void on_packages_treeview_row_activated (Gtk.TreeView treeview, Gtk.TreePath path, Gtk.TreeViewColumn column) { + void on_packages_treeview_row_activated (Gtk.TreeView treeview, Gtk.TreePath path, Gtk.TreeViewColumn column) { unowned Alpm.Package? pkg = packages_list.get_pkg_at_path (path); if (pkg != null) { if (transaction.to_add.remove (pkg.name)) { } else if (transaction.to_remove.remove (pkg.name)) { } else { if (pkg.origin == Alpm.Package.From.LOCALDB) { - if (alpm_config.holdpkgs.find_custom (pkg.name, strcmp) == null) { + if (transaction.alpm_config.holdpkgs.find_custom (pkg.name, strcmp) == null) { transaction.to_remove.add (pkg.name); } } else { @@ -1047,13 +1068,13 @@ namespace Pamac { } [GtkCallback] - public void on_aur_treeview_row_activated (Gtk.TreeView treeview, Gtk.TreePath path, Gtk.TreeViewColumn column) { + void on_aur_treeview_row_activated (Gtk.TreeView treeview, Gtk.TreePath path, Gtk.TreeViewColumn column) { unowned Json.Object? pkg_info = aur_list.get_pkg_at_path (path); if (pkg_info != null) { - unowned Alpm.Package? pkg = alpm_config.handle.localdb.get_pkg (pkg_info.get_string_member ("Name")); + unowned Alpm.Package? pkg = transaction.alpm_config.handle.localdb.get_pkg (pkg_info.get_string_member ("Name")); if (pkg != null) { if (pkg.origin == Alpm.Package.From.LOCALDB) { - if (alpm_config.holdpkgs.find_custom (pkg.name, strcmp) == null) { + if (transaction.alpm_config.holdpkgs.find_custom (pkg.name, strcmp) == null) { transaction.to_remove.add (pkg.name); } } @@ -1100,7 +1121,7 @@ namespace Pamac { void on_remove_item_activate () { foreach (var pkg in selected_pkgs) { transaction.to_add.remove (pkg.name); - if (alpm_config.holdpkgs.find_custom (pkg.name, strcmp) == null) { + if (transaction.alpm_config.holdpkgs.find_custom (pkg.name, strcmp) == null) { if (pkg.origin == Alpm.Package.From.LOCALDB) { transaction.to_remove.add (pkg.name); } @@ -1129,13 +1150,13 @@ namespace Pamac { } } - public void choose_opt_dep (Alpm.List pkgs) { + void choose_opt_dep (Alpm.List pkgs) { foreach (var pkg in pkgs) { var choose_dep_dialog = new ChooseDependenciesDialog (this); Gtk.TreeIter iter; int length = 0; foreach (var optdep in pkg.optdepends) { - if (Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, optdep.name) == null) { + if (Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, optdep.name) == null) { length++; choose_dep_dialog.deps_list.insert_with_values (out iter, -1, 0, false, @@ -1144,7 +1165,7 @@ namespace Pamac { } } choose_dep_dialog.label.set_markup ("%s".printf ( - dngettext (null, "%s has %u uninstalled optional dependency.\nChoose if you would like to install it", + ngettext ("%s has %u uninstalled optional dependency.\nChoose if you would like to install it", "%s has %u uninstalled optional dependencies.\nChoose those you would like to install", length).printf (pkg.name, length))); if (choose_dep_dialog.run () == Gtk.ResponseType.OK) { choose_dep_dialog.deps_list.foreach ((model, path, iter) => { @@ -1180,10 +1201,9 @@ namespace Pamac { foreach (var pkg in selected_pkgs) { transaction.start_set_pkgreason (pkg.name, Alpm.Package.Reason.EXPLICIT); } - refresh_packages_list (); } - public async void search_in_aur (string search_string) { + async void search_in_aur (string search_string) { if (!aur_search_results.contains (search_string)) { Json.Array results = AUR.search (search_string.split (" ")); aur_search_results.insert (search_string, results); @@ -1191,7 +1211,7 @@ namespace Pamac { } [GtkCallback] - public void on_packages_notebook_switch_page (Gtk.Widget page, uint page_num) { + void on_packages_notebook_switch_page (Gtk.Widget page, uint page_num) { Gtk.TreeModel model; Gtk.TreeIter? iter; Gtk.TreeSelection selection = search_treeview.get_selection (); @@ -1219,7 +1239,7 @@ namespace Pamac { } [GtkCallback] - public bool on_packages_treeview_button_press_event (Gdk.EventButton event) { + bool on_packages_treeview_button_press_event (Gdk.EventButton event) { packages_treeview.grab_focus (); // Check if right mouse button was clicked if (event.type == Gdk.EventType.BUTTON_PRESS && event.button == 3) { @@ -1269,7 +1289,7 @@ namespace Pamac { clicked_pkg = selected_pkgs.data; if (clicked_pkg.origin == Alpm.Package.From.LOCALDB) { foreach (var optdep in clicked_pkg.optdepends) { - if (Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, optdep.name) == null) { + if (Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, optdep.name) == null) { install_optional_deps_item.set_sensitive (true); break; } @@ -1293,7 +1313,7 @@ namespace Pamac { } [GtkCallback] - public bool on_aur_treeview_button_press_event (Gdk.EventButton event) { + bool on_aur_treeview_button_press_event (Gdk.EventButton event) { aur_treeview.grab_focus (); // Check if right mouse button was clicked if (event.type == Gdk.EventType.BUTTON_PRESS && event.button == 3) { @@ -1319,7 +1339,7 @@ namespace Pamac { selected_pkgs = new Alpm.List (); selected_aur = new GLib.List (); foreach (unowned Gtk.TreePath path in selected_paths) { - unowned Alpm.Package? pkg = alpm_config.handle.localdb.get_pkg (clicked_pkg_info.get_string_member ("Name")); + unowned Alpm.Package? pkg = transaction.alpm_config.handle.localdb.get_pkg (clicked_pkg_info.get_string_member ("Name")); if (pkg != null) { selected_pkgs.add (pkg); // there is for sure a pkg to remove @@ -1354,7 +1374,7 @@ namespace Pamac { } [GtkCallback] - public void on_packages_name_column_clicked () { + void on_packages_name_column_clicked () { Gtk.SortType new_order; if (!packages_name_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1371,7 +1391,7 @@ namespace Pamac { } [GtkCallback] - public void on_aur_name_column_clicked () { + void on_aur_name_column_clicked () { Gtk.SortType new_order; if (!aur_name_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1388,7 +1408,7 @@ namespace Pamac { } [GtkCallback] - public void on_packages_state_column_clicked () { + void on_packages_state_column_clicked () { Gtk.SortType new_order; if (!packages_state_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1405,7 +1425,7 @@ namespace Pamac { } [GtkCallback] - public void on_aur_state_column_clicked () { + void on_aur_state_column_clicked () { Gtk.SortType new_order; if (!aur_state_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1422,7 +1442,7 @@ namespace Pamac { } [GtkCallback] - public void on_packages_version_column_clicked () { + void on_packages_version_column_clicked () { Gtk.SortType new_order; if (!packages_version_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1439,7 +1459,7 @@ namespace Pamac { } [GtkCallback] - public void on_aur_version_column_clicked () { + void on_aur_version_column_clicked () { Gtk.SortType new_order; if (!aur_version_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1456,7 +1476,7 @@ namespace Pamac { } [GtkCallback] - public void on_packages_repo_column_clicked () { + void on_packages_repo_column_clicked () { Gtk.SortType new_order; if (!packages_repo_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1473,7 +1493,7 @@ namespace Pamac { } [GtkCallback] - public void on_packages_size_column_clicked () { + void on_packages_size_column_clicked () { Gtk.SortType new_order; if (!packages_size_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1490,7 +1510,7 @@ namespace Pamac { } [GtkCallback] - public void on_aur_votes_column_clicked () { + void on_aur_votes_column_clicked () { Gtk.SortType new_order; if (!aur_votes_column.sort_indicator) { new_order = Gtk.SortType.ASCENDING; @@ -1507,7 +1527,7 @@ namespace Pamac { } [GtkCallback] - public void on_search_entry_activate () { + void on_search_entry_activate () { unowned string search_string = search_entry.get_text (); if (search_string != "") { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); @@ -1540,7 +1560,6 @@ namespace Pamac { }); } if (!found) { - search_list.insert_with_values (out iter, -1, 0, search_string); // we select the iter in search_list // it will populate the list with the selection changed signal @@ -1550,12 +1569,12 @@ namespace Pamac { } [GtkCallback] - public void on_search_entry_icon_press () { + void on_search_entry_icon_press () { on_search_entry_activate (); } [GtkCallback] - public void on_search_treeview_selection_changed () { + void on_search_treeview_selection_changed () { Gtk.TreeModel model; Gtk.TreeIter? iter; Gtk.TreeSelection selection = search_treeview.get_selection (); @@ -1597,7 +1616,7 @@ namespace Pamac { } [GtkCallback] - public void on_groups_treeview_selection_changed () { + void on_groups_treeview_selection_changed () { Gtk.TreeModel model; Gtk.TreeIter? iter; Gtk.TreeSelection selection = groups_treeview.get_selection (); @@ -1613,7 +1632,7 @@ namespace Pamac { } [GtkCallback] - public void on_states_treeview_selection_changed () { + void on_states_treeview_selection_changed () { Gtk.TreeModel model; Gtk.TreeIter? treeiter; Gtk.TreeSelection selection = states_treeview.get_selection (); @@ -1625,7 +1644,7 @@ namespace Pamac { if (state == dgettext (null, "To install")) { var pkgs = new Alpm.List (); foreach (unowned string pkgname in transaction.to_add) { - unowned Alpm.Package? pkg = alpm_config.handle.localdb.get_pkg (pkgname); + unowned Alpm.Package? pkg = transaction.alpm_config.handle.localdb.get_pkg (pkgname); if (pkg == null) { pkg = get_sync_pkg (pkgname); } @@ -1637,7 +1656,7 @@ namespace Pamac { } else if (state == dgettext (null, "To remove")) { var pkgs = new Alpm.List (); foreach (unowned string pkgname in transaction.to_remove) { - unowned Alpm.Package? pkg = alpm_config.handle.localdb.get_pkg (pkgname); + unowned Alpm.Package? pkg = transaction.alpm_config.handle.localdb.get_pkg (pkgname); if (pkg != null) { pkgs.add (pkg); } @@ -1663,7 +1682,7 @@ namespace Pamac { } [GtkCallback] - public void on_repos_treeview_selection_changed () { + void on_repos_treeview_selection_changed () { Gtk.TreeModel model; Gtk.TreeIter? iter; Gtk.TreeSelection selection = repos_treeview.get_selection (); @@ -1687,12 +1706,12 @@ namespace Pamac { } [GtkCallback] - public void on_filters_notebook_switch_page (Gtk.Widget page, uint page_num) { + void on_filters_notebook_switch_page (Gtk.Widget page, uint page_num) { refresh_packages_list (); } [GtkCallback] - public void on_history_item_activate () { + void on_history_item_activate () { var file = GLib.File.new_for_path ("/var/log/pamac.log"); if (!file.query_exists ()) { GLib.stderr.printf ("File '%s' doesn't exist.\n", file.get_path ()); @@ -1724,7 +1743,7 @@ namespace Pamac { } [GtkCallback] - public void on_local_item_activate () { + void on_local_item_activate () { Gtk.FileChooserDialog chooser = new Gtk.FileChooserDialog ( dgettext (null, "Install Local Packages"), this, Gtk.FileChooserAction.OPEN, dgettext (null, "_Cancel"), Gtk.ResponseType.CANCEL, @@ -1760,31 +1779,13 @@ namespace Pamac { } } - public async void run_preferences_dialog () { - SourceFunc callback = run_preferences_dialog.callback; - ulong handler_id = transaction.daemon.get_authorization_finished.connect ((authorized) => { - if (authorized) { - var preferences_dialog = new PreferencesDialog (this, transaction); - preferences_dialog.run (); - preferences_dialog.destroy (); - while (Gtk.events_pending ()) { - Gtk.main_iteration (); - } - } - Idle.add((owned) callback); - }); - transaction.start_get_authorization (); - yield; - transaction.daemon.disconnect (handler_id); + [GtkCallback] + void on_preferences_item_activate () { + transaction.run_preferences_dialog.begin (); } [GtkCallback] - public void on_preferences_item_activate () { - run_preferences_dialog.begin (); - } - - [GtkCallback] - public void on_about_item_activate () { + void on_about_item_activate () { Gtk.show_about_dialog ( this, "program_name", "Pamac", @@ -1797,13 +1798,13 @@ namespace Pamac { } [GtkCallback] - public void on_valid_button_clicked () { + void on_valid_button_clicked () { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); transaction.run (); } [GtkCallback] - public void on_cancel_button_clicked () { + void on_cancel_button_clicked () { transaction.clear_lists (); set_buttons_sensitive (false); // force a display refresh @@ -1812,15 +1813,14 @@ namespace Pamac { } [GtkCallback] - public void on_refresh_button_clicked () { + void on_refresh_button_clicked () { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); transaction.start_refresh (false); } - public void on_transaction_finished (bool database_modified) { + void on_transaction_finished (bool database_modified) { if (database_modified) { set_buttons_sensitive (false); - refresh_handle (); refresh_packages_list (); } else { this.get_window ().set_cursor (null); diff --git a/src/mirrors_config.vala b/src/mirrors_config.vala index c1c61ed..3414562 100644 --- a/src/mirrors_config.vala +++ b/src/mirrors_config.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014-2015 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -17,9 +17,9 @@ * along with this program. If not, see . */ -namespace Alpm { +namespace Pamac { [Compact] - public class MirrorsConfig: Object { + public class MirrorsConfig { public string conf_path; public string mirrorlists_dir; public string choosen_generation_method; diff --git a/src/package.vala b/src/package.vala deleted file mode 100644 index 0c36423..0000000 --- a/src/package.vala +++ /dev/null @@ -1,95 +0,0 @@ -/* - * pamac-vala - * - * Copyright (C) 2014-2015 Guillaume Benoit - * - * 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 3 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 get of the GNU General Public License - * along with this program. If not, see . - */ - -namespace Pamac { - public struct Package { - public string name; - public string version; - public string desc; - public string repo; - public uint64 size; - public string size_string; - public string url; - public string licenses; - public int reason; - - public Package (Alpm.Package? alpm_pkg, Json.Object? aur_json) { - if (alpm_pkg != null) { - name = alpm_pkg.name; - version = alpm_pkg.version; - desc = alpm_pkg.desc; - repo = alpm_pkg.db != null ? alpm_pkg.db.name : ""; - size = alpm_pkg.isize; - size_string = format_size (alpm_pkg.isize); - // alpm pkg url can be null - url = alpm_pkg.url ?? ""; - StringBuilder licenses_build = new StringBuilder (); - foreach (var license in alpm_pkg.licenses) { - if (licenses_build.len != 0) { - licenses_build.append (" "); - } - licenses_build.append (license); - } - licenses = licenses_build.str; - reason = alpm_pkg.reason; - } else if (aur_json != null ) { - name = aur_json.get_string_member ("Name"); - version = aur_json.get_string_member ("Version"); - desc = aur_json.get_string_member ("Description"); - repo = "AUR"; - size = 0; - size_string = ""; - url = aur_json.get_string_member ("URL") ?? ""; - licenses = aur_json.get_string_member ("License") ?? dgettext (null, "Unknown"); - reason = 0; - } else { - name = ""; - version = ""; - desc = ""; - repo = ""; - size = 0; - size_string = ""; - url = ""; - licenses= ""; - reason = 0; - } - } - } - - public struct PackageDetails { - string repo; - string has_signature; - int reason; - string packager; - string install_date; - string[] groups; - string[] backups; - } - - public struct PackageDeps { - string repo; - string[] depends; - string[] optdepends; - string[] requiredby; - string[] optionalfor; - string[] provides; - string[] replaces; - string[] conflicts; - } -} diff --git a/src/packages_model.vala b/src/packages_model.vala index f03bb9c..7f304f4 100644 --- a/src/packages_model.vala +++ b/src/packages_model.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014-2015 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -19,7 +19,7 @@ namespace Pamac { - public class PackagesModel : Object, Gtk.TreeModel { + class PackagesModel : Object, Gtk.TreeModel { private Alpm.List? pkgs; private ManagerWindow manager_window; @@ -43,11 +43,11 @@ namespace Pamac { } } - public Gtk.TreeModelFlags get_flags () { + Gtk.TreeModelFlags get_flags () { return Gtk.TreeModelFlags.LIST_ONLY | Gtk.TreeModelFlags.ITERS_PERSIST; } - public void get_value (Gtk.TreeIter iter, int column, out Value val) { + void get_value (Gtk.TreeIter iter, int column, out Value val) { unowned Alpm.Package? pkg = pkgs.nth (iter.stamp).data; switch (column) { case 0: @@ -62,7 +62,7 @@ namespace Pamac { val = Value (typeof (Object)); if (pkg != null) { if (pkg.origin == Alpm.Package.From.LOCALDB) { - if (manager_window.alpm_config.holdpkgs.find_custom (pkg.name, strcmp) != null) { + if (manager_window.transaction.alpm_config.holdpkgs.find_custom (pkg.name, strcmp) != null) { val.set_object (manager_window.locked_icon); } else if (manager_window.transaction.to_add.contains (pkg.name)) { val.set_object (manager_window.to_reinstall_icon); @@ -102,30 +102,38 @@ namespace Pamac { } } - public bool get_iter (out Gtk.TreeIter iter, Gtk.TreePath path) {; - if (path.get_depth () != 1) { - return invalid_iter (out iter); + bool get_iter (out Gtk.TreeIter iter, Gtk.TreePath path) { + if (path.get_depth () == 1) { + int pos = path.get_indices ()[0]; + // return a valid iter for pos == 0 to display "No package found" + if (pos < pkgs.length || pos == 0) { + iter = Gtk.TreeIter (); + iter.stamp = pos; + return true; + } } - iter = Gtk.TreeIter (); - int pos = path.get_indices ()[0]; - iter.stamp = pos; - return true; + return invalid_iter (out iter); } - public int get_n_columns () { + int get_n_columns () { // name, icon, version, repo, isize return 5; } - public Gtk.TreePath? get_path (Gtk.TreeIter iter) { - return new Gtk.TreePath.from_indices (iter.stamp); + Gtk.TreePath? get_path (Gtk.TreeIter iter) { + int pos = iter.stamp; + // return a valid path for pos == 0 to display "No package found" + if (pos < pkgs.length || pos == 0) { + return new Gtk.TreePath.from_indices (pos); + } + return null; } - public int iter_n_children (Gtk.TreeIter? iter) { + int iter_n_children (Gtk.TreeIter? iter) { return 0; } - public bool iter_next (ref Gtk.TreeIter iter) { + bool iter_next (ref Gtk.TreeIter iter) { int pos = (iter.stamp) + 1; if (pos >= pkgs.length) { return false; @@ -134,7 +142,7 @@ namespace Pamac { return true; } - public bool iter_previous (ref Gtk.TreeIter iter) { + bool iter_previous (ref Gtk.TreeIter iter) { int pos = iter.stamp; if (pos >= 0) { return false; @@ -143,23 +151,23 @@ namespace Pamac { return true; } - public bool iter_nth_child (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int n) { + bool iter_nth_child (out Gtk.TreeIter iter, Gtk.TreeIter? parent, int n) { return invalid_iter (out iter); } - public bool iter_children (out Gtk.TreeIter iter, Gtk.TreeIter? parent) { + bool iter_children (out Gtk.TreeIter iter, Gtk.TreeIter? parent) { return invalid_iter (out iter); } - public bool iter_has_child (Gtk.TreeIter iter) { + bool iter_has_child (Gtk.TreeIter iter) { return false; } - public bool iter_parent (out Gtk.TreeIter iter, Gtk.TreeIter child) { + bool iter_parent (out Gtk.TreeIter iter, Gtk.TreeIter child) { return invalid_iter (out iter); } - private bool invalid_iter (out Gtk.TreeIter iter) { + bool invalid_iter (out Gtk.TreeIter iter) { iter = Gtk.TreeIter (); iter.stamp = -1; return false; @@ -167,7 +175,11 @@ namespace Pamac { // custom get pkg function public unowned Alpm.Package? get_pkg_at_path (Gtk.TreePath path) { - return pkgs.nth (path.get_indices ()[0]).data; + int pos = path.get_indices ()[0]; + if (pos < pkgs.length) { + return pkgs.nth (pos).data; + } + return null; } // custom sort functions diff --git a/src/pamac_config.vala b/src/pamac_config.vala index b7f5724..c263ba9 100644 --- a/src/pamac_config.vala +++ b/src/pamac_config.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014-2015 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -17,8 +17,6 @@ * along with this program. If not, see . */ -const string VERSION = "3.1.0"; - namespace Pamac { [Compact] public class Config { @@ -37,7 +35,7 @@ namespace Pamac { //get environment variables environment_variables = new HashTable (str_hash, str_equal); var utsname = Posix.utsname(); - environment_variables.insert ("HTTP_USER_AGENT", "pamac/%s (%s %s)".printf (VERSION, utsname.sysname, utsname.machine)); + environment_variables.insert ("HTTP_USER_AGENT", "pamac (%s %s)".printf (utsname.sysname, utsname.machine)); unowned string? variable = Environment.get_variable ("http_proxy"); if (variable != null) { environment_variables.insert ("http_proxy", variable); diff --git a/src/preferences_dialog.vala b/src/preferences_dialog.vala index 855df8c..6f586ff 100644 --- a/src/preferences_dialog.vala +++ b/src/preferences_dialog.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014 Guillaume Benoit + * Copyright (C) 2015-2016 Guillaume Benoit * * 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 @@ -20,61 +20,55 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/preferences/preferences_dialog.ui")] - public class PreferencesDialog : Gtk.Dialog { + class PreferencesDialog : Gtk.Dialog { [GtkChild] - public Gtk.Switch remove_unrequired_deps_button; + Gtk.Switch remove_unrequired_deps_button; [GtkChild] - public Gtk.Switch check_space_button; + Gtk.Switch check_space_button; [GtkChild] - public Gtk.Switch check_updates_button; + Gtk.Switch check_updates_button; [GtkChild] - public Gtk.Label refresh_period_label; + Gtk.Label refresh_period_label; [GtkChild] - public Gtk.SpinButton refresh_period_spin_button; + Gtk.SpinButton refresh_period_spin_button; [GtkChild] - public Gtk.CheckButton no_update_hide_icon_checkbutton; + Gtk.CheckButton no_update_hide_icon_checkbutton; [GtkChild] - public Gtk.Box ignorepkgs_box; + Gtk.Box ignorepkgs_box; [GtkChild] - public Gtk.ListStore ignorepkgs_liststore; + Gtk.ListStore ignorepkgs_liststore; [GtkChild] - public Gtk.TreeView ignorepkgs_treeview; + Gtk.TreeView ignorepkgs_treeview; [GtkChild] - public Gtk.Box mirrors_config_box; + Gtk.Box mirrors_config_box; [GtkChild] - public Gtk.ComboBoxText mirrors_country_comboboxtext; + Gtk.ComboBoxText mirrors_country_comboboxtext; [GtkChild] - public Gtk.ComboBoxText mirrors_list_generation_method_comboboxtext; + Gtk.ComboBoxText mirrors_list_generation_method_comboboxtext; [GtkChild] - public Gtk.Button generate_mirrors_list_button; + Gtk.Button generate_mirrors_list_button; [GtkChild] - public Gtk.Box aur_config_box; + Gtk.Box aur_config_box; [GtkChild] - public Gtk.Switch enable_aur_button; + Gtk.Switch enable_aur_button; [GtkChild] - public Gtk.CheckButton search_aur_checkbutton; + Gtk.CheckButton search_aur_checkbutton; [GtkChild] - public Gtk.CheckButton check_aur_updates_checkbutton; + Gtk.CheckButton check_aur_updates_checkbutton; [GtkChild] - public Gtk.CheckButton no_confirm_build_checkbutton; + Gtk.CheckButton no_confirm_build_checkbutton; Transaction transaction; - Alpm.Config alpm_config; uint64 previous_refresh_period; - public PreferencesDialog (Gtk.ApplicationWindow? window, Transaction transaction) { - Object (transient_for: window, use_header_bar: 0); + public PreferencesDialog (Transaction transaction) { + Object (transient_for: transaction.application_window, use_header_bar: 0); this.transaction = transaction; - alpm_config = new Alpm.Config ("/etc/pacman.conf"); - alpm_config.get_handle (); - if (alpm_config.handle == null) { - stderr.printf (dgettext (null, "Failed to initialize alpm library")); - } refresh_period_label.set_markup (dgettext (null, "How often to check for updates, value in hours") +":"); remove_unrequired_deps_button.active = transaction.pamac_config.recurse; - check_space_button.active = (alpm_config.checkspace == 1); + check_space_button.active = (transaction.alpm_config.checkspace == 1); if (transaction.pamac_config.refresh_period == 0) { check_updates_button.active = false; refresh_period_label.sensitive = false; @@ -93,22 +87,22 @@ namespace Pamac { // populate ignorepkgs_liststore Gtk.TreeIter iter; - for (unowned Alpm.List list = alpm_config.ignorepkgs; list != null; list = list.next ()) { + for (unowned Alpm.List list = transaction.alpm_config.ignorepkgs; list != null; list = list.next ()) { ignorepkgs_liststore.insert_with_values (out iter, -1, 0, list.data); } remove_unrequired_deps_button.state_set.connect (on_remove_unrequired_deps_button_state_set); check_space_button.state_set.connect (on_check_space_button_state_set); - transaction.daemon.write_alpm_config_finished.connect (on_write_alpm_config_finished); + transaction.write_alpm_config_finished.connect (on_write_alpm_config_finished); check_updates_button.state_set.connect (on_check_updates_button_state_set); refresh_period_spin_button.value_changed.connect (on_refresh_period_spin_button_value_changed); no_update_hide_icon_checkbutton.toggled.connect (on_no_update_hide_icon_checkbutton_toggled); - transaction.daemon.write_pamac_config_finished.connect (on_write_pamac_config_finished); + transaction.write_pamac_config_finished.connect (on_write_pamac_config_finished); - unowned Alpm.Package? pkg = Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, "pacman-mirrorlist"); + unowned Alpm.Package? pkg = Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, "pacman-mirrorlist"); if (pkg == null) { mirrors_config_box.visible = false; } else { - var mirrors_config = new Alpm.MirrorsConfig ("/etc/pacman-mirrors.conf"); + var mirrors_config = new MirrorsConfig ("/etc/pacman-mirrors.conf"); mirrors_country_comboboxtext.append_text (dgettext (null, "Worldwide")); mirrors_country_comboboxtext.active = 0; int index = 1; @@ -129,10 +123,10 @@ namespace Pamac { } mirrors_country_comboboxtext.changed.connect (on_mirrors_country_comboboxtext_changed); mirrors_list_generation_method_comboboxtext.changed.connect (on_mirrors_list_generation_method_comboboxtext_changed); - transaction.daemon.write_mirrors_config_finished.connect (on_write_mirrors_config_finished); + transaction.write_mirrors_config_finished.connect (on_write_mirrors_config_finished); } - pkg = Alpm.find_satisfier (alpm_config.handle.localdb.pkgcache, "yaourt"); + pkg = Alpm.find_satisfier (transaction.alpm_config.handle.localdb.pkgcache, "yaourt"); if (pkg == null) { aur_config_box.visible = false; } else { @@ -254,9 +248,9 @@ namespace Pamac { [GtkCallback] void on_add_ignorepkgs_button_clicked () { var choose_ignorepkgs_dialog = new ChooseIgnorepkgsDialog (this); - foreach (var pkg in alpm_config.handle.localdb.pkgcache) { + foreach (var pkg in transaction.alpm_config.handle.localdb.pkgcache) { Gtk.TreeIter iter; - if (alpm_config.ignorepkgs.find_str (pkg.name) == null) { + if (transaction.alpm_config.ignorepkgs.find_str (pkg.name) == null) { choose_ignorepkgs_dialog.pkgs_list.insert_with_values (out iter, -1, 0, false, 1, pkg.name); } else { choose_ignorepkgs_dialog.pkgs_list.insert_with_values (out iter, -1, 0, true, 1, pkg.name); @@ -317,8 +311,7 @@ namespace Pamac { // re-populate ignorepkgs_liststore Gtk.TreeIter iter; ignorepkgs_liststore.clear (); - alpm_config.reload (); - for (unowned Alpm.List list = alpm_config.ignorepkgs; list != null; list = list.next ()) { + for (unowned Alpm.List list = transaction.alpm_config.ignorepkgs; list != null; list = list.next ()) { ignorepkgs_liststore.insert_with_values (out iter, -1, 0, list.data); } } diff --git a/src/progress_dialog.vala b/src/progress_dialog.vala index 8a94332..f42854f 100644 --- a/src/progress_dialog.vala +++ b/src/progress_dialog.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014-2015 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -20,7 +20,7 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/transaction/progress_dialog.ui")] - public class ProgressDialog : Gtk.Dialog { + class ProgressDialog : Gtk.Dialog { [GtkChild] public Gtk.ProgressBar progressbar; @@ -63,7 +63,7 @@ namespace Pamac { } [GtkCallback] - public void on_close_button_clicked () { + void on_close_button_clicked () { this.hide (); while (Gtk.events_pending ()) { Gtk.main_iteration (); diff --git a/src/refresh.vala b/src/refresh.vala index fd2c5bc..b0961da 100644 --- a/src/refresh.vala +++ b/src/refresh.vala @@ -18,12 +18,8 @@ */ namespace Pamac { - public struct ErrorInfos { - public string message; - public string[] details; - } [DBus (name = "org.manjaro.pamac")] - public interface Daemon : Object { + interface Daemon : Object { public abstract void start_refresh (bool force) throws IOError; [DBus (no_reply = true)] public abstract void quit () throws IOError; diff --git a/src/transaction.vala b/src/transaction.vala index 86709eb..c80a9dd 100644 --- a/src/transaction.vala +++ b/src/transaction.vala @@ -19,7 +19,7 @@ namespace Pamac { [DBus (name = "org.manjaro.pamac")] - public interface Daemon : Object { + interface Daemon : Object { public abstract void set_environment_variables (HashTable variables) throws IOError; public abstract ErrorInfos get_current_error () throws IOError; public abstract void start_get_authorization () throws IOError; @@ -74,15 +74,17 @@ namespace Pamac { UPDATER } - public enum TransactionType { - STANDARD = (1 << 0), - UPDATE = (1 << 1), - BUILD = (1 << 2) - } - public class Transaction: Object { - public Daemon daemon; + enum Type { + STANDARD = (1 << 0), + UPDATE = (1 << 1), + BUILD = (1 << 2) + } + + Daemon daemon; + + public AlpmConfig alpm_config; public Pamac.Config pamac_config; public Alpm.TransFlag flags; @@ -91,7 +93,9 @@ namespace Pamac { public GenericSet to_remove; public GenericSet to_load; public GenericSet to_build; - public GenericSet special_ignorepkgs; + public GenericSet temporary_ignorepkgs; + + HashTable aur_infos; public Mode mode; @@ -114,21 +118,32 @@ namespace Pamac { TransactionInfoDialog transaction_info_dialog; ProgressDialog progress_dialog; //parent window - Gtk.ApplicationWindow? application_window; + public Gtk.ApplicationWindow? application_window; public signal void finished (bool database_modified); + 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, + bool no_confirm_build); + public signal void write_alpm_config_finished (bool checkspace); + public signal void write_mirrors_config_finished (string choosen_country, string choosen_generation_method); public Transaction (Gtk.ApplicationWindow? application_window) { + alpm_config = new AlpmConfig ("/etc/pacman.conf"); + refresh_handle (); pamac_config = new Pamac.Config ("/etc/pamac.conf"); flags = Alpm.TransFlag.CASCADE; if (pamac_config.recurse) { flags |= Alpm.TransFlag.RECURSE; } + to_add = new GenericSet (str_hash, str_equal); to_remove = new GenericSet (str_hash, str_equal); to_load = new GenericSet (str_hash, str_equal); to_build = new GenericSet (str_hash, str_equal); - special_ignorepkgs = new GenericSet (str_hash, str_equal); + temporary_ignorepkgs = new GenericSet (str_hash, str_equal); + aur_infos = new HashTable (str_hash, str_equal); connecting_dbus_signals (); //creating dialogs this.application_window = application_window; @@ -146,6 +161,31 @@ namespace Pamac { timer = new Timer (); } + public async void run_preferences_dialog () { + SourceFunc callback = run_preferences_dialog.callback; + ulong handler_id = daemon.get_authorization_finished.connect ((authorized) => { + if (authorized) { + var preferences_dialog = new PreferencesDialog (this); + preferences_dialog.run (); + preferences_dialog.destroy (); + while (Gtk.events_pending ()) { + Gtk.main_iteration (); + } + } + Idle.add((owned) callback); + }); + start_get_authorization (); + yield; + daemon.disconnect (handler_id); + } + + public void refresh_handle () { + alpm_config.get_handle (); + if (alpm_config.handle == null) { + stderr.printf (dgettext (null, "Failed to initialize alpm library")); + } + } + public ErrorInfos get_current_error () { try { return daemon.get_current_error (); @@ -236,6 +276,7 @@ namespace Pamac { } catch (IOError e) { stderr.printf ("IOError: %s\n", e.message); daemon.refresh_finished.disconnect (on_refresh_finished); + refresh_handle (); finished (true); } } @@ -252,7 +293,7 @@ namespace Pamac { public void add_ignorepkg (string pkgname) { try { daemon.add_ignorepkg (pkgname); - //special_ignorepkgs.add (pkgname); + //temporary_ignorepkgs.add (pkgname); } catch (IOError e) { stderr.printf ("IOError: %s\n", e.message); } @@ -267,7 +308,7 @@ namespace Pamac { } public bool init (Alpm.TransFlag flags) { - foreach (unowned string pkgname in special_ignorepkgs) { + foreach (unowned string pkgname in temporary_ignorepkgs) { add_ignorepkg (pkgname); } try { @@ -278,7 +319,7 @@ namespace Pamac { } } - public void sysupgrade_simple (bool enable_downgrade) { + void sysupgrade_simple (bool enable_downgrade) { progress_dialog.progressbar.set_fraction (0); progress_dialog.cancel_button.set_visible (true); bool success = init (0); @@ -328,7 +369,7 @@ namespace Pamac { start_get_updates (); } - public void on_get_updates_finished (Updates updates) { + void on_get_updates_finished (Updates updates) { // get syncfirst updates if (updates.is_syncfirst) { clear_lists (); @@ -344,7 +385,7 @@ namespace Pamac { if (updates.aur_updates.length != 0) { clear_lists (); foreach (unowned PackageInfos infos in updates.aur_updates) { - if (!(infos.name in special_ignorepkgs)) { + if (!(infos.name in temporary_ignorepkgs)) { to_build.add (infos.name); } } @@ -360,6 +401,7 @@ namespace Pamac { } } daemon.get_updates_finished.disconnect (on_get_updates_finished); + get_updates_finished (updates); } public void clear_lists () { @@ -369,7 +411,7 @@ namespace Pamac { } public void run () { - string action = dgettext (null,"Preparing") + "..."; + string action = dgettext (null, "Preparing") + "..."; progress_dialog.spawn_in_term ({"echo", action}); progress_dialog.action_label.set_text (action); progress_dialog.progressbar.set_fraction (0); @@ -445,7 +487,7 @@ namespace Pamac { } } - public void choose_provider (string depend, string[] providers) { + void choose_provider (string depend, string[] providers) { var choose_provider_dialog = new ChooseProviderDialog (application_window); choose_provider_dialog.label.set_markup ("%s".printf (dgettext (null, "Choose a provider for %s").printf (depend))); foreach (unowned string provider in providers) { @@ -464,9 +506,9 @@ namespace Pamac { } } - public TransactionType set_transaction_sum () { + Type set_transaction_sum () { // return 0 if transaction_sum is empty, 2, if there are only aur updates, 1 otherwise - TransactionType type = 0; + Type type = 0; uint64 dsize = 0; PackageInfos[] prepared_to_add = {}; PackageInfos[] prepared_to_remove = {}; @@ -510,7 +552,7 @@ namespace Pamac { int len = prepared_to_remove.length; int i; if (len != 0) { - type |= TransactionType.STANDARD; + type |= Type.STANDARD; transaction_sum_dialog.sum_list.insert_with_values (out iter, -1, 0, dgettext (null, "To remove") + ":", 1, "%s %s".printf (prepared_to_remove[0].name, prepared_to_remove[0].version)); @@ -523,7 +565,7 @@ namespace Pamac { } len = to_downgrade.length; if (len != 0) { - type |= TransactionType.STANDARD; + type |= Type.STANDARD; transaction_sum_dialog.sum_list.insert_with_values (out iter, -1, 0, dgettext (null, "To downgrade") + ":", 1, to_downgrade[0]); @@ -536,7 +578,7 @@ namespace Pamac { } len = _to_build.length; if (len != 0) { - type |= TransactionType.BUILD; + type |= Type.BUILD; transaction_sum_dialog.sum_list.insert_with_values (out iter, -1, 0, dgettext (null, "To build") + ":", 1, _to_build[0]); @@ -549,7 +591,7 @@ namespace Pamac { } len = to_install.length; if (len != 0) { - type |= TransactionType.STANDARD; + type |= Type.STANDARD; transaction_sum_dialog.sum_list.insert_with_values (out iter, -1, 0, dgettext (null, "To install") + ":", 1, to_install[0]); @@ -562,7 +604,7 @@ namespace Pamac { } len = to_reinstall.length; if (len != 0) { - type |= TransactionType.STANDARD; + type |= Type.STANDARD; transaction_sum_dialog.sum_list.insert_with_values (out iter, -1, 0, dgettext (null, "To reinstall") + ":", 1, to_reinstall[0]); @@ -575,7 +617,7 @@ namespace Pamac { } len = to_update.length; if (len != 0) { - type |= TransactionType.UPDATE; + type |= Type.UPDATE; if (mode != Mode.UPDATER) { transaction_sum_dialog.sum_list.insert_with_values (out iter, -1, 0, dgettext (null, "To update") + ":", @@ -603,12 +645,13 @@ namespace Pamac { daemon.start_trans_commit (); } catch (IOError e) { stderr.printf ("IOError: %s\n", e.message); + refresh_handle (); finished (true); } } public void build_aur_packages () { - string action = dgettext (null,"Building packages") + "..."; + string action = dgettext (null, "Building packages") + "..."; progress_dialog.spawn_in_term ({"echo", action}); progress_dialog.action_label.set_text (action); progress_dialog.progressbar.set_fraction (0); @@ -632,6 +675,14 @@ namespace Pamac { progress_dialog.term.watch_child (child_pid); } + public async Json.Object get_aur_infos (string aur_name) { + if (!aur_infos.contains (aur_name)) { + Json.Array results = AUR.multiinfo ({aur_name}); + aur_infos.insert (aur_name, results.get_object_element (0)); + } + return aur_infos.lookup (aur_name); + } + public void cancel () { try { daemon.trans_cancel (); @@ -652,7 +703,7 @@ namespace Pamac { } catch (IOError e) { stderr.printf ("IOError: %s\n", e.message); } - foreach (unowned string pkgname in special_ignorepkgs) { + foreach (unowned string pkgname in temporary_ignorepkgs) { remove_ignorepkg (pkgname); } } @@ -1037,7 +1088,7 @@ namespace Pamac { } } - public void show_warnings () { + void show_warnings () { if (transaction_info_dialog.textbuffer.text != "") { transaction_info_dialog.set_title (dgettext (null, "Warning")); transaction_info_dialog.label.set_visible (false); @@ -1056,7 +1107,7 @@ namespace Pamac { } } - public void handle_error (ErrorInfos error) { + void handle_error (ErrorInfos error) { if (error.message != null && error.message != "") { progress_dialog.expander.set_expanded (true); progress_dialog.spawn_in_term ({"echo", "-n", error.message}); @@ -1097,7 +1148,8 @@ namespace Pamac { } } - public void on_refresh_finished (bool success) { + void on_refresh_finished (bool success) { + refresh_handle (); if (success) { if (mode == Mode.UPDATER) { finished (true); @@ -1117,7 +1169,7 @@ namespace Pamac { daemon.refresh_finished.disconnect (on_refresh_finished); } - public void on_cancel_button_clicked () { + void on_cancel_button_clicked () { cancel (); clear_lists (); progress_dialog.spawn_in_term ({"/usr/bin/echo", dgettext (null, "Transaction cancelled") + ".\n"}); @@ -1127,11 +1179,11 @@ namespace Pamac { } } - public void on_trans_prepare_finished (bool success) { + void on_trans_prepare_finished (bool success) { if (success) { show_warnings (); - TransactionType type = set_transaction_sum (); - if (type == TransactionType.UPDATE && mode == Mode.UPDATER) { + Type type = set_transaction_sum (); + if (type == Type.UPDATE && mode == Mode.UPDATER) { // there only updates start_commit (); } else if (type != 0) { @@ -1140,7 +1192,7 @@ namespace Pamac { while (Gtk.events_pending ()) { Gtk.main_iteration (); } - if (type == TransactionType.BUILD) { + if (type == Type.BUILD) { // there only AUR packages to build release (); on_trans_commit_finished (true); @@ -1178,7 +1230,7 @@ namespace Pamac { } } - public void on_trans_commit_finished (bool success) { + void on_trans_commit_finished (bool success) { if (success) { if (to_build.length != 0) { if (to_add.length != 0 @@ -1194,6 +1246,7 @@ namespace Pamac { sysupgrade_after_trans = false; sysupgrade (false); } else { + refresh_handle (); finished (true); progress_dialog.spawn_in_term ({"echo", dgettext (null, "Transaction successfully finished") + ".\n"}); if (progress_dialog.expander.get_expanded ()) { @@ -1215,6 +1268,7 @@ namespace Pamac { finished (false); } else { clear_lists (); + refresh_handle (); finished (true); } handle_error (err); @@ -1229,6 +1283,7 @@ namespace Pamac { clear_lists (); // let the time to the daemon to update databases Timeout.add (1000, () => { + refresh_handle (); finished (true); if (status == 0) { string action = dgettext (null, "Transaction successfully finished"); @@ -1247,8 +1302,27 @@ namespace Pamac { }); } - void on_write_pamac_config_finished () { + void on_set_pkgreason_finished () { + refresh_handle (); + 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, + bool no_confirm_build) { pamac_config.reload (); + write_pamac_config_finished (recurse, refresh_period, no_update_hide_icon, + enable_aur, search_aur, check_aur_updates, + no_confirm_build); + } + + void on_write_alpm_config_finished (bool checkspace) { + alpm_config.reload (); + write_alpm_config_finished (checkspace); + } + + void on_write_mirrors_config_finished (string choosen_country, string choosen_generation_method) { + write_mirrors_config_finished (choosen_country, choosen_generation_method); } void on_generate_mirrors_list_data (string line) { @@ -1276,6 +1350,9 @@ namespace Pamac { 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); diff --git a/src/transaction_info_dialog.vala b/src/transaction_info_dialog.vala index b4317ae..3a33df5 100644 --- a/src/transaction_info_dialog.vala +++ b/src/transaction_info_dialog.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -20,15 +20,15 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/transaction/transaction_info_dialog.ui")] - public class TransactionInfoDialog : Gtk.Dialog { + class TransactionInfoDialog : Gtk.Dialog { [GtkChild] public Gtk.Label label; [GtkChild] public Gtk.Expander expander; [GtkChild] - public Gtk.TextView textview; - + Gtk.TextView textview; + public Gtk.TextBuffer textbuffer; public TransactionInfoDialog (Gtk.ApplicationWindow? window) { diff --git a/src/transaction_sum_dialog.vala b/src/transaction_sum_dialog.vala index dd97cb8..43f792f 100644 --- a/src/transaction_sum_dialog.vala +++ b/src/transaction_sum_dialog.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -20,14 +20,14 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/transaction/transaction_sum_dialog.ui")] - public class TransactionSumDialog : Gtk.Dialog { + class TransactionSumDialog : Gtk.Dialog { [GtkChild] public Gtk.Label top_label; [GtkChild] public Gtk.Label bottom_label; [GtkChild] - public Gtk.TreeView treeview; + Gtk.TreeView treeview; public Gtk.ListStore sum_list; diff --git a/src/tray.vala b/src/tray.vala index 835706f..a6ecb19 100644 --- a/src/tray.vala +++ b/src/tray.vala @@ -26,7 +26,7 @@ const string noupdate_info = _("Your system is up-to-date"); namespace Pamac { [DBus (name = "org.manjaro.pamac")] - public interface Daemon : Object { + interface Daemon : Object { public abstract void start_refresh (bool force) throws IOError; public abstract void start_get_updates (bool check_aur_updates) throws IOError; [DBus (no_reply = true)] @@ -38,7 +38,7 @@ namespace Pamac { public signal void write_alpm_config_finished (bool checkspace); } - public class TrayIcon: Gtk.Application { + class TrayIcon: Gtk.Application { Notify.Notification notification; //~ Notification notification; Daemon daemon; @@ -313,14 +313,14 @@ namespace Pamac { status_icon = new Gtk.StatusIcon (); status_icon.visible = !(pamac_config.no_update_hide_icon); - this.update_icon (noupdate_icon_name, noupdate_info); + update_icon (noupdate_icon_name, noupdate_info); status_icon.activate.connect (left_clicked); create_menu (); status_icon.popup_menu.connect (menu_popup); Notify.init (_("Update Manager")); - var alpm_config = new Alpm.Config ("/etc/pacman.conf"); + var alpm_config = new AlpmConfig ("/etc/pacman.conf"); alpm_config.get_handle (); lockfile = GLib.File.new_for_path (alpm_config.handle.lockfile); start_daemon (); @@ -335,7 +335,7 @@ namespace Pamac { // nothing to do } - public static int main (string[] args) { + static int main (string[] args) { var tray_icon = new TrayIcon(); return tray_icon.run (args); } diff --git a/src/updater.vala b/src/updater.vala index b430aa8..d7b3994 100644 --- a/src/updater.vala +++ b/src/updater.vala @@ -1,7 +1,7 @@ /* * pamac-vala * - * Copyright (C) 2014-2015 Guillaume Benoit + * Copyright (C) 2014-2016 Guillaume Benoit * * 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 @@ -19,7 +19,7 @@ namespace Pamac { - public class Updater : Gtk.Application { + class Updater : Gtk.Application { UpdaterWindow updater_window; bool pamac_run; @@ -37,13 +37,13 @@ namespace Pamac { pamac_run = check_pamac_running (); if (pamac_run) { - var transaction_info_dialog = new TransactionInfoDialog (null); - transaction_info_dialog.set_title (dgettext (null, "Error")); - transaction_info_dialog.label.set_visible (true); - transaction_info_dialog.label.set_markup (dgettext (null, "Pamac is already running")); - transaction_info_dialog.expander.set_visible (false); - transaction_info_dialog.run (); - transaction_info_dialog.hide (); + var msg = new Gtk.MessageDialog (null, + Gtk.DialogFlags.MODAL, + Gtk.MessageType.ERROR, + Gtk.ButtonsType.OK, + dgettext (null, "Pamac is already running")); + msg.run (); + msg.destroy (); } else { updater_window = new UpdaterWindow (this); } @@ -86,7 +86,7 @@ namespace Pamac { } } - public static int main (string[] args) { + static int main (string[] args) { var updater = new Updater (); return updater.run (args); } diff --git a/src/updater_window.vala b/src/updater_window.vala index b854855..f15eda9 100644 --- a/src/updater_window.vala +++ b/src/updater_window.vala @@ -20,31 +20,31 @@ namespace Pamac { [GtkTemplate (ui = "/org/manjaro/pamac/updater/updater_window.ui")] - public class UpdaterWindow : Gtk.ApplicationWindow { + class UpdaterWindow : Gtk.ApplicationWindow { [GtkChild] - public Gtk.Label top_label; + Gtk.Label top_label; [GtkChild] - public Gtk.Notebook notebook; + Gtk.Notebook notebook; [GtkChild] - public Gtk.ScrolledWindow repos_scrolledwindow; + Gtk.ScrolledWindow repos_scrolledwindow; [GtkChild] - public Gtk.ScrolledWindow aur_scrolledwindow; + Gtk.ScrolledWindow aur_scrolledwindow; [GtkChild] - public Gtk.TreeView repos_updates_treeview; + Gtk.TreeView repos_updates_treeview; [GtkChild] - public Gtk.CellRendererToggle repos_select_update; + Gtk.CellRendererToggle repos_select_update; [GtkChild] - public Gtk.TreeView aur_updates_treeview; + Gtk.TreeView aur_updates_treeview; [GtkChild] - public Gtk.CellRendererToggle aur_select_update; + Gtk.CellRendererToggle aur_select_update; [GtkChild] - public Gtk.Label bottom_label; + Gtk.Label bottom_label; [GtkChild] - public Gtk.Button apply_button; + Gtk.Button apply_button; - public Gtk.ListStore repos_updates_list; - public Gtk.ListStore aur_updates_list; + Gtk.ListStore repos_updates_list; + Gtk.ListStore aur_updates_list; public Pamac.Transaction transaction; @@ -59,7 +59,7 @@ namespace Pamac { Timeout.add (100, populate_window); } - public bool populate_window () { + bool populate_window () { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); repos_updates_list = new Gtk.ListStore (3, typeof (bool), typeof (string), typeof (string)); @@ -71,14 +71,14 @@ namespace Pamac { transaction.mode = Mode.UPDATER; transaction.finished.connect (on_transaction_finished); - transaction.daemon.get_updates_finished.connect (on_get_updates_finished); + transaction.get_updates_finished.connect (on_get_updates_finished); on_refresh_button_clicked (); return false; } - public void set_apply_button_sensitive () { + void set_apply_button_sensitive () { bool sensitive = false; repos_updates_list.foreach ((model, path, iter) => { GLib.Value selected; @@ -98,7 +98,7 @@ namespace Pamac { } [GtkCallback] - public void on_repos_select_update_toggled (string path) { + void on_repos_select_update_toggled (string path) { Gtk.TreePath treepath = new Gtk.TreePath.from_string (path); Gtk.TreeIter iter; GLib.Value name_string; @@ -108,16 +108,16 @@ namespace Pamac { string pkgname = name_string.get_string ().split (" ", 2)[0]; if (repos_select_update.active) { repos_updates_list.set (iter, 0, false); - transaction.special_ignorepkgs.add (pkgname); + transaction.temporary_ignorepkgs.add (pkgname); } else { repos_updates_list.set (iter, 0, true); - transaction.special_ignorepkgs.remove (pkgname); + transaction.temporary_ignorepkgs.remove (pkgname); } set_apply_button_sensitive (); } [GtkCallback] - public void on_aur_select_update_toggled (string path) { + void on_aur_select_update_toggled (string path) { Gtk.TreePath treepath = new Gtk.TreePath.from_string (path); Gtk.TreeIter iter; GLib.Value name_string; @@ -127,57 +127,39 @@ namespace Pamac { string pkgname = name_string.get_string ().split (" ", 2)[0]; if (aur_select_update.active) { aur_updates_list.set (iter, 0, false); - transaction.special_ignorepkgs.add (pkgname); + transaction.temporary_ignorepkgs.add (pkgname); } else { aur_updates_list.set (iter, 0, true); - transaction.special_ignorepkgs.remove (pkgname); + transaction.temporary_ignorepkgs.remove (pkgname); } set_apply_button_sensitive (); } - public async void run_preferences_dialog () { - SourceFunc callback = run_preferences_dialog.callback; - ulong handler_id = transaction.daemon.get_authorization_finished.connect ((authorized) => { - if (authorized) { - var preferences_dialog = new PreferencesDialog (this, transaction); - preferences_dialog.run (); - preferences_dialog.destroy (); - while (Gtk.events_pending ()) { - Gtk.main_iteration (); - } - } - Idle.add((owned) callback); - }); - transaction.start_get_authorization (); - yield; - transaction.daemon.disconnect (handler_id); - } - [GtkCallback] - public void on_preferences_button_clicked () { - run_preferences_dialog.begin (() => { + void on_preferences_button_clicked () { + transaction.run_preferences_dialog.begin (() => { populate_updates_list (); }); } [GtkCallback] - public void on_apply_button_clicked () { + void on_apply_button_clicked () { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); transaction.sysupgrade (false); } [GtkCallback] - public void on_refresh_button_clicked () { + void on_refresh_button_clicked () { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); transaction.start_refresh (false); } [GtkCallback] - public void on_close_button_clicked () { + void on_close_button_clicked () { this.application.quit (); } - public void on_transaction_finished (bool database_modified) { + void on_transaction_finished (bool database_modified) { if (database_modified) { populate_updates_list (); } else { @@ -185,12 +167,12 @@ namespace Pamac { } } - public void populate_updates_list () { + void populate_updates_list () { this.get_window ().set_cursor (new Gdk.Cursor.for_display (Gdk.Display.get_default (), Gdk.CursorType.WATCH)); transaction.start_get_updates (); } - public void on_get_updates_finished (Updates updates) { + void on_get_updates_finished (Updates updates) { top_label.set_markup (""); repos_updates_list.clear (); notebook.set_show_tabs (false); @@ -207,7 +189,7 @@ namespace Pamac { string size = infos.download_size != 0 ? format_size (infos.download_size) : ""; dsize += infos.download_size; repos_updates_nb++; - if (infos.name in transaction.special_ignorepkgs) { + if (infos.name in transaction.temporary_ignorepkgs) { repos_updates_list.insert_with_values (out iter, -1, 0, false, 1, name, 2, size); } else { repos_updates_list.insert_with_values (out iter, -1, 0, true, 1, name, 2, size); @@ -216,7 +198,7 @@ namespace Pamac { foreach (unowned PackageInfos infos in updates.aur_updates) { string name = infos.name + " " + infos.version; aur_updates_nb++; - if (infos.name in transaction.special_ignorepkgs) { + if (infos.name in transaction.temporary_ignorepkgs) { aur_updates_list.insert_with_values (out iter, -1, 0, false, 1, name); } else { aur_updates_list.insert_with_values (out iter, -1, 0, true, 1, name);