Port to GTK4 & Gnome-Shell 42

This commit is contained in:
Benjamin Drieu 2023-03-28 21:21:49 +02:00
parent d987193ac6
commit 6e83fc331b
6 changed files with 42 additions and 25 deletions

View File

@ -3,6 +3,6 @@
"description": "Checks for various monitoring servers (Icinga & Icinga2 at the moment)", "description": "Checks for various monitoring servers (Icinga & Icinga2 at the moment)",
"uuid": "monito@drieu.org", "uuid": "monito@drieu.org",
"shell-version": [ "shell-version": [
"40" "42"
] ]
} }

View File

@ -100,6 +100,7 @@ function init() {
this.settings = ExtensionUtils.getSettings(SETTINGS_SCHEMA); this.settings = ExtensionUtils.getSettings(SETTINGS_SCHEMA);
this.gtkVersion = Gtk.get_major_version(); this.gtkVersion = Gtk.get_major_version();
monitoLog ( 'GTK version is ' + this.gtkVersion );
} }
@ -204,28 +205,27 @@ function buildPrefsWidget() {
// Action Bar // Action Bar
let accountsChooserActionBar = new Gtk.ActionBar ( { valign: Gtk.Align.END } ); let accountsChooserActionBar = new Gtk.ActionBar ( { valign: Gtk.Align.END } );
if ( this.gtkVersion == 4 ) this.addToContainer ( accountsChooserContainer, accountsChooserActionBar );
accountsChooserContainer.append(accountsChooserActionBar, true, true, 0);
else
accountsChooserContainer.add(accountsChooserActionBar);
let accountCreateButton = Gtk.Button.new_from_icon_name ( 'list-add', let accountCreateButton = Gtk.Button.new_from_icon_name ( 'list-add',
Gtk.IconSize.BUTTON ); Gtk.IconSize.BUTTON );
accountsChooserActionBar.add ( accountCreateButton ); accountsChooserActionBar.pack_start(accountCreateButton, true);
//this.addToContainer ( accountsChooserActionBar, accountCreateButton );
accountCreateButton.connect ( 'clicked', Lang.bind ( this, this.createAccount ) ); accountCreateButton.connect ( 'clicked', Lang.bind ( this, this.createAccount ) );
let accountRemoveButton = Gtk.Button.new_from_icon_name ( 'list-remove', let accountRemoveButton = Gtk.Button.new_from_icon_name ( 'list-remove',
Gtk.IconSize.BUTTON ); Gtk.IconSize.BUTTON );
accountsChooserActionBar.add ( accountRemoveButton ); accountsChooserActionBar.pack_start(accountRemoveButton, true);
// this.addToContainer ( accountsChooserActionBar, accountRemoveButton );
accountRemoveButton.connect ( 'clicked', Lang.bind ( this, this.removeAccount ) ); accountRemoveButton.connect ( 'clicked', Lang.bind ( this, this.removeAccount ) );
this.createAccountWidgets ( false ) ; this.createAccountWidgets ( false ) ;
this.addToContainer ( mainVbox, mainWidget );
if ( this.gtkVersion == 4 ) if ( this.gtkVersion == 4 )
mainVbox.append(mainWidget, true, true, 0); mainVbox.set_visible(true);
else else
mainVbox.add(mainWidget); mainVbox.show_all();
mainVbox.show_all();
return mainVbox; return mainVbox;
} }
@ -300,7 +300,10 @@ function createAccountWidgets ( isActive )
} ) ); } ) );
this._accountsWidget.show_all(); if ( this.gtkVersion == 4 )
this._accountsWidget.set_visible(true);
else
this._accountsWidget.show_all();
} }
@ -396,9 +399,9 @@ function createColumnsPrefTab ( noteBook, type, isActive )
this.ColumnNameRenderer.connect("edited", onComboChanged) this.ColumnNameRenderer.connect("edited", onComboChanged)
this.ColumnNameRenderer.col = 0; this.ColumnNameRenderer.col = 0;
if ( this.gtkVersion == 4 ) if ( this.gtkVersion == 4 )
columnNumbers.append(this.ColumnNameRenderer, true);
else
columnNumbers.pack_start(this.ColumnNameRenderer, true); columnNumbers.pack_start(this.ColumnNameRenderer, true);
else
columnNumbers.append(this.ColumnNameRenderer, true);
columnNumbers.add_attribute(this.ColumnNameRenderer, 'text', 0); columnNumbers.add_attribute(this.ColumnNameRenderer, 'text', 0);
this.treeView.append_column(columnNumbers); this.treeView.append_column(columnNumbers);
this.ColumnNameRenderer.connect('edited', Lang.bind ( this, this.editColumn ) ); this.ColumnNameRenderer.connect('edited', Lang.bind ( this, this.editColumn ) );
@ -406,10 +409,10 @@ function createColumnsPrefTab ( noteBook, type, isActive )
let _colSize = new Gtk.TreeViewColumn ( { title: _("Size") } ); let _colSize = new Gtk.TreeViewColumn ( { title: _("Size") } );
let _colRenderer = new Gtk.CellRendererSpin ( { adjustment: new Gtk.Adjustment ( { lower: 0, upper: 999, step_increment: 1, page_increment: 10 } ), let _colRenderer = new Gtk.CellRendererSpin ( { adjustment: new Gtk.Adjustment ( { lower: 0, upper: 999, step_increment: 1, page_increment: 10 } ),
editable: true } ); editable: true } );
if ( this.gtkVersion == 4 ) // if ( this.gtkVersion == 4 )
_colSize.append(_colRenderer, true); // _colSize.append(_colRenderer, true);
else // else
_colSize.pack_start(_colRenderer, true); _colSize.pack_start(_colRenderer, true);
_colSize.add_attribute(_colRenderer, 'text', 1); _colSize.add_attribute(_colRenderer, 'text', 1);
this.treeView.append_column(_colSize); this.treeView.append_column(_colSize);
_colRenderer.col = 1; _colRenderer.col = 1;
@ -424,12 +427,14 @@ function createColumnsPrefTab ( noteBook, type, isActive )
let rowCreateButton = Gtk.Button.new_from_icon_name ( 'list-add', let rowCreateButton = Gtk.Button.new_from_icon_name ( 'list-add',
Gtk.IconSize.BUTTON ); Gtk.IconSize.BUTTON );
rowsChooserActionBar.add ( rowCreateButton ); rowsChooserActionBar.pack_start(rowCreateButton, true);
// rowsChooserActionBar.add ( rowCreateButton );
rowCreateButton.connect ( 'clicked', Lang.bind ( this, this.createColumnRow ) ); rowCreateButton.connect ( 'clicked', Lang.bind ( this, this.createColumnRow ) );
let rowRemoveButton = Gtk.Button.new_from_icon_name ( 'list-remove', let rowRemoveButton = Gtk.Button.new_from_icon_name ( 'list-remove',
Gtk.IconSize.BUTTON ); Gtk.IconSize.BUTTON );
rowsChooserActionBar.add ( rowRemoveButton ); rowsChooserActionBar.pack_start(rowRemoveButton, true);
// rowsChooserActionBar.add ( rowRemoveButton );
rowRemoveButton.connect ( 'clicked', Lang.bind ( this, this.removeColumnRow ) ); rowRemoveButton.connect ( 'clicked', Lang.bind ( this, this.removeColumnRow ) );
grid.attach ( rowsChooserActionBar, 0, 2, 1, 1 ); grid.attach ( rowsChooserActionBar, 0, 2, 1, 1 );
@ -448,7 +453,7 @@ function onComboChanged(widget, path, text)
function activateAccountRow ( ) { function activateAccountRow ( ) {
if ( this._accountsWidget ) if ( this._accountsWidget )
this._accountsWidget.destroy ( ); this._accountsWidgetContainer.remove ( this._accountsWidget );
this.createAccountWidgets ( true ); this.createAccountWidgets ( true );
this.store = new Gtk.ListStore(); this.store = new Gtk.ListStore();
@ -543,7 +548,10 @@ function addAccountLine ( server_id )
_label.margin = 5; _label.margin = 5;
row.add ( _label ); row.add ( _label );
this.accountsChooser.add ( row ); this.accountsChooser.add ( row );
this.accountsChooser.show_all(); if ( this.gtkVersion >= 4 )
this.accountsChooser.set_visible(true);
else
this.accountsChooser.show_all();
} }
} }
@ -660,6 +668,15 @@ function editColumn ( widget, path, text )
} }
function addToContainer ( parent, child )
{
if ( this.gtkVersion == 4 )
parent.append(child, true, true, 0);
else
parent.add(child);
}
function monitoLog ( msg ) function monitoLog ( msg )
{ {
log ( 'Monito: ' + msg ); log ( 'Monito: ' + msg );

View File

@ -29,7 +29,7 @@ const Me = ExtensionUtils.getCurrentExtension();
const Preferences = Me.imports.prefs; const Preferences = Me.imports.prefs;
class GenericServer { var GenericServer = class {
constructor ( _server, _extension, _serverType = 'Generic' ) constructor ( _server, _extension, _serverType = 'Generic' )
{ {

View File

@ -32,7 +32,7 @@ const GenericServer = Me.imports.servers.genericserver.GenericServer;
let _httpSession; let _httpSession;
class Icinga extends GenericServer { var Icinga = class extends GenericServer {
constructor ( _server, extension ) { constructor ( _server, extension ) {
super(_server, extension, 'Icinga'); super(_server, extension, 'Icinga');
} }

View File

@ -30,7 +30,7 @@ const Preferences = Me.imports.prefs;
const GenericServer = Me.imports.servers.genericserver.GenericServer; const GenericServer = Me.imports.servers.genericserver.GenericServer;
class Icinga2 extends GenericServer { var Icinga2 = class extends GenericServer {
constructor ( _server, extension ) { constructor ( _server, extension ) {
super(_server, extension, 'Icinga2'); super(_server, extension, 'Icinga2');

View File

@ -30,7 +30,7 @@ const Preferences = Me.imports.prefs;
const GenericServer = Me.imports.servers.genericserver.GenericServer; const GenericServer = Me.imports.servers.genericserver.GenericServer;
class Icinga2API extends GenericServer { var Icinga2API = class extends GenericServer {
constructor ( _server, extension ) { constructor ( _server, extension ) {
super(_server, extension, 'Icinga2 API'); super(_server, extension, 'Icinga2 API');