ons 2004-11-24 klockan 09:32 +0100 skrev Murray Cumming: > That would be nice. You could add a non-stock image to the existing example: > http://cvs.gnome.org/viewcvs/gtkmm/examples/book/menus_and_toolbars/ Attaching a patch. Also attaching a silly icon. The C source code version was created with: gdk-pixbuf-csource --raw --name rain rain.png > rain.h -- Fredrik Arnerup <e97_far e kth se> http://www.stacken.kth.se/~foo/
? foo
? icon.patch
? rain.h
? rain.png
? rain.xcf
Index: examplewindow.cc
===================================================================
RCS file: /cvs/gnome/gtkmm/examples/book/menus_and_toolbars/examplewindow.cc,v
retrieving revision 1.2
diff -u -r1.2 examplewindow.cc
--- examplewindow.cc 27 Mar 2004 00:37:28 -0000 1.2
+++ examplewindow.cc 24 Nov 2004 18:29:43 -0000
@@ -18,6 +18,7 @@
#include "examplewindow.h"
#include <gtkmm/stock.h>
+#include <gtkmm/toggleaction.h>
#include <iostream>
ExampleWindow::ExampleWindow()
@@ -35,6 +36,9 @@
sigc::mem_fun(*this, &ExampleWindow::on_action_file_new) );
m_refActionGroup->add( Gtk::Action::create("Open", Gtk::Stock::OPEN),
sigc::mem_fun(*this, &ExampleWindow::on_action_others) );
+ m_refActionGroup->add( Gtk::ToggleAction::create("Rain",
+ Gtk::StockID("rain") ),
+ sigc::mem_fun(*this, &ExampleWindow::on_action_others) );
m_refActionGroup->add( Gtk::Action::create("Quit", Gtk::Stock::QUIT),
sigc::mem_fun(*this, &ExampleWindow::on_action_file_quit) );
@@ -61,6 +65,8 @@
" <menuitem action='New'/>"
" <menuitem action='Open'/>"
" <separator/>"
+ " <menuitem action='Rain'/>"
+ " <separator/>"
" <menuitem action='Quit'/>"
" </menu>"
" <menu action='MenuEdit'>"
@@ -71,6 +77,7 @@
" </menubar>"
" <toolbar name='ToolBar'>"
" <toolitem action='Open'/>"
+ " <toolitem action='Rain'/>"
" <toolitem action='Quit'/>"
" </toolbar>"
"</ui>";
Index: main.cc
===================================================================
RCS file: /cvs/gnome/gtkmm/examples/book/menus_and_toolbars/main.cc,v
retrieving revision 1.1
diff -u -r1.1 main.cc
--- main.cc 27 Mar 2004 00:30:36 -0000 1.1
+++ main.cc 24 Nov 2004 18:29:43 -0000
@@ -16,13 +16,45 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+#include <gtkmm/iconfactory.h>
+#include <gtkmm/iconset.h>
+#include <gtkmm/iconsource.h>
+#include <gtkmm/stock.h>
+#include <gtkmm/stockitem.h>
#include <gtkmm/main.h>
#include "examplewindow.h"
+#include "rain.h" //Image created with 'gdk-pixbuf-csource --raw'.
+
+namespace
+{
+ void add_stock_item(Glib::RefPtr<Gtk::IconFactory> factory,
+ const guint8 *data, int data_size,
+ const Glib::ustring &id, const Glib::ustring &label)
+ {
+ Gtk::IconSource source;
+ source.set_pixbuf(Gdk::Pixbuf::create_from_inline(data_size, data));
+ source.set_size(Gtk::ICON_SIZE_SMALL_TOOLBAR);
+ source.set_size_wildcarded(); //Icon may be scaled.
+ Gtk::IconSet set;
+ set.add_source(source); //More than on source per set is allowed.
+ const Gtk::StockID stock_id(id);
+ factory->add(stock_id, set);
+ Gtk::Stock::add(Gtk::StockItem(stock_id, label));
+ }
+
+ void register_stock_items()
+ {
+ const Glib::RefPtr<Gtk::IconFactory> factory = Gtk::IconFactory::create();
+ add_stock_item(factory, rain, sizeof(rain), "rain", "Stay dry");
+ factory->add_default(); //Add factory to list of factories.
+ }
+}
int main(int argc, char *argv[])
{
Gtk::Main kit(argc, argv);
+ register_stock_items(); //Makes the "rain" stock item available.
ExampleWindow window;
Gtk::Main::run(window); //Shows the window and returns when it is closed.
/* GdkPixbuf RGBA C-Source image dump */
#ifdef __SUNPRO_C
#pragma align 4 (rain)
#endif
#ifdef __GNUC__
static const guint8 rain[] __attribute__ ((__aligned__ (4))) =
#else
static const guint8 rain[] =
#endif
{ ""
/* Pixbuf magic (0x47646b50) */
"GdkP"
/* length: header (24) + pixel_data (2304) */
"\0\0\11\30"
/* pixdata_type (0x1010002) */
"\1\1\0\2"
/* rowstride (96) */
"\0\0\0`"
/* width (24) */
"\0\0\0\30"
/* height (24) */
"\0\0\0\30"
/* pixel_data: */
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0"
"\16\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0G\0\0\0\21"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\22"
"\0\0\0""7\0\0\0\232\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
"\0\0\0\240\0\0\0 \0\0\0\27\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\36-P-\377"
"G\177G\377-P-\377G\177G\377-P-\377Y\237Y\377-P-\377G\177G\377-P-\377"
"G\177G\377-P-\377\0\0\0""4\0\0\0\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\36-P-\377G\177G\377-P-\377"
"Y\237Y\377-P-\377Y\237Y\377Y\237Y\377Y\237Y\377-P-\377Y\237Y\377-P-\377"
"G\177G\377-P-\377\0\0\0 \0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\36-P-\377G\177G\377-P-\377Y\237Y\377G\177"
"G\377-P-\377Y\237Y\377Y\237Y\377Y\237Y\377-P-\377G\177G\377Y\237Y\377"
"-P-\377G\177G\377-P-\377\0\0\0 \0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\232Y\237Y\3775_5\377Y\237Y\377Y\237Y\377-P-"
"\377Y\237Y\377Y\237Y\377Y\237Y\377Y\237Y\377Y\237Y\377-P-\377Y\237Y\377"
"Y\237Y\3775_5\377Y\237Y\377\0\0\0\300\0\0\0!\0\0\0\4\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0""4\0\0\0\377Y\237Y\377\0\0\0\377Y\237Y\377Y\237"
"Y\377\0\0\0\377Y\237Y\377Y\237Y\377Y\237Y\377Y\237Y\377Y\237Y\377\0\0"
"\0\377Y\237Y\377Y\237Y\377\0\0\0\377Y\237Y\377\0\0\0\377\0\0\0m\0\0\0"
"\17\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\232\0\0\0$\0\0\0X\0\0\0\304"
"\0\0\0t\0\0\0m\0\0\0\304\0\0\0t\0\0\0m\0\0\0\377\0\0\0y\0\0\0o\0\0\0"
"\304\0\0\0t\0\0\0m\0\0\0\304\0\0\0t\0\0\0l\0\0\0\274\0\0\0$\0\0\0\5\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\11\0\0\0(\0\0\0\32\0\0\0\35\0\0\0""8\0\0"
"\0\35\0\0\0\36\0\0\0""8\0\0\0\35\0\0\0\377\0\0\0]\0\0\0'\0\0\0\36\0\0"
"\0""8\0\0\0\35\0\0\0\36\0\0\0""8\0\0\0\35\0\0\0\33\0\0\0(\0\0\0\11\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\0\0\0\10\0\0\0\2\0\0\0\2\0\0\0\10\0\0"
"\0\2\0\0\0\2\0\0\0\10\0\0\0\2\0\0\0\377\0\0\0V\0\0\0\25\0\0\0\2\0\0\0"
"\10\0\0\0\2\0\0\0\2\0\0\0\10\0\0\0\2\0\0\0\2\0\0\0\10\0\0\0\2\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0V\0\0\0\25\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\377\0\0\0V\0\0\0\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\377\0\0\0V\0\0\0\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
"\0\0\0V\0\0\0\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0V\0\0"
"\0\25\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0V\0\0\0\25\0\0\0"
"\377\0\0\0\16\0\0\0\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\0\0\0\224\0\0\0\32\0\0\0\377\0"
"\0\0G\0\0\0\21\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0E\0\0\0\377\0\0\0\377\0\0\0W\0\0\0N\0\0\0"
"\22\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\7\0\0\0*\0\0\0S\0\0\0O\0\0\0)\0\0\0\7\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\1\0\0\0\6\0\0\0\22\0\0\0\22\0\0\0\7\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"};
Attachment:
rain.png
Description: PNG image