X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=gtk-gui.c;h=dce537232fdbd9ba81ca5dfb69b332f28d269228;hb=549ad65bcb39e95c4deae0b77eb2476efa53df43;hp=b72aeca2b5f8bb2872fadf5872ed559a4437fb54;hpb=19356de24620c75c26152c5f19947c8a1e5215cb;p=ext%2Fsubsurface.git diff --git a/gtk-gui.c b/gtk-gui.c index b72aeca..dce5372 100644 --- a/gtk-gui.c +++ b/gtk-gui.c @@ -19,6 +19,7 @@ GtkWidget *main_window; GtkWidget *main_vbox; GtkWidget *error_info_bar; GtkWidget *error_label; +GtkWidget *vpane, *hpane; int error_count; #define DIVELIST_DEFAULT_FONT "Sans 8" @@ -201,17 +202,25 @@ static void quit(GtkWidget *w, gpointer data) } GtkTreeViewColumn *tree_view_column(GtkWidget *tree_view, int index, const char *title, - data_func_t data_func, PangoAlignment align, gboolean visible) + data_func_t data_func, unsigned int flags) { GtkCellRenderer *renderer; GtkTreeViewColumn *col; double xalign = 0.0; /* left as default */ + PangoAlignment align; + gboolean visible; + + align = (flags & ALIGN_LEFT) ? PANGO_ALIGN_LEFT : + (flags & ALIGN_RIGHT) ? PANGO_ALIGN_RIGHT : + PANGO_ALIGN_CENTER; + visible = !(flags & INVISIBLE); renderer = gtk_cell_renderer_text_new(); col = gtk_tree_view_column_new(); gtk_tree_view_column_set_title(col, title); - gtk_tree_view_column_set_sort_column_id(col, index); + if (!(flags & UNSORTABLE)) + gtk_tree_view_column_set_sort_column_id(col, index); gtk_tree_view_column_set_resizable(col, TRUE); gtk_tree_view_column_pack_start(col, renderer, TRUE); if (data_func) @@ -538,9 +547,34 @@ static void about_dialog(GtkWidget *w, gpointer data) NULL); } +static void view_list(GtkWidget *w, gpointer data) +{ + gtk_paned_set_position(GTK_PANED(vpane), 0); +} + +static void view_profile(GtkWidget *w, gpointer data) +{ + gtk_paned_set_position(GTK_PANED(hpane), 0); + gtk_paned_set_position(GTK_PANED(vpane), 65535); +} + +static void view_info(GtkWidget *w, gpointer data) +{ + gtk_paned_set_position(GTK_PANED(vpane), 65535); + gtk_paned_set_position(GTK_PANED(hpane), 65535); +} + +/* Ooh. I don't know how to get the half-way size. So I'm just using random numbers */ +static void view_three(GtkWidget *w, gpointer data) +{ + gtk_paned_set_position(GTK_PANED(hpane), 400); + gtk_paned_set_position(GTK_PANED(vpane), 200); +} + static GtkActionEntry menu_items[] = { { "FileMenuAction", GTK_STOCK_FILE, "File", NULL, NULL, NULL}, { "LogMenuAction", GTK_STOCK_FILE, "Log", NULL, NULL, NULL}, + { "ViewMenuAction", GTK_STOCK_FILE, "View", NULL, NULL, NULL}, { "FilterMenuAction", GTK_STOCK_FILE, "Filter", NULL, NULL, NULL}, { "HelpMenuAction", GTK_STOCK_HELP, "Help", NULL, NULL, NULL}, { "OpenFile", GTK_STOCK_OPEN, NULL, "O", NULL, G_CALLBACK(file_open) }, @@ -552,6 +586,10 @@ static GtkActionEntry menu_items[] = { { "SelectEvents", NULL, "SelectEvents", NULL, NULL, G_CALLBACK(selectevents_dialog) }, { "Quit", GTK_STOCK_QUIT, NULL, "Q", NULL, G_CALLBACK(quit) }, { "About", GTK_STOCK_ABOUT, NULL, NULL, NULL, G_CALLBACK(about_dialog) }, + { "ViewList", NULL, "List", "1", NULL, G_CALLBACK(view_list) }, + { "ViewProfile", NULL, "Profile", "2", NULL, G_CALLBACK(view_profile) }, + { "ViewInfo", NULL, "Info", "3", NULL, G_CALLBACK(view_info) }, + { "ViewThree", NULL, "Three", "4", NULL, G_CALLBACK(view_three) }, }; static gint nmenu_items = sizeof (menu_items) / sizeof (menu_items[0]); @@ -571,6 +609,12 @@ static const gchar* ui_string = " \ \ \ \ + \ + \ + \ + \ + \ + \ \ \ \ @@ -613,7 +657,6 @@ void init_ui(int *argcp, char ***argvp) GtkWidget *stats; GtkWidget *menubar; GtkWidget *vbox; - GtkWidget *hpane, *vpane; GdkScreen *screen; GtkIconTheme *icon_theme=NULL; GtkSettings *settings; @@ -778,7 +821,7 @@ static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer gc.cr = gdk_cairo_create(widget->window); g_object_set(widget, "has-tooltip", TRUE, NULL); g_signal_connect(widget, "query-tooltip", G_CALLBACK(profile_tooltip), &drawing_area); - set_source_rgb(&gc, 0, 0, 0); + init_profile_background(&gc); cairo_paint(gc.cr); if (dive) {