#gtk3 #rulers
#gtk3 #линейки
Вопрос:
Я хочу отобразить горизонтальную и вертикальную линейку на рамке с помощью gtk3.
Я хочу отобразить линейку на фрейме следующим образом:
НО GtkRuler был удален из GTK 3 за то, что он не поддерживается и слишком специализирован!!
это мой GTK3 / c cpde:
/* The horizontal ruler goes on top. As the mouse moves across the
* drawing area, a motion_notify_event is passed to the
* appropriate event handler for the ruler. */
hrule = gtk_hruler_new ();
gtk_ruler_set_metric (GTK_RULER (hrule), GTK_PIXELS);
gtk_ruler_set_range (GTK_RULER (hrule), 7, 13, 0, 20);
g_signal_connect_swapped (area, "motion_notify_event",
G_CALLBACK (EVENT_METHOD (hrule, motion_notify_event)),
hrule);
gtk_table_attach (GTK_TABLE (table), hrule, 1, 2, 0, 1,
GTK_EXPAND|GTK_SHRINK|GTK_FILL, GTK_FILL, 0, 0);
/* The vertical ruler goes on the left. As the mouse moves across
* the drawing area, a motion_notify_event is passed to the
* appropriate event handler for the ruler. */
vrule = gtk_vruler_new ();
gtk_ruler_set_metric (GTK_RULER (vrule), GTK_PIXELS);
gtk_ruler_set_range (GTK_RULER (vrule), 0, YSIZE, 10, YSIZE );
g_signal_connect_swapped (area, "motion_notify_event",
G_CALLBACK (EVENT_METHOD (vrule, motion_notify_event)),
vrule);
gtk_table_attach (GTK_TABLE (table), vrule, 0, 1, 1, 2,
GTK_FILL, GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0);
Какие идеи о том, как решить эту задачу, вы бы предложили? Или на каком ресурсе в Интернете я могу найти помощь?
Ответ №1:
Если ваш код имеет совместимую лицензию, вы можете просто скопировать GtkRuler из GTK 2 в свой код, внеся любые изменения, необходимые для его работы с GTK 3.
Комментарии:
1. @ ptomato: GtkRuler был удален из GTK 3 за то, что он не поддерживается и слишком специализирован!! Ссылка
2. ДА. Но GtkRuler все еще существует в GTK 2. Вы можете скопировать этот код из GTK 2 в свое приложение и заставить его работать с GTK 3.
3. @ ptomato: я новичок в gtk. Как заставить код gtk2 работать с gtk3?? Когда я копирую этот код из GTK 2 в свое приложение, он выдает ошибку!!
4. Это слишком большая тема, чтобы охватить ее в одном комментарии. Я бы посоветовал прочитать руководство по миграции GTK 2-3 , а затем попытаться устранить эти ошибки компиляции одну за другой.
5. @ ptomato: Большое вам спасибо. Я посетил его. Но ошибка не решается. Например, «gtk_drawing_area_size» устарел и не должен использоваться во вновь написанном коде, и разработчик gnome вводит вместо него «gtk_widget_set_size_request()» ( ссылка ). Но для «gtk_hruler_new» и «gtk_vruler_new» разработчик gnome не вводит для них никакой замены.