Есть ли какая-либо замена для «GtkRuler» в GTK3?

#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 не вводит для них никакой замены.