diff --git a/extension.js b/extension.js
index 93cb01e..4d5be5a 100644
--- a/extension.js
+++ b/extension.js
@@ -75,9 +75,7 @@ class Indicator extends PanelMenu.Button {
this.initStatus ( );
this.namesBoxes = { };
- this.warningBoxes = { };
- this.criticalBoxes = { };
- this.unknownBoxes = { };
+ this.boxes = { };
this.sortIcons = { };
account_settings [ server ] = Preferences.getAccountSettings ( this.server );
@@ -108,15 +106,34 @@ class Indicator extends PanelMenu.Button {
this.account_settings.bind ( 'name', this.namesBoxes [ this.server ], 'text', Gio.SettingsBindFlags.GET );
this.namesBoxes [ this.server ].connect ( 'button-press-event', Lang.bind ( this, function ( ) { this.setMenu ( this.menu ); } ) );
+
+ for ( var boxName of [ 'ok', 'warning', 'critical', 'unknown' ] )
+ {
+ let _box = new St.BoxLayout( { style_class: 'monito-%s-box monito-box'.format(boxName), visible: false } );
+ _box.set_style ( 'background-color: %s; color: %s'.format ( this.account_settings.get_string ( boxName + '-color' ),
+ this.account_settings.get_string ( boxName + '-fg' ) ) );
+ this.account_settings.connect("changed::%s-color".format(boxName), Lang.bind ( { widget: _box }, setColor ) );
+ this.account_settings.connect("changed::%s-fg".format(boxName), Lang.bind ( { widget: _box }, setColor ) );
+
+ this.boxes [ boxName ] = new St.Label ( { text: '' } );
+ _box.add_child ( this.boxes [ boxName ] );
+ serverBox.add_child(_box);
+ }
+
+/*
+ this.okBox = new St.Label({ text: String(_status['OK']), visible: false })
+ ok_box.add_child ( this.okBox );
+ serverBox.add_child(ok_box);
+
let warning_box = new St.BoxLayout({ style_class: 'monito-warning-box monito-box' });
warning_box.set_style ( 'background-color: %s; color: %s'.format ( this.account_settings.get_string ( 'warning-color' ), this.account_settings.get_string ( 'warning-fg' ) ) );
this.account_settings.connect("changed::warning-color", Lang.bind ( { widget: warning_box }, setColor ) );
this.account_settings.connect("changed::warning-fg", Lang.bind ( { widget: warning_box }, setColor ) );
- this.warningBoxes [ this.server ] = new St.Label({ text: String(_status['WARNING']) })
- warning_box.add_child ( this.warningBoxes [ this.server ] );
+ this.warningBox = new St.Label({ text: String(_status['WARNING']), visible: false })
+ warning_box.add_child ( this.warningBox );
serverBox.add_child(warning_box);
let critical_box = new St.BoxLayout({ style_class: 'monito-critical-box monito-box' });
@@ -124,9 +141,10 @@ class Indicator extends PanelMenu.Button {
this.account_settings.connect("changed::critical-color", Lang.bind ( { widget: critical_box }, setColor ) );
this.account_settings.connect("changed::critical-fg", Lang.bind ( { widget: critical_box }, setColor ) );
- this.criticalBoxes [ this.server ] = new St.Label({ text: String(_status['CRITICAL']) })
- critical_box.add_child ( this.criticalBoxes [ this.server ] );
+ this.criticalBox = new St.Label({ text: String(_status['CRITICAL']), visible: false })
+ critical_box.add_child ( this.criticalBox );
serverBox.add_child(critical_box);
+*/
box.add_child(PopupMenu.arrowIcon(St.Side.BOTTOM));
@@ -300,8 +318,9 @@ class Indicator extends PanelMenu.Button {
if ( this.serverLogic.error || ! this.serverLogic.status )
{
this._box.add_child ( new St.Label ( { style_class: 'monito-network-error', text: this.serverLogic.error } ) );
- this.warningBoxes[this.server].set_text ( '…' );
- this.criticalBoxes[this.server].set_text ( '…' );
+ this.boxes['ok'].set_text ( '…' );
+ this.boxes['warning'].set_text ( '…' );
+ this.boxes['critical'].set_text ( '…' );
return;
}
@@ -347,9 +366,28 @@ class Indicator extends PanelMenu.Button {
infoBox.add_child ( this.createBin ( entry.status, entry, column_definitions [ 'actions' ] ) );
}
}
-
- this.warningBoxes[this.server].set_text ( String(_status.WARNING) );
- this.criticalBoxes[this.server].set_text ( String(_status.CRITICAL) );
+
+ if ( _status.WARNING == 0 && _status.CRITICAL == 0 )
+ {
+ this.boxes['ok'].set_text ( String(_status.OK) );
+ this.boxes['ok'].get_parent().show ( );
+ this.boxes['warning'].get_parent().hide ( );
+ this.boxes['critical'].get_parent().hide ( );
+ }
+ else
+ {
+ this.boxes['warning'].set_text ( String(_status.WARNING) );
+ this.boxes['critical'].set_text ( String(_status.CRITICAL) );
+ this.boxes['ok'].get_parent().hide ( );
+ this.boxes['warning'].get_parent().show ( );
+ this.boxes['critical'].get_parent().show ( );
+ }
+
+ if ( _status.UNKNOWN != 0 )
+ {
+ this.boxes['unknown'].set_text ( String(_status.UNKNOWN) );
+ this.boxes['unkown'].get_parent().show ( );
+ }
return;
}
diff --git a/prefs.js b/prefs.js
index f212044..678a816 100644
--- a/prefs.js
+++ b/prefs.js
@@ -43,24 +43,31 @@ const SETTINGS_SCHEMA_ACCOUNT = "org.gnome.shell.extensions.monito.account";
const SETTINGS_SCHEMA_ACCOUNT_PATH = "/org/gnome/shell/extensions/monito/account";
-const prefs = [ { type: Gtk.Entry, category: 'Settings', label: _('Name'), key: 'name' },
- { type: Gtk.ComboBoxText, category: 'Settings', label: _('Type'), key: 'type' },
- { type: Gtk.Entry, category: 'Settings', label: _('Username'), key: 'username' },
- { type: Gtk.Entry, category: 'Settings', label: _('Password'), key: 'password' },
- { type: Gtk.Entry, category: 'Settings', label: _('URL CGI'), key: 'urlcgi' },
- { type: Gtk.ColorButton, category: 'Colors', label: _('OK background color'), key: 'ok-color', align: Gtk.Align.START },
- { type: Gtk.ColorButton, category: 'Colors', label: _('Warning background color'), key: 'warning-color', align: Gtk.Align.START },
- { type: Gtk.ColorButton, category: 'Colors', label: _('Critical background color'), key: 'critical-color', align: Gtk.Align.START },
- { type: Gtk.ColorButton, category: 'Colors', label: _('Unknown background color'), key: 'unknown-color', align: Gtk.Align.START },
- { type: Gtk.ColorButton, category: 'Colors', label: _('OK color'), key: 'ok-fg', align: Gtk.Align.START },
- { type: Gtk.ColorButton, category: 'Colors', label: _('Warning color'), key: 'warning-fg', align: Gtk.Align.START },
- { type: Gtk.ColorButton, category: 'Colors', label: _('Critical color'), key: 'critical-fg', align: Gtk.Align.START },
- { type: Gtk.ColorButton, category: 'Colors', label: _('Unknown color'), key: 'unknown-fg', align: Gtk.Align.START },
- { type: Gtk.Entry, category: 'Filter', label: _('Only display hosts matching'), key: 'host-grep', align: Gtk.Align.START },
- { type: Gtk.Entry, category: 'Filter', label: _('Only display services matching'), key: 'service-grip', align: Gtk.Align.START },
- { type: Gtk.Entry, category: 'Filter', label: _('Do not display hosts matching'), key: 'host-filter-out', align: Gtk.Align.START },
- { type: Gtk.Entry, category: 'Filter', label: _('Do not display services matching'), key: 'service-filter-out', align: Gtk.Align.START },
- ];
+const prefs = [
+ { type: Gtk.Entry, category: 'Settings', label: _('Name'), key: 'name' },
+ { type: Gtk.ComboBoxText, category: 'Settings', label: _('Type'), key: 'type' },
+ { type: Gtk.Entry, category: 'Settings', label: _('Username'), key: 'username' },
+ { type: Gtk.Entry, category: 'Settings', label: _('Password'), key: 'password' },
+ { type: Gtk.Entry, category: 'Settings', label: _('URL CGI'), key: 'urlcgi' },
+ { type: Gtk.ColorButton, category: 'Colors', label: _('OK background color'), key: 'ok-color', align: Gtk.Align.START },
+ { type: Gtk.ColorButton, category: 'Colors', label: _('Warning background color'), key: 'warning-color', align: Gtk.Align.START },
+ { type: Gtk.ColorButton, category: 'Colors', label: _('Critical background color'), key: 'critical-color', align: Gtk.Align.START },
+ { type: Gtk.ColorButton, category: 'Colors', label: _('Unknown background color'), key: 'unknown-color', align: Gtk.Align.START },
+ { type: Gtk.ColorButton, category: 'Colors', label: _('OK color'), key: 'ok-fg', align: Gtk.Align.START },
+ { type: Gtk.ColorButton, category: 'Colors', label: _('Warning color'), key: 'warning-fg', align: Gtk.Align.START },
+ { type: Gtk.ColorButton, category: 'Colors', label: _('Critical color'), key: 'critical-fg', align: Gtk.Align.START },
+ { type: Gtk.ColorButton, category: 'Colors', label: _('Unknown color'), key: 'unknown-fg', align: Gtk.Align.START },
+ { type: Gtk.Entry, category: 'Filters', label: _('Only display hosts matching'), key: 'host-grep' },
+ { type: Gtk.Entry, category: 'Filters', label: _('Only display services matching'), key: 'service-grep' },
+ { type: Gtk.Entry, category: 'Filters', label: _('Do not display hosts matching'), key: 'host-filter-out' },
+ { type: Gtk.Entry, category: 'Filters', label: _('Do not display services matching'), key: 'service-filter-out' },
+ { type: Gtk.Entry, category: 'Replacements', label: _('Host match regexp ...'), key: 'host-match' },
+ { type: Gtk.Entry, category: 'Replacements', label: _('... to replace with'), key: 'host-replace' },
+ { type: Gtk.Entry, category: 'Replacements', label: _('Service match regexp ...'), key: 'service-match' },
+ { type: Gtk.Entry, category: 'Replacements', label: _('... to replace with'), key: 'service-replace' },
+ { type: Gtk.Entry, category: 'Replacements', label: _('Status info match regexp ...'), key: 'status-info-match' },
+ { type: Gtk.Entry, category: 'Replacements', label: _('... to replace with'), key: 'status-info-replace' },
+];
// Like 'extension.js' this is used for any one-time setup like translations.
@@ -213,18 +220,17 @@ function createAccountWidgets ( isActive )
this._accountsWidget = new Gtk.Notebook( { } );
this._accountsWidgetContainer.pack_start(this._accountsWidget, true, true, 0);
+ for ( var _tab of [ 'Settings', 'Colors', 'Filters', 'Replacements' ] )
+ {
+ this.createPrefWidgets ( _accountsWidget, _tab, isActive );
+ }
+
// Settings
- this.createPrefWidgets ( _accountsWidget, 'Settings', isActive );
this.prefWidgets['name'].connect('changed', Lang.bind(this, function () {
let _row = this.accountsChooser.get_selected_row();
_row.get_child().label = this.prefWidgets['name'].text;
} ) );
- // Colors
- this.createPrefWidgets ( _accountsWidget, 'Colors', isActive );
-
- // Filters
- this.createPrefWidgets ( _accountsWidget, 'Filters', isActive );
this._accountsWidget.show_all();
}
diff --git a/schemas/org.gnome.shell.extensions.monito@drieu.org.gschema.xml b/schemas/org.gnome.shell.extensions.monito@drieu.org.gschema.xml
index 55dd680..dff84b2 100644
--- a/schemas/org.gnome.shell.extensions.monito@drieu.org.gschema.xml
+++ b/schemas/org.gnome.shell.extensions.monito@drieu.org.gschema.xml
@@ -116,5 +116,46 @@
['status+', 'host_name+','service_display_name+']
+
+ ''
+
+
+
+ ''
+
+
+
+ ''
+
+
+
+ ''
+
+
+
+ ''
+
+
+
+ ''
+
+
+
+ ''
+
+
+
+ ''
+
+
+
+ ''
+
+
+
+ ''
+
+
+
diff --git a/servers/genericserver.js b/servers/genericserver.js
index aa2b553..f94fe1a 100644
--- a/servers/genericserver.js
+++ b/servers/genericserver.js
@@ -92,6 +92,7 @@ class GenericServer {
if ( message.status_code != Soup.Status.OK )
{
log ( '>>> error: ' + message.reason_phrase );
+ log ( '>>> data: ' + message.data );
Main.notifyError ( 'Monito: ' + this.name,
'URL: ' + this.urlcgi + "\n" +
message.status_code + ': ' + message.reason_phrase );