add clean cache feature in preferences (as paccache frontend)

This commit is contained in:
guinux 2016-08-25 12:33:16 +02:00
parent eb57d65876
commit 412d1f9a02
6 changed files with 192 additions and 26 deletions

View File

@ -13,7 +13,6 @@
../resources/progress_dialog.ui
../resources/history_dialog.ui
../resources/transaction_sum_dialog.ui
../resources/choose_dep_dialog.ui
../resources/manager_window.ui
../resources/updater_window.ui
../resources/preferences_dialog.ui

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Pamac\n"
"Report-Msgid-Bugs-To: guillaume@manjaro.org\n"
"POT-Creation-Date: 2015-08-20 11:53+0200\n"
"POT-Creation-Date: 2016-04-24 08:44+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -25,6 +25,10 @@ msgstr ""
msgid "Failed to initialize alpm library"
msgstr ""
#: ../src/daemon.vala ../src/transaction.vala
msgid "Authentication failed"
msgstr ""
#: ../src/daemon.vala
msgid "Failed to synchronize any databases"
msgstr ""
@ -101,10 +105,6 @@ msgstr ""
msgid "%s is invalid or corrupted"
msgstr ""
#: ../src/daemon.vala ../src/transaction.vala
msgid "Authentication failed"
msgstr ""
#: ../src/daemon.vala
#, c-format
msgid "%s appears to be truncated: %jd/%jd bytes\n"
@ -325,7 +325,7 @@ msgstr ""
msgid "Warning"
msgstr ""
#: ../src/transaction.vala
#: ../src/transaction.vala ../resources/progress_dialog.ui
msgid "_Close"
msgstr ""
@ -518,8 +518,7 @@ msgstr ""
msgid "Install Local Packages"
msgstr ""
#: ../src/manager_window.vala ../resources/progress_dialog.ui
#: ../resources/transaction_sum_dialog.ui ../resources/choose_dep_dialog.ui
#: ../src/manager_window.vala ../resources/transaction_sum_dialog.ui
#: ../resources/manager_window.ui ../resources/updater_window.ui
#: ../resources/choose_ignorepkgs_dialog.ui
msgid "_Cancel"
@ -553,7 +552,7 @@ msgstr ""
msgid "Choose a Provider"
msgstr ""
#: ../resources/choose_provider_dialog.ui ../resources/choose_dep_dialog.ui
#: ../resources/choose_provider_dialog.ui
#: ../resources/choose_ignorepkgs_dialog.ui
msgid "Choose"
msgstr ""
@ -562,10 +561,6 @@ msgstr ""
msgid "Progress"
msgstr ""
#: ../resources/progress_dialog.ui
msgid "_Hide"
msgstr ""
#: ../resources/history_dialog.ui
msgid "Pamac History"
msgstr ""
@ -578,10 +573,6 @@ msgstr ""
msgid "Commit"
msgstr ""
#: ../resources/choose_dep_dialog.ui
msgid "Choose Optional Dependencies"
msgstr ""
#: ../resources/manager_window.ui ../resources/updater_window.ui
msgid "Refresh databases"
msgstr ""
@ -724,6 +715,22 @@ msgstr ""
msgid "Do not ask for confirmation when building packages"
msgstr ""
#: ../resources/preferences_dialog.ui
msgid "Number of each package to keep in the cache:"
msgstr ""
#: ../resources/preferences_dialog.ui
msgid "Only remove uninstalled packages"
msgstr ""
#: ../resources/preferences_dialog.ui
msgid "Clean cache"
msgstr ""
#: ../resources/preferences_dialog.ui
msgid "Cache"
msgstr ""
#: ../resources/choose_ignorepkgs_dialog.ui
msgid "Choose Ignored Upgrades"
msgstr ""

View File

@ -2,7 +2,13 @@
<!-- Generated with glade 3.20.0 -->
<interface>
<requires lib="gtk+" version="3.14"/>
<object class="GtkAdjustment" id="adjustment">
<object class="GtkAdjustment" id="cache_keep_nb_adjustment">
<property name="upper">10</property>
<property name="value">3</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="refresh_period_adjustment">
<property name="lower">1</property>
<property name="upper">1000</property>
<property name="value">6</property>
@ -204,7 +210,7 @@
<property name="halign">end</property>
<property name="caps_lock_warning">False</property>
<property name="input_purpose">number</property>
<property name="adjustment">adjustment</property>
<property name="adjustment">refresh_period_adjustment</property>
<property name="numeric">True</property>
<property name="update_policy">if-valid</property>
<property name="value">6</property>
@ -657,6 +663,103 @@ All AUR users should be familiar with the build process.</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox" id="cache_config_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="margin_left">6</property>
<property name="margin_right">6</property>
<property name="margin_start">6</property>
<property name="margin_end">6</property>
<property name="margin_top">6</property>
<property name="margin_bottom">6</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">12</property>
<child>
<object class="GtkLabel" id="cache_keep_nb_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="hexpand">True</property>
<property name="label" translatable="yes">Number of each package to keep in the cache:</property>
<property name="wrap">True</property>
<property name="max_width_chars">300</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="cache_keep_nb_spin_button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes">How often to check for updates, value in hours</property>
<property name="halign">end</property>
<property name="caps_lock_warning">False</property>
<property name="input_purpose">number</property>
<property name="adjustment">cache_keep_nb_adjustment</property>
<property name="numeric">True</property>
<property name="update_policy">if-valid</property>
<property name="value">3</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="cache_only_uninstalled_checkbutton">
<property name="label" translatable="yes">Only remove uninstalled packages</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="margin_start">22</property>
<property name="draw_indicator">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="cache_clean_button">
<property name="label" translatable="yes">Clean cache</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="halign">end</property>
<property name="margin_top">12</property>
<signal name="clicked" handler="on_cache_clean_button_clicked" swapped="no"/>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="name">cache</property>
<property name="title" translatable="yes">Cache</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>

View File

@ -281,12 +281,50 @@ namespace Pamac {
generate_mirrors_list_finished ();
}
public void start_generate_mirrors_list () {
try {
thread_pool.add (new AlpmAction (generate_mirrors_list));
} catch (ThreadError e) {
stderr.printf ("Thread Error %s\n", e.message);
}
public void start_generate_mirrors_list (GLib.BusName sender) {
check_authorization.begin (sender, (obj, res) => {
bool authorized = check_authorization.end (res);
if (authorized) {
try {
thread_pool.add (new AlpmAction (generate_mirrors_list));
} catch (ThreadError e) {
stderr.printf ("Thread Error %s\n", e.message);
}
} else {
current_error = ErrorInfos () {
message = _("Authentication failed")
};
}
});
}
public void clean_cache (uint keep_nb, bool only_uninstalled, GLib.BusName sender) {
check_authorization.begin (sender, (obj, res) => {
bool authorized = check_authorization.end (res);
if (authorized) {
string[] commands = {"paccache", "-rq"};
commands += "-k%u".printf (keep_nb);
if (only_uninstalled) {
commands += "-u";
}
try {
var process = new Subprocess.newv (
commands,
SubprocessFlags.STDOUT_PIPE | SubprocessFlags.STDERR_MERGE);
var dis = new DataInputStream (process.get_stdout_pipe ());
string? line;
while ((line = dis.read_line ()) != null) {
print ("%s\n",line);
}
} catch (Error e) {
stderr.printf ("Error: %s\n", e.message);
}
} else {
current_error = ErrorInfos () {
message = _("Authentication failed")
};
}
});
}
public void start_write_mirrors_config (HashTable<string,Variant> new_mirrors_conf, GLib.BusName sender) {

View File

@ -56,6 +56,10 @@ namespace Pamac {
Gtk.CheckButton check_aur_updates_checkbutton;
[GtkChild]
Gtk.CheckButton no_confirm_build_checkbutton;
[GtkChild]
Gtk.SpinButton cache_keep_nb_spin_button;
[GtkChild]
Gtk.CheckButton cache_only_uninstalled_checkbutton;
Gtk.ListStore ignorepkgs_liststore;
Transaction transaction;
@ -368,5 +372,11 @@ namespace Pamac {
transaction.start_generate_mirrors_list ();
generate_mirrors_list_button.get_style_context ().remove_class (Gtk.STYLE_CLASS_SUGGESTED_ACTION);
}
[GtkCallback]
void on_cache_clean_button_clicked () {
transaction.clean_cache ((uint) cache_keep_nb_spin_button.get_value_as_int (),
cache_only_uninstalled_checkbutton.active);
}
}
}

View File

@ -29,6 +29,7 @@ namespace Pamac {
public abstract void start_write_alpm_config (HashTable<string,Variant> new_alpm_conf) throws IOError;
public abstract void start_write_mirrors_config (HashTable<string,Variant> new_mirrors_conf) throws IOError;
public abstract void start_generate_mirrors_list () throws IOError;
public abstract void clean_cache (uint keep_nb, bool only_uninstalled) throws IOError;
public abstract void start_set_pkgreason (string pkgname, uint reason) throws IOError;
public abstract AlpmPackage get_installed_pkg (string pkgname) throws IOError;
public abstract void start_refresh (bool force) throws IOError;
@ -351,6 +352,14 @@ namespace Pamac {
}
}
public void clean_cache (uint keep_nb, bool only_uninstalled) {
try {
daemon.clean_cache (keep_nb, only_uninstalled);
} catch (IOError e) {
stderr.printf ("IOError: %s\n", e.message);
}
}
public void start_set_pkgreason (string pkgname, uint reason) {
try {
daemon.start_set_pkgreason (pkgname, reason);