2014-09-21 68 views
1

所以我寫了一個擴展,它有一些偏好。 我使用convenience.js(如描述的here)將首選項存儲在GSettings中。 相關的代碼如下所示:Gnome-Shell擴展,觀察GSettings上的更改?

const SETTINGS_APP_SORT_MODE = 'sort-mode'; 

this._settings = Convenience.getSettings("org.gnome.shell.extensions.workspace-alt-tab"); //get schema 

this._settings.set_string(SETTINGS_APP_SORT_MODE,modeCapture); //set value 
this._sortMode = this._settings.get_string(SETTINGS_APP_SORT_MODE); //get value 

到目前爲止,它工作得很好,我也可以使用命令

gsettings監控org.gnome.shell.extensions.workspace-ALT標籤排序 - 模式

爲了確保我真的設置了我想要的值。

但這裏涉及到我的問題,當我嘗試捕獲對這些設置所做的更改以反映它們在我的代碼中時。從我在其他擴展所看到的,我猜應該是這個樣子:

_init: function(params) { 
     this._settingsChanged= 
     this._settings.connect('changed', 
      Lang.bind(this,this._settingsChanged)); //get notified on every schema change 
     this._sortModeChangedId = 
     this._settings.connect('changed::' + SETTINGS_APP_SORT_MODE, 
      Lang.bind(this,this._sortModeChanged)); //get notified for sort-mode changes 
     this._sortModeChanged(); //force initialization 
    }, 


    _settingsChanged: function() { 
     this._sortMode = this._settings.get_string(SETTINGS_APP_SORT_MODE); 
     log("[_settingsChanged] new sortMode: "+this._sortMode); 
    }, 
    _sortModeChanged: function() { 
     this._sortMode = this._settings.get_string(SETTINGS_APP_SORT_MODE); 
     log("[_sortModeChanged] new sortMode: "+this._sortMode); 
    } 

但問題是,我只看到由init調用日誌行:

GJS - 消息:JS日誌:[_sortModeChanged] new sortMode:最近最近使用

此外,我絕對不知道如何調試這種事情(即使在LookingGlass中...)。如果有人能指出我愚蠢的錯誤,或者給出一些關於如何調試這種事情的指示器,那將非常感激!

回答

1

從外觀看來,它似乎是重寫_settingsChanged變量。 注意裏面init()你正在做以下幾點:

this._settingsChanged = 
    this._settings.connect('changed', 
     Lang.bind(this,this._settingsChanged)); //get notified on every schema change 

在這裏,你實際上是重寫_settingsChanged()方法與從connect()返回的值。 嘗試在不同的屬性保存返回值,你的代碼更改爲類似:

this._settingsChangedId = 
    this._settings.connect('changed', 
     Lang.bind(this,this._settingsChanged)); //get notified on every schema change 

讓我知道是否能解決這個問題爲您服務。
另外,從我對Gnome-Shell開發(無文檔)的痛苦經歷中,我發現最好使用IRC通道來支持:#irc.gnome.org上的#gnome-shell

+0

Humm,來想一想,因爲你傳遞的是函數的引用,所以這可能不是問題。 – Tudmotu 2014-09-21 11:23:48

+0

感謝您的時間!不幸的是,這並不能解決問題(如果是這樣,我應該總是在日誌中看到帶有「[_sortModeChanged]」的行)。當我得到時間時,我會試着詢問IRC – KrahnacK 2014-09-21 16:10:47

+0

對於沒有任何幫助,我表示抱歉= \您是否在日誌中看到任何內容? – Tudmotu 2014-09-22 10:26:00