К вопросу о copy&paste

В GTK практически весь интерфейс строится на виджетах, как системных, так и своих, т.к. иногда удобнее создать свой композитный виджет, нежели заморачиваться с охапкой разрозненных функций. Эклектика не всегда рулит

В очередной раз скопипастив какой-то из своих композитов и наслаждаясь emacs-овой контекстной заменой (вообще прелесть, т.к. учитывает регистр заменяемого), начал подозревать, что как-то это не то и не оно. Китайчатиной пованивает, да и до черта лаж из-за собственной невнимательности вылезает. В результате накидал небольшой perl-овый скриптик для генерации шаблона виджета. скриптик здесь. в качестве единственно аргумента передается имя будущего виджета в виде MyWidget (т.е. капитализированные префикс и имя без пробелов и прочих подчеркиваний).

GdkColor в GdkRGBA

в процессе портирования sylpheed на gtk3 понадобилось преобразовывать представление цветов из GdkColor в GdkRGBA. в результате написал небольшую тулзинку. может, кому и пригодится

    1 /*
    2  * Output GdkRGBA representation of specified color
    3  *
    4  * compile: gcc -pipe -O2 -o rgba $(pkg-config --cflags --libs gdk-3.0) rgba.c
    5  */
    6 
    7 #include <gdk/gdk.h>
    8 
    9 int
   10 main (int argc, char *argv[])
   11 {
   12   GdkRGBA color;
   13 
   14   if (argc < 2)
   15     {
   16       fprintf (stderr, "Usage: rgba <colorspec>\n");
   17       return 1;
   18     }
   19 
   20   if (!gdk_rgba_parse (&color, argv[1]))
   21     {
   22       fprintf (stderr, "Unable to parse color %s\n", argv[1]);
   23       return 1;
   24     }
   25 
   26   printf ("{%.3f, %.3f, %.3f, %.3f}\n", color.red, color.green, color.blue, color.alpha);
   27 
   28   return 0;
   29 }

Очередные странности gtk3

Понадобилось вызывать всплывающее меню. По “горячей клавише”. Из любого места. Есть для этого такая маленькая приятная либа – keybinder. И как отдельная либа хороша, и в свой код интегрируется легко, т.к. в либе всего один файл с кодом. В общем – прелесть. Вот только меню из обработчиков хоткеев всплывать не желает, хоть ты тресни. Любое другое действие – пожалуйста. Меню – хрен тебе на воротник, а не меню. Причем, тот же самый код для вызова меню прекрасно работает, если его дергать через механизмы GApplication. Такая вот омерзительность.

Читать далее «Очередные странности gtk3»