有沒有辦法將單選菜單項放入GNOME面板小程序的上下文菜單中,然後控制哪些項目被標記爲活動? The official documentation is less than helpful,並且我的電腦上安裝的所有小程序都使用正常的菜單項,所以我無法查看它們的源代碼以獲取任何指導。GNOME面板小程序的上下文菜單中的無線電項目
1
A
回答
0
在定義上下文菜單,每個無線電<menuitem>
的XML文件中設置type="radio"
和group
屬性無線電項目組的名稱,如:
<Root>
<popups>
<popup name="button3">
<menuitem name="Foo" verb="DoFoo" label="Foo is awesome" type="radio" group="mygroup"/>
<menuitem name="Bar" verb="DoBar" label="Bar is cool" type="radio" group="mygroup"/>
<menuitem name="Baz" verb="DoBaz" label="Baz rocks" type="radio" group="mygroup"/>
</popup>
</popups>
</Root>
您沒有設置處理程序,以與正常菜單項目相同的方式響應正在選擇的項目。相反,你聽的BonoboUIComponent的菜單中的「UI事件」信號:
BonoboUIComponent *component = panel_applet_get_popup_component (applet);
g_signal_connect (component, "ui-event", G_CALLBACK (popup_component_ui_event_cb), NULL);
/* ... */
static void
popup_component_ui_event_cb (BonoboUIComponent *component,
const gchar *path,
Bonobo_UIComponent_EventType type,
const gchar *state_string,
gpointer data)
{
}
path
是被點擊該項目的完整路徑(見下文)。 state_string
將是該項目的新狀態值(見下文)。每次點擊收音機項目會有兩個事件:一個取消選擇舊項目,一個選擇新項目。
要操縱按鈕的選中狀態,請使用bonobo_ui_component_set_prop
將「狀態」屬性設置爲「0」(未選中)或「1」(選中)。爲了安全,明確地取消舊的價值;在某些情況下,您可以在同一組中檢查多個無線電項目(尤其是在上下文菜單尚未真正繪製時)。
BonoboUIComponent *component = panel_applet_get_popup_component (applet);
bonobo_ui_component_set_prop (component, "/commands/Foo", "state", "1", NULL);
bonobo_ui_component_set_prop (component, "/commands/Bar", "state", "0", NULL);
bonobo_ui_component_set_prop (component, "/commands/Baz", "state", "0", NULL);
請注意,您通過「/ commands/name」標識無線電項目,其中name是您在XML文件中給出該項目的名稱。
您可能同樣使用bonobo_ui_component_get_prop
尋找哪個無線電項目被檢查,但你最好使用事件處理程序來檢測用戶何時點擊一個。
通常,documentation for BonoboUIComponent in libbonoboui應該提供更多關於操作菜單中項目的方法的信息。
相關問題
- 1. 無法在基於gtkmm的-GNOME面板小程序
- 2. UWP ListView項目的上下文菜單
- 3. 微調項目的上下文菜單
- 4. 將項目添加到Windows中的桌面上下文菜單
- 5. Sitecore:更改特定項目下項目的上下文菜單?
- 6. 最小化到gnome面板
- 7. Gnome文件鸚鵡螺上下文菜單「Open with」應用程序列表
- 8. 無法獲取選定的項目上下文菜單
- 9. Firefox擴展:上下文菜單項目
- 10. NetBeans項目上下文菜單
- 11. 隱藏Android上下文菜單項目
- 12. 在ListView中的項目下打開上下文菜單
- 13. 在Java中編寫Gnome 2面板小程序
- 14. 面板中的引導程序下拉菜單
- 15. 在Windows中的上下文菜單項
- 16. WPF中ListBox的上下文菜單項
- 17. 刪除列表視圖中的項目的上下文菜單
- 18. 的SmartClient:無線電項目
- 19. ExtJS中的菜單項內的上下文菜單
- 20. 上下文菜單父項?
- 21. 上下文菜單項
- 22. 上下文菜單項的事件處理程序
- 23. GTK:定位上下文菜單項w.r.t上下文菜單
- 24. 如何解析C++中的XDG/gnome/kde菜單/桌面項目結構?
- 25. 無法使選項菜單..顯示爲上下文菜單Android
- 26. Visual Studio 2013上下文菜單隻在Web應用程序項目中變慢
- 27. 在上下文菜單標題中顯示選定的項目
- 28. 如何獲取上下文菜單中的選定項目
- 29. 如何禁用radtreeview上下文菜單中的項目
- 30. 上下文菜單中的ListView,選擇一個項目
我*知道*我已經在一段時間之前完成了這項工作,但卻忘記了如何。我終於找到了埋在外部硬盤上的四年前的代碼,這是我用來推導出上述答案的。鑑於迄今爲止缺乏意見,我想我不妨回答我自己的問題。 – 2010-07-03 03:22:42