1 /* 2 * Copyright (c) 2008-2009 Christian Hammond 3 * Copyright (c) 2008-2009 David Trowbridge 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included 13 * in all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 * THE SOFTWARE. 22 */ 23 #ifndef _GTK_INSPECTOR_WINDOW_H_ 24 #define _GTK_INSPECTOR_WINDOW_H_ 25 26 27 #include <gtk/gtkwindow.h> 28 29 #include "inspectoroverlay.h" 30 31 #define GTK_TYPE_INSPECTOR_WINDOW (gtk_inspector_window_get_type()) 32 #define GTK_INSPECTOR_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_INSPECTOR_WINDOW, GtkInspectorWindow)) 33 #define GTK_INSPECTOR_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_INSPECTOR_WINDOW, GtkInspectorWindowClass)) 34 #define GTK_INSPECTOR_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_INSPECTOR_WINDOW)) 35 #define GTK_INSPECTOR_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_INSPECTOR_WINDOW)) 36 #define GTK_INSPECTOR_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_INSPECTOR_WINDOW, GtkInspectorWindowClass)) 37 38 39 #define TREE_TEXT_SCALE 0.8 40 #define TREE_CHECKBOX_SIZE (int)(0.8 * 13) 41 42 typedef struct 43 { 44 GtkWindow parent; 45 46 GtkWidget *top_stack; 47 GtkWidget *object_stack; 48 GtkWidget *button_stack; 49 GtkWidget *object_tree; 50 GtkWidget *object_id; 51 GtkWidget *object_details; 52 GtkWidget *object_buttons; 53 GtkWidget *object_details_button; 54 GtkWidget *select_object; 55 GtkWidget *object_start_stack; 56 GtkWidget *object_center_stack; 57 GtkWidget *object_title; 58 GtkWidget *prop_list; 59 GtkWidget *layout_prop_list; 60 GtkWidget *selector; 61 GtkWidget *signals_list; 62 GtkWidget *classes_list; 63 GtkWidget *widget_css_node_tree; 64 GtkWidget *widget_recorder; 65 GtkWidget *object_hierarchy; 66 GtkWidget *size_groups; 67 GtkWidget *tree_data; 68 GtkWidget *list_data; 69 GtkWidget *actions; 70 GtkWidget *shortcuts; 71 GtkWidget *menu; 72 GtkWidget *misc_info; 73 GtkWidget *controllers; 74 GtkWidget *magnifier; 75 GtkWidget *a11y; 76 GtkWidget *sidebar_revealer; 77 GtkWidget *css_editor; 78 GtkWidget *visual; 79 GtkWidget *general; 80 GtkWidget *logs; 81 82 GtkWidget *go_up_button; 83 GtkWidget *go_down_button; 84 GtkWidget *go_previous_button; 85 GtkWidget *list_position_label; 86 GtkWidget *go_next_button; 87 88 GList *extra_pages; 89 90 GdkSeat *grab_seat; 91 92 GtkInspectorOverlay *flash_overlay; 93 int flash_count; 94 int flash_cnx; 95 96 GArray *objects; 97 98 GList *overlays; 99 100 GdkDisplay *inspected_display; 101 102 } GtkInspectorWindow; 103 104 typedef struct 105 { 106 GtkWindowClass parent; 107 } GtkInspectorWindowClass; 108 109 110 G_BEGIN_DECLS 111 112 GType gtk_inspector_window_get_type (void); 113 GtkWidget *gtk_inspector_window_get (GdkDisplay *display); 114 115 void gtk_inspector_flash_widget (GtkInspectorWindow *iw, 116 GtkWidget *widget); 117 118 void gtk_inspector_on_inspect (GtkWidget *widget, 119 GtkInspectorWindow *iw); 120 121 void gtk_inspector_window_add_overlay (GtkInspectorWindow *iw, 122 GtkInspectorOverlay *overlay); 123 void gtk_inspector_window_remove_overlay (GtkInspectorWindow *iw, 124 GtkInspectorOverlay *overlay); 125 126 void gtk_inspector_window_select_widget_under_pointer (GtkInspectorWindow *iw); 127 GdkDisplay * gtk_inspector_window_get_inspected_display (GtkInspectorWindow *iw); 128 129 typedef enum 130 { 131 CHILD_KIND_WIDGET, 132 CHILD_KIND_CONTROLLER, 133 CHILD_KIND_PROPERTY, 134 CHILD_KIND_LISTITEM, 135 CHILD_KIND_OTHER 136 } ChildKind; 137 138 void gtk_inspector_window_push_object (GtkInspectorWindow *iw, 139 GObject *object, 140 ChildKind kind, 141 guint position); 142 void gtk_inspector_window_pop_object (GtkInspectorWindow *iw); 143 void gtk_inspector_window_set_object (GtkInspectorWindow *iw, 144 GObject *object, 145 ChildKind kind, 146 guint position); 147 void gtk_inspector_window_replace_object (GtkInspectorWindow *iw, 148 GObject *object, 149 ChildKind kind, 150 guint position); 151 152 gboolean gtk_inspector_is_recording (GtkWidget *widget); 153 GskRenderNode * gtk_inspector_prepare_render (GtkWidget *widget, 154 GskRenderer *renderer, 155 GdkSurface *surface, 156 const cairo_region_t *region, 157 GskRenderNode *root, 158 GskRenderNode *widget_node); 159 gboolean gtk_inspector_handle_event (GdkEvent *event); 160 161 G_END_DECLS 162 163 164 #endif // _GTK_INSPECTOR_WINDOW_H_ 165 166 // vim: set et sw=2 ts=2: 167