diff options
author | Thomas White <taw@physics.org> | 2018-07-06 11:37:34 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2018-07-06 11:37:34 +0200 |
commit | a845d3061d5251c530fdaa4185ebf3059d433943 (patch) | |
tree | 4bc4ad51d3ea2effb5c38bd568174773686af316 | |
parent | 4fb276ffc2058eb68dc8dff3526098450c30fd55 (diff) |
Switch to GTK3
-rw-r--r-- | CMakeLists.txt | 22 | ||||
-rw-r--r-- | src/cell_explorer.c | 31 | ||||
-rw-r--r-- | src/dw-hdfsee.c | 64 | ||||
-rw-r--r-- | src/hdfsee.c | 2 |
4 files changed, 66 insertions, 53 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f5f82f0..992e28f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,15 +12,15 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake") find_package(HDF5 REQUIRED COMPONENTS C) find_package(Threads REQUIRED) find_package(GSL REQUIRED) -find_package(GTK2 2.0.0 COMPONENTS gtk) find_package(TIFF) find_package(OpenCL) find_package(PkgConfig) +pkg_search_module(GTK gtk+-3.0) pkg_search_module(CAIRO cairo) pkg_search_module(GDK gdk-2.0) pkg_search_module(GDKPIXBUF gdk-pixbuf-2.0) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=always -Wno-deprecated-declarations") include_directories(${CMAKE_CURRENT_SOURCE_DIR}) add_definitions(-DHAVE_CONFIG_H) @@ -53,7 +53,7 @@ include(CheckLibraryExists) set(HAVE_CAIRO ${CAIRO_FOUND}) set(HAVE_TIFF ${TIFF_FOUND}) -set(HAVE_GTK ${GTK2_FOUND}) +set(HAVE_GTK ${GTK_FOUND}) set(HAVE_OPENCL ${OpenCL_FOUND}) set(HAVE_GDKPIXBUF ${GDKPIXBUF_FOUND}) set(HAVE_GDK ${GDK_FOUND}) @@ -136,13 +136,13 @@ list(APPEND CRYSTFEL_EXECUTABLES pattern_sim) # ---------------------------------------------------------------------- # hdfsee -if (GTK2_FOUND) +if (GTK_FOUND) set(HDFSEE_SOURCES src/hdfsee.c src/dw-hdfsee.c src/hdfsee-render.c) add_executable(hdfsee ${HDFSEE_SOURCES}) - target_include_directories(hdfsee PRIVATE ${COMMON_INCLUDES} ${GTK2_INCLUDE_DIRS}) - target_link_libraries(hdfsee ${COMMON_LIBRARIES} ${GTK2_LIBRARIES}) + target_include_directories(hdfsee PRIVATE ${COMMON_INCLUDES} ${GTK_INCLUDE_DIRS}) + target_link_libraries(hdfsee ${COMMON_LIBRARIES} ${GTK_LIBRARIES}) if (TIFF_FOUND) target_include_directories(hdfsee PRIVATE ${TIFF_INCLUDE_DIRS}) @@ -151,22 +151,22 @@ if (GTK2_FOUND) list(APPEND CRYSTFEL_EXECUTABLES hdfsee) -endif (GTK2_FOUND) +endif (GTK_FOUND) # ---------------------------------------------------------------------- # cell_explorer -if (GTK2_FOUND) +if (GTK_FOUND) set(CELL_EXPLORER_SOURCES src/cell_explorer.c src/multihistogram.c) add_executable(cell_explorer ${CELL_EXPLORER_SOURCES}) - target_include_directories(cell_explorer PRIVATE ${COMMON_INCLUDES} ${GTK2_INCLUDE_DIRS}) - target_link_libraries(cell_explorer ${COMMON_LIBRARIES} ${GTK2_LIBRARIES}) + target_include_directories(cell_explorer PRIVATE ${COMMON_INCLUDES} ${GTK_INCLUDE_DIRS}) + target_link_libraries(cell_explorer ${COMMON_LIBRARIES} ${GTK_LIBRARIES}) list(APPEND CRYSTFEL_EXECUTABLES cell_explorer) -endif (GTK2_FOUND) +endif (GTK_FOUND) # ---------------------------------------------------------------------- # render_hkl diff --git a/src/cell_explorer.c b/src/cell_explorer.c index 94e7e985..b6756c8f 100644 --- a/src/cell_explorer.c +++ b/src/cell_explorer.c @@ -37,7 +37,7 @@ #include <string.h> #include <gtk/gtk.h> #include <math.h> -#include <gdk/gdkkeysyms.h> +#include <gdk/gdkkeysyms-compat.h> #include <gsl/gsl_multifit_nlin.h> #include "stream.h" @@ -325,11 +325,13 @@ static gboolean draw_sig(GtkWidget *da, GdkEventExpose *event, HistoBox *b) int *data_p, *data_a, *data_b, *data_c, *data_i, *data_f; int *data_r, *data_h, *data_excl; int start, stop; + GtkAllocation allocation; - cr = gdk_cairo_create(da->window); + cr = gdk_cairo_create(gtk_widget_get_window(da)); - width = da->allocation.width; - height = da->allocation.height; + gtk_widget_get_allocation(da, &allocation); + width = allocation.width; + height = allocation.height; b->width = width; /* Store for later use when dragging */ /* Overall background */ @@ -510,11 +512,13 @@ static gint keyclick_sig(GtkWidget *widget, GdkEventButton *event, CellWindow *w) { int width, cat; + GtkAllocation alloc; /* Ignore extra events for double click */ if ( event->type != GDK_BUTTON_PRESS ) return FALSE; - width = widget->allocation.width; + gtk_widget_get_allocation(widget, &alloc); + width = alloc.width; cat = 8*event->x / width; @@ -539,11 +543,13 @@ static gboolean keydraw_sig(GtkWidget *da, GdkEventExpose *event, CellWindow *w) int width, height; cairo_t *cr; double x; + GtkAllocation allocation; - cr = gdk_cairo_create(da->window); + cr = gdk_cairo_create(gtk_widget_get_window(da)); - width = da->allocation.width; - height = da->allocation.height; + gtk_widget_get_allocation(da, &allocation); + width = allocation.width; + height = allocation.height; /* Overall background */ cairo_rectangle(cr, 0.0, 0.0, width, height); @@ -1205,7 +1211,7 @@ static gint about_sig(GtkWidget *widget, CellWindow *w) window = gtk_about_dialog_new(); gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(w->window)); - gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(window), + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window), "Unit Cell Explorer"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window), "0.0.1"); gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(window), @@ -1336,8 +1342,11 @@ static gint motion_sig(GtkWidget *da, GdkEventMotion *event, HistoBox *h) gtk_widget_queue_draw(h->da); - if ( event->is_hint ) gdk_window_get_pointer(da->window, - NULL, NULL, NULL); + if ( event->is_hint ) { + gdk_window_get_pointer(gtk_widget_get_window(da), + NULL, NULL, NULL); + } + return TRUE; } diff --git a/src/dw-hdfsee.c b/src/dw-hdfsee.c index 7fa49bb2..39e18de7 100644 --- a/src/dw-hdfsee.c +++ b/src/dw-hdfsee.c @@ -41,7 +41,7 @@ #include <string.h> #include <cairo.h> #include <gdk-pixbuf/gdk-pixbuf.h> -#include <gdk/gdkkeysyms.h> +#include <gdk/gdkkeysyms-compat.h> #include <assert.h> #include "dw-hdfsee.h" @@ -531,7 +531,8 @@ static void redraw_window(DisplayWindow *dw) width, dw->height); draw_stuff(dw->surf, dw); - gdk_window_invalidate_rect(dw->drawingarea->window, NULL, FALSE); + gdk_window_invalidate_rect(gtk_widget_get_window(dw->drawingarea), + NULL, FALSE); } @@ -617,7 +618,7 @@ static gboolean displaywindow_expose(GtkWidget *da, GdkEventExpose *event, { cairo_t *cr; - cr = gdk_cairo_create(da->window); + cr = gdk_cairo_create(gtk_widget_get_window(da)); cairo_set_source_surface(cr, dw->surf, 0.0, 0.0); cairo_rectangle(cr, event->area.x, event->area.y, @@ -721,6 +722,7 @@ static gint displaywindow_set_binning(GtkWidget *widget, DisplayWindow *dw) GtkWidget *label; char tmp[64]; double minx, maxx, miny, maxy; + GtkWidget *dvbox; if ( dw->binning_dialog != NULL ) { return 0; @@ -741,10 +743,10 @@ static gint displaywindow_set_binning(GtkWidget *widget, DisplayWindow *dw) GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + dvbox = gtk_dialog_get_content_area((GTK_DIALOG(bd->window))); vbox = gtk_vbox_new(FALSE, 0); hbox = gtk_hbox_new(TRUE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(bd->window)->vbox), - GTK_WIDGET(hbox), FALSE, FALSE, 7); + gtk_box_pack_start(GTK_BOX(dvbox), GTK_WIDGET(hbox), FALSE, FALSE, 7); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), FALSE, FALSE, 5); table = gtk_table_new(3, 2, FALSE); @@ -850,6 +852,7 @@ static gint displaywindow_set_boostint(GtkWidget *widget, DisplayWindow *dw) GtkWidget *table; GtkWidget *label; char tmp[64]; + GtkWidget *dvbox; if ( dw->boostint_dialog != NULL ) { return 0; @@ -869,10 +872,10 @@ static gint displaywindow_set_boostint(GtkWidget *widget, DisplayWindow *dw) GTK_STOCK_CANCEL, GTK_RESPONSE_CLOSE, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + dvbox = gtk_dialog_get_content_area(GTK_DIALOG(bd->window)); vbox = gtk_vbox_new(FALSE, 0); hbox = gtk_hbox_new(TRUE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(bd->window)->vbox), - GTK_WIDGET(hbox), FALSE, FALSE, 7); + gtk_box_pack_start(GTK_BOX(dvbox), GTK_WIDGET(hbox), FALSE, FALSE, 7); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), FALSE, FALSE, 5); table = gtk_table_new(3, 2, FALSE); @@ -1043,6 +1046,7 @@ static gint displaywindow_set_newevent(GtkWidget *widget, DisplayWindow *dw) GtkWidget *hbox; GtkWidget *table; GtkWidget *label; + GtkWidget *dvbox; char tmp[1024]; if ( dw->event_dialog != NULL ) { @@ -1063,10 +1067,10 @@ static gint displaywindow_set_newevent(GtkWidget *widget, DisplayWindow *dw) GTK_STOCK_CANCEL, GTK_RESPONSE_CLOSE, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + dvbox = gtk_dialog_get_content_area(GTK_DIALOG(ed->window)); vbox = gtk_vbox_new(FALSE, 0); hbox = gtk_hbox_new(TRUE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(ed->window)->vbox), - GTK_WIDGET(hbox), FALSE, FALSE, 7); + gtk_box_pack_start(GTK_BOX(dvbox), GTK_WIDGET(hbox), FALSE, FALSE, 7); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), FALSE, FALSE, 5); table = gtk_table_new(3, 2, FALSE); @@ -1159,6 +1163,7 @@ static gint displaywindow_set_ringradius(GtkWidget *widget, DisplayWindow *dw) GtkWidget *hbox; GtkWidget *table; GtkWidget *label; + GtkWidget *dvbox; char tmp[64]; if ( dw->ringradius_dialog != NULL ) { @@ -1179,10 +1184,10 @@ static gint displaywindow_set_ringradius(GtkWidget *widget, DisplayWindow *dw) GTK_STOCK_CANCEL, GTK_RESPONSE_CLOSE, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + dvbox = gtk_dialog_get_content_area(GTK_DIALOG(rd->window)); vbox = gtk_vbox_new(FALSE, 0); hbox = gtk_hbox_new(TRUE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(rd->window)->vbox), - GTK_WIDGET(hbox), FALSE, FALSE, 7); + gtk_box_pack_start(GTK_BOX(dvbox), GTK_WIDGET(hbox), FALSE, FALSE, 7); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), FALSE, FALSE, 5); table = gtk_table_new(3, 2, FALSE); @@ -1414,7 +1419,7 @@ static gint displaywindow_about(GtkWidget *widget, DisplayWindow *dw) gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(dw->window)); - gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(window), "hdfsee"); + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(window), "hdfsee"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window), PACKAGE_VERSION); gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(window), "© 2012-2015 Deutsches Elektronen-Synchrotron DESY," @@ -1542,7 +1547,7 @@ static gint displaywindow_set_calibmode(GtkWidget *d, DisplayWindow *dw) w = gtk_ui_manager_get_widget(dw->ui, "/ui/displaywindow/tools/calibmode"); if ( dw->simple ) { - gtk_check_menu_item_set_state(GTK_CHECK_MENU_ITEM(w), 0); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), 0); return 0; } @@ -1550,8 +1555,7 @@ static gint displaywindow_set_calibmode(GtkWidget *d, DisplayWindow *dw) dw->rg_coll = dw->image->det->rigid_group_collections[0]; if (dw->rg_coll == NULL) { ERROR("Cannot find asuitable rigid group collection.\n"); - gtk_check_menu_item_set_state(GTK_CHECK_MENU_ITEM(w), - 0); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), 0); return 0; } } else { @@ -1560,8 +1564,7 @@ static gint displaywindow_set_calibmode(GtkWidget *d, DisplayWindow *dw) if (dw->rg_coll == NULL) { ERROR("Cannot find rigid group collection: %s\n", dw->rg_coll_name); - gtk_check_menu_item_set_state(GTK_CHECK_MENU_ITEM(w), - 0); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), 0); return 0; } } @@ -1807,18 +1810,18 @@ static gint displaywindow_save(GtkWidget *widget, DisplayWindow *dw) hbox = gtk_hbox_new(FALSE, 0); gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(d), hbox); - cb = gtk_combo_box_new_text(); + cb = gtk_combo_box_text_new(); gtk_box_pack_end(GTK_BOX(hbox), GTK_WIDGET(cb), TRUE, TRUE, 5); l = gtk_label_new("Save as type:"); gtk_box_pack_end(GTK_BOX(hbox), GTK_WIDGET(l), FALSE, FALSE, 5); - gtk_combo_box_append_text(GTK_COMBO_BOX(cb), + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cb), "PNG (colour)"); - gtk_combo_box_append_text(GTK_COMBO_BOX(cb), + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cb), "TIFF (floating point)"); - gtk_combo_box_append_text(GTK_COMBO_BOX(cb), + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cb), "TIFF (16 bit signed integer)"); - gtk_combo_box_append_text(GTK_COMBO_BOX(cb), + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cb), "ADSC (16 bit unsigned integer)"); gtk_combo_box_set_active(GTK_COMBO_BOX(cb), 0); @@ -1885,6 +1888,7 @@ static gint displaywindow_show_numbers(GtkWidget *widget, DisplayWindow *dw) GtkWidget *hbox2; GtkWidget *table; GtkWidget *label; + GtkWidget *dvbox; unsigned int x, y; if ( dw->numbers_window != NULL ) { @@ -1905,10 +1909,10 @@ static gint displaywindow_show_numbers(GtkWidget *widget, DisplayWindow *dw) GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL); + dvbox = gtk_dialog_get_content_area(GTK_DIALOG(nw->window)); vbox = gtk_vbox_new(FALSE, 0); hbox = gtk_hbox_new(TRUE, 0); - gtk_box_pack_start(GTK_BOX(GTK_DIALOG(nw->window)->vbox), - GTK_WIDGET(hbox), FALSE, FALSE, 7); + gtk_box_pack_start(GTK_BOX(dvbox), GTK_WIDGET(hbox), FALSE, FALSE, 7); gtk_box_pack_start(GTK_BOX(hbox), GTK_WIDGET(vbox), FALSE, FALSE, 5); table = gtk_table_new(17, 17, FALSE); @@ -2624,7 +2628,7 @@ static gint displaywindow_release(GtkWidget *widget, GdkEventButton *event, { if ( (event->type == GDK_BUTTON_RELEASE) && (event->button == 1) ) { - g_signal_handler_disconnect(GTK_OBJECT(dw->drawingarea), + g_signal_handler_disconnect(G_OBJECT(dw->drawingarea), dw->motion_callback); dw->motion_callback = 0; @@ -2699,7 +2703,7 @@ static gint displaywindow_press(GtkWidget *widget, GdkEventButton *event, if ( (event->type == GDK_BUTTON_PRESS) && (event->button == 1) ) { dw->motion_callback = g_signal_connect( - GTK_OBJECT(dw->drawingarea), + G_OBJECT(dw->drawingarea), "motion-notify-event", G_CALLBACK(displaywindow_motion), dw); @@ -3132,7 +3136,7 @@ DisplayWindow *displaywindow_open(char *filename, char *geom_filename, dw->drawingarea); gtk_box_pack_start(GTK_BOX(vbox), dw->scrollarea, TRUE, TRUE, 0); - g_signal_connect(GTK_OBJECT(dw->drawingarea), "expose-event", + g_signal_connect(G_OBJECT(dw->drawingarea), "expose-event", G_CALLBACK(displaywindow_expose), dw); gtk_window_set_resizable(GTK_WINDOW(dw->window), TRUE); @@ -3162,11 +3166,11 @@ DisplayWindow *displaywindow_open(char *filename, char *geom_filename, gtk_widget_grab_focus(dw->drawingarea); - g_signal_connect(GTK_OBJECT(dw->drawingarea), "button-press-event", + g_signal_connect(G_OBJECT(dw->drawingarea), "button-press-event", G_CALLBACK(displaywindow_press), dw); - g_signal_connect(GTK_OBJECT(dw->drawingarea), "button-release-event", + g_signal_connect(G_OBJECT(dw->drawingarea), "button-release-event", G_CALLBACK(displaywindow_release), dw); - g_signal_connect(GTK_OBJECT(dw->drawingarea), "key-press-event", + g_signal_connect(G_OBJECT(dw->drawingarea), "key-press-event", G_CALLBACK(displaywindow_keypress), dw); if ( dw->simple ) { diff --git a/src/hdfsee.c b/src/hdfsee.c index 954eb762..754dea1c 100644 --- a/src/hdfsee.c +++ b/src/hdfsee.c @@ -109,7 +109,7 @@ void hdfsee_window_closed(DisplayWindow *dw) main_n_windows--; - if ( main_n_windows == 0 ) gtk_exit(0); + if ( main_n_windows == 0 ) gtk_main_quit(); } |