Hello community, here is the log from the commit of package when-command for openSUSE:Factory checked in at 2016-08-03 11:44:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/when-command (Old) and /work/SRC/openSUSE:Factory/.when-command.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "when-command" Changes: -------- --- /work/SRC/openSUSE:Factory/when-command/when-command.changes 2016-05-17 17:16:16.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.when-command.new/when-command.changes 2016-08-03 11:44:54.000000000 +0200 @@ -1,0 +2,10 @@ +Sat Jul 23 16:15:39 UTC 2016 - sor.alexei@meowr.ru + +- Update to version 0.9.12~beta3: + * Add a possibility to reset the success status of condition + tests so that also tests that have been successful during one + very long session can be performed again at user's request. + * Workaround a potential error when a locale is not supported. +- Add a missing python3-gobject-Gdk dependency. + +------------------------------------------------------------------- Old: ---- when-command-0.9.11-beta.1.tar.gz New: ---- when-command-0.9.12-beta.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ when-command.spec ++++++ --- /var/tmp/diff_new_pack.PVWf7u/_old 2016-08-03 11:44:55.000000000 +0200 +++ /var/tmp/diff_new_pack.PVWf7u/_new 2016-08-03 11:44:55.000000000 +0200 @@ -16,9 +16,9 @@ # -%define _version 0.9.11-beta.1 +%define _version 0.9.12-beta.3 Name: when-command -Version: 0.9.11~beta1 +Version: 0.9.12~beta3 Release: 0 Summary: Configurable user task scheduler License: BSD-3-Clause @@ -41,6 +41,9 @@ Requires: python3-pyinotify Recommends: %{name}-lang BuildArch: noarch +%if 0%{?suse_version} > 1320 || 0%{?sle_version} >= 120200 +Requires: python3-gobject-Gdk +%endif %description When is a configurable user task scheduler. It interacts with the ++++++ when-command-0.9.11-beta.1.tar.gz -> when-command-0.9.12-beta.3.tar.gz ++++++ ++++ 1973 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/when-command-0.9.11-beta.1/po/it.po new/when-command-0.9.12-beta.3/po/it.po --- old/when-command-0.9.11-beta.1/po/it.po 2016-05-03 19:52:11.000000000 +0200 +++ new/when-command-0.9.12-beta.3/po/it.po 2016-06-15 23:35:46.000000000 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: when-command 0.9.1-beta.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-02-09 19:35+0100\n" +"POT-Creation-Date: 2016-05-14 21:02+0200\n" "PO-Revision-Date: 2015-12-21 14:43+0100\n" "Last-Translator: Francesco Garosi <franz.g@no-spam-please.infinito.it>\n" "Language-Team: Italian\n" @@ -18,61 +18,73 @@ "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.5.4\n" -#: when-command.py:599 +#: when-command.py:623 #, python-format msgid "Are you sure you want to delete task %s?" msgstr "Confermi di voler eliminare il task %s?" -#: when-command.py:600 +#: when-command.py:624 #, python-format msgid "Are you sure you want to delete condition %s?" msgstr "Confermi di voler eliminare la condizione %s?" -#: when-command.py:601 +#: when-command.py:625 #, python-format msgid "Are you sure you want to delete signal handler %s?" msgstr "Confermi di voler eliminare il gestore di segnali %s?" -#: when-command.py:602 +#: when-command.py:626 +msgid "Are you sure you want to reset condition tests?" +msgstr "Confermi di voler ripristinare i test delle condizioni?" + +#: when-command.py:627 #, python-format msgid "Task %s could not be deleted." msgstr "Il task %s non può essere eliminato." -#: when-command.py:603 +#: when-command.py:628 #, python-format msgid "Condition %s could not be deleted." msgstr "La condizione %s non può essere eliminata." -#: when-command.py:604 +#: when-command.py:629 #, python-format msgid "Signal handler %s could not be deleted." msgstr "Il gestore di segnali %s non può essere eliminato." -#: when-command.py:605 +#: when-command.py:630 #, python-format msgid "Task %s could not be found." msgstr "Il task %s non è stato trovato." -#: when-command.py:606 +#: when-command.py:631 #, python-format msgid "Condition %s could not be found." msgstr "La condizione %s non è stata trovata." -#: when-command.py:607 +#: when-command.py:632 #, python-format msgid "Signal handler %s could not be found." msgstr "Il gestore di segnali %s non è stato trovato." -#: when-command.py:608 +#: when-command.py:633 #, python-format msgid "Signal handler %s could not be registered." msgstr "Il gestore di segnali %s non può essere registrato." -#: when-command.py:609 +#: when-command.py:634 when-command.py:647 +msgid "" +"Could not reset tests: a restart\n" +"of the applet may be required" +msgstr "" +"Impossibile effettuare il reset dei test:\n" +"potrebbe essere necessario riavviare l'applet" + +#: when-command.py:635 msgid "Must specify watched path: condition not created." msgstr "Il percorso va specificato: condizione non creata." -#: when-command.py:610 +#: when-command.py:636 msgid "" "Invalid value for exit status specified.\n" "Please consider reviewing it." @@ -80,7 +92,7 @@ "Il valore specificato per l'esito non è valido.\n" "Si prega di verificarlo." -#: when-command.py:611 +#: when-command.py:637 msgid "" "Invalid value for signal parameter index specified.\n" "Cannot add parameter test." @@ -88,457 +100,474 @@ "Il valore specificato per il parametro del segnale non è valido.\n" "Non è possibile aggiungere il test sul parametro." -#: when-command.py:612 +#: when-command.py:638 msgid "This feature has not been implemented yet." msgstr "Questa feature non è stata ancora realizzata." -#: when-command.py:613 +#: when-command.py:639 msgid "" "This feature is not enabled.\n" "Please check documentation for possible reasons." msgstr "" -"Questa feature non è abilitata. Consulta la documentazione per il possibile " -"motivo." +"Questa feature non è abilitata.\n" +"Consulta la documentazione per il possibile motivo." -#: when-command.py:614 +#: when-command.py:640 #, python-format msgid "Version: %s" msgstr "Versione: %s" -#: when-command.py:615 +#: when-command.py:641 msgid "[disabled]" msgstr "[disabilitato]" -#: when-command.py:616 +#: when-command.py:642 msgid "Choose File" msgstr "Scelta File" -#: when-command.py:617 +#: when-command.py:643 msgid "Choose Directory" msgstr "Scelta Directory" -#: when-command.py:618 +#: when-command.py:644 msgid "Choose File or Directory" msgstr "Scelta File o Directory" -#: when-command.py:620 +#: when-command.py:646 #, python-format msgid "Task failed: %s" msgstr "Task fallito: %s" -#: when-command.py:622 +#: when-command.py:649 msgid "Edit Tasks..." msgstr "Modifica Task..." -#: when-command.py:623 +#: when-command.py:650 msgid "Edit Conditions..." msgstr "Modifica Condizioni..." -#: when-command.py:624 +#: when-command.py:651 msgid "Settings..." msgstr "Impostazioni..." -#: when-command.py:625 +#: when-command.py:652 msgid "Task History..." msgstr "Storico Task..." -#: when-command.py:626 +#: when-command.py:653 msgid "Pause" msgstr "Pausa" -#: when-command.py:627 +#: when-command.py:654 +msgid "Reset Tests" +msgstr "Ripristino Test" + +#: when-command.py:655 msgid "About..." msgstr "Informazioni..." -#: when-command.py:628 +#: when-command.py:656 msgid "Quit" msgstr "Esci" -#: when-command.py:630 +#: when-command.py:658 msgid "User Defined Event" msgstr "Evento Definito dall'Utente" -#: when-command.py:632 +#: when-command.py:660 msgid "Variable" msgstr "Variabile" -#: when-command.py:633 when-command.py:646 +#: when-command.py:661 when-command.py:674 msgid "Value" msgstr "Valore" -#: when-command.py:634 when-command.py:636 +#: when-command.py:662 when-command.py:664 msgid "Task Name" msgstr "Nome Task" -#: when-command.py:635 +#: when-command.py:663 msgid "Time / Duration" msgstr "Orario / Durata" -#: when-command.py:637 +#: when-command.py:665 msgid "Trigger" msgstr "Causa" -#: when-command.py:638 when-command-edit-condition.glade.h:10 +#: when-command.py:666 when-command-edit-condition.glade.h:10 #: when-command-edit-task.glade.h:14 msgid "Exit Code" msgstr "Esito" -#: when-command.py:639 +#: when-command.py:667 msgid "Result" msgstr "Risultato" -#: when-command.py:640 +#: when-command.py:668 msgid "Reason" msgstr "Motivo" -#: when-command.py:641 +#: when-command.py:669 msgid "Row ID" msgstr "ID Riga" -#: when-command.py:642 +#: when-command.py:670 msgid "Param" msgstr "Param" -#: when-command.py:643 +#: when-command.py:671 msgid "Sub" msgstr "Sub" -#: when-command.py:644 +#: when-command.py:672 msgid "Negate" msgstr "Negazione" -#: when-command.py:645 +#: when-command.py:673 msgid "Compare" msgstr "Comparazione" -#: when-command.py:649 +#: when-command.py:677 #, python-format msgid "an existing instance will be %s" msgstr "un'istanza esistente verrà %s" -#: when-command.py:650 +#: when-command.py:678 msgid "shut down" msgstr "arrestata" -#: when-command.py:651 +#: when-command.py:679 msgid "killed" msgstr "terminata" -#: when-command.py:652 +#: when-command.py:680 msgid "instance shutdown finished" msgstr "arresto dell'istanza concluso" -#: when-command.py:653 +#: when-command.py:681 #, python-format msgid "showing %s box of currently running instance" msgstr "visualizzazione %s box dell'istanza corrente" -#: when-command.py:654 +#: when-command.py:682 #, python-format msgid "attempting to run condition %s" msgstr "tentativo di avviare la condizione %s" -#: when-command.py:655 +#: when-command.py:683 #, python-format msgid "condition %s could not be run" msgstr "la condizione %s non è stata avviata" -#: when-command.py:656 +#: when-command.py:684 #, python-format msgid "attempting to export task history to %s" msgstr "tentativo di esportare lo storico dei task su %s" -#: when-command.py:657 +#: when-command.py:685 msgid "could not save task history" msgstr "impossibile esportare lo storico task" -#: when-command.py:658 +#: when-command.py:686 msgid "history exported to specified file" msgstr "storico file esportato nel file specificato" -#: when-command.py:659 +#: when-command.py:687 msgid "removing all items" msgstr "rimozione di tutti gli elementi" -#: when-command.py:660 +#: when-command.py:688 msgid "could not remove condition list file" msgstr "impossibile rimuovere il file lista di condizioni" -#: when-command.py:661 +#: when-command.py:689 msgid "could not remove task list file" msgstr "impossibile rimuovere il file lista di task" -#: when-command.py:662 +#: when-command.py:690 msgid "could not remove signal handler list file" msgstr "impossibile rimuovere il file lista di gestori di segnali" -#: when-command.py:663 +#: when-command.py:691 msgid "exporting items:" msgstr "esportazione elementi:" -#: when-command.py:664 when-command.py:671 +#: when-command.py:692 when-command.py:699 #, python-format msgid " %s tasks" msgstr " %s task" -#: when-command.py:665 when-command.py:672 +#: when-command.py:693 when-command.py:700 #, python-format msgid " %s conditions" msgstr " %s condizioni" -#: when-command.py:666 when-command.py:673 +#: when-command.py:694 when-command.py:701 #, python-format msgid " %s signal handlers" msgstr " %s gestori di segnali" -#: when-command.py:667 +#: when-command.py:695 #, python-format msgid "items exported to file %s" msgstr "elementi esportati nel file %s" -#: when-command.py:668 +#: when-command.py:696 #, python-format msgid "importing items from file %s" msgstr "importazione elementi dal file %s" -#: when-command.py:669 +#: when-command.py:697 msgid "could not import from dump file" msgstr "impossibile importare dal file di dump" -#: when-command.py:670 +#: when-command.py:698 msgid "restoring items:" msgstr "ripristino elementi:" -#: when-command.py:674 +#: when-command.py:702 msgid "items successfully imported" msgstr "elementi importati con successo" -#: when-command.py:675 +#: when-command.py:703 msgid "item successfully deleted" msgstr "elemento eliminato con successo" -#: when-command.py:676 +#: when-command.py:704 msgid "cannot delete item" msgstr "impossibile eliminare elemento" -#: when-command.py:677 +#: when-command.py:705 msgid "cannot add items from provided file" msgstr "impossibile aggiungere elementi dal file" -#: when-command.py:678 +#: when-command.py:706 msgid "cannot add items: malformed item file" msgstr "impossibile aggiungere elementi: file malformato" -#: when-command.py:679 +#: when-command.py:707 +msgid "condition checks restarted successfully" +msgstr "test delle condizioni riavviati correttamente" + +#: when-command.py:708 msgid "no instance could be found" msgstr "impossibile trovare un'istanza" -#: when-command.py:680 +#: when-command.py:709 msgid "found a running instance" msgstr "istanza attiva trovata" -#: when-command.py:681 +#: when-command.py:710 msgid "tasks and conditions successfully exported" msgstr "task e condizioni esportati con successo" -#: when-command.py:682 +#: when-command.py:711 msgid "configuration has been reset" msgstr "la configurazione è stata reimpostata" -#: when-command.py:683 +#: when-command.py:712 msgid "tasks and conditions deleted" msgstr "task e condizioni eliminati" -#: when-command.py:684 +#: when-command.py:713 msgid "icons and data installed" msgstr "icone e dati installati" -#: when-command.py:686 +#: when-command.py:715 msgid "this program requires a graphical session" msgstr "questo programma ha bisogno di una sessione grafica" -#: when-command.py:687 +#: when-command.py:716 msgid "another instance is present: leaving" msgstr "istanza attiva già presente: uscita" -#: when-command.py:688 +#: when-command.py:717 msgid "could not find a running instance, please start it first" msgstr "impossibile trovare un'istanza attiva, deve essere avviata" -#: when-command.py:689 +#: when-command.py:718 msgid "feature not available in minimalistic mode" msgstr "non disponibile in modalità minimale" -#: when-command.py:690 +#: when-command.py:719 msgid "could not find a running instance" msgstr "impossibile trovare un'istanza attiva" -#: when-command.py:691 +#: when-command.py:720 msgid "dbus signals disabled by configuration" msgstr "segnali dbus disabilitati dalla configurazione" -#: when-command.py:692 +#: when-command.py:721 msgid "error in communication with running applet" msgstr "errore nella comunicazione con l'istanza attiva" -#: when-command.py:693 +#: when-command.py:722 msgid "an error occurred while trying to export items" msgstr "si è verificato un errore nell'esportazione degli elementi" -#: when-command.py:694 +#: when-command.py:723 msgid "cannot reset configuration, please close instance first" msgstr "impossibile reimpostare la configurazione, chiudere l'istanza" -#: when-command.py:695 +#: when-command.py:724 msgid "an error occurred while trying to reset configuration" msgstr "errore verificato nel reimpostare la configurazione" -#: when-command.py:696 +#: when-command.py:725 msgid "cannot clear items, please close instance first" msgstr "impossibile eliminare elementi, chiudere l'istanza" -#: when-command.py:697 +#: when-command.py:726 msgid "an error occurred while trying to delete items" msgstr "errore verificato nell'eliminazione degli elementi" -#: when-command.py:698 +#: when-command.py:727 msgid "cannot import items, please close instance first" msgstr "impossibile importare elementi, chiudere l'istanza" -#: when-command.py:699 +#: when-command.py:728 msgid "an error occurred while trying to import items" msgstr "errore verificato nell'importazione degli elementi" -#: when-command.py:700 +#: when-command.py:729 +#, python-format msgid "%s items could not be imported" msgstr "%s elementi non sono stati importati" -#: when-command.py:701 +#: when-command.py:730 msgid "cannot install, please close instance first" msgstr "impossibile installare, chiudere l'istanza" -#: when-command.py:702 +#: when-command.py:731 msgid "an error occurred while trying to install icons" msgstr "errore verificato nell'installazione" -#: when-command.py:703 +#: when-command.py:732 +msgid "an error occurred while restarting conditions" +msgstr "errore nel ripristino dei test delle condizioni" + +#: when-command.py:733 msgid "no error found" msgstr "nessun errore trovato" -#: when-command.py:704 +#: when-command.py:734 msgid "unknown item type" msgstr "tipo di elemento sconosciuto" -#: when-command.py:705 +#: when-command.py:735 msgid "item name conflict" msgstr "conflitto tra nomi di elementi" -#: when-command.py:706 +#: when-command.py:736 msgid "item not found" msgstr "elemento non trovato" -#: when-command.py:707 +#: when-command.py:737 msgid "error communicating with applet" msgstr "errore nella comunicazione con l'applet" -#: when-command.py:708 +#: when-command.py:738 msgid "unknown error or dependency conflict" msgstr "errore sconosciuto o conflitto di dipendenza" -#: when-command.py:710 +#: when-command.py:740 msgid "show applet version" msgstr "visualizza la versione dell'applet" -#: when-command.py:711 +#: when-command.py:741 msgid "show settings dialog box for the running instance [R]" msgstr "visualizza box impostazioni per l'istanza attiva [R]" -#: when-command.py:712 +#: when-command.py:742 msgid "show history dialog box for the running instance [R]" msgstr "visualizza box storico per l'istanza attiva [R]" -#: when-command.py:713 +#: when-command.py:743 msgid "show tasks dialog box for the running instance [R]" msgstr "visualizza box dei task per l'istanza attiva [R]" -#: when-command.py:714 +#: when-command.py:744 msgid "show conditions box for the running instance [R]" msgstr "visualizza box condizioni per l'istanza attiva [R]" -#: when-command.py:715 +#: when-command.py:745 msgid "show dbus signals box for the running instance [R]" msgstr "visualizza box segnali dbus per l'istanza attiva [R]" -#: when-command.py:716 +#: when-command.py:746 msgid "reset general configuration to default [S]" msgstr "reimposta la configurazione a predefinita [S]" -#: when-command.py:717 +#: when-command.py:747 msgid "show applet icon" msgstr "visualizza icona applet" -#: when-command.py:718 +#: when-command.py:748 msgid "clear all tasks and conditions [S]" msgstr "elimina tutti i task e condizioni [S]" -#: when-command.py:719 +#: when-command.py:749 msgid "install application icons and autostart [S]" msgstr "installazione di icone e autostart applicazione [S]" -#: when-command.py:720 +#: when-command.py:750 msgid "query for a running instance" msgstr "verifica se c'è un'istanza attiva" -#: when-command.py:721 +#: when-command.py:751 msgid "export task history to a text file [R]" msgstr "esporta storico task in un file di testo [R]" -#: when-command.py:722 +#: when-command.py:752 msgid "run a command-line bound condition [R]" msgstr "avvia una condizione da linea di comando [R]" -#: when-command.py:723 +#: when-command.py:753 msgid "enqueue a command-line bound condition [R]" msgstr "accoda una condizione da linea di comando [R]" -#: when-command.py:724 +#: when-command.py:754 msgid "run shutdown tasks and close an existing istance [R]" msgstr "chiusura istanza attiva avviando task di chiusura [R]" -#: when-command.py:725 +#: when-command.py:755 +msgid "reset tests for already successful conditions [R]" +msgstr "ripristina test per condizioni già verificate [R]" + +#: when-command.py:756 msgid "kill an existing istance [R]" msgstr "terminazione istanza attiva [R]" -#: when-command.py:726 +#: when-command.py:757 msgid "save tasks and conditions to a portable format" msgstr "esporta task e condizioni su file portabile" -#: when-command.py:727 +#: when-command.py:758 msgid "import tasks and conditions from saved file [S]" msgstr "importa task e condizioni da file portabile [S]" -#: when-command.py:728 +#: when-command.py:759 msgid "list items of the given type to console" msgstr "mostra elementi del tipo specificato su console" -#: when-command.py:729 +#: when-command.py:760 msgid "add items from specified file or standard input" msgstr "aggiungi elementi da un file o dallo standard input" -#: when-command.py:730 +#: when-command.py:761 msgid "delete the item specified as [type:]NAME" msgstr "elimina elemento specificato come [tipo:]NOME" -#: when-command.py:731 +#: when-command.py:762 msgid "show verbose output for some options" msgstr "visualizza output esteso per alcune opzioni" -#: when-command.py:732 +#: when-command.py:763 #, python-format msgid "%s: %s, version %s" msgstr "%s: %s, versione %s" -#: when-command.py:733 +#: when-command.py:764 #, python-format msgid "" "%s: %s - %s /\n" @@ -556,7 +585,7 @@ "l'opzione --verbose per ottenere output dal comando, poiché la maggior parte " "delle operazioni non produce output per default.\n" -#: when-command.py:740 +#: when-command.py:771 #, python-format msgid "" "Note: options marked with [R] require an instance running in the " @@ -1047,62 +1076,66 @@ msgstr "Mantiene Pausa tra Sessioni" #: when-command-settings.glade.h:15 +msgid "Reset Condition Tests on Wakeup Events" +msgstr "Ripristino Test su Condizioni per Eventi di Wakeup" + +#: when-command-settings.glade.h:16 msgid "Scheduler" msgstr "Scheduler" -#: when-command-settings.glade.h:16 +#: when-command-settings.glade.h:17 msgid "Max Concurrent Tasks:" msgstr "Max Task Concorrenti:" -#: when-command-settings.glade.h:17 +#: when-command-settings.glade.h:18 msgid "Critical" msgstr "Critical" -#: when-command-settings.glade.h:18 +#: when-command-settings.glade.h:19 msgid "Error" msgstr "Error" -#: when-command-settings.glade.h:19 +#: when-command-settings.glade.h:20 msgid "Warning" msgstr "Warning" -#: when-command-settings.glade.h:20 +#: when-command-settings.glade.h:21 msgid "Info" msgstr "Info" -#: when-command-settings.glade.h:21 +#: when-command-settings.glade.h:22 msgid "Debug" msgstr "Debug" -#: when-command-settings.glade.h:22 +#: when-command-settings.glade.h:23 msgid "Log Level:" msgstr "Livello Log:" -#: when-command-settings.glade.h:23 +#: when-command-settings.glade.h:24 msgid "Max Log Size (bytes):" msgstr "Max Dimensione Log (byte):" -#: when-command-settings.glade.h:24 +#: when-command-settings.glade.h:25 msgid "Number Of Log Backups:" msgstr "Numero dei Backup Log:" -#: when-command-settings.glade.h:25 +#: when-command-settings.glade.h:26 msgid "Instance History Items:" msgstr "Elementi Storico Istanza:" -#: when-command-settings.glade.h:26 +#: when-command-settings.glade.h:27 msgid "Enable User Defined Events (DBus)" msgstr "Abilita Eventi Utente (DBus)" -#: when-command-settings.glade.h:27 +#: when-command-settings.glade.h:28 msgid "Enable File and Directory Notifications" msgstr "Abilita Notifiche File e Directory" -#: when-command-settings.glade.h:28 +#: when-command-settings.glade.h:29 msgid "Enable Task and Condition Environment Variables" msgstr "Abilita Variabili Ambiente di Task e Condizioni" -#: when-command-settings.glade.h:29 +#: when-command-settings.glade.h:30 msgid "Advanced" msgstr "Avanzate" Files old/when-command-0.9.11-beta.1/share/locale/it/LC_MESSAGES/when-command.mo and new/when-command-0.9.12-beta.3/share/locale/it/LC_MESSAGES/when-command.mo differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/when-command-0.9.11-beta.1/share/man/man1/when-command.1 new/when-command-0.9.12-beta.3/share/man/man1/when-command.1 --- old/when-command-0.9.11-beta.1/share/man/man1/when-command.1 2016-05-03 19:52:11.000000000 +0200 +++ new/when-command-0.9.12-beta.3/share/man/man1/when-command.1 2016-06-15 23:35:46.000000000 +0200 @@ -1,6 +1,6 @@ ." Man page generated from reStructuredText. . -.TH "WHEN-COMMAND" "1" "January 12, 2016" "0.9" "When Documentation" +.TH "WHEN-COMMAND" "1" "May 22, 2016" "0.9" "When Documentation" .SH NAME when-command - When Documentation . @@ -51,7 +51,7 @@ something has gone the wrong way -- such as the \fB--show-settings\fP switch mentioned above, or the \fB-I\fP (or \fB--show-icon\fP) switch, to recover from an unwantedly hidden icon. There are also switches that grant access to "advanced" -features, which are better covered in the next sections. +features, which are better covered in the online documentation. .sp The available options are: .INDENT 0.0 @@ -72,15 +72,19 @@ .TP .B -d\fP,\fB --show-signals show the DBus signal handler editor box for an -existing instance [1] +existing instance .TP .B -R\fP,\fB --reset-config reset applet configuration to default, requires the applet to be shut down with an appropriate switch .TP +.B -E\fP,\fB --restart-conditions +reset conditions to be checked as if they had not +been already successful: it allows to restore checks +also for conditions that are not recurrent +.TP .B -I\fP,\fB --show-icon -show applet icon, the icon will be shown at the next -startup +show applet icon .TP .B -T\fP,\fB --install install or reinstall application icon and autostart @@ -241,7 +245,12 @@ will remain paused upon applet restart if it was paused when the applet (or session) was closed. Please notice that the indicator icon gives feedback anyway about the paused/non-paused state. Use \fBpreserve pause\fP in the -configuration file. +configuration file +.IP (bu 2 +\fIReset Condition Tests on Wakeup Events\fP: automatically restore condition +checks for non recurring conditions also on wakeup (usually from suspended +state) as if the applet were restarted. The option is \fBwakeup reset\fP in +the configuration. .UNINDENT .UNINDENT .UNINDENT @@ -286,20 +295,10 @@ .UNINDENT .UNINDENT .sp -The configuration is \fIimmediately stored upon confirmation\fP to the -configuration file, although some settings (such as \fINotifications\fP, -\fIIcon Theme\fP, and most advanced settings) might require a restart of the -applet. The configuration file can be edited with a standard text editor, and -it follows some conventions common to most configuration files. The sections +The configuration file can be edited with a standard text editor, and it +follows some conventions common to most configuration files. The sections in the file might slightly differ from the tabs in the \fISettings\fP dialog, but the entries are easily recognizable. -.sp -Manual configuration can be particularly useful to bring back the program -icon once the user decided to hide it losing access to the menu, -by setting the \fBshow icon\fP entry to \fBtrue\fP&. Another way to force access to -the \fISettings\fP dialog box when the icon is hidden is to invoke the applet from -the command line using the \fB--show-settings\fP (or \fB-s\fP) switch when an -instance is running. .SH ITEM DEFINITION FILE .sp The \fIitems\fP (\fItasks\fP, \fIconditions\fP and especially \fIsignal handlers\fP) managed @@ -402,7 +401,7 @@ .SS Signal Handlers .sp Signal handlers are an advanced feature, and cannot be defined if they are -not enabled in the configuration: read the appropriate section on how to +not enabled in the configuration: read the appropriate paragraph on how to enable \fIuser defined events\fP&. If user events are enabled, the following entries can be used: .INDENT 0.0 @@ -711,10 +710,6 @@ generated using the \fB--export\fP switch. If no argument is given, \fBWhen\fP expects that items have been exported giving no file specification to the \fB--export\fP switch. After import \fBWhen\fP can be restarted. -.IP [1] 5 -This is an advanced feature and is not available by default. -It has to be enabled in the program settings to be accessible. Refer to the -appropriate chapter for more information. .SH AUTHOR Francesco Garosi .SH COPYRIGHT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/when-command-0.9.11-beta.1/share/when-command/when-command-settings.glade new/when-command-0.9.12-beta.3/share/when-command/when-command-settings.glade --- old/when-command-0.9.11-beta.1/share/when-command/when-command-settings.glade 2016-05-03 19:52:11.000000000 +0200 +++ new/when-command-0.9.12-beta.3/share/when-command/when-command-settings.glade 2016-06-15 23:35:46.000000000 +0200 @@ -304,6 +304,22 @@ <property name="height">1</property> </packing> </child> + <child> + <object class="GtkCheckButton" id="chkResetConditions"> + <property name="label" translatable="yes">Reset Condition Tests on Wakeup Events</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">4</property> + <property name="width">2</property> + <property name="height">1</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/when-command-0.9.11-beta.1/share/when-command/when-command.py new/when-command-0.9.12-beta.3/share/when-command/when-command.py --- old/when-command-0.9.11-beta.1/share/when-command/when-command.py 2016-05-03 19:52:11.000000000 +0200 +++ new/when-command-0.9.12-beta.3/share/when-command/when-command.py 2016-06-15 23:35:46.000000000 +0200 @@ -78,8 +78,8 @@ # * the first holds the version ID that build utilities can extract # * the second one includes a message that is used both as a commit message # and as a tag-associated message (in `git tag -m`) -APPLET_VERSION = '0.9.11~beta.1' -APPLET_TAGDESC = 'Correctly manage storage device attachment in Xenial' +APPLET_VERSION = '0.9.12~beta.3' +APPLET_TAGDESC = 'Work around an issue occurring on unsupported locales' # logging constants LOG_FORMAT = '%(asctime)s %(levelname)s: %(message)s' @@ -493,6 +493,12 @@ # TODO: add more stock event definitions here } +# list of events that may reset conditions +sysevents_reset_conditions = [ + EVENT_SYSTEM_RESUME, + # EVENT_SESSION_SCREENSAVER_EXIT, +] + # verify that the user folders are present, otherwise create them def verify_user_folders(): @@ -566,9 +572,12 @@ # setup i18n for both applet text and dialogs -locale.setlocale(locale.LC_ALL, locale.getlocale()) -locale.bindtextdomain(APPLET_NAME, APP_LOCALE_FOLDER) -locale.textdomain(APPLET_NAME) +try: + locale.setlocale(locale.LC_ALL, locale.getlocale()) + locale.bindtextdomain(APPLET_NAME, APP_LOCALE_FOLDER) + locale.textdomain(APPLET_NAME) +except locale.Error: + locale.setlocale(locale.LC_ALL, 'C') _ = locale.gettext @@ -617,6 +626,7 @@ resources.DLG_CONFIRM_DELETE_TASK = _("Are you sure you want to delete task %s?") resources.DLG_CONFIRM_DELETE_CONDITION = _("Are you sure you want to delete condition %s?") resources.DLG_CONFIRM_DELETE_SIGHANDLER = _("Are you sure you want to delete signal handler %s?") +resources.DLG_CONFIRM_RESET_CONDITIONS = _("Are you sure you want to reset condition tests?") resources.DLG_CANNOT_DELETE_TASK = _("Task %s could not be deleted.") resources.DLG_CANNOT_DELETE_CONDITION = _("Condition %s could not be deleted.") resources.DLG_CANNOT_DELETE_SIGHANDLER = _("Signal handler %s could not be deleted.") @@ -624,6 +634,7 @@ resources.DLG_CANNOT_FIND_CONDITION = _("Condition %s could not be found.") resources.DLG_CANNOT_FIND_SIGHANDLER = _("Signal handler %s could not be found.") resources.DLG_CANNOT_REGISTER_SIGHANDLER = _("Signal handler %s could not be registered.") +resources.DLG_RESET_CONDITIONS_FAILED = _("Could not reset tests: a restart\nof the applet may be required") resources.DLG_PATH_NOT_SPECIFIED = _("Must specify watched path: condition not created.") resources.DLG_WRONG_EXIT_STATUS = _("Invalid value for exit status specified.\nPlease consider reviewing it.") resources.DLG_WRONG_PARAM_INDEX = _("Invalid value for signal parameter index specified.\nCannot add parameter test.") @@ -636,12 +647,14 @@ resources.DLG_TITLE_CHOOSE_FILEDIR = _("Choose File or Directory") resources.NOTIFY_TASK_FAILED = _("Task failed: %s") +resources.NOTIFY_RESET_CONDITIONS_FAILED = _("Could not reset tests: a restart\nof the applet may be required") resources.MENU_EDIT_TASKS = _("Edit Tasks...") resources.MENU_EDIT_CONDITIONS = _("Edit Conditions...") resources.MENU_SETTINGS = _("Settings...") resources.MENU_TASK_HISTORY = _("Task History...") resources.MENU_PAUSE = _("Pause") +resources.MENU_RESET_CONDS = _("Reset Tests") resources.MENU_ABOUT = _("About...") resources.MENU_QUIT = _("Quit") @@ -694,6 +707,7 @@ resources.OERR_ITEMOPS_DEL_FAIL = _("cannot delete item") resources.OERR_ITEMOPS_ADD_NOREAD = _("cannot add items from provided file") resources.OERR_ITEMOPS_ADD_FAIL = _("cannot add items: malformed item file") +resources.OERR_RESTART_CONDITIONS = _("condition checks restarted successfully") resources.OERR_NO_INSTANCE = _("no instance could be found") resources.OERR_FOUND_INSTANCE = _("found a running instance") resources.OERR_EXPORT = _("tasks and conditions successfully exported") @@ -718,6 +732,7 @@ resources.OERR_ERR_IMPORT_FAILITEMS = _("%s items could not be imported") resources.OERR_ERR_INSTALL_RUNNING = _("cannot install, please close instance first") resources.OERR_ERR_INSTALL_GENERIC = _("an error occurred while trying to install icons") +resources.OERR_ERR_RESTART_CONDITIONS = _("an error occurred while restarting conditions") resources.OERR_ERR_ITEMOPS_OK = _("no error found") resources.OERR_ERR_ITEMOPS_TYPE = _("unknown item type") resources.OERR_ERR_ITEMOPS_CONFLICT = _("item name conflict") @@ -740,6 +755,7 @@ resources.COMMAND_LINE_HELP_RUN_CONDITION = _("run a command-line bound condition [R]") resources.COMMAND_LINE_HELP_DEFER_CONDITION = _("enqueue a command-line bound condition [R]") resources.COMMAND_LINE_HELP_SHUTDOWN = _("run shutdown tasks and close an existing istance [R]") +resources.COMMAND_LINE_HELP_RESTART_CONDITIONS = _("reset tests for already successful conditions [R]") resources.COMMAND_LINE_HELP_KILL = _("kill an existing istance [R]") resources.COMMAND_LINE_HELP_EXPORT = _("save tasks and conditions to a portable format") resources.COMMAND_LINE_HELP_IMPORT = _("import tasks and conditions from saved file [S]") @@ -1927,6 +1943,10 @@ signal_handlers.save() conditions.save() + @dbus.service.method(APPLET_BUS_NAME, out_signature='b') + def RestartConditions(self): + return reset_conditions() + @dbus.service.method(APPLET_BUS_NAME, out_signature='as') def GetHistoryEntries(self): l = [] @@ -1978,6 +1998,7 @@ 'tick seconds': int, 'skip seconds': int, 'preserve pause': bool_spec, + 'wakeup reset': bool_spec, }, 'General': { 'show icon': bool_spec, @@ -2006,6 +2027,7 @@ tick seconds = 15 skip seconds = 60 preserve pause = true + wakeup reset = true [General] show icon = true @@ -2148,6 +2170,17 @@ applet_lock.release() +# check if current event should reset conditions +def sysevent_check_reset_conditions(event): + if event in sysevents_reset_conditions \ + and config.get('Scheduler', 'wakeup reset'): + applet_log.info("SYSEVENT: event %s is configured to reset conditions" % event) + if not reset_conditions(): + applet_log.error("SYSEVENT: conditions could not be correctly reset") + applet.set_attention() + applet.notify(resources.NOTIFY_RESET_CONDITIONS_FAILED) + + # check among the path notifications by setting the global changed path: # it is not going to be used for now, all file notification events are handled # in a deferred fashion until a safe way to specify synchronous notifications @@ -2344,6 +2377,18 @@ return next((c for c in self._list if c.cond_name == cond_name), None) +# a simple utility to reset successfulness flag on all conditions +# note that the flag name is not mangled, so it can be used as it is +# TODO: transition to either a condition method or a non private variable +def reset_conditions(): + applet_log.info("MAIN: resetting success flag on all conditions") + applet_lock.acquire() + for condition in conditions: + condition._has_succeeded = False + applet_lock.release() + return True + + class SignalHandlers(object): _list = [] @@ -4358,6 +4403,7 @@ return if signal_caught and self.callback(self.manager, *args): self._info("stock event signal caught: raising event %s" % self.handler_name) + sysevent_check_reset_conditions(self.handler_name) if self.defer: deferred_events.append(self.handler_name) else: @@ -5573,6 +5619,8 @@ o('chkNotifications').set_active(config.get('General', 'notifications')) o('chkPreservePause').set_active( config.get('Scheduler', 'preserve pause')) + o('chkResetConditions').set_active( + config.get('Scheduler', 'wakeup reset')) o('cbLogLevel').set_active(log_level_idx) o('cbIconTheme').set_active(icon_theme_idx) o('txtTickSeconds').set_text( @@ -5634,6 +5682,8 @@ o('chkEnableEnvVars').get_active()) preserve_pause = o('chkPreservePause').get_active() config.set('Scheduler', 'preserve pause', preserve_pause) + wakeup_reset = o('chkResetConditions').get_active() + config.set('Scheduler', 'wakeup reset', wakeup_reset) if not preserve_pause: unlink_pause_file() try: @@ -6129,6 +6179,12 @@ item_pause.show() menu.append(item_pause) + if not minimalistic: + item_reset_conds = Gtk.MenuItem(label=resources.MENU_RESET_CONDS) + item_reset_conds.connect('activate', self.reset_conditions) + item_reset_conds.show() + menu.append(item_reset_conds) + separator = Gtk.SeparatorMenuItem() separator.show() menu.append(separator) @@ -6162,6 +6218,22 @@ self.indicator.set_icon_theme_path( os.path.join(APP_ICON_FOLDER, icon_suffix)) + def reset_conditions(self, _): + msgbox = Gtk.MessageDialog(type=Gtk.MessageType.QUESTION, + buttons=Gtk.ButtonsType.YES_NO) + msgbox.set_markup(resources.DLG_CONFIRM_RESET_CONDITIONS) + ret = msgbox.run() + msgbox.hide() + msgbox.destroy() + if ret == Gtk.ResponseType.YES: + if not reset_conditions(): + msgbox = Gtk.MessageDialog(type=Gtk.MessageType.ERROR, + buttons=Gtk.ButtonsType.OK) + msgbox.set_markup(resources.DLG_RESET_CONDITIONS_FAILED) + msgbox.run() + msgbox.hide() + msgbox.destroy() + # try to do most configuration tasks automatically def reconfigure(self): global ui_add_task @@ -6469,6 +6541,23 @@ return False +def call_restart_conditions(verbose=False): + bus = dbus.SessionBus() + proxy = bus.get_object(APPLET_BUS_NAME, APPLET_BUS_PATH) + try: + if not proxy.RestartConditions(): + applet_log.error("MAIN: failed to restart conditions") + oerr(resources.OERR_ERR_RESTART_CONDITIONS, verbose) + return False + else: + applet_log.info("MAIN: conditions restarted successfully") + oerr(resources.OERR_RESTART_CONDITIONS, verbose) + return True + except dbus.exceptions.DBusException: + oerr(resources.OERR_ERR_ITEMOPS_DBUS, verbose) + return False + + def do_add_items(filename, verbose=False): if filename == '-': applet_log.info("MAIN: reading items from standard input") @@ -6961,6 +7050,11 @@ help=resources.COMMAND_LINE_HELP_DEFER_CONDITION ) parser.add_argument( + '-E', '--restart-conditions', + dest='restart_conditions', action='store_true', + help=resources.COMMAND_LINE_HELP_RESTART_CONDITIONS + ) + parser.add_argument( '--item-list', dest='item_list', metavar='ITEMTYPE', nargs='?', const='*', help=resources.COMMAND_LINE_HELP_ITEM_LIST @@ -7082,19 +7176,27 @@ if args.run_condition: if not running: - oerr(resources.OERR_ERR_DBUS_DISABLED, verbose) + oerr(resources.OERR_ERR_REQUIRE_INSTANCE, verbose) sys.exit(2) else: if not(call_run_condition(args.run_condition, False, verbose)): sys.exit(2) if args.defer_condition: if not running: - oerr(resources.OERR_ERR_DBUS_DISABLED, verbose) + oerr(resources.OERR_ERR_REQUIRE_INSTANCE, verbose) sys.exit(2) else: if not(call_run_condition(args.defer_condition, True, verbose)): sys.exit(2) + if args.restart_conditions: + if not running: + oerr(resources.OERR_ERR_REQUIRE_INSTANCE, verbose) + sys.exit(2) + else: + if not(call_restart_conditions(verbose)): + sys.exit(2) + if args.item_delete: if running: if not call_remove_item(args.item_delete, verbose):