Revision: 817 http://svn.sourceforge.net/geany/?rev=817&view=rev Author: ntrel Date: 2006-09-15 07:25:42 -0700 (Fri, 15 Sep 2006)
Log Message: ----------- Add ui_frame_new(). Run set includes build dialogs modally, keeping the same filetype. Updated set includes & arguments dialog layout.
Modified Paths: -------------- trunk/ChangeLog trunk/src/callbacks.c trunk/src/dialogs.c trunk/src/ui_utils.c trunk/src/ui_utils.h
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2006-09-13 07:43:47 UTC (rev 816) +++ trunk/ChangeLog 2006-09-15 14:25:42 UTC (rev 817) @@ -1,3 +1,11 @@ +2006-09-15 Nick Treleaven nick.treleaven@btinternet.com + + * src/ui_utils.h, src/ui_utils.c, src/callbacks.c, src/dialogs.c: + Add ui_frame_new(). + Run set includes build dialogs modally, keeping the same filetype. + Updated set includes & arguments dialog layout & text. + + 2006-09-12 Enrico Tröger enrico.troeger@uvena.de
* geany.glade, src/interface.c, src/callbacks.c, src/keybindings.c:
Modified: trunk/src/callbacks.c =================================================================== --- trunk/src/callbacks.c 2006-09-13 07:43:47 UTC (rev 816) +++ trunk/src/callbacks.c 2006-09-15 14:25:42 UTC (rev 817) @@ -2252,10 +2252,11 @@ gint response, gpointer user_data) { + filetype *ft = user_data; + g_return_if_fail(ft != NULL); + if (response == GTK_RESPONSE_ACCEPT) { - filetype *ft = doc_list[GPOINTER_TO_INT(user_data)].file_type; - if (ft->menu_items->can_compile) { if (ft->programs->compiler) g_free(ft->programs->compiler); @@ -2284,10 +2285,11 @@ gint response, gpointer user_data) { + filetype *ft = user_data; + g_return_if_fail(ft != NULL); + if (response == GTK_RESPONSE_ACCEPT) { - filetype *ft = doc_list[GPOINTER_TO_INT(user_data)].file_type; - if (ft->programs->compiler) g_free(ft->programs->compiler); ft->programs->compiler = g_strdup(gtk_entry_get_text( GTK_ENTRY(lookup_widget(GTK_WIDGET(dialog), "tex_entry1"))));
Modified: trunk/src/dialogs.c =================================================================== --- trunk/src/dialogs.c 2006-09-13 07:43:47 UTC (rev 816) +++ trunk/src/dialogs.c 2006-09-15 14:25:42 UTC (rev 817) @@ -43,6 +43,7 @@ #include "sciwrappers.h" #include "support.h" #include "utils.h" +#include "ui_utils.h" #include "keybindings.h"
@@ -585,8 +586,11 @@ { GtkWidget *dialog, *label, *entries[4]; gint idx = document_get_cur_idx(); - filetype *ft = doc_list[idx].file_type; + filetype *ft = NULL;
+ if (DOC_IDX_VALID(idx)) ft = doc_list[idx].file_type; + g_return_if_fail(ft != NULL); + dialog = gtk_dialog_new_with_buttons(_("Set Arguments"), GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, @@ -682,48 +686,65 @@ }
g_signal_connect((gpointer) dialog, "response", - G_CALLBACK(on_includes_arguments_tex_dialog_response), GINT_TO_POINTER(idx)); + G_CALLBACK(on_includes_arguments_tex_dialog_response), ft);
gtk_widget_show_all(dialog); + gtk_dialog_run(GTK_DIALOG(dialog)); // run modally to prevent user changing idx filetype }
void dialogs_show_includes_arguments_gen() { GtkWidget *dialog, *label, *entries[3]; + GtkWidget *ft_table; + gint row; gint idx = document_get_cur_idx(); - filetype *ft = doc_list[idx].file_type; - GtkTooltips *tooltips; + filetype *ft = NULL; + + if (DOC_IDX_VALID(idx)) ft = doc_list[idx].file_type; + g_return_if_fail(ft != NULL); + dialog = gtk_dialog_new_with_buttons(_("Set Includes and Arguments"), GTK_WINDOW(app->window), GTK_DIALOG_DESTROY_WITH_PARENT, - GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + gtk_container_set_border_width(GTK_CONTAINER(dialog), 6); + gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), 6);
- label = gtk_label_new(_("Sets the includes and library paths for the compiler and the program arguments for execution\n")); - gtk_misc_set_padding(GTK_MISC(label), 0, 6); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + label = gtk_label_new(_("Set the commands for building and running programs.")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); - tooltips = GTK_TOOLTIPS(lookup_widget(app->window, "tooltips"));
+ if (ft->menu_items->can_compile || ft->menu_items->can_link || ft->menu_items->can_exec) + { + GtkContainer *container; + gchar *frame_title = g_strconcat(ft->title, _(" commands"), NULL); + container = ui_frame_new(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), frame_title); + g_free(frame_title); + + ft_table = gtk_table_new(3, 2, FALSE); + gtk_table_set_row_spacings(GTK_TABLE(ft_table), 6); + gtk_container_add(container, ft_table); + row = 0; + } + // include-args if (ft->menu_items->can_compile) { - label = gtk_label_new(_("Enter here arguments to your compiler.")); - gtk_misc_set_padding(GTK_MISC(label), 0, 6); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + label = gtk_label_new(_("Compile:")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(GTK_TABLE(ft_table), label, 0, 1, row, row + 1, + GTK_FILL, GTK_FILL | GTK_EXPAND, 6, 0); + entries[0] = gtk_entry_new(); - gtk_tooltips_set_tip(tooltips, entries[0], -_("%f will be replaced by the complete filename\n%e will be replaced by filename without extension" - "\nExample: test_file.c\n%f -> test_file.c\n%e -> test_file"), NULL); gtk_entry_set_width_chars(GTK_ENTRY(entries[0]), 30); if (ft->programs->compiler) { gtk_entry_set_text(GTK_ENTRY(entries[0]), ft->programs->compiler); } - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), entries[0]); + gtk_table_attach_defaults(GTK_TABLE(ft_table), entries[0], 1, 2, row, row + 1); + row++;
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), gtk_label_new("")); g_object_set_data_full(G_OBJECT(dialog), "includes_entry1", gtk_widget_ref(entries[0]), (GDestroyNotify)gtk_widget_unref); } @@ -731,54 +752,54 @@ // lib-args if (ft->menu_items->can_link) { - label = gtk_label_new(_("Enter here arguments to your linker.")); - gtk_misc_set_padding(GTK_MISC(label), 0, 6); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + label = gtk_label_new(_("Build:")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(GTK_TABLE(ft_table), label, 0, 1, row, row + 1, + GTK_FILL, GTK_FILL | GTK_EXPAND, 6, 0); + entries[1] = gtk_entry_new(); - gtk_tooltips_set_tip(tooltips, entries[1], -_("%f will be replaced by the complete filename\n%e will be replaced by filename without extension" - "\nExample: test_file.c\n%f -> test_file.c\n%e -> test_file"), NULL); gtk_entry_set_width_chars(GTK_ENTRY(entries[1]), 30); if (ft->programs->linker) { gtk_entry_set_text(GTK_ENTRY(entries[1]), ft->programs->linker); } - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), entries[1]); + gtk_table_attach_defaults(GTK_TABLE(ft_table), entries[1], 1, 2, row, row + 1); + row++;
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), gtk_label_new("")); g_object_set_data_full(G_OBJECT(dialog), "includes_entry2", gtk_widget_ref(entries[1]), (GDestroyNotify)gtk_widget_unref); }
- // lib-args + // program-args if (ft->menu_items->can_exec) { - // program-args - label = gtk_label_new(_("Enter here arguments to your program.")); - gtk_misc_set_padding(GTK_MISC(label), 0, 6); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0); - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + label = gtk_label_new(_("Execute:")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_table_attach(GTK_TABLE(ft_table), label, 0, 1, row, row + 1, + GTK_FILL, GTK_FILL | GTK_EXPAND, 6, 0); + entries[2] = gtk_entry_new(); - gtk_tooltips_set_tip(tooltips, entries[2], -_("%f will be replaced by the complete filename\n%e will be replaced by filename without extension" - "\nExample: test_file.c\n%f -> test_file.c\n%e -> test_file"), NULL); gtk_entry_set_width_chars(GTK_ENTRY(entries[2]), 30); if (ft->programs->run_cmd) { gtk_entry_set_text(GTK_ENTRY(entries[2]), ft->programs->run_cmd); } - gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), entries[2]); + gtk_table_attach_defaults(GTK_TABLE(ft_table), entries[2], 1, 2, row, row + 1); + row++;
- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), gtk_label_new("")); g_object_set_data_full(G_OBJECT(dialog), "includes_entry3", gtk_widget_ref(entries[2]), (GDestroyNotify)gtk_widget_unref); }
+ label = gtk_label_new(_("%f will be replaced by the current filename, e.g. test_file.c\n" + "%e will be replaced by the filename without extension, e.g. test_file")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + g_signal_connect((gpointer) dialog, "response", - G_CALLBACK(on_includes_arguments_dialog_response), GINT_TO_POINTER(idx)); - + G_CALLBACK(on_includes_arguments_dialog_response), ft); gtk_widget_show_all(dialog); + gtk_dialog_run(GTK_DIALOG(dialog)); // run modally to prevent user changing idx filetype }
Modified: trunk/src/ui_utils.c =================================================================== --- trunk/src/ui_utils.c 2006-09-13 07:43:47 UTC (rev 816) +++ trunk/src/ui_utils.c 2006-09-15 14:25:42 UTC (rev 817) @@ -1338,4 +1338,30 @@ }
+/* Creates a GNOME HIG style frame (with no border and indented child alignment) + * and packs it into the parent container. + * Returns: the alignment container for the frame */ +GtkContainer *ui_frame_new(GtkContainer *parent, const gchar *label_text) +{ + GtkWidget *label, *align; + GtkWidget *frame = gtk_frame_new (NULL); + gchar *label_markup;
+ gtk_container_add(GTK_CONTAINER(parent), frame); + gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE); + + align = gtk_alignment_new (0.5, 0.5, 1, 1); + gtk_container_add (GTK_CONTAINER (frame), align); + gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, 12, 0); + + label_markup = g_strconcat("<b>", label_text, "</b>", NULL); + label = gtk_label_new (label_markup); + gtk_frame_set_label_widget (GTK_FRAME (frame), label); + gtk_label_set_use_markup (GTK_LABEL (label), TRUE); + g_free(label_markup); + + return GTK_CONTAINER(align); +} + + +
Modified: trunk/src/ui_utils.h =================================================================== --- trunk/src/ui_utils.h 2006-09-13 07:43:47 UTC (rev 816) +++ trunk/src/ui_utils.h 2006-09-15 14:25:42 UTC (rev 817) @@ -94,4 +94,7 @@
void ui_show_linenumber_margin();
+ +GtkContainer *ui_frame_new(GtkContainer *parent, const gchar *label_text); + #endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.