From: ellson Date: Tue, 27 Jun 2006 17:43:59 +0000 (+0000) Subject: move xlib and gtk plugins into the main tree from graphviz-cairo X-Git-Tag: LAST_LIBGRAPH~32^2~6232 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=97a972e557467f8d711e3b6f5f66d742a0c64bdd;p=graphviz move xlib and gtk plugins into the main tree from graphviz-cairo --- diff --git a/plugin/gtk/gvdevice_gtk.c b/plugin/gtk/gvdevice_gtk.c new file mode 100644 index 000000000..7e0b880e2 --- /dev/null +++ b/plugin/gtk/gvdevice_gtk.c @@ -0,0 +1,128 @@ +/* $Id$ $Revision$ */ +/* vim:set shiftwidth=4 ts=8: */ + +/********************************************************** +* This software is part of the graphviz package * +* http://www.graphviz.org/ * +* * +* Copyright (c) 1994-2004 AT&T Corp. * +* and is licensed under the * +* Common Public License, Version 1.0 * +* by AT&T Corp. * +* * +* Information and Software Systems Research * +* AT&T Research, Florham Park NJ * +**********************************************************/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include + +#include "interface.h" +#include "support.h" + +// note that we do not own the newly entered string - must copy +void +attr_value_edited_cb(GtkCellRendererText *renderer, gchar *pathStr, gchar *newText, gpointer data) +{ + GtkTreeModel *model = GTK_TREE_MODEL(data); +// GVJ_t *job = (GVJ_t *)g_object_get_data(G_OBJECT(model), "job"); + GtkTreePath *path; + GtkTreeIter iter; + gchar *old_attr; + gint row; + + path = gtk_tree_path_new_from_string(pathStr); + row = gtk_tree_path_get_indices(path)[0]; + + // need to free old attr value in job and allocate new attr value - how? + + // free old attr value in model + gtk_tree_model_get_iter(model, &iter, path); + gtk_tree_model_get(model, &iter, 1, &old_attr, -1); + g_free(old_attr); + + // set new attr value in model + gtk_list_store_set(GTK_LIST_STORE(model), &iter, 1, g_strdup(newText), -1); + + gtk_tree_path_free(path); +} + +static void finalize_gtk(GVJ_t *firstjob) +{ + GVJ_t *job; + GtkWidget *window1, *drawingarea1, *drawingarea2, *treeview2; + GtkListStore *attr_store; + GtkCellRenderer *value_renderer; + GdkScreen *scr; + +#if 0 +#ifdef ENABLE_NLS + bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); +#endif +#endif + + gtk_set_locale (); +// gtk_init (&argc, &argv); + gtk_init (NULL, NULL); + +// add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); + + for (job = firstjob; job; job = job->next_active) { + window1 = create_window1 (); + + g_object_set_data(G_OBJECT(window1), "job", (gpointer) job); + + drawingarea1 = lookup_widget (window1, "drawingarea1"); /* main graph view */ + g_object_set_data(G_OBJECT(drawingarea1), "job", (gpointer) job); + + drawingarea2 = lookup_widget (window1, "drawingarea2"); /* keyholeview */ + g_object_set_data(G_OBJECT(drawingarea2), "job", (gpointer) job); + + treeview2 = lookup_widget (window1, "treeview2"); /* attribute/value view */ + g_object_set_data(G_OBJECT(treeview2), "job", (gpointer) job); + + attr_store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); + + gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview2), -1, "Name", + gtk_cell_renderer_text_new(), "text", 0, NULL); + + value_renderer = gtk_cell_renderer_text_new(); + g_signal_connect(G_OBJECT(value_renderer), "edited", G_CALLBACK(attr_value_edited_cb), attr_store); + g_object_set(G_OBJECT(value_renderer), "editable", TRUE, "wrap-mode", PANGO_WRAP_WORD, + "wrap-width", 100, NULL); + gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview2), -1, "Value", value_renderer, + "text", 1, NULL); + + gtk_tree_view_set_model(GTK_TREE_VIEW(treeview2), GTK_TREE_MODEL(attr_store)); + g_object_set_data(G_OBJECT(drawingarea1), "attr_store", attr_store); + + gtk_widget_show (window1); + + scr = gdk_drawable_get_screen (drawingarea1->window); + job->dpi.x = gdk_screen_get_width(scr) * 25.4 / gdk_screen_get_width_mm(scr); /* pixels_per_inch */ + job->dpi.y = gdk_screen_get_height(scr) * 25.4 / gdk_screen_get_height_mm(scr); + + /* adjust width/height for real dpi */ + job->width *= job->dpi.x / POINTS_PER_INCH; + job->height *= job->dpi.y / POINTS_PER_INCH; + } + + gtk_main(); +} + +static gvdevice_engine_t device_engine_gtk = { + finalize_gtk, +}; + +gvplugin_installed_t gvdevice_types_gtk[] = { + {0, "gtk", 0, &device_engine_gtk, NULL}, + {0, NULL, 0, NULL, NULL} +}; + diff --git a/plugin/gtk/gvplugin_gtk.c b/plugin/gtk/gvplugin_gtk.c new file mode 100644 index 000000000..f8c075b63 --- /dev/null +++ b/plugin/gtk/gvplugin_gtk.c @@ -0,0 +1,26 @@ +/* $Id$ $Revision$ */ +/* vim:set shiftwidth=4 ts=8: */ + +/********************************************************** +* This software is part of the graphviz package * +* http://www.graphviz.org/ * +* * +* Copyright (c) 1994-2004 AT&T Corp. * +* and is licensed under the * +* Common Public License, Version 1.0 * +* by AT&T Corp. * +* * +* Information and Software Systems Research * +* AT&T Research, Florham Park NJ * +**********************************************************/ + +#include + +extern gvplugin_installed_t gvdevice_types_gtk; + +static gvplugin_api_t apis[] = { + {API_device, &gvdevice_types_gtk}, + {(api_t)0, 0}, +}; + +gvplugin_library_t gvplugin_gtk_LTX_library = { "gtk", apis }; diff --git a/plugin/gtk/interface.c b/plugin/gtk/interface.c new file mode 100644 index 000000000..d361ac065 --- /dev/null +++ b/plugin/gtk/interface.c @@ -0,0 +1,343 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include + +#include +#include + +#include "callbacks.h" +#include "interface.h" +#include "support.h" + +#define GLADE_HOOKUP_OBJECT(component,widget,name) \ + g_object_set_data_full (G_OBJECT (component), name, \ + gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref) + +#define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \ + g_object_set_data (G_OBJECT (component), name, widget) + +GtkWidget* +create_window1 (void) +{ + GtkWidget *window1; + GtkWidget *vbox1; + GtkWidget *menubar1; + GtkWidget *menuitem4; + GtkWidget *menu4; + GtkWidget *new1; + GtkWidget *open1; + GtkWidget *save1; + GtkWidget *save_as1; + GtkWidget *separatormenuitem1; + GtkWidget *quit1; + GtkWidget *menuitem5; + GtkWidget *menu5; + GtkWidget *cut1; + GtkWidget *copy1; + GtkWidget *paste1; + GtkWidget *delete1; + GtkWidget *menuitem6; + GtkWidget *menu6; + GtkWidget *menuitem7; + GtkWidget *menu7; + GtkWidget *about1; + GtkWidget *hpaned1; + GtkWidget *vbox2; + GtkWidget *hbox2; + GtkWidget *drawingarea2; + GtkWidget *scrolledwindow3; + GtkWidget *treeview1; + GtkWidget *toolbar1; + GtkIconSize tmp_toolbar_icon_size; + GtkWidget *toolitem1; + GtkWidget *label1; + GtkWidget *toolitem2; + GtkWidget *label2; + GtkWidget *toolitem3; + GtkWidget *button1; + GtkWidget *scrolledwindow4; + GtkWidget *treeview2; + GtkWidget *drawingarea1; + GtkAccelGroup *accel_group; + + accel_group = gtk_accel_group_new (); + + window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_title (GTK_WINDOW (window1), "DotEdit"); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox1); + gtk_container_add (GTK_CONTAINER (window1), vbox1); + + menubar1 = gtk_menu_bar_new (); + gtk_widget_show (menubar1); + gtk_box_pack_start (GTK_BOX (vbox1), menubar1, FALSE, FALSE, 0); + + menuitem4 = gtk_menu_item_new_with_mnemonic (_("_File")); + gtk_widget_show (menuitem4); + gtk_container_add (GTK_CONTAINER (menubar1), menuitem4); + + menu4 = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menu4); + + new1 = gtk_image_menu_item_new_from_stock ("gtk-new", accel_group); + gtk_widget_show (new1); + gtk_container_add (GTK_CONTAINER (menu4), new1); + + open1 = gtk_image_menu_item_new_from_stock ("gtk-open", accel_group); + gtk_widget_show (open1); + gtk_container_add (GTK_CONTAINER (menu4), open1); + + save1 = gtk_image_menu_item_new_from_stock ("gtk-save", accel_group); + gtk_widget_show (save1); + gtk_container_add (GTK_CONTAINER (menu4), save1); + + save_as1 = gtk_image_menu_item_new_from_stock ("gtk-save-as", accel_group); + gtk_widget_show (save_as1); + gtk_container_add (GTK_CONTAINER (menu4), save_as1); + + separatormenuitem1 = gtk_separator_menu_item_new (); + gtk_widget_show (separatormenuitem1); + gtk_container_add (GTK_CONTAINER (menu4), separatormenuitem1); + gtk_widget_set_sensitive (separatormenuitem1, FALSE); + + quit1 = gtk_image_menu_item_new_from_stock ("gtk-quit", accel_group); + gtk_widget_show (quit1); + gtk_container_add (GTK_CONTAINER (menu4), quit1); + + menuitem5 = gtk_menu_item_new_with_mnemonic (_("_Edit")); + gtk_widget_show (menuitem5); + gtk_container_add (GTK_CONTAINER (menubar1), menuitem5); + + menu5 = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem5), menu5); + + cut1 = gtk_image_menu_item_new_from_stock ("gtk-cut", accel_group); + gtk_widget_show (cut1); + gtk_container_add (GTK_CONTAINER (menu5), cut1); + + copy1 = gtk_image_menu_item_new_from_stock ("gtk-copy", accel_group); + gtk_widget_show (copy1); + gtk_container_add (GTK_CONTAINER (menu5), copy1); + + paste1 = gtk_image_menu_item_new_from_stock ("gtk-paste", accel_group); + gtk_widget_show (paste1); + gtk_container_add (GTK_CONTAINER (menu5), paste1); + + delete1 = gtk_image_menu_item_new_from_stock ("gtk-delete", accel_group); + gtk_widget_show (delete1); + gtk_container_add (GTK_CONTAINER (menu5), delete1); + + menuitem6 = gtk_menu_item_new_with_mnemonic (_("_View")); + gtk_widget_show (menuitem6); + gtk_container_add (GTK_CONTAINER (menubar1), menuitem6); + + menu6 = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem6), menu6); + + menuitem7 = gtk_menu_item_new_with_mnemonic (_("_Help")); + gtk_widget_show (menuitem7); + gtk_container_add (GTK_CONTAINER (menubar1), menuitem7); + + menu7 = gtk_menu_new (); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem7), menu7); + + about1 = gtk_menu_item_new_with_mnemonic (_("_About")); + gtk_widget_show (about1); + gtk_container_add (GTK_CONTAINER (menu7), about1); + + hpaned1 = gtk_hpaned_new (); + gtk_widget_show (hpaned1); + gtk_box_pack_start (GTK_BOX (vbox1), hpaned1, TRUE, TRUE, 0); + gtk_paned_set_position (GTK_PANED (hpaned1), 0); + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_show (vbox2); + gtk_paned_pack1 (GTK_PANED (hpaned1), vbox2, TRUE, TRUE); + + hbox2 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox2); + gtk_box_pack_start (GTK_BOX (vbox2), hbox2, FALSE, FALSE, 0); + + drawingarea2 = gtk_drawing_area_new (); + gtk_widget_show (drawingarea2); + gtk_box_pack_start (GTK_BOX (hbox2), drawingarea2, FALSE, FALSE, 1); + gtk_widget_set_size_request (drawingarea2, 100, 100); + + scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow3); + gtk_box_pack_end (GTK_BOX (hbox2), scrolledwindow3, TRUE, TRUE, 1); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow3), GTK_SHADOW_IN); + + treeview1 = gtk_tree_view_new (); + gtk_widget_show (treeview1); + gtk_container_add (GTK_CONTAINER (scrolledwindow3), treeview1); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview1), FALSE); + + toolbar1 = gtk_toolbar_new (); + gtk_widget_show (toolbar1); + gtk_box_pack_start (GTK_BOX (vbox2), toolbar1, FALSE, FALSE, 0); + gtk_toolbar_set_style (GTK_TOOLBAR (toolbar1), GTK_TOOLBAR_ICONS); + tmp_toolbar_icon_size = gtk_toolbar_get_icon_size (GTK_TOOLBAR (toolbar1)); + + toolitem1 = (GtkWidget*) gtk_tool_item_new (); + gtk_widget_show (toolitem1); + gtk_container_add (GTK_CONTAINER (toolbar1), toolitem1); + + label1 = gtk_label_new (_("type - name")); + gtk_widget_show (label1); + gtk_container_add (GTK_CONTAINER (toolitem1), label1); + + toolitem2 = (GtkWidget*) gtk_tool_item_new (); + gtk_widget_show (toolitem2); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (toolitem2), TRUE); + gtk_container_add (GTK_CONTAINER (toolbar1), toolitem2); + + label2 = gtk_label_new (""); + gtk_widget_show (label2); + gtk_container_add (GTK_CONTAINER (toolitem2), label2); + + toolitem3 = (GtkWidget*) gtk_tool_item_new (); + gtk_widget_show (toolitem3); + gtk_container_add (GTK_CONTAINER (toolbar1), toolitem3); + + button1 = gtk_button_new_with_mnemonic (_("Delete")); + gtk_widget_show (button1); + gtk_container_add (GTK_CONTAINER (toolitem3), button1); + gtk_button_set_focus_on_click (GTK_BUTTON (button1), FALSE); + + scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_show (scrolledwindow4); + gtk_box_pack_start (GTK_BOX (vbox2), scrolledwindow4, TRUE, TRUE, 1); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolledwindow4), GTK_SHADOW_IN); + + treeview2 = gtk_tree_view_new (); + gtk_widget_show (treeview2); + gtk_container_add (GTK_CONTAINER (scrolledwindow4), treeview2); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview2), FALSE); + gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview2), TRUE); + + drawingarea1 = gtk_drawing_area_new (); + gtk_widget_show (drawingarea1); + gtk_paned_pack2 (GTK_PANED (hpaned1), drawingarea1, TRUE, TRUE); + gtk_widget_set_size_request (drawingarea1, 300, 300); + gtk_widget_set_events (drawingarea1, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); + + g_signal_connect ((gpointer) window1, "delete_event", + G_CALLBACK (on_window1_delete_event), + NULL); + g_signal_connect_swapped ((gpointer) new1, "activate", + G_CALLBACK (on_new1_activate), + GTK_OBJECT (window1)); + g_signal_connect_swapped ((gpointer) open1, "activate", + G_CALLBACK (on_open1_activate), + GTK_OBJECT (window1)); + g_signal_connect_swapped ((gpointer) save1, "activate", + G_CALLBACK (on_save1_activate), + GTK_OBJECT (window1)); + g_signal_connect_swapped ((gpointer) save_as1, "activate", + G_CALLBACK (on_save_as1_activate), + GTK_OBJECT (window1)); + g_signal_connect ((gpointer) quit1, "activate", + G_CALLBACK (on_quit1_activate), + NULL); + g_signal_connect ((gpointer) cut1, "activate", + G_CALLBACK (on_cut1_activate), + NULL); + g_signal_connect ((gpointer) copy1, "activate", + G_CALLBACK (on_copy1_activate), + NULL); + g_signal_connect ((gpointer) paste1, "activate", + G_CALLBACK (on_paste1_activate), + NULL); + g_signal_connect ((gpointer) delete1, "activate", + G_CALLBACK (on_delete1_activate), + NULL); + g_signal_connect ((gpointer) about1, "activate", + G_CALLBACK (on_about1_activate), + NULL); + g_signal_connect ((gpointer) drawingarea2, "expose_event", + G_CALLBACK (on_drawingarea2_expose_event), + NULL); + g_signal_connect ((gpointer) drawingarea2, "motion_notify_event", + G_CALLBACK (on_drawingarea2_motion_notify_event), + NULL); + g_signal_connect ((gpointer) button1, "button_press_event", + G_CALLBACK (on_button1_button_press_event), + NULL); + g_signal_connect ((gpointer) drawingarea1, "expose_event", + G_CALLBACK (on_drawingarea1_expose_event), + NULL); + g_signal_connect ((gpointer) drawingarea1, "motion_notify_event", + G_CALLBACK (on_drawingarea1_motion_notify_event), + NULL); + g_signal_connect ((gpointer) drawingarea1, "configure_event", + G_CALLBACK (on_drawingarea1_configure_event), + NULL); + g_signal_connect ((gpointer) drawingarea1, "button_press_event", + G_CALLBACK (on_drawingarea1_button_press_event), + NULL); + g_signal_connect ((gpointer) drawingarea1, "button_release_event", + G_CALLBACK (on_drawingarea1_button_release_event), + NULL); + g_signal_connect ((gpointer) drawingarea1, "scroll_event", + G_CALLBACK (on_drawingarea1_scroll_event), + NULL); + + /* Store pointers to all widgets, for use by lookup_widget(). */ + GLADE_HOOKUP_OBJECT_NO_REF (window1, window1, "window1"); + GLADE_HOOKUP_OBJECT (window1, vbox1, "vbox1"); + GLADE_HOOKUP_OBJECT (window1, menubar1, "menubar1"); + GLADE_HOOKUP_OBJECT (window1, menuitem4, "menuitem4"); + GLADE_HOOKUP_OBJECT (window1, menu4, "menu4"); + GLADE_HOOKUP_OBJECT (window1, new1, "new1"); + GLADE_HOOKUP_OBJECT (window1, open1, "open1"); + GLADE_HOOKUP_OBJECT (window1, save1, "save1"); + GLADE_HOOKUP_OBJECT (window1, save_as1, "save_as1"); + GLADE_HOOKUP_OBJECT (window1, separatormenuitem1, "separatormenuitem1"); + GLADE_HOOKUP_OBJECT (window1, quit1, "quit1"); + GLADE_HOOKUP_OBJECT (window1, menuitem5, "menuitem5"); + GLADE_HOOKUP_OBJECT (window1, menu5, "menu5"); + GLADE_HOOKUP_OBJECT (window1, cut1, "cut1"); + GLADE_HOOKUP_OBJECT (window1, copy1, "copy1"); + GLADE_HOOKUP_OBJECT (window1, paste1, "paste1"); + GLADE_HOOKUP_OBJECT (window1, delete1, "delete1"); + GLADE_HOOKUP_OBJECT (window1, menuitem6, "menuitem6"); + GLADE_HOOKUP_OBJECT (window1, menu6, "menu6"); + GLADE_HOOKUP_OBJECT (window1, menuitem7, "menuitem7"); + GLADE_HOOKUP_OBJECT (window1, menu7, "menu7"); + GLADE_HOOKUP_OBJECT (window1, about1, "about1"); + GLADE_HOOKUP_OBJECT (window1, hpaned1, "hpaned1"); + GLADE_HOOKUP_OBJECT (window1, vbox2, "vbox2"); + GLADE_HOOKUP_OBJECT (window1, hbox2, "hbox2"); + GLADE_HOOKUP_OBJECT (window1, drawingarea2, "drawingarea2"); + GLADE_HOOKUP_OBJECT (window1, scrolledwindow3, "scrolledwindow3"); + GLADE_HOOKUP_OBJECT (window1, treeview1, "treeview1"); + GLADE_HOOKUP_OBJECT (window1, toolbar1, "toolbar1"); + GLADE_HOOKUP_OBJECT (window1, toolitem1, "toolitem1"); + GLADE_HOOKUP_OBJECT (window1, label1, "label1"); + GLADE_HOOKUP_OBJECT (window1, toolitem2, "toolitem2"); + GLADE_HOOKUP_OBJECT (window1, label2, "label2"); + GLADE_HOOKUP_OBJECT (window1, toolitem3, "toolitem3"); + GLADE_HOOKUP_OBJECT (window1, button1, "button1"); + GLADE_HOOKUP_OBJECT (window1, scrolledwindow4, "scrolledwindow4"); + GLADE_HOOKUP_OBJECT (window1, treeview2, "treeview2"); + GLADE_HOOKUP_OBJECT (window1, drawingarea1, "drawingarea1"); + + gtk_window_add_accel_group (GTK_WINDOW (window1), accel_group); + + return window1; +} +