Reputation: 1085
I'm trying to create icons in python and GTK3 for AppIndicator3 , which is using stock items.
When using existing stock icons (like indicator-messages everything is fine.
But when I create my own stock icon it is not displayed (I used both svg and png image).
What can be wrong?
I have this code to add icon factory:
from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator
import os
_curr_dir=os.path.split(__file__)[0]
if __name__ == "__main__":
icon_factory=Gtk.IconFactory()
icon_source=Gtk.IconSource()
f=os.path.join(_curr_dir, 'pics', 'test.svg')
if not os.path.exists(f):
raise Exception('Image %s missing'%f)
icon_source.set_filename(f)
icon_source.set_size_wildcarded(True)
icon_set=Gtk.IconSet()
icon_set.add_source(icon_source)
icon_factory.add('myapp-icon', icon_set)
icon_factory.add_default()
ind = appindicator.Indicator.new (
"example-simple-client",
"myapp-icon",
appindicator.IndicatorCategory.APPLICATION_STATUS)
ind.set_status (appindicator.IndicatorStatus.ACTIVE)
ind.set_attention_icon ("indicator-messages-new")
ind.set_label("test", "test")
Upvotes: 1
Views: 653
Reputation: 789
This is an old question, but I assume that your problem lies with AppIndicator3, as you can use your own icons in things like toolbars as shown in this example:
import os
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
_curr_dir = os.path.split(__file__)[0]
if __name__ == "__main__":
icon_factory = Gtk.IconFactory()
icon_source = Gtk.IconSource()
f = os.path.join(_curr_dir, "pics", "test.svg")
if not os.path.exists(f):
raise Exception("Image %s missing" % f)
icon_source.set_filename(f)
icon_source.set_size_wildcarded(True)
icon_set = Gtk.IconSet()
icon_set.add_source(icon_source)
icon_factory.add("myapp-icon", icon_set)
icon_factory.add_default()
window = Gtk.Window()
uimanager = Gtk.UIManager()
accelgroup = uimanager.get_accel_group()
window.add_accel_group(accelgroup)
action_items = [
# Fields for each action item:
# [name, stock_id, value, label, accelerator, tooltip, callback]
["Quit", "myapp-icon", "_Quit", "<control>q", "Quit", Gtk.main_quit],
]
ui = """<ui>
<toolbar name='ToolBar'>
<toolitem action='Quit'/>
</toolbar>
</ui>
"""
# Create the basic Gtk.ActionGroup instance
# and fill it with Gtk.Action instances
actions_basic = Gtk.ActionGroup()
actions_basic.add_actions(action_items, None)
# Add the actiongroup to the uimanager
uimanager.insert_action_group(actions_basic, 0)
# add the basic XML description of the GUI
uimanager.add_ui_from_string(ui)
# extract the toolbar
toolbar = uimanager.get_widget("/ToolBar")
window.add(toolbar)
window.connect("destroy", Gtk.main_quit)
window.show_all()
Gtk.main()
Upvotes: 0