Создание собственной IconFactory в Gtkmm

У меня есть небольшое приложение, в котором я хочу создать несколько кнопок, панелей инструментов и т. Д., Но я не хочу использовать уже существующую тему значков GTK, я хочу создать свою собственную. Поэтому я искал учебники и еще много чего, но, как оказалось, это не очень хорошо обсуждалось в Интернете. Поэтому я попытался сделать что-то самостоятельно:

Заголовочный файл:

#include <gtkmm.h>
#include <string>
#include <iostream>
#include <errno.h>

class IconFactoryBuilder
{
public:
IconFactoryBuilder();

~IconFactoryBuilder();

void RegisterNewIcons(std::string pPath);

private:

Glib::RefPtr<Gtk::IconFactory> mCustomFactory;
};

Cpp файл:

#include <IconFactoryBuilder.h>

IconFactoryBuilder::IconFactoryBuilder() {
mCustomFactory = Gtk::IconFactory::create();
}

IconFactoryBuilder::~IconFactoryBuilder() {
}

void IconFactoryBuilder::RegisterNewIcons(std::string pPath) {

Glib::RefPtr<Gtk::IconSet> iconSet = Gtk::IconSet::create();
Gtk::IconSource someSource;
try{
Gtk::Image  *someImage=Gtk::manage(new Gtk::Image(pPath+"appbar.at.png"));
someImage->set_pixel_size(Gtk::IconSize(48));
someSource.set_pixbuf(someImage->get_pixbuf());
someSource.set_size(Gtk::ICON_SIZE_DIALOG);
someSource.set_size_wildcarded();
}
catch(const Glib::Exception &ex) {
std::cerr << "An error occurred while opening the icon file!" << strerror(errno) << std::endl;
}
catch(...) {
std::cerr << "Unknown Error!" << std::endl;
}
iconSet->add_source(someSource);
const Gtk::StockID somestock("MyNewIcon");
Gtk::Stock::add(Gtk::StockItem(somestock, "somelabel"));
mCustomFactory->add(somestock, iconSet);
mCustomFactory->add_default();
}

Но сейчас я застрял, потому что не знаю, как назвать созданную мной новую иконку. Я также не знаю, достаточно ли написанного выше кода, чтобы найти иконку или нет.

1

Решение

Вы создали фабрику иконок … завод?

😉

Серьезный ответ на ваш вопрос заключается в том, что вам не нужно Gtk::IconFactory, К сожалению, документация GTK 2 не говорит вам, что это не нужно. Что вам нужно, так это freedesktop.org Стандартная спецификация именования иконок. Создайте свои значки, назовите их простыми именами, упорядочите в соответствии с описанной там структурой каталогов, установите их в соответствующем месте, и ваши значки будут «просто работать» при создании Pixbuf или же Image с использованием ...from_icon_name() функции. (пример: Gtk::Image::set_from_icon_name())

Вот страница вики-разработчика Gnome о том, как предоставить свои собственные значки:
http://developer.gnome.org/integration-guide/stable/icons.html.en

И вот страница из учебника, который я написал об установке пользовательских значков: http://ptomato.name/advanced-gtk-techniques/html/desktop-file.html

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]