From 6b412678e529282ab7bb55a6b9c4647d13d840b7 Mon Sep 17 00:00:00 2001 From: Johannes Findeisen Date: Tue, 20 Mar 2018 22:44:35 +0100 Subject: [PATCH] initial commt... copied all stuff from ccchh/dooris... --- Makefile | 8 + pesthoernchen.h | 575 ++++++++++++++++++++++++++++++++++++++++++++++++ spaceapi-gtk | Bin 0 -> 58608 bytes spaceapi-gtk.c | 232 +++++++++++++++++++ 4 files changed, 815 insertions(+) create mode 100644 Makefile create mode 100644 pesthoernchen.h create mode 100755 spaceapi-gtk create mode 100644 spaceapi-gtk.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dd575c1 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ + +all: spaceapi-gtk + +spaceapi-gtk: spaceapi-gtk.c + $(CC) -Wall -g `pkg-config --cflags --libs gtk+-2.0 --libs libcurl --libs json-c --libs libnotify` -DLIBNOTIFY -o spaceapi-gtk spaceapi-gtk.c + +clean: + rm -f spaceapi-gtk diff --git a/pesthoernchen.h b/pesthoernchen.h new file mode 100644 index 0000000..41a16e0 --- /dev/null +++ b/pesthoernchen.h @@ -0,0 +1,575 @@ +/* + * This file contais the pixbuf data for the panel icon. + */ + +static const GdkPixdata icon_black_pixbuf = { + 0x47646b50, /* Pixbuf magic: 'GdkP' */ + 24 + 3417, /* header length + pixel_data length */ + 0x2010002, /* pixdata_type */ + 192, /* rowstride */ + 48, /* width */ + 48, /* height */ + /* pixel_data: */ + (guint8 *) + "\377\0\0\0\0\243\0\0\0\0\7\0\0\0\12\0\0\0""9\0\0\0W\0\0\0o\0\0\0f\0\0" + "\0V\0\0\0$\247\0\0\0\0\3\0\0\0;\0\0\0\254\0\0\0\365\206\0\0\0\377\3\0" + "\0\0\327\0\0\0d\0\0\0\4\226\0\0\0\0\1\0\0\0""7\204\0\0\0U\1\0\0\0B\206" + "\0\0\0\0\2\0\0\0\34\0\0\0\261\213\0\0\0\377\2\0\0\0\325\0\0\0""8\206" + "\0\0\0\0\1\0\0\0D\202\0\0\0\210\1\0\0\0\217\204\0\0\0\231\4\0\0\0\241" + "\0\0\0\252\0\0\0\235\0\0\0\20\203\0\0\0\0\1\0\0\0\240\204\0\0\0\377\1" + "\0\0\0\267\205\0\0\0\0\2\0\0\0""9\0\0\0\352\215\0\0\0\377\2\0\0\0\373" + "\0\0\0v\205\0\0\0\0\1\0\0\0b\212\0\0\0\377\1\0\0\0\23\203\0\0\0\0\1\0" + "\0\0\226\204\0\0\0\377\1\0\0\0\264\204\0\0\0\0\2\0\0\0""7\0\0\0\365\220" + "\0\0\0\377\2\0\0\0\224\0\0\0\2\203\0\0\0\0\1\0\0\0Q\211\0\0\0\377\2\0" + "\0\0\375\0\0\0\1\203\0\0\0\0\1\0\0\0\207\204\0\0\0\377\1\0\0\0\300\203" + "\0\0\0\0\2\0\0\0\24\0\0\0\350\222\0\0\0\377\1\0\0\0\207\203\0\0\0\0\1" + "\0\0\0@\211\0\0\0\377\1\0\0\0\353\204\0\0\0\0\1\0\0\0n\204\0\0\0\377" + "\1\0\0\0\347\203\0\0\0\0\1\0\0\0\246\224\0\0\0\377\1\0\0\0W\202\0\0\0" + "\0\1\0\0\0<\211\0\0\0\377\1\0\0\0\327\204\0\0\0\0\1\0\0\0Q\205\0\0\0" + "\377\4\0\0\0\17\0\0\0\0\0\0\0,\0\0\0\375\224\0\0\0\377\4\0\0\0\352\0" + "\0\0\24\0\0\0\0\0\0\0D\211\0\0\0\377\1\0\0\0\256\204\0\0\0\0\1\0\0\0" + "3\205\0\0\0\377\3\0\0\0K\0\0\0\0\0\0\0\223\226\0\0\0\377\3\0\0\0\217" + "\0\0\0\0\0\0\0R\211\0\0\0\377\1\0\0\0\201\204\0\0\0\0\2\0\0\0\14\0\0" + "\0\375\204\0\0\0\377\3\0\0\0\221\0\0\0\0\0\0\0\345\206\0\0\0\377\4\0" + "\0\0\320\0\0\0\233\0\0\0\226\0\0\0\376\204\0\0\0\377\13\0\0\0\371\0\0" + "\0\221\0\0\0H\0\0\0=\0\0\0S\0\0\0\234\0\0\0\372\0\0\0\377\0\0\0\363\0" + "\0\0\23\0\0\0{\211\0\0\0\377\1\0\0\0Q\205\0\0\0\0\1\0\0\0\325\204\0\0" + "\0\377\2\0\0\0\331\0\0\0\"\204\0\0\0\377\3\0\0\0\345\0\0\0\203\0\0\0" + "#\203\0\0\0\0\1\0\0\0\241\203\0\0\0\377\2\0\0\0\373\0\0\0B\205\0\0\0" + "\0\5\0\0\0I\0\0\0\375\0\0\0\377\0\0\0g\0\0\0\253\210\0\0\0\377\2\0\0" + "\0\372\0\0\0\17\205\0\0\0\0\1\0\0\0\226\205\0\0\0\377\1\0\0\0\207\202" + "\0\0\0\377\3\0\0\0\376\0\0\0i\0\0\0\5\205\0\0\0\0\1\0\0\0*\202\0\0\0" + "\377\2\0\0\0\360\0\0\0\237\207\0\0\0\0\4\0\0\0\231\0\0\0\377\0\0\0\273" + "\0\0\0\327\210\0\0\0\377\1\0\0\0\276\206\0\0\0\0\1\0\0\0K\205\0\0\0\377" + "\1\0\0\0\371\202\0\0\0\377\1\0\0\0\276\210\0\0\0\0\4\0\0\0\366\0\0\0" + "\363\0\0\0\210\0\0\0i\207\0\0\0\0\3\0\0\0""6\0\0\0\377\0\0\0\374\211" + "\0\0\0\377\1\0\0\0l\206\0\0\0\0\2\0\0\0\11\0\0\0\357\204\0\0\0\377\4" + "\0\0\0\354\0\0\0\362\0\0\0\377\0\0\0\245\207\0\0\0\0\5\0\0\0\5\0\0\0" + "\314\0\0\0\255\0\0\0Y\0\0\0\223\207\0\0\0\0\3\0\0\0<\0\0\0\324\0\0\0" + "\240\210\0\0\0\377\2\0\0\0\364\0\0\0\20\207\0\0\0\0\1\0\0\0\224\204\0" + "\0\0\377\4\0\0\0\363\0\0\0}\0\0\0\377\0\0\0\257\207\0\0\0\0\6\0\0\0\"" + "\0\0\0\262\0\0\0\223\0\0\0""3\0\0\0\334\0\0\0\1\206\0\0\0\0\3\0\0\0l" + "\0\0\0\235\0\0\0\330\210\0\0\0\377\1\0\0\0\233\210\0\0\0\0\1\0\0\0-\205" + "\0\0\0\377\4\0\0\0o\0\0\0\377\0\0\0\333\0\0\0\6\206\0\0\0\0\6\0\0\0D" + "\0\0\0\220\0\0\0\177\0\0\0\16\0\0\0\377\0\0\0<\205\0\0\0\0\4\0\0\0""8" + "\0\0\0\344\0\0\0\226\0\0\0\315\207\0\0\0\377\2\0\0\0\376\0\0\0""0\211" + "\0\0\0\0\1\0\0\0\271\204\0\0\0\377\1\0\0\0i\202\0\0\0\377\2\0\0\0\301" + "\0\0\0""7\205\0\0\0\0\6\0\0\0q\0\0\0l\0\0\0)\0\0\0\0\0\0\0\347\0\0\0" + "\237\203\0\0\0\0\6\0\0\0A\0\0\0\274\0\0\0\375\0\0\0\377\0\0\0\243\0\0" + "\0\272\207\0\0\0\377\1\0\0\0\244\212\0\0\0\0\2\0\0\0""2\0\0\0\376\203" + "\0\0\0\377\1\0\0\0^\204\0\0\0\377\7\0\0\0\343\0\0\0\201\0\0\0\23\0\0" + "\0\0\0\0\0\1\0\0\0\300\0\0\0D\202\0\0\0\0\5\0\0\0\302\0\0\0\366\0\0\0" + "B\0\0\0Y\0\0\0\276\204\0\0\0\377\2\0\0\0\300\0\0\0\241\206\0\0\0\377" + "\2\0\0\0\367\0\0\0\37\213\0\0\0\0\1\0\0\0\243\203\0\0\0\377\1\0\0\0i" + "\206\0\0\0\377\5\0\0\0\364\0\0\0\264\0\0\0\310\0\0\0\377\0\0\0-\202\0" + "\0\0\0\1\0\0\0\236\210\0\0\0\377\2\0\0\0\336\0\0\0~\206\0\0\0\377\1\0" + "\0\0\211\214\0\0\0\0\2\0\0\0\21\0\0\0\341\202\0\0\0\377\2\0\0\0w\0\0" + "\0\374\211\0\0\0\377\1\0\0\0""4\202\0\0\0\0\1\0\0\0\244\210\0\0\0\377" + "\2\0\0\0\345\0\0\0\201\205\0\0\0\377\2\0\0\0\324\0\0\0\11\215\0\0\0\0" + "\5\0\0\0>\0\0\0\372\0\0\0\377\0\0\0\213\0\0\0\327\211\0\0\0\377\1\0\0" + "\0a\202\0\0\0\0\1\0\0\0\337\210\0\0\0\377\2\0\0\0\311\0\0\0\251\204\0" + "\0\0\377\2\0\0\0\370\0\0\0.\217\0\0\0\0\4\0\0\0Z\0\0\0\374\0\0\0\331" + "\0\0\0\224\211\0\0\0\377\3\0\0\0\253\0\0\0\30\0\0\0*\211\0\0\0\377\2" + "\0\0\0~\0\0\0\365\204\0\0\0\377\1\0\0\0n\221\0\0\0\0\3\0\0\0f\0\0\0\376" + "\0\0\0\313\211\0\0\0\377\3\0\0\0\367\0\0\0z\0\0\0\307\210\0\0\0\377\2" + "\0\0\0\361\0\0\0\305\204\0\0\0\377\1\0\0\0\207\223\0\0\0\0\2\0\0\0X\0" + "\0\0\371\212\0\0\0\377\1\0\0\0\375\216\0\0\0\377\2\0\0\0\224\0\0\0\1" + "\224\0\0\0\0\2\0\0\0>\0\0\0\345\226\0\0\0\377\2\0\0\0\366\0\0\0h\227" + "\0\0\0\0\22\0\0\0\25\0\0\0\262\0\0\0\373\0\0\0\335\0\0\0\372\0\0\0\343" + "\0\0\0\341\0\0\0\377\0\0\0\235\0\0\0""4\0\0\0\342\0\0\0,\0\0\0d\0\0\0" + "\375\0\0\0\246\0\0\0\351\0\0\0\377\0\0\0\335\204\0\0\0\377\2\0\0\0\321" + "\0\0\0,\205\0\0\0\0\4\0\0\0&\0\0\0V\0\0\0C\0\0\0\6\211\0\0\0\0\5\0\0" + "\0\26\0\0\0q\0\0\0\231\0\0\0q\0\0\0\11\203\0\0\0\0\6\0\0\0\221\0\0\0" + "\0\0\0\0\205\0\0\0""1\0\0\0\7\0\0\0\327\202\0\0\0\0\1\0\0\0\263\202\0" + "\0\0\0\12\0\0\0\301\0\0\0\0\0\0\0i\0\0\0p\0\0\0\0\0\0\0\332\0\0\0\377" + "\0\0\0\335\0\0\0c\0\0\0\4\205\0\0\0\0\2\0\0\0\202\0\0\0\376\202\0\0\0" + "\377\2\0\0\0\333\0\0\0$\207\0\0\0\0\2\0\0\0S\0\0\0\363\203\0\0\0\377" + "\2\0\0\0\304\0\0\0\2\202\0\0\0\0\6\0\0\0\205\0\0\0'\0\0\0\227\0\0\0!" + "\0\0\0\4\0\0\0\256\202\0\0\0\0\1\0\0\0\257\202\0\0\0\0\10\0\0\0\263\0" + "\0\0\0\0\0\0]\0\0\0Z\0\0\0\0\0\0\0\264\0\0\0N\0\0\0\3\206\0\0\0\0\1\0" + "\0\0U\205\0\0\0\377\1\0\0\0\314\206\0\0\0\0\2\0\0\0\27\0\0\0\365\205" + "\0\0\0\377\1\0\0\0A\202\0\0\0\0\21\0\0\0\3\0\0\0r\0\0\0\226\0\0\0\256" + "\0\0\0\262\0\0\0\327\0\0\0\237\0\0\0\214\0\0\0\350\0\0\0w\0\0\0~\0\0" + "\0\361\0\0\0\225\0\0\0\305\0\0\0\271\0\0\0\251\0\0\0y\210\0\0\0\0\1\0" + "\0\0\274\206\0\0\0\377\1\0\0\0\"\205\0\0\0\0\1\0\0\0O\206\0\0\0\377\1" + "\0\0\0S\205\0\0\0\0\21\0\0\0\1\0\0\0\16\0\0\0\0\0\0\0\27\0\0\0\"\0\0" + "\0#\0\0\0@\0\0\0G\0\0\0\15\0\0\0""6\0\0\0.\0\0\0\"\0\0\0-\0\0\0\3\0\0" + "\0\0\0\0\0\21\0\0\0""0\203\0\0\0""3\3\0\0\0\77\0\0\0E\0\0\0\354\206\0" + "\0\0\377\1\0\0\0\30\205\0\0\0\0\1\0\0\0""6\206\0\0\0\377\1\0\0\0\344" + "\202\0\0\0\335\1\0\0\0\351\202\0\0\0\356\5\0\0\0\243\0\0\0\0\0\0\0\13" + "\0\0\0\324\0\0\0\367\202\0\0\0\377\2\0\0\0c\0\0\0\204\204\0\0\0\377\4" + "\0\0\0v\0\0\0\0\0\0\0%\0\0\0\364\213\0\0\0\377\1\0\0\0\270\207\0\0\0" + "\0\2\0\0\0\206\0\0\0\337\211\0\0\0\377\4\0\0\0\366\0\0\0\"\0\0\0\0\0" + "\0\0\217\203\0\0\0\377\4\0\0\0\305\0\0\0\1\0\0\0\14\0\0\0\344\203\0\0" + "\0\377\4\0\0\0\367\0\0\0)\0\0\0\0\0\0\0m\212\0\0\0\377\2\0\0\0\376\0" + "\0\0""4\206\0\0\0\0\2\0\0\0\6\0\0\0\251\212\0\0\0\377\4\0\0\0v\0\0\0" + "\0\0\0\0""6\0\0\0\374\202\0\0\0\377\2\0\0\0\373\0\0\0/\202\0\0\0\0\1" + "\0\0\0Z\204\0\0\0\377\4\0\0\0\316\0\0\0\6\0\0\0\1\0\0\0\300\211\0\0\0" + "\377\3\0\0\0\351\0\0\0\321\0\0\0\23\205\0\0\0\0\1\0\0\0\207\212\0\0\0" + "\377\4\0\0\0\320\0\0\0\4\0\0\0\2\0\0\0\320\203\0\0\0\377\1\0\0\0\216" + "\203\0\0\0\0\2\0\0\0\1\0\0\0\305\204\0\0\0\377\4\0\0\0\225\0\0\0\7\0" + "\0\0#\0\0\0\363\202\0\0\0\377\2\0\0\0\376\0\0\0\361\206\0\0\0\377\1\0" + "\0\0v\205\0\0\0\0\1\0\0\0\330\205\0\0\0\377\2\0\0\0\220\0\0\0\330\203" + "\0\0\0\335\4\0\0\0""9\0\0\0""8\0\0\0\211\0\0\0\334\202\0\0\0\377\2\0" + "\0\0\355\0\0\0\16\204\0\0\0\0\2\0\0\0(\0\0\0\327\204\0\0\0\377\3\0\0" + "\0\344\0\0\0=\0\0\0\\\202\0\0\0\252\2\0\0\0\216\0\0\0\277\206\0\0\0\377" + "\1\0\0\0\217\205\0\0\0\0\1\0\0\0\275\205\0\0\0\377\1\0\0\0\213\204\0" + "\0\0\0\2\0\0\0U\0\0\0\375\205\0\0\0\377\1\0\0\0\256\204\0\0\0\0\1\0\0" + "\0K\206\0\0\0\377\2\0\0\0\357\0\0\0\31\203\0\0\0\0\1\0\0\0\256\206\0" + "\0\0\377\1\0\0\0H\205\0\0\0\0\1\0\0\0S\205\0\0\0\377\1\0\0\0\215\204" + "\0\0\0\0\1\0\0\0\306\206\0\0\0\377\1\0\0\0\321\204\0\0\0\0\1\0\0\0\247" + "\207\0\0\0\377\1\0\0\0y\203\0\0\0\0\2\0\0\0I\0\0\0\374\204\0\0\0\377" + "\1\0\0\0\230\207\0\0\0\0\1\0\0\0\212\203\0\0\0\377\2\0\0\0\365\0\0\0" + "'\204\0\0\0\0\1\0\0\0\304\202\0\0\0\377\2\0\0\0\334\0\0\0\326\202\0\0" + "\0\377\1\0\0\0p\204\0\0\0\0\1\0\0\0f\203\0\0\0\377\2\0\0\0\344\0\0\0" + "\317\202\0\0\0\377\1\0\0\0i\204\0\0\0\0\5\0\0\0""3\0\0\0\245\0\0\0\271" + "\0\0\0\225\0\0\0A\211\0\0\0\0\4\0\0\0Z\0\0\0\305\0\0\0\277\0\0\0<\205" + "\0\0\0\0\7\0\0\0P\0\0\0\374\0\0\0\363\0\0\0M\0\0\0f\0\0\0\242\0\0\0G" + "\206\0\0\0\0\10\0\0\0O\0\0\0\226\0\0\0o\0\0\0\25\0\0\0\255\0\0\0\377" + "\0\0\0\310\0\0\0\17\234\0\0\0\0\2\0\0\0\"\0\0\0\16\217\0\0\0\0\2\0\0" + "\0\36\0\0\0\1\377\0\0\0\0\376\0\0\0\0", +}; + +static const GdkPixdata icon_orange_pixbuf = { + 0x47646b50, /* Pixbuf magic: 'GdkP' */ + 24 + 3515, /* header length + pixel_data length */ + 0x2010002, /* pixdata_type */ + 192, /* rowstride */ + 48, /* width */ + 48, /* height */ + /* pixel_data: */ + (guint8 *) + "\377\0\0\0\0\243\0\0\0\0\7;\24\0\15}2\0\\\2158\0\210\2107\0\237\2169" + "\0\231\2117\0\206y2\0=\247\0\0\0\0\3w/\0\\\262G\0\336\356_\0\376\206" + "\377f\0\377\3\310P\0\365\2179\0\2303\0\0\5\226\0\0\0\0\1}3\0Z\204\205" + "5\0\202\1x0\0f\206\0\0\0\0\3]%\0)\261F\0\341\375e\0\377\212\377f\0\377" + "\2\312Q\0\365u/\0W\206\0\0\0\0\1x1\0h\202\236@\0\300\1\243A\0\307\204" + "\250C\0\317\4\256F\0\327\261F\0\335\265H\0\330\2078\0\40\203\0\0\0\0" + "\1\270I\0\333\204\377f\0\377\1\275K\0\347\205\0\0\0\0\2t.\0X\336Y\0\374" + "\215\377f\0\377\2\367c\0\377\2106\0\245\205\0\0\0\0\1\217:\0\226\212" + "\377f\0\377\1[$\0\34\203\0\0\0\0\1\252D\0\316\204\377f\0\377\1\270I\0" + "\345\204\0\0\0\0\2p.\0T\352]\0\376\217\377f\0\377\3\376f\0\377\233>\0" + "\307\0\0\0\2\203\0\0\0\0\1\2055\0}\211\377f\0\377\2\366b\0\377\0\0\0" + "\1\203\0\0\0\0\1\232>\0\275\204\377f\0\377\1\306P\0\355\203\0\0\0\0\2" + "h(\0\40\332W\0\373\222\377f\0\377\1\222:\0\270\203\0\0\0\0\1x/\0b\211" + "\377f\0\377\1\342Z\0\374\204\0\0\0\0\1\223;\0\243\204\377f\0\377\1\333" + "W\0\373\203\0\0\0\0\1\252D\0\330\223\377f\0\377\2\374e\0\377\2013\0\202" + "\202\0\0\0\0\1z1\0^\211\377f\0\377\1\317S\0\366\204\0\0\0\0\1\2127\0" + "\201\204\377f\0\377\5\376f\0\377\223>\0!\0\0\0\0h+\0B\372d\0\377\224" + "\377f\0\377\4\333W\0\374E\35\0\32\0\0\0\0\2148\0q\211\377f\0\377\1\266" + "I\0\341\204\0\0\0\0\1t/\0Q\205\377f\0\377\3\232>\0\203\0\0\0\0\233>\0" + "\306\226\377f\0\377\3\234>\0\304\0\0\0\0\226<\0\210\211\377f\0\377\1" + "\241A\0\274\204\0\0\0\0\2""3\21\0\17\367c\0\377\204\377f\0\377\3\256" + "F\0\315\0\0\0\0\325V\0\372\205\377f\0\377\5\376f\0\377\322T\0\365\262" + "H\0\325\264H\0\324\376f\0\377\204\377f\0\377\13\365b\0\377\245B\0\312" + "\223:\0{\2106\0g\230=\0\212\260G\0\325\370c\0\377\377f\0\377\351]\0\376" + "5\25\0\30\236\77\0\265\211\377f\0\377\1\2014\0{\205\0\0\0\0\1\313Q\0" + "\365\204\377f\0\377\3\325U\0\370F\35\0,\374e\0\377\203\377f\0\377\3\344" + "[\0\374\242@\0\276\2025\0\77\203\0\0\0\0\1\256F\0\327\203\377f\0\377" + "\2\370c\0\377\2034\0k\205\0\0\0\0\5\2118\0w\372d\0\377\377f\0\377\207" + "6\0\227\257F\0\335\210\377f\0\377\2\366b\0\377Y!\0\27\205\0\0\0\0\1\245" + "B\0\315\205\377f\0\377\1\222:\0\270\202\377f\0\377\3\373d\0\377\224;" + "\0\237`\40\0\10\205\0\0\0\0\5c)\0>\375e\0\377\377f\0\377\361`\0\376\254" + "E\0\325\207\0\0\0\0\4\254D\0\321\377f\0\377\303N\0\353\326V\0\367\210" + "\377f\0\377\1\276L\0\353\206\0\0\0\0\1\2003\0t\205\377f\0\377\1\371d" + "\0\377\202\377f\0\377\1\304N\0\354\210\0\0\0\0\4\353^\0\376\352]\0\376" + "\236\77\0\277\231=\0\242\207\0\0\0\0\3w/\0V\377f\0\377\374e\0\377\211" + "\377f\0\377\1\2179\0\240\206\0\0\0\0\2.\27\0\13\350]\0\375\204\377f\0" + "\377\4\354^\0\376\357_\0\376\377f\0\377\263H\0\333\207\0\0\0\0\5\0\0" + "\0\5\317S\0\364\301M\0\345\2137\0\212\257F\0\317\207\0\0\0\0\3\2148\0" + "h\332W\0\370\262G\0\330\210\377f\0\377\2\347\\\0\376F\27\0\26\207\0\0" + "\0\0\1\251C\0\315\204\377f\0\377\4\361`\0\376\235\77\0\266\377f\0\377" + "\276L\0\344\207\0\0\0\0\6y1\0""9\267I\0\343\244B\0\312q-\0O\332W\0\371" + "\0\0\0\1\206\0\0\0\0\3\236@\0\250\263G\0\327\271I\0\363\210\377f\0\377" + "\1\234\77\0\314\210\0\0\0\0\2w1\0I\375e\0\377\204\377f\0\377\4~2\0\232" + "\377f\0\377\332W\0\371U\34\0\11\206\0\0\0\0\6\216:\0s\243A\0\310\202" + "4\0\253-\17\0\21\372d\0\377\2056\0d\205\0\0\0\0\4\2117\0a\351]\0\374" + "\245B\0\314\303N\0\361\207\377f\0\377\2\371d\0\377^&\0D\211\0\0\0\0\1" + "\273K\0\347\204\377f\0\377\1\2003\0\225\202\377f\0\377\2\305O\0\355{" + "1\0Y\205\0\0\0\0\6\240@\0\256\222:\0\242C\35\0""5\0\0\0\0\340Y\0\374" + "\262G\0\330\203\0\0\0\0\6\2107\0k\300L\0\352\375e\0\377\377f\0\377\263" + "H\0\333\267I\0\347\207\377f\0\377\1\256E\0\331\212\0\0\0\0\2\2013\0U" + "\374e\0\377\203\377f\0\377\2\221:\0\222\372d\0\377\203\377f\0\377\7\321" + "T\0\371\226<\0\266k)\0\37\0\0\0\0\0\0\0\1\306P\0\355\2055\0o\202\0\0" + "\0\0\5\312Q\0\357\366b\0\377\2147\0o\2219\0\216\301M\0\353\204\377f\0" + "\377\2\277L\0\353\255E\0\327\206\377f\0\377\2\353^\0\376[\"\0-\213\0" + "\0\0\0\1\250C\0\326\203\377f\0\377\2\226<\0\241\360`\0\377\205\377f\0" + "\377\5\362`\0\376\301M\0\347\322T\0\363\377f\0\377\2148\0R\202\0\0\0" + "\0\1\265I\0\331\210\377f\0\377\2\307O\0\367\252D\0\276\206\377f\0\377" + "\1\2138\0\267\214\0\0\0\0\2m.\0\34\334X\0\372\202\377f\0\377\2\233>\0" + "\260\346\\\0\377\211\377f\0\377\1\2137\0\\\202\0\0\0\0\1\303N\0\342\210" + "\377f\0\377\2\323U\0\372\251D\0\300\205\377f\0\377\2\320S\0\366.\27\0" + "\13\215\0\0\0\0\5r.\0^\364b\0\377\377f\0\377\253E\0\310\312Q\0\366\211" + "\377f\0\377\1\220:\0\225\202\0\0\0\0\1\353^\0\374\210\377f\0\377\2\274" + "K\0\356\276L\0\342\204\377f\0\377\2\355_\0\377s-\0I\217\0\0\0\0\4\202" + "5\0\207\371d\0\377\331V\0\370\237@\0\310\211\377f\0\377\3\266I\0\340" + "W$\0#\2014\0I\211\377f\0\377\2\217:\0\260\354^\0\376\203\377f\0\377\2" + "\374e\0\377z1\0\227\221\0\0\0\0\3\2055\0\225\370c\0\377\311P\0\362\211" + "\377f\0\377\3\363a\0\377\227=\0\260\302N\0\357\210\377f\0\377\2\361`" + "\0\376\320S\0\362\204\377f\0\377\1\243A\0\301\223\0\0\0\0\2\1773\0\203" + "\361`\0\377\212\377f\0\377\1\371d\0\377\216\377f\0\377\2\243A\0\313\0" + "\0\0\1\224\0\0\0\0\2s.\0_\332W\0\373\226\377f\0\377\2\362a\0\377\223" + ":\0\236\227\0\0\0\0\23`(\0\40\263H\0\342\366b\0\377\331W\0\371\367c\0" + "\377\340Y\0\373\336Y\0\373\377f\0\377\256E\0\325\2044\0Y\336Y\0\373\201" + "3\0K\231>\0\235\373d\0\377\271J\0\337\353^\0\375\376f\0\377\322T\0\370" + "\376f\0\377\203\377f\0\377\2\302N\0\362z1\0I\205\0\0\0\0\4b(\0""9\200" + "4\0\200m,\0b@\40\0\10\211\0\0\0\0\5]'\0!\2158\0\243\245B\0\316\224<\0" + "\247.\27\0\13\203\0\0\0\0\6\241@\0\307\0\0\0\0\245B\0\301\2034\0T].\0" + "\13\314R\0\366\202\0\0\0\0\1\277L\0\347\202\0\0\0\0\12\305O\0\355\0\0" + "\0\0\233>\0\244\243B\0\257\0\0\0\0\342[\0\372\377f\0\377\317R\0\370\207" + "6\0\223\0\0\0\4\205\0\0\0\0\2\230=\0\270\367c\0\377\202\377f\0\377\2" + "\322T\0\370r,\0:\207\0\0\0\0\2\2013\0}\343Z\0\376\203\377f\0\377\2\264" + "H\0\352\0\0\0\2\202\0\0\0\0\6\2128\0\263z/\0A\262G\0\323\2005\0:3\0\0" + "\5\262G\0\340\202\0\0\0\0\1\301N\0\346\202\0\0\0\0\10\271J\0\344\0\0" + "\0\0\231=\0\226\2127\0\213\0\0\0\0\304O\0\351\2023\0x\0\0\0\3\206\0\0" + "\0\0\2\2004\0\200\376f\0\377\204\377f\0\377\1\306O\0\362\206\0\0\0\0" + "\2c+\0$\355^\0\376\205\377f\0\377\1r/\0b\202\0\0\0\0\21@\0\0\4\221:\0" + "\247\245B\0\315\250C\0\334\266I\0\343\315R\0\366\253D\0\325\245B\0\306" + "\336Y\0\374\221:\0\253\226<\0\263\353^\0\376\245A\0\313\311Q\0\360\270" + "J\0\347\262H\0\335\220:\0\254\210\0\0\0\0\1\274L\0\351\206\377f\0\377" + "\1g'\0""4\205\0\0\0\0\1\2158\0\177\206\377f\0\377\1\2013\0}\205\0\0\0" + "\0\27\0\0\0\1\40\20\0\20\0\0\0\0\13\0\0\30m+\0""6\225:\0F\2014\0go-\0" + "g0\20\0\20:\27\0B/\23\0""6\25\7\0%I\36\0;\0\0\0\3\0\0\0\0\\)\0\31r/\0" + "Lo.\0N\2025\0V\2157\0\\\2012\0e\2076\0q\347]\0\375\205\377f\0\377\2\371" + "d\0\377H\40\0\40\205\0\0\0\0\1u0\0U\206\377f\0\377\4\333W\0\373\322T" + "\0\370\333X\0\372\340Y\0\374\202\337Y\0\375\12\233>\0\321\0\0\0\0c+\0" + "\22\306O\0\364\354^\0\376\357`\0\377\377f\0\377\226;\0\233\2128\0\263" + "\356_\0\377\203\377f\0\377\4\224<\0\253\0\0\0\0p+\0;\357_\0\376\213\377" + "f\0\377\1\261F\0\344\207\0\0\0\0\2\227<\0\272\334X\0\372\211\377f\0\377" + "\4\355^\0\376g'\0""4\0\0\0\0\242@\0\306\203\377f\0\377\4\312Q\0\360\200" + "\0\0\2@\40\0\20\332W\0\373\203\377f\0\377\4\362a\0\377z0\0E\0\0\0\0\225" + ";\0\244\212\377f\0\377\2\374e\0\377y1\0T\206\0\0\0\0\2$\0\0\7\242A\0" + "\327\212\377f\0\377\4\230<\0\255\0\0\0\0u0\0U\370c\0\377\202\377f\0\377" + "\2\371d\0\377\2003\0P\202\0\0\0\0\2\2025\0\207\376f\0\377\203\377f\0" + "\377\4\315R\0\363U\34\0\11\0\0\0\1\304O\0\355\211\377f\0\377\3\346\\" + "\0\375\305O\0\363a#\0\35\205\0\0\0\0\1\230=\0\274\212\377f\0\377\4\317" + "S\0\364U+\0\6\0\0\0\2\304N\0\362\203\377f\0\377\1\251C\0\311\203\0\0" + "\0\0\2\0\0\0\1\255E\0\351\204\377f\0\377\4\255E\0\320].\0\13y0\0;\361" + "`\0\376\203\377f\0\377\1\367c\0\377\206\377f\0\377\1\234>\0\260\205\0" + "\0\0\0\1\315R\0\366\205\377f\0\377\2\233>\0\304\333X\0\371\202\322T\0" + "\370\5\310Q\0\367\2014\0]t/\0V\240\77\0\301\327V\0\371\202\377f\0\377" + "\2\345\\\0\375d,\0\27\204\0\0\0\0\2M\35\0""5\320S\0\367\204\377f\0\377" + "\3\324U\0\372p-\0[\2179\0\217\202\261F\0\335\2\242A\0\305\307O\0\356" + "\206\377f\0\377\1\237\77\0\305\205\0\0\0\0\1\275K\0\352\205\377f\0\377" + "\1\236\77\0\302\204\0\0\0\0\2\2116\0\204\367c\0\377\205\377f\0\377\1" + "\250C\0\334\204\0\0\0\0\2\2003\0t\375e\0\377\205\377f\0\377\2\344[\0" + "\375Z\"\0%\203\0\0\0\0\1\264I\0\341\205\377f\0\377\2\376f\0\377q.\0j" + "\205\0\0\0\0\2\2025\0~\376f\0\377\204\377f\0\377\1\234\77\0\302\204\0" + "\0\0\0\1\301M\0\356\206\377f\0\377\1\305O\0\363\204\0\0\0\0\1\252D\0" + "\331\207\377f\0\377\1\2169\0\253\203\0\0\0\0\2t/\0l\360`\0\377\203\377" + "f\0\377\2\376f\0\377\233>\0\311\207\0\0\0\0\2\230<\0\276\376f\0\377\202" + "\377f\0\377\2\355^\0\376h+\0;\204\0\0\0\0\1\275K\0\355\202\377f\0\377" + "\5\325U\0\371\327V\0\367\377f\0\377\374e\0\377\2116\0\240\204\0\0\0\0" + "\2\2055\0\224\376f\0\377\202\377f\0\377\2\333W\0\373\323T\0\365\202\377" + "f\0\377\1\221:\0\236\204\0\0\0\0\5s-\0P\254D\0\331\263G\0\345\235\77" + "\0\311q-\0a\211\0\0\0\0\4\2004\0\205\301M\0\356\275L\0\353w1\0^\205\0" + "\0\0\0\7z1\0w\366b\0\377\354^\0\376\2066\0z\2055\0\224\252D\0\326x/\0" + "l\206\0\0\0\0\10\2013\0y\247C\0\316\224;\0\245Z!\0\37\245B\0\333\376" + "f\0\377\302N\0\357d,\0\27\234\0\0\0\0\2Q!\0/9\34\0\22\217\0\0\0\0\2""7" + "\25\0%\0\0\0\1\377\0\0\0\0\376\0\0\0\0", +}; + +static const GdkPixdata icon_red_pixbuf = { + 0x47646b50, /* Pixbuf magic: 'GdkP' */ + 24 + 3515, /* header length + pixel_data length */ + 0x2010002, /* pixdata_type */ + 192, /* rowstride */ + 48, /* width */ + 48, /* height */ + /* pixel_data: */ + (guint8 *) + "\377\0\0\0\0\243\0\0\0\0\7;\0\0\15}\0\0\\\215\0\0\210\210\0\0\237\216" + "\0\0\231\211\0\0\206y\0\0=\247\0\0\0\0\3w\0\0\\\262\0\0\336\356\0\0\376" + "\206\377\0\0\377\3\310\0\0\365\217\0\0\2303\0\0\5\226\0\0\0\0\1}\0\0" + "Z\204\205\0\0\202\1x\0\0f\206\0\0\0\0\3]\0\0)\261\0\0\341\375\0\0\377" + "\212\377\0\0\377\2\312\0\0\365u\0\0W\206\0\0\0\0\1x\0\0h\202\236\0\0" + "\300\1\243\0\0\307\204\250\0\0\317\4\256\0\0\327\261\0\0\335\265\0\0" + "\330\207\0\0\40\203\0\0\0\0\1\270\0\0\333\204\377\0\0\377\1\275\0\0\347" + "\205\0\0\0\0\2t\0\0X\336\0\0\374\215\377\0\0\377\2\367\0\0\377\210\0" + "\0\245\205\0\0\0\0\1\217\0\0\226\212\377\0\0\377\1[\0\0\34\203\0\0\0" + "\0\1\252\0\0\316\204\377\0\0\377\1\270\0\0\345\204\0\0\0\0\2p\0\0T\352" + "\0\0\376\217\377\0\0\377\3\376\0\0\377\233\0\0\307\0\0\0\2\203\0\0\0" + "\0\1\205\0\0}\211\377\0\0\377\2\366\0\0\377\0\0\0\1\203\0\0\0\0\1\232" + "\0\0\275\204\377\0\0\377\1\306\0\0\355\203\0\0\0\0\2h\0\0\40\332\0\0" + "\373\222\377\0\0\377\1\222\0\0\270\203\0\0\0\0\1x\0\0b\211\377\0\0\377" + "\1\342\0\0\374\204\0\0\0\0\1\223\0\0\243\204\377\0\0\377\1\333\0\0\373" + "\203\0\0\0\0\1\252\0\0\330\223\377\0\0\377\2\374\0\0\377\201\0\0\202" + "\202\0\0\0\0\1z\0\0^\211\377\0\0\377\1\317\0\0\366\204\0\0\0\0\1\212" + "\0\0\201\204\377\0\0\377\5\376\0\0\377\223\0\0!\0\0\0\0h\0\0B\372\0\0" + "\377\224\377\0\0\377\4\333\0\0\374E\0\0\32\0\0\0\0\214\0\0q\211\377\0" + "\0\377\1\266\0\0\341\204\0\0\0\0\1t\0\0Q\205\377\0\0\377\3\232\0\0\203" + "\0\0\0\0\233\0\0\306\226\377\0\0\377\3\234\0\0\304\0\0\0\0\226\0\0\210" + "\211\377\0\0\377\1\241\0\0\274\204\0\0\0\0\2""3\0\0\17\367\0\0\377\204" + "\377\0\0\377\3\256\0\0\315\0\0\0\0\325\0\0\372\205\377\0\0\377\5\376" + "\0\0\377\322\0\0\365\262\0\0\325\264\0\0\324\376\0\0\377\204\377\0\0" + "\377\13\365\0\0\377\245\0\0\312\223\0\0{\210\0\0g\230\0\0\212\260\0\0" + "\325\370\0\0\377\377\0\0\377\351\0\0\3765\0\0\30\236\0\0\265\211\377" + "\0\0\377\1\201\0\0{\205\0\0\0\0\1\313\0\0\365\204\377\0\0\377\3\325\0" + "\0\370F\0\0,\374\0\0\377\203\377\0\0\377\3\344\0\0\374\242\0\0\276\202" + "\0\0\77\203\0\0\0\0\1\256\0\0\327\203\377\0\0\377\2\370\0\0\377\203\0" + "\0k\205\0\0\0\0\5\211\0\0w\372\0\0\377\377\0\0\377\207\0\0\227\257\0" + "\0\335\210\377\0\0\377\2\366\0\0\377Y\0\0\27\205\0\0\0\0\1\245\0\0\315" + "\205\377\0\0\377\1\222\0\0\270\202\377\0\0\377\3\373\0\0\377\224\0\0" + "\237`\0\0\10\205\0\0\0\0\5c\0\0>\375\0\0\377\377\0\0\377\361\0\0\376" + "\254\0\0\325\207\0\0\0\0\4\254\0\0\321\377\0\0\377\303\0\0\353\326\0" + "\0\367\210\377\0\0\377\1\276\0\0\353\206\0\0\0\0\1\200\0\0t\205\377\0" + "\0\377\1\371\0\0\377\202\377\0\0\377\1\304\0\0\354\210\0\0\0\0\4\353" + "\0\0\376\352\0\0\376\236\0\0\277\231\0\0\242\207\0\0\0\0\3w\0\0V\377" + "\0\0\377\374\0\0\377\211\377\0\0\377\1\217\0\0\240\206\0\0\0\0\2.\0\0" + "\13\350\0\0\375\204\377\0\0\377\4\354\0\0\376\357\0\0\376\377\0\0\377" + "\263\0\0\333\207\0\0\0\0\5\0\0\0\5\317\0\0\364\301\0\0\345\213\0\0\212" + "\257\0\0\317\207\0\0\0\0\3\214\0\0h\332\0\0\370\262\0\0\330\210\377\0" + "\0\377\2\347\0\0\376F\0\0\26\207\0\0\0\0\1\251\0\0\315\204\377\0\0\377" + "\4\361\0\0\376\235\0\0\266\377\0\0\377\276\0\0\344\207\0\0\0\0\6y\0\0" + "9\267\0\0\343\244\0\0\312q\0\0O\332\0\0\371\0\0\0\1\206\0\0\0\0\3\236" + "\0\0\250\263\0\0\327\271\0\0\363\210\377\0\0\377\1\234\0\0\314\210\0" + "\0\0\0\2w\0\0I\375\0\0\377\204\377\0\0\377\4~\0\0\232\377\0\0\377\332" + "\0\0\371U\0\0\11\206\0\0\0\0\6\216\0\0s\243\0\0\310\202\0\0\253-\0\0" + "\21\372\0\0\377\205\0\0d\205\0\0\0\0\4\211\0\0a\351\0\0\374\245\0\0\314" + "\303\0\0\361\207\377\0\0\377\2\371\0\0\377^\0\0D\211\0\0\0\0\1\273\0" + "\0\347\204\377\0\0\377\1\200\0\0\225\202\377\0\0\377\2\305\0\0\355{\0" + "\0Y\205\0\0\0\0\6\240\0\0\256\222\0\0\242C\0\0""5\0\0\0\0\340\0\0\374" + "\262\0\0\330\203\0\0\0\0\6\210\0\0k\300\0\0\352\375\0\0\377\377\0\0\377" + "\263\0\0\333\267\0\0\347\207\377\0\0\377\1\256\0\0\331\212\0\0\0\0\2" + "\201\0\0U\374\0\0\377\203\377\0\0\377\2\221\0\0\222\372\0\0\377\203\377" + "\0\0\377\7\321\0\0\371\226\0\0\266k\0\0\37\0\0\0\0\0\0\0\1\306\0\0\355" + "\205\0\0o\202\0\0\0\0\5\312\0\0\357\366\0\0\377\214\0\0o\221\0\0\216" + "\301\0\0\353\204\377\0\0\377\2\277\0\0\353\255\0\0\327\206\377\0\0\377" + "\2\353\0\0\376[\0\0-\213\0\0\0\0\1\250\0\0\326\203\377\0\0\377\2\226" + "\0\0\241\360\0\0\377\205\377\0\0\377\5\362\0\0\376\301\0\0\347\322\0" + "\0\363\377\0\0\377\214\0\0R\202\0\0\0\0\1\265\0\0\331\210\377\0\0\377" + "\2\307\0\0\367\252\0\0\276\206\377\0\0\377\1\213\0\0\267\214\0\0\0\0" + "\2m\0\0\34\334\0\0\372\202\377\0\0\377\2\233\0\0\260\346\0\0\377\211" + "\377\0\0\377\1\213\0\0\\\202\0\0\0\0\1\303\0\0\342\210\377\0\0\377\2" + "\323\0\0\372\251\0\0\300\205\377\0\0\377\2\320\0\0\366.\0\0\13\215\0" + "\0\0\0\5r\0\0^\364\0\0\377\377\0\0\377\253\0\0\310\312\0\0\366\211\377" + "\0\0\377\1\220\0\0\225\202\0\0\0\0\1\353\0\0\374\210\377\0\0\377\2\274" + "\0\0\356\276\0\0\342\204\377\0\0\377\2\355\0\0\377s\0\0I\217\0\0\0\0" + "\4\202\0\0\207\371\0\0\377\331\0\0\370\237\0\0\310\211\377\0\0\377\3" + "\266\0\0\340W\0\0#\201\0\0I\211\377\0\0\377\2\217\0\0\260\354\0\0\376" + "\203\377\0\0\377\2\374\0\0\377z\0\0\227\221\0\0\0\0\3\205\0\0\225\370" + "\0\0\377\311\0\0\362\211\377\0\0\377\3\363\0\0\377\227\0\0\260\302\0" + "\0\357\210\377\0\0\377\2\361\0\0\376\320\0\0\362\204\377\0\0\377\1\243" + "\0\0\301\223\0\0\0\0\2\177\0\0\203\361\0\0\377\212\377\0\0\377\1\371" + "\0\0\377\216\377\0\0\377\2\243\0\0\313\0\0\0\1\224\0\0\0\0\2s\0\0_\332" + "\0\0\373\226\377\0\0\377\2\362\0\0\377\223\0\0\236\227\0\0\0\0\23`\0" + "\0\40\263\0\0\342\366\0\0\377\331\0\0\371\367\0\0\377\340\0\0\373\336" + "\0\0\373\377\0\0\377\256\0\0\325\204\0\0Y\336\0\0\373\201\0\0K\231\0" + "\0\235\373\0\0\377\271\0\0\337\353\0\0\375\376\0\0\377\322\0\0\370\376" + "\0\0\377\203\377\0\0\377\2\302\0\0\362z\0\0I\205\0\0\0\0\4b\0\0""9\200" + "\0\0\200m\0\0b@\0\0\10\211\0\0\0\0\5]\0\0!\215\0\0\243\245\0\0\316\224" + "\0\0\247.\0\0\13\203\0\0\0\0\6\241\0\0\307\0\0\0\0\245\0\0\301\203\0" + "\0T]\0\0\13\314\0\0\366\202\0\0\0\0\1\277\0\0\347\202\0\0\0\0\12\305" + "\0\0\355\0\0\0\0\233\0\0\244\243\0\0\257\0\0\0\0\342\0\0\372\377\0\0" + "\377\317\0\0\370\207\0\0\223\0\0\0\4\205\0\0\0\0\2\230\0\0\270\367\0" + "\0\377\202\377\0\0\377\2\322\0\0\370r\0\0:\207\0\0\0\0\2\201\0\0}\343" + "\0\0\376\203\377\0\0\377\2\264\0\0\352\0\0\0\2\202\0\0\0\0\6\212\0\0" + "\263z\0\0A\262\0\0\323\200\0\0:3\0\0\5\262\0\0\340\202\0\0\0\0\1\301" + "\0\0\346\202\0\0\0\0\10\271\0\0\344\0\0\0\0\231\0\0\226\212\0\0\213\0" + "\0\0\0\304\0\0\351\202\0\0x\0\0\0\3\206\0\0\0\0\2\200\0\0\200\376\0\0" + "\377\204\377\0\0\377\1\306\0\0\362\206\0\0\0\0\2c\0\0$\355\0\0\376\205" + "\377\0\0\377\1r\0\0b\202\0\0\0\0\21@\0\0\4\221\0\0\247\245\0\0\315\250" + "\0\0\334\266\0\0\343\315\0\0\366\253\0\0\325\245\0\0\306\336\0\0\374" + "\221\0\0\253\226\0\0\263\353\0\0\376\245\0\0\313\311\0\0\360\270\0\0" + "\347\262\0\0\335\220\0\0\254\210\0\0\0\0\1\274\0\0\351\206\377\0\0\377" + "\1g\0\0""4\205\0\0\0\0\1\215\0\0\177\206\377\0\0\377\1\201\0\0}\205\0" + "\0\0\0\27\0\0\0\1\40\0\0\20\0\0\0\0\13\0\0\30m\0\0""6\225\0\0F\201\0" + "\0go\0\0g0\0\0\20:\0\0B/\0\0""6\25\0\0%I\0\0;\0\0\0\3\0\0\0\0\\\0\0\31" + "r\0\0Lo\0\0N\202\0\0V\215\0\0\\\201\0\0e\207\0\0q\347\0\0\375\205\377" + "\0\0\377\2\371\0\0\377H\0\0\40\205\0\0\0\0\1u\0\0U\206\377\0\0\377\4" + "\333\0\0\373\322\0\0\370\333\0\0\372\340\0\0\374\202\337\0\0\375\12\233" + "\0\0\321\0\0\0\0c\0\0\22\306\0\0\364\354\0\0\376\357\0\0\377\377\0\0" + "\377\226\0\0\233\212\0\0\263\356\0\0\377\203\377\0\0\377\4\224\0\0\253" + "\0\0\0\0p\0\0;\357\0\0\376\213\377\0\0\377\1\261\0\0\344\207\0\0\0\0" + "\2\227\0\0\272\334\0\0\372\211\377\0\0\377\4\355\0\0\376g\0\0""4\0\0" + "\0\0\242\0\0\306\203\377\0\0\377\4\312\0\0\360\200\0\0\2@\0\0\20\332" + "\0\0\373\203\377\0\0\377\4\362\0\0\377z\0\0E\0\0\0\0\225\0\0\244\212" + "\377\0\0\377\2\374\0\0\377y\0\0T\206\0\0\0\0\2$\0\0\7\242\0\0\327\212" + "\377\0\0\377\4\230\0\0\255\0\0\0\0u\0\0U\370\0\0\377\202\377\0\0\377" + "\2\371\0\0\377\200\0\0P\202\0\0\0\0\2\202\0\0\207\376\0\0\377\203\377" + "\0\0\377\4\315\0\0\363U\0\0\11\0\0\0\1\304\0\0\355\211\377\0\0\377\3" + "\346\0\0\375\305\0\0\363a\0\0\35\205\0\0\0\0\1\230\0\0\274\212\377\0" + "\0\377\4\317\0\0\364U\0\0\6\0\0\0\2\304\0\0\362\203\377\0\0\377\1\251" + "\0\0\311\203\0\0\0\0\2\0\0\0\1\255\0\0\351\204\377\0\0\377\4\255\0\0" + "\320]\0\0\13y\0\0;\361\0\0\376\203\377\0\0\377\1\367\0\0\377\206\377" + "\0\0\377\1\234\0\0\260\205\0\0\0\0\1\315\0\0\366\205\377\0\0\377\2\233" + "\0\0\304\333\0\0\371\202\322\0\0\370\5\310\0\0\367\201\0\0]t\0\0V\240" + "\0\0\301\327\0\0\371\202\377\0\0\377\2\345\0\0\375d\0\0\27\204\0\0\0" + "\0\2M\0\0""5\320\0\0\367\204\377\0\0\377\3\324\0\0\372p\0\0[\217\0\0" + "\217\202\261\0\0\335\2\242\0\0\305\307\0\0\356\206\377\0\0\377\1\237" + "\0\0\305\205\0\0\0\0\1\275\0\0\352\205\377\0\0\377\1\236\0\0\302\204" + "\0\0\0\0\2\211\0\0\204\367\0\0\377\205\377\0\0\377\1\250\0\0\334\204" + "\0\0\0\0\2\200\0\0t\375\0\0\377\205\377\0\0\377\2\344\0\0\375Z\0\0%\203" + "\0\0\0\0\1\264\0\0\341\205\377\0\0\377\2\376\0\0\377q\0\0j\205\0\0\0" + "\0\2\202\0\0~\376\0\0\377\204\377\0\0\377\1\234\0\0\302\204\0\0\0\0\1" + "\301\0\0\356\206\377\0\0\377\1\305\0\0\363\204\0\0\0\0\1\252\0\0\331" + "\207\377\0\0\377\1\216\0\0\253\203\0\0\0\0\2t\0\0l\360\0\0\377\203\377" + "\0\0\377\2\376\0\0\377\233\0\0\311\207\0\0\0\0\2\230\0\0\276\376\0\0" + "\377\202\377\0\0\377\2\355\0\0\376h\0\0;\204\0\0\0\0\1\275\0\0\355\202" + "\377\0\0\377\5\325\0\0\371\327\0\0\367\377\0\0\377\374\0\0\377\211\0" + "\0\240\204\0\0\0\0\2\205\0\0\224\376\0\0\377\202\377\0\0\377\2\333\0" + "\0\373\323\0\0\365\202\377\0\0\377\1\221\0\0\236\204\0\0\0\0\5s\0\0P" + "\254\0\0\331\263\0\0\345\235\0\0\311q\0\0a\211\0\0\0\0\4\200\0\0\205" + "\301\0\0\356\275\0\0\353w\0\0^\205\0\0\0\0\7z\0\0w\366\0\0\377\354\0" + "\0\376\206\0\0z\205\0\0\224\252\0\0\326x\0\0l\206\0\0\0\0\10\201\0\0" + "y\247\0\0\316\224\0\0\245Z\0\0\37\245\0\0\333\376\0\0\377\302\0\0\357" + "d\0\0\27\234\0\0\0\0\2Q\0\0/9\0\0\22\217\0\0\0\0\2""7\0\0%\0\0\0\1\377" + "\0\0\0\0\376\0\0\0\0", +}; + +static const GdkPixdata icon_yellow_pixbuf = { + 0x47646b50, /* Pixbuf magic: 'GdkP' */ + 24 + 3515, /* header length + pixel_data length */ + 0x2010002, /* pixdata_type */ + 192, /* rowstride */ + 48, /* width */ + 48, /* height */ + /* pixel_data: */ + (guint8 *) + "\377\0\0\0\0\243\0\0\0\0\7;'\0\15}d\0\\\215q\0\210\210m\0\237\216q\0" + "\231\211n\0\206y`\0=\247\0\0\0\0\3w^\0\\\262\216\0\336\356\277\0\376" + "\206\377\314\0\377\3\310\240\0\365\217r\0\23033\0\5\226\0\0\0\0\1}c\0" + "Z\204\205j\0\202\1x_\0f\206\0\0\0\0\3]K\0)\261\216\0\341\375\312\0\377" + "\212\377\314\0\377\2\312\241\0\365u^\0W\206\0\0\0\0\1x`\0h\202\236~\0" + "\300\1\243\203\0\307\204\250\206\0\317\4\256\214\0\327\261\215\0\335" + "\265\220\0\330\207p\0\40\203\0\0\0\0\1\270\223\0\333\204\377\314\0\377" + "\1\275\227\0\347\205\0\0\0\0\2t]\0X\336\261\0\374\215\377\314\0\377\2" + "\367\306\0\377\210l\0\245\205\0\0\0\0\1\217r\0\226\212\377\314\0\377" + "\1[I\0\34\203\0\0\0\0\1\252\210\0\316\204\377\314\0\377\1\270\223\0\345" + "\204\0\0\0\0\2p[\0T\352\273\0\376\217\377\314\0\377\3\376\313\0\377\233" + "|\0\307\0\0\0\2\203\0\0\0\0\1\205j\0}\211\377\314\0\377\2\366\305\0\377" + "\0\0\0\1\203\0\0\0\0\1\232{\0\275\204\377\314\0\377\1\306\236\0\355\203" + "\0\0\0\0\2hP\0\40\332\257\0\373\222\377\314\0\377\1\222t\0\270\203\0" + "\0\0\0\1x`\0b\211\377\314\0\377\1\342\264\0\374\204\0\0\0\0\1\223u\0" + "\243\204\377\314\0\377\1\333\260\0\373\203\0\0\0\0\1\252\210\0\330\223" + "\377\314\0\377\2\374\312\0\377\201h\0\202\202\0\0\0\0\1zb\0^\211\377" + "\314\0\377\1\317\246\0\366\204\0\0\0\0\1\212o\0\201\204\377\314\0\377" + "\5\376\313\0\377\223t\0!\0\0\0\0hU\0B\372\310\0\377\224\377\314\0\377" + "\4\333\257\0\374E;\0\32\0\0\0\0\214q\0q\211\377\314\0\377\1\266\222\0" + "\341\204\0\0\0\0\1t^\0Q\205\377\314\0\377\3\232{\0\203\0\0\0\0\233|\0" + "\306\226\377\314\0\377\3\234}\0\304\0\0\0\0\226x\0\210\211\377\314\0" + "\377\1\241\201\0\274\204\0\0\0\0\2""3\"\0\17\367\306\0\377\204\377\314" + "\0\377\3\256\213\0\315\0\0\0\0\325\252\0\372\205\377\314\0\377\5\376" + "\313\0\377\322\251\0\365\262\216\0\325\264\220\0\324\376\313\0\377\204" + "\377\314\0\377\13\365\304\0\377\245\205\0\312\223v\0{\210m\0g\230z\0" + "\212\260\215\0\325\370\306\0\377\377\314\0\377\351\273\0\3765+\0\30\236" + "\177\0\265\211\377\314\0\377\1\201h\0{\205\0\0\0\0\1\313\242\0\365\204" + "\377\314\0\377\3\325\253\0\370F:\0,\374\312\0\377\203\377\314\0\377\3" + "\344\266\0\374\242\202\0\276\202i\0\77\203\0\0\0\0\1\256\214\0\327\203" + "\377\314\0\377\2\370\306\0\377\203i\0k\205\0\0\0\0\5\211m\0w\372\310" + "\0\377\377\314\0\377\207l\0\227\257\215\0\335\210\377\314\0\377\2\366" + "\305\0\377YC\0\27\205\0\0\0\0\1\245\204\0\315\205\377\314\0\377\1\222" + "t\0\270\202\377\314\0\377\3\373\311\0\377\224w\0\237`@\0\10\205\0\0\0" + "\0\5cN\0>\375\312\0\377\377\314\0\377\361\301\0\376\254\212\0\325\207" + "\0\0\0\0\4\254\212\0\321\377\314\0\377\303\234\0\353\326\253\0\367\210" + "\377\314\0\377\1\276\230\0\353\206\0\0\0\0\1\200e\0t\205\377\314\0\377" + "\1\371\307\0\377\202\377\314\0\377\1\304\235\0\354\210\0\0\0\0\4\353" + "\274\0\376\352\273\0\376\236}\0\277\231{\0\242\207\0\0\0\0\3w_\0V\377" + "\314\0\377\374\312\0\377\211\377\314\0\377\1\217s\0\240\206\0\0\0\0\2" + "..\0\13\350\271\0\375\204\377\314\0\377\4\354\275\0\376\357\277\0\376" + "\377\314\0\377\263\217\0\333\207\0\0\0\0\5\0\0\0\5\317\245\0\364\301" + "\232\0\345\213o\0\212\257\214\0\317\207\0\0\0\0\3\214q\0h\332\257\0\370" + "\262\217\0\330\210\377\314\0\377\2\347\271\0\376F:\0\26\207\0\0\0\0\1" + "\251\210\0\315\204\377\314\0\377\4\361\301\0\376\235~\0\266\377\314\0" + "\377\276\230\0\344\207\0\0\0\0\6yb\0""9\267\222\0\343\244\203\0\312q" + "Z\0O\332\256\0\371\0\0\0\1\206\0\0\0\0\3\236~\0\250\263\220\0\327\271" + "\224\0\363\210\377\314\0\377\1\234}\0\314\210\0\0\0\0\2w^\0I\375\312" + "\0\377\204\377\314\0\377\4~e\0\232\377\314\0\377\332\256\0\371U9\0\11" + "\206\0\0\0\0\6\216q\0s\243\202\0\310\202h\0\253-\36\0\21\372\310\0\377" + "\205k\0d\205\0\0\0\0\4\211n\0a\351\272\0\374\245\205\0\314\303\234\0" + "\361\207\377\314\0\377\2\371\307\0\377^K\0D\211\0\0\0\0\1\273\225\0\347" + "\204\377\314\0\377\1\200g\0\225\202\377\314\0\377\2\305\235\0\355{a\0" + "Y\205\0\0\0\0\6\240\200\0\256\222t\0\242C5\0""5\0\0\0\0\340\263\0\374" + "\262\217\0\330\203\0\0\0\0\6\210n\0k\300\232\0\352\375\312\0\377\377" + "\314\0\377\263\217\0\333\267\223\0\347\207\377\314\0\377\1\256\213\0" + "\331\212\0\0\0\0\2\201f\0U\374\312\0\377\203\377\314\0\377\2\221s\0\222" + "\372\310\0\377\203\377\314\0\377\7\321\247\0\371\226x\0\266kR\0\37\0" + "\0\0\0\0\0\0\1\306\236\0\355\205j\0o\202\0\0\0\0\5\312\241\0\357\366" + "\305\0\377\214q\0o\221u\0\216\301\232\0\353\204\377\314\0\377\2\277\231" + "\0\353\255\213\0\327\206\377\314\0\377\2\353\274\0\376[J\0-\213\0\0\0" + "\0\1\250\207\0\326\203\377\314\0\377\2\226x\0\241\360\300\0\377\205\377" + "\314\0\377\5\362\302\0\376\301\233\0\347\322\250\0\363\377\314\0\377" + "\214p\0R\202\0\0\0\0\1\265\221\0\331\210\377\314\0\377\2\307\237\0\367" + "\252\211\0\276\206\377\314\0\377\1\213o\0\267\214\0\0\0\0\2m[\0\34\334" + "\260\0\372\202\377\314\0\377\2\233}\0\260\346\270\0\377\211\377\314\0" + "\377\1\213o\0\\\202\0\0\0\0\1\303\234\0\342\210\377\314\0\377\2\323\251" + "\0\372\251\207\0\300\205\377\314\0\377\2\320\247\0\366..\0\13\215\0\0" + "\0\0\5r\\\0^\364\303\0\377\377\314\0\377\253\210\0\310\312\242\0\366" + "\211\377\314\0\377\1\220s\0\225\202\0\0\0\0\1\353\274\0\374\210\377\314" + "\0\377\2\274\226\0\356\276\227\0\342\204\377\314\0\377\2\355\276\0\377" + "s[\0I\217\0\0\0\0\4\202h\0\207\371\307\0\377\331\256\0\370\237\200\0" + "\310\211\377\314\0\377\3\266\222\0\340WI\0#\201i\0I\211\377\314\0\377" + "\2\217r\0\260\354\275\0\376\203\377\314\0\377\2\374\312\0\377zb\0\227" + "\221\0\0\0\0\3\205j\0\225\370\306\0\377\311\241\0\362\211\377\314\0\377" + "\3\363\302\0\377\227x\0\260\302\234\0\357\210\377\314\0\377\2\361\301" + "\0\376\320\246\0\362\204\377\314\0\377\1\243\201\0\301\223\0\0\0\0\2" + "\177e\0\203\361\301\0\377\212\377\314\0\377\1\371\307\0\377\216\377\314" + "\0\377\2\243\203\0\313\0\0\0\1\224\0\0\0\0\2s[\0_\332\257\0\373\226\377" + "\314\0\377\2\362\302\0\377\223v\0\236\227\0\0\0\0\23`P\0\40\263\217\0" + "\342\366\305\0\377\331\256\0\371\367\306\0\377\340\263\0\373\336\262" + "\0\373\377\314\0\377\256\213\0\325\204j\0Y\336\262\0\373\201f\0K\231" + "z\0\235\373\311\0\377\271\225\0\337\353\273\0\375\376\313\0\377\322\250" + "\0\370\376\313\0\377\203\377\314\0\377\2\302\233\0\362zb\0I\205\0\0\0" + "\0\4bQ\0""9\200f\0\200mX\0b@@\0\10\211\0\0\0\0\5]M\0!\215q\0\243\245" + "\203\0\316\224w\0\247..\0\13\203\0\0\0\0\6\241\201\0\307\0\0\0\0\245" + "\204\0\301\203g\0T]F\0\13\314\244\0\366\202\0\0\0\0\1\277\230\0\347\202" + "\0\0\0\0\12\305\235\0\355\0\0\0\0\233|\0\244\243\203\0\257\0\0\0\0\342" + "\266\0\372\377\314\0\377\317\246\0\370\207l\0\223\0\0\0\4\205\0\0\0\0" + "\2\230z\0\270\367\306\0\377\202\377\314\0\377\2\322\250\0\370r\\\0:\207" + "\0\0\0\0\2\201f\0}\343\266\0\376\203\377\314\0\377\2\264\220\0\352\0" + "\0\0\2\202\0\0\0\0\6\212o\0\263zb\0A\262\217\0\323\200e\0:33\0\5\262" + "\216\0\340\202\0\0\0\0\1\301\232\0\346\202\0\0\0\0\10\271\224\0\344\0" + "\0\0\0\231z\0\226\212n\0\213\0\0\0\0\304\235\0\351\202h\0x\0\0\0\3\206" + "\0\0\0\0\2\200f\0\200\376\313\0\377\204\377\314\0\377\1\306\236\0\362" + "\206\0\0\0\0\2cN\0$\355\276\0\376\205\377\314\0\377\1r[\0b\202\0\0\0" + "\0\21@@\0\4\221t\0\247\245\204\0\315\250\206\0\334\266\222\0\343\315" + "\244\0\366\253\210\0\325\245\203\0\306\336\261\0\374\221t\0\253\226x" + "\0\263\353\274\0\376\245\204\0\313\311\240\0\360\270\224\0\347\262\216" + "\0\335\220t\0\254\210\0\0\0\0\1\274\227\0\351\206\377\314\0\377\1gS\0" + "4\205\0\0\0\0\1\215p\0\177\206\377\314\0\377\1\201f\0}\205\0\0\0\0\27" + "\0\0\0\1\40\40\0\20\0\0\0\0\13\13\0\30mU\0""6\225x\0F\201h\0goY\0g0\40" + "\0\20:.\0B/&\0""6\25\16\0%I=\0;\0\0\0\3\0\0\0\0\\G\0\31r[\0LoX\0N\202" + "h\0V\215r\0\\\201h\0e\207l\0q\347\270\0\375\205\377\314\0\377\2\371\307" + "\0\377H8\0\40\205\0\0\0\0\1u]\0U\206\377\314\0\377\4\333\260\0\373\322" + "\250\0\370\333\257\0\372\340\263\0\374\202\337\262\0\375\12\233|\0\321" + "\0\0\0\0cU\0\22\306\236\0\364\354\275\0\376\357\277\0\377\377\314\0\377" + "\226x\0\233\212o\0\263\356\276\0\377\203\377\314\0\377\4\224v\0\253\0" + "\0\0\0p[\0;\357\277\0\376\213\377\314\0\377\1\261\215\0\344\207\0\0\0" + "\0\2\227y\0\272\334\260\0\372\211\377\314\0\377\4\355\276\0\376gS\0""4" + "\0\0\0\0\242\202\0\306\203\377\314\0\377\4\312\242\0\360\200\200\0\2" + "@0\0\20\332\257\0\373\203\377\314\0\377\4\362\302\0\377z`\0E\0\0\0\0" + "\225x\0\244\212\377\314\0\377\2\374\312\0\377ya\0T\206\0\0\0\0\2$$\0" + "\7\242\202\0\327\212\377\314\0\377\4\230y\0\255\0\0\0\0u]\0U\370\306" + "\0\377\202\377\314\0\377\2\371\307\0\377\200f\0P\202\0\0\0\0\2\202h\0" + "\207\376\313\0\377\203\377\314\0\377\4\315\244\0\363U9\0\11\0\0\0\1\304" + "\235\0\355\211\377\314\0\377\3\346\267\0\375\305\235\0\363aO\0\35\205" + "\0\0\0\0\1\230z\0\274\212\377\314\0\377\4\317\245\0\364UU\0\6\0\0\0\2" + "\304\235\0\362\203\377\314\0\377\1\251\206\0\311\203\0\0\0\0\2\0\0\0" + "\1\255\212\0\351\204\377\314\0\377\4\255\213\0\320]F\0\13y_\0;\361\301" + "\0\376\203\377\314\0\377\1\367\306\0\377\206\377\314\0\377\1\234}\0\260" + "\205\0\0\0\0\1\315\244\0\366\205\377\314\0\377\2\233|\0\304\333\257\0" + "\371\202\322\250\0\370\5\310\240\0\367\201h\0]t\\\0V\240\200\0\301\327" + "\254\0\371\202\377\314\0\377\2\345\267\0\375dN\0\27\204\0\0\0\0\2M\77" + "\0""5\320\246\0\367\204\377\314\0\377\3\324\251\0\372pZ\0[\217r\0\217" + "\202\261\215\0\335\2\242\201\0\305\307\240\0\356\206\377\314\0\377\1" + "\237\177\0\305\205\0\0\0\0\1\275\226\0\352\205\377\314\0\377\1\236~\0" + "\302\204\0\0\0\0\2\211n\0\204\367\306\0\377\205\377\314\0\377\1\250\206" + "\0\334\204\0\0\0\0\2\200e\0t\375\312\0\377\205\377\314\0\377\2\344\266" + "\0\375ZE\0%\203\0\0\0\0\1\264\220\0\341\205\377\314\0\377\2\376\313\0" + "\377q[\0j\205\0\0\0\0\2\202g\0~\376\313\0\377\204\377\314\0\377\1\234" + "}\0\302\204\0\0\0\0\1\301\232\0\356\206\377\314\0\377\1\305\235\0\363" + "\204\0\0\0\0\1\252\210\0\331\207\377\314\0\377\1\216q\0\253\203\0\0\0" + "\0\2t\\\0l\360\300\0\377\203\377\314\0\377\2\376\313\0\377\233|\0\311" + "\207\0\0\0\0\2\230y\0\276\376\313\0\377\202\377\314\0\377\2\355\276\0" + "\376hR\0;\204\0\0\0\0\1\275\230\0\355\202\377\314\0\377\5\325\252\0\371" + "\327\253\0\367\377\314\0\377\374\312\0\377\211n\0\240\204\0\0\0\0\2\205" + "k\0\224\376\313\0\377\202\377\314\0\377\2\333\260\0\373\323\251\0\365" + "\202\377\314\0\377\1\221t\0\236\204\0\0\0\0\5s\\\0P\254\211\0\331\263" + "\220\0\345\235~\0\311qY\0a\211\0\0\0\0\4\200h\0\205\301\232\0\356\275" + "\227\0\353w_\0^\205\0\0\0\0\7zc\0w\366\305\0\377\354\275\0\376\206k\0" + "z\205k\0\224\252\210\0\326xa\0l\206\0\0\0\0\10\201g\0y\247\206\0\316" + "\224w\0\245ZJ\0\37\245\205\0\333\376\313\0\377\302\234\0\357dN\0\27\234" + "\0\0\0\0\2QA\0/9+\0\22\217\0\0\0\0\2""7)\0%\0\0\0\1\377\0\0\0\0\376\0" + "\0\0\0", +}; + diff --git a/spaceapi-gtk b/spaceapi-gtk new file mode 100755 index 0000000000000000000000000000000000000000..1625d07f0f22bce3668cca16d131e78659f791d3 GIT binary patch literal 58608 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 A-~a#s literal 0 HcmV?d00001 diff --git a/spaceapi-gtk.c b/spaceapi-gtk.c new file mode 100644 index 0000000..dc71f4e --- /dev/null +++ b/spaceapi-gtk.c @@ -0,0 +1,232 @@ +/* + * CCCHH Door Information System for UNIX + * Author: hanez, Haeger + * Thanks to: atari, beh and eisbaer + * + * License (Beerware License): + * As long as you retain this notice you can do whatever you want with this + * stuff. If we meet some day, and you think this stuff is worth it, you can buy + * me a beer in return hanez and all other contributers + * + * TODO: + * - Add door open/close date to notification and status + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#if LIBNOTIFY +#include +#endif + +#include "pesthoernchen.h" + +struct string { + char *ptr; + size_t len; +}; + +static char *name = "Dooris for UNIX"; +static char *statusurl = "https://www.hamburg.ccc.de/dooris/status.json"; +static char *agent = "Dooris-for-UNIX/0.42"; + +// The delay for polling the dooris service. Adjust this before compiling +int delay = 900000; // ms. aka 15 minutes + +bool door_open = false; +bool old_door_open = false; + +GtkStatusIcon *tray_icon; + +bool do_it(); +void invoke_notification(); + +void init_string(struct string *s) { + s->len = 0; + s->ptr = malloc(s->len+1); + if (s->ptr == NULL) { + fprintf(stderr, "malloc() failed\n"); + exit(EXIT_FAILURE); + } + s->ptr[0] = '\0'; +} + +size_t writefunc(void *ptr, size_t size, size_t nmemb, struct string *s) { + size_t new_len = s->len + size*nmemb; + s->ptr = realloc(s->ptr, new_len+1); + if (s->ptr == NULL) { + fprintf(stderr, "realloc() failed\n"); + exit(EXIT_FAILURE); + } + memcpy(s->ptr+s->len, ptr, size*nmemb); + s->ptr[new_len] = '\0'; + s->len = new_len; + + return size*nmemb; +} + +void tray_icon_on_click(GtkStatusIcon *status_icon, gpointer user_data) { + do_it(); +} + +void get_bouncer_data() { + CURL *curl; + CURLcode res; + + struct json_object *response_json_object; + struct json_object *door_json_object; + struct json_object *leaf_json_object; + + bool door_status; + int door_last_change; + + struct string s; + + printf("Called get_bouncer_data()\n"); + + old_door_open = door_open; + + init_string(&s); + + curl = curl_easy_init(); + if(!curl) { + fprintf(stderr, "curl_easy_init() failed.\n"); + return; + } + + curl_easy_setopt(curl, CURLOPT_URL, statusurl); + curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s); + curl_easy_setopt(curl, CURLOPT_USERAGENT, agent); + + res = curl_easy_perform(curl); + + curl_easy_cleanup(curl); + + if(res != CURLE_OK) { + fprintf(stderr, "curl_easy_perform() failed: %s\n", + curl_easy_strerror(res)); + return; + } + + response_json_object = json_tokener_parse(s.ptr); + free(s.ptr); + + // door objects + door_json_object = json_object_object_get(response_json_object, "state"); + + leaf_json_object = json_object_object_get(door_json_object, "open"); + door_status = json_object_get_int(leaf_json_object); + //door_status = true; + leaf_json_object = json_object_object_get(door_json_object, "lastchange"); + door_last_change = json_object_get_int(leaf_json_object); + + // free door object + json_object_put(door_json_object); + + // free leaf object + //json_object_put(leaf_json_object); + + // free response object + // json_object_put(response_json_object); + + printf("Door status: = %d\n", door_status); + printf("Door last change: = %d\n", door_last_change); + + if (door_status == true) { + door_open = true; + } else { + door_open = false; + } +} + +void invoke_notification() { + char door[20]; + + if (door_open == true) { + snprintf(door, 20, "Door open..."); + } else { + snprintf(door, 20, "Door closed..."); + } + + gtk_status_icon_set_tooltip(tray_icon, door); + +#if LIBNOTIFY + NotifyNotification *n; + + notify_init(name); + n = notify_notification_new(name, door, NULL); + //notify_notification_set_timeout(n, 10000); + + if (door_open == true) { + notify_notification_set_icon_from_pixbuf(n, gdk_pixbuf_from_pixdata( + &icon_yellow_pixbuf, + true, + NULL)); + } else { + notify_notification_set_icon_from_pixbuf(n, gdk_pixbuf_from_pixdata( + &icon_red_pixbuf, + true, + NULL)); + } + notify_notification_show(n, NULL); + g_object_unref(G_OBJECT(n)); +#endif +} + +void set_status() { + if (door_open == true) { + printf("Set to status: open\n"); + gtk_status_icon_set_from_pixbuf(tray_icon, + gdk_pixbuf_from_pixdata(&icon_yellow_pixbuf, + true, + NULL)); + } else { + printf("Set to status: closed\n"); + gtk_status_icon_set_from_pixbuf(tray_icon, + gdk_pixbuf_from_pixdata(&icon_red_pixbuf, + true, + NULL)); + } +} + +bool do_it() { + get_bouncer_data(); + set_status(); + + if (door_open != old_door_open) { + invoke_notification(); + } + return true; +} + +int main(int argc, char **argv) { + gtk_init(&argc, &argv); + + tray_icon = gtk_status_icon_new(); + g_signal_connect(G_OBJECT(tray_icon), "activate", + G_CALLBACK(tray_icon_on_click), NULL); + + gtk_status_icon_set_visible(tray_icon, true); + + do_it(); + + // DEBUG STUFF + //door_open = true; + //set_status(); + // END DEBUG STUFF + + invoke_notification(); + + gtk_timeout_add(delay, (GtkFunction)do_it, (gpointer)NULL); + + gtk_main(); + + return 0; +}