diff options
| author | Leandro A. F. Pereira <leandro@hardinfo.org> | 2010-05-03 09:27:26 -0300 | 
|---|---|---|
| committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2010-05-03 21:08:06 -0300 | 
| commit | 9273c075a2f993c5154614b70233d8f74515c851 (patch) | |
| tree | eb72a8c58e6bc8f4ca3b739d28fbecc269c0052d /hardinfo2/shell/report.c | |
| parent | 9a50155ec3e27aa6cedf3f118196f1947c769a29 (diff) | |
Move files from hardinfo2 to root.
Diffstat (limited to 'hardinfo2/shell/report.c')
| -rw-r--r-- | hardinfo2/shell/report.c | 890 | 
1 files changed, 0 insertions, 890 deletions
diff --git a/hardinfo2/shell/report.c b/hardinfo2/shell/report.c deleted file mode 100644 index fb87ee23..00000000 --- a/hardinfo2/shell/report.c +++ /dev/null @@ -1,890 +0,0 @@ -/* - *    HardInfo - Displays System Information - *    Copyright (C) 2003-2008 Leandro A. F. Pereira <leandro@hardinfo.org> - * - *    This program is free software; you can redistribute it and/or modify - *    it under the terms of the GNU General Public License as published by - *    the Free Software Foundation, version 2. - * - *    This program is distributed in the hope that it will be useful, - *    but WITHOUT ANY WARRANTY; without even the implied warranty of - *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - *    GNU General Public License for more details. - * - *    You should have received a copy of the GNU General Public License - *    along with this program; if not, write to the Free Software - *    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA - */ - -#include <report.h> -#include <stdio.h> -#include <string.h> -#include <shell.h> -#include <iconcache.h> -#include <hardinfo.h> -#include <config.h> - -static ReportDialog *report_dialog_new(GtkTreeModel * model, -				       GtkWidget * parent); -static void set_all_active(ReportDialog * rd, gboolean setting); - -static FileTypes file_types[] = { -    {"HTML (*.html)", "text/html", ".html", report_context_html_new}, -    {"Plain Text (*.txt)", "text/plain", ".txt", report_context_text_new}, -    {NULL, NULL, NULL, NULL} -}; - -void report_header(ReportContext * ctx) -{ -    ctx->header(ctx); -} - -void report_footer(ReportContext * ctx) -{ -    ctx->footer(ctx); -} - -void report_title(ReportContext * ctx, gchar * text) -{ -    ctx->title(ctx, text); -} - -void report_subtitle(ReportContext * ctx, gchar * text) -{ -    ctx->subtitle(ctx, text); -} - -void report_subsubtitle(ReportContext * ctx, gchar * text) -{ -    ctx->subsubtitle(ctx, text); -} - -void report_key_value(ReportContext * ctx, gchar * key, gchar * value) -{ -    ctx->keyvalue(ctx, key, value); -} - -gint report_get_visible_columns(ReportContext *ctx) -{ -    gint columns; -     -    /* Column count starts at two, since we always have at least -       two columns visible. */ -    columns = 2; - -    /* Either the Progress column or the Value column is available at -       the same time. So we don't count them. */ - -    if (ctx->columns & REPORT_COL_EXTRA1) -      columns++; -     -    if (ctx->columns & REPORT_COL_EXTRA2) -      columns++; -     -    return columns; -} - -void report_context_configure(ReportContext * ctx, GKeyFile * keyfile) -{ -    gchar **keys; -    const gchar *group = "$ShellParam$"; -     -    /* FIXME: sometime in the future we'll save images in the report. this -       flag will be set if we should support that. - -       so i don't forget how to encode the images inside the html files: -       http://en.wikipedia.org/wiki/Data:_URI_scheme */ - -    ctx->is_image_enabled = (g_key_file_get_boolean(keyfile, -						    group, -						    "ViewType", -						    NULL) == SHELL_VIEW_PROGRESS); - -     -    keys = g_key_file_get_keys(keyfile, group, NULL, NULL); -    if (keys) { -      gint i = 0; -       -      for (; keys[i]; i++) { -        gchar *key = keys[i]; -         -        if (g_str_equal(key, "ShowColumnHeaders")) { -          ctx->show_column_headers = g_key_file_get_boolean(keyfile, group, key, NULL); -        } else if (g_str_has_prefix(key, "ColumnTitle")) { -          gchar *value, *title = strchr(key, '$') + 1; -           -          value = g_key_file_get_value(keyfile, group, key, NULL); -          if (g_str_equal(title, "Extra1")) { -                  ctx->columns |= REPORT_COL_EXTRA1; -          } else if (g_str_equal(title, "Extra2")) { -                  ctx->columns |= REPORT_COL_EXTRA2; -          } else if (g_str_equal(title, "Value")) { -                  ctx->columns |= REPORT_COL_VALUE; -          } else if (g_str_equal(title, "TextValue")) { -                  ctx->columns |= REPORT_COL_TEXTVALUE; -          } else if (g_str_equal(title, "Progress")) { -                  ctx->columns |= REPORT_COL_PROGRESS; -          } -           -          g_hash_table_replace(ctx->column_titles, title, g_strdup(value)); -           -          g_free(value); -        } else if (g_str_equal(key, "ViewType")) { -          if (g_key_file_get_integer(keyfile, group, "ViewType", NULL) == SHELL_VIEW_PROGRESS) { -            ctx->columns &= ~REPORT_COL_VALUE; -            ctx->columns |= REPORT_COL_PROGRESS; -          }      -        } -      } - -      g_strfreev(keys);     -    } -     -} - -void report_table(ReportContext * ctx, gchar * text) -{ -    GKeyFile *key_file = g_key_file_new(); -    gchar **groups; -    gint i; - -    /* make only "Value" column visible ("Key" column is always visible) */ -    ctx->columns = REPORT_COL_VALUE; -    ctx->show_column_headers = FALSE; - -    /**/ -    g_key_file_load_from_data(key_file, text, strlen(text), 0, NULL); -    groups = g_key_file_get_groups(key_file, NULL); -     -    for (i = 0; groups[i]; i++) { -	if (groups[i][0] == '$') { -	    report_context_configure(ctx, key_file); -	    break; -	} -    } - -    for (i = 0; groups[i]; i++) { -	gchar *group, *tmpgroup; -	gchar **keys; -	gint j; - -	if (groups[i][0] == '$') { -	    continue; -	} - -	group = groups[i]; - -	tmpgroup = g_strdup(group); -	strend(group, '#'); - -	report_subsubtitle(ctx, group); - -#if 0 -	if (ctx->is_image_enabled) { -	    report_embed_image(ctx, key_file, group); -	} else { -#endif -	    keys = g_key_file_get_keys(key_file, tmpgroup, NULL, NULL); -	    for (j = 0; keys[j]; j++) { -		gchar *key = keys[j]; -		gchar *value; - -		value = g_key_file_get_value(key_file, tmpgroup, key, NULL); - -		if (g_utf8_validate(key, -1, NULL) && g_utf8_validate(value, -1, NULL)) { -		    strend(key, '#'); - -		    if (g_str_equal(value, "...")) { -			g_free(value); -			if (!(value = ctx->entry->fieldfunc(key))) { -			    value = g_strdup("..."); -			} -		    } -		     -		    if (*key == '$') { -			report_key_value(ctx, strchr(key + 1, '$') + 1, -					 value); -		    } else { -			report_key_value(ctx, key, value); -		    } - -		} - -		g_free(value); -	    } - -	    g_strfreev(keys); -#if 0 -	} -#endif -	g_free(tmpgroup); -    } - -    g_strfreev(groups); -    g_key_file_free(key_file); -} - -static void report_html_header(ReportContext * ctx) -{ -    if (ctx->output) -	g_free(ctx->output); - -    ctx->output = -	g_strdup_printf -	("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Final//EN\">\n" -	 "<html><head>\n" "<title>HardInfo (%s) System Report</title>\n" -	 "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n" -	 "<style>\n" "    body    { background: #fff }\n" -	 "    .title  { font: bold 130%% serif; color: #0066FF; padding: 30px 0 10px 0 }\n" -	 "    .stitle { font: bold 100%% sans-serif; color: #0044DD; padding: 30px 0 10px 0 }\n" -	 "    .sstitle{ font: bold 80%% serif; color: #000000; background: #efefef }\n" -	 "    .field  { font: 80%% sans-serif; color: #000000; padding: 2px; padding-left: 50px }\n" -	 "    .value  { font: 80%% sans-serif; color: #505050 }\n" -	 "</style>\n" "</head><body>\n", -	 VERSION); -} - -static void report_html_footer(ReportContext * ctx) -{ -    ctx->output = h_strconcat(ctx->output, -			      "</table></html>", NULL); -} - -static void report_html_title(ReportContext * ctx, gchar * text) -{ -    if (!ctx->first_table) { -      ctx->output = h_strdup_cprintf("</table>", ctx->output); -    } - -    ctx->output = h_strdup_cprintf("<h1 class=\"title\">%s</h1>", ctx->output, text); -} - -static void report_html_subtitle(ReportContext * ctx, gchar * text) -{ -    gint columns = report_get_visible_columns(ctx); - -    if (!ctx->first_table) { -      ctx->output = h_strdup_cprintf("</table>", ctx->output); -    } else { -      ctx->first_table = FALSE; -    } - -    ctx->output = h_strdup_cprintf("<table><tr><td colspan=\"%d\" class=\"stit" -				  "le\">%s</td></tr>\n", -				  ctx->output, -				  columns, -				  text); -} - -static void report_html_subsubtitle(ReportContext * ctx, gchar * text) -{ -    gint columns = report_get_visible_columns(ctx); - -    ctx->output = h_strdup_cprintf("<tr><td colspan=\"%d\" class=\"ssti" -				  "tle\">%s</td></tr>\n", -				  ctx->output, -				  columns, -				  text); -} - -static void -report_html_key_value(ReportContext * ctx, gchar * key, gchar * value) -{ -    gint columns = report_get_visible_columns(ctx); -    gchar **values; -    gint i; -     -    if (columns == 2) { -      ctx->output = h_strdup_cprintf("<tr><td class=\"field\">%s</td>" -                                    "<td class=\"value\">%s</td></tr>\n", -                                    ctx->output, -                                    key, value); -    } else { -      values = g_strsplit(value, "|", columns); -       -      ctx->output = h_strdup_cprintf("\n<tr>\n<td class=\"field\">%s</td>", ctx->output, key); -       -      for (i = columns - 2; i >= 0; i--) { -        ctx->output = h_strdup_cprintf("<td class=\"value\">%s</td>", -                                       ctx->output, -                                       values[i]); -      } - -      ctx->output = h_strdup_cprintf("</tr>\n", ctx->output); -       -      g_strfreev(values); -    } -} - -static void report_text_header(ReportContext * ctx) -{ -    if (ctx->output) -	g_free(ctx->output); - -    ctx->output = g_strdup(""); -} - -static void report_text_footer(ReportContext * ctx) -{ -} - -static void report_text_title(ReportContext * ctx, gchar * text) -{ -    gchar *str = (gchar *) ctx->output; -    int i = strlen(text); - -    str = h_strdup_cprintf("\n%s\n", str, text); -    for (; i; i--) -	str = h_strconcat(str, "*", NULL); - -    str = h_strconcat(str, "\n\n", NULL); -    ctx->output = str; -} - -static void report_text_subtitle(ReportContext * ctx, gchar * text) -{ -    gchar *str = ctx->output; -    int i = strlen(text); - -    str = h_strdup_cprintf("\n%s\n", str, text); -    for (; i; i--) -	str = h_strconcat(str, "-", NULL); - -    str = h_strconcat(str, "\n\n", NULL); -    ctx->output = str; -} - -static void report_text_subsubtitle(ReportContext * ctx, gchar * text) -{ -    ctx->output = h_strdup_cprintf("-%s-\n", ctx->output, text); -} - -static void -report_text_key_value(ReportContext * ctx, gchar * key, gchar * value) -{ -    gint columns = report_get_visible_columns(ctx); -    gchar **values; -    gint i; -     -    if (columns == 2) { -      if (strlen(value)) -          ctx->output = h_strdup_cprintf("%s\t\t: %s\n", ctx->output, key, value); -      else -          ctx->output = h_strdup_cprintf("%s\n", ctx->output, key); -    } else { -      values = g_strsplit(value, "|", columns); -       -      ctx->output = h_strdup_cprintf("%s\t", ctx->output, key); -       -      for (i = columns - 2; i >= 0; i--) { -        ctx->output = h_strdup_cprintf("%s\t", -                                       ctx->output, -                                       values[i]); -      } - -      ctx->output = h_strdup_cprintf("\n", ctx->output); -       -      g_strfreev(values); -    } -} - -static GSList *report_create_module_list_from_dialog(ReportDialog * rd) -{ -    ShellModule *module; -    GSList *modules = NULL; -    GtkTreeModel *model = rd->model; -    GtkTreeIter iter; - -    gtk_tree_model_get_iter_first(model, &iter); -    do { -	gboolean selected; -	gchar *name; - -	gtk_tree_model_get(model, &iter, TREE_COL_SEL, &selected, -1); -	if (!selected) -	    continue; - -	module = g_new0(ShellModule, 1); - -	gtk_tree_model_get(model, &iter, TREE_COL_NAME, &name, -1); -	module->name = name; -	module->entries = NULL; - -	if (gtk_tree_model_iter_has_child(model, &iter)) { -	    ShellModuleEntry *entry; - -	    gint children = gtk_tree_model_iter_n_children(model, &iter); -	    gint i; - -	    for (i = 0; i < children; i++) { -		GtkTreeIter child; - -		gtk_tree_model_iter_nth_child(model, &child, &iter, i); - -		gtk_tree_model_get(model, &child, TREE_COL_SEL, &selected, -				   -1); -		if (!selected) -		    continue; - -		gtk_tree_model_get(model, &child, TREE_COL_MODULE_ENTRY, &entry, -				   -1); -		module->entries = g_slist_append(module->entries, entry); -	    } -	} - -	modules = g_slist_append(modules, module); -    } while (gtk_tree_model_iter_next(rd->model, &iter)); - -    return modules; -} - -static void -report_create_inner_from_module_list(ReportContext * ctx, GSList * modules) -{ -    for (; modules; modules = modules->next) { -	ShellModule *module = (ShellModule *) modules->data; -	GSList *entries; - -	if (!params.gui_running) -	    fprintf(stderr, "\033[40;32m%s\033[0m\n", module->name); - -	report_title(ctx, module->name); - -	for (entries = module->entries; entries; entries = entries->next) { -	    ShellModuleEntry *entry = (ShellModuleEntry *) entries->data; - -	    if (!params.gui_running) -		fprintf(stderr, "\033[2K\033[40;32;1m %s\033[0m\n", -			entry->name); - -	    ctx->entry = entry; -	    report_subtitle(ctx, entry->name); -	    module_entry_scan(entry); -	    report_table(ctx, module_entry_function(entry)); -	} -    } -} - -void report_module_list_free(GSList * modules) -{ -    GSList *m; - -    for (m = modules; m; m = m->next) { -	ShellModule *module = (ShellModule *) m->data; - -	g_slist_free(module->entries); -    } - -    g_slist_free(modules); -} - -static gchar *report_get_filename(void) -{ -    GtkWidget *dialog; -    gchar *filename = NULL; - -    dialog = gtk_file_chooser_dialog_new("Save File", -					 NULL, -					 GTK_FILE_CHOOSER_ACTION_SAVE, -					 GTK_STOCK_CANCEL, -					 GTK_RESPONSE_CANCEL, -					 GTK_STOCK_SAVE, -					 GTK_RESPONSE_ACCEPT, NULL); - -    gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), -				      "hardinfo_report"); - -    file_chooser_add_filters(dialog, file_types); -    file_chooser_open_expander(dialog); - -    if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { -	gchar *ext = file_chooser_get_extension(dialog, file_types); -	filename = file_chooser_build_filename(dialog, ext); -    } -    gtk_widget_destroy(dialog); -    return filename; -} - -ReportContext *report_context_html_new() -{ -    ReportContext *ctx; - -    ctx = g_new0(ReportContext, 1); -    ctx->header = report_html_header; -    ctx->footer = report_html_footer; -    ctx->title = report_html_title; -    ctx->subtitle = report_html_subtitle; -    ctx->subsubtitle = report_html_subsubtitle; -    ctx->keyvalue = report_html_key_value; - -    ctx->output = g_strdup(""); -    ctx->format = REPORT_FORMAT_HTML; - -    ctx->column_titles = g_hash_table_new(g_str_hash, g_str_equal); -    ctx->first_table = TRUE; - -    return ctx; -} - -ReportContext *report_context_text_new() -{ -    ReportContext *ctx; - -    ctx = g_new0(ReportContext, 1); -    ctx->header = report_text_header; -    ctx->footer = report_text_footer; -    ctx->title = report_text_title; -    ctx->subtitle = report_text_subtitle; -    ctx->subsubtitle = report_text_subsubtitle; -    ctx->keyvalue = report_text_key_value; - -    ctx->output = g_strdup(""); -    ctx->format = REPORT_FORMAT_TEXT; -     -    ctx->column_titles = g_hash_table_new(g_str_hash, g_str_equal); -    ctx->first_table = TRUE; - -    return ctx; -} - -void report_context_free(ReportContext * ctx) -{ -    g_hash_table_destroy(ctx->column_titles); -    g_free(ctx->output); -    g_free(ctx); -} - -void report_create_from_module_list(ReportContext * ctx, GSList * modules) -{ -    report_header(ctx); - -    report_create_inner_from_module_list(ctx, modules); -    report_module_list_free(modules); - -    report_footer(ctx); -} - -gchar *report_create_from_module_list_format(GSList * modules, -					     ReportFormat format) -{ -    ReportContext *(*create_context) (); -    ReportContext *ctx; -    gchar *retval; - -    if (format >= N_REPORT_FORMAT) -	return NULL; - -    create_context = file_types[format].data; -    if (!create_context) -	return NULL; - -    ctx = create_context(); - -    report_create_from_module_list(ctx, modules); -    retval = g_strdup(ctx->output); - -    report_context_free(ctx); - -    return retval; -} - -static gboolean report_generate(ReportDialog * rd) -{ -    GSList *modules; -    ReportContext *ctx; -    ReportContext *(*create_context) (); -    gchar *file; -    FILE *stream; - -    if (!(file = report_get_filename())) -	return FALSE; - -    if (!(stream = fopen(file, "w+"))) { -	g_free(file); -	return FALSE; -    } - -    create_context = file_types_get_data_by_name(file_types, file); - -    if (!create_context) { -	g_warning("Cannot create ReportContext. Programming bug?"); -	g_free(file); -	return FALSE; -    } - -    ctx = create_context(); -    modules = report_create_module_list_from_dialog(rd); - -    report_create_from_module_list(ctx, modules); -    fputs(ctx->output, stream); -    fclose(stream); - -    if (ctx->format == REPORT_FORMAT_HTML) { -	GtkWidget *dialog; -	dialog = gtk_message_dialog_new(NULL, -					GTK_DIALOG_DESTROY_WITH_PARENT, -					GTK_MESSAGE_QUESTION, -					GTK_BUTTONS_NONE, -					"Open the report with your web browser?"); -	gtk_dialog_add_buttons(GTK_DIALOG(dialog), -			       GTK_STOCK_NO, GTK_RESPONSE_REJECT, -			       GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); -	if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { -	    gchar *temp; -	     -	    temp = g_strdup_printf("file://%s", file); -	    open_url(temp); -	     -	    g_free(temp); -        } - -	gtk_widget_destroy(dialog); -    } - -    report_context_free(ctx); -    g_free(file); - -    return TRUE; -} - -void report_dialog_show(GtkTreeModel * model, GtkWidget * parent) -{ -    gboolean success; -    ReportDialog *rd = report_dialog_new(model, parent); - -    if (gtk_dialog_run(GTK_DIALOG(rd->dialog)) == GTK_RESPONSE_ACCEPT) { -	shell_status_update("Generating report..."); -	gtk_widget_hide(rd->dialog); -	shell_view_set_enabled(FALSE); -	shell_status_set_enabled(TRUE); - -	success = report_generate(rd); - -	shell_status_set_enabled(FALSE); - -	if (success) -	    shell_status_update("Report saved."); -	else -	    shell_status_update("Error while creating the report."); -    } - -    set_all_active(rd, FALSE); -    gtk_widget_destroy(rd->dialog); -    g_free(rd); -} - -static void -set_children_active(GtkTreeModel * model, GtkTreeIter * iter, -		    gboolean setting) -{ -    if (gtk_tree_model_iter_has_child(model, iter)) { -	gint children = gtk_tree_model_iter_n_children(model, iter); - -	gtk_tree_store_set(GTK_TREE_STORE(model), iter, TREE_COL_SEL, -			   setting, -1); - -	for (children--; children >= 0; children--) { -	    GtkTreeIter child; - -	    gtk_tree_model_iter_nth_child(model, &child, iter, children); -	    gtk_tree_store_set(GTK_TREE_STORE(model), &child, TREE_COL_SEL, -			       setting, -1); -	} -    } -} - -static void set_all_active(ReportDialog * rd, gboolean setting) -{ -    GtkTreeIter iter; -    GtkTreeModel *model = rd->model; - -    gtk_tree_model_get_iter_first(model, &iter); - -    do { -	set_children_active(model, &iter, setting); -    } while (gtk_tree_model_iter_next(model, &iter)); -} - -static void report_dialog_sel_none(GtkWidget * widget, ReportDialog * rd) -{ -    set_all_active(rd, FALSE); -} - -static void report_dialog_sel_all(GtkWidget * widget, ReportDialog * rd) -{ -    set_all_active(rd, TRUE); -} - -static void -report_dialog_sel_toggle(GtkCellRendererToggle * cellrenderertoggle, -			 gchar * path_str, ReportDialog * rd) -{ -    GtkTreeModel *model = rd->model; -    GtkTreeIter iter; -    GtkTreePath *path = gtk_tree_path_new_from_string(path_str); -    gboolean active; - -    gtk_tree_model_get_iter(model, &iter, path); -    gtk_tree_model_get(model, &iter, TREE_COL_SEL, &active, -1); - -    active = !active; -    gtk_tree_store_set(GTK_TREE_STORE(model), &iter, TREE_COL_SEL, active, -		       -1); -    set_children_active(model, &iter, active); - -    if (active) { -        GtkTreeIter parent; -         -        if (gtk_tree_model_iter_parent(model, &parent, &iter)) { -            gtk_tree_store_set(GTK_TREE_STORE(model), &parent, -                               TREE_COL_SEL, active, -1); -        } -    } - -    gtk_tree_path_free(path); -} - -static ReportDialog -    * report_dialog_new(GtkTreeModel * model, GtkWidget * parent) -{ -    ReportDialog *rd; -    GtkWidget *dialog; -    GtkWidget *dialog1_vbox; -    GtkWidget *scrolledwindow2; -    GtkWidget *treeview2; -    GtkWidget *vbuttonbox3; -    GtkWidget *button3; -    GtkWidget *button6; -    GtkWidget *dialog1_action_area; -    GtkWidget *button8; -    GtkWidget *button7; -    GtkWidget *label; -    GtkWidget *hbox; - -    GtkTreeViewColumn *column; -    GtkCellRenderer *cr_text, *cr_pbuf, *cr_toggle; - -    rd = g_new0(ReportDialog, 1); - -    dialog = gtk_dialog_new(); -    gtk_window_set_title(GTK_WINDOW(dialog), "Generate Report"); -    gtk_container_set_border_width(GTK_CONTAINER(dialog), 5); -    gtk_window_set_default_size(GTK_WINDOW(dialog), 420, 260); -    gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent)); -    gtk_window_set_position(GTK_WINDOW(dialog), -			    GTK_WIN_POS_CENTER_ON_PARENT); -    gtk_window_set_type_hint(GTK_WINDOW(dialog), -			     GDK_WINDOW_TYPE_HINT_DIALOG); - -    dialog1_vbox = GTK_DIALOG(dialog)->vbox; -    gtk_box_set_spacing(GTK_BOX(dialog1_vbox), 5); -    gtk_container_set_border_width(GTK_CONTAINER(dialog1_vbox), 4); -    gtk_widget_show(dialog1_vbox); - -    hbox = gtk_hbox_new(FALSE, 5); -    gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, FALSE, FALSE, 0); - -    label = gtk_label_new("<big><b>Generate Report</b></big>\n" -			  "Please choose the information that you wish " -			  "to view in your report:"); -    gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); -    gtk_label_set_use_markup(GTK_LABEL(label), TRUE); -    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); - -    gtk_box_pack_start(GTK_BOX(hbox), -		       icon_cache_get_image("report-large.png"), -		       FALSE, FALSE, 0); -    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); -    gtk_widget_show_all(hbox); -     -    hbox = gtk_hbox_new(FALSE, 5); -    gtk_box_pack_start(GTK_BOX(dialog1_vbox), hbox, TRUE, TRUE, 0); -    gtk_widget_show(hbox); - -    scrolledwindow2 = gtk_scrolled_window_new(NULL, NULL); -    gtk_widget_show(scrolledwindow2); -    gtk_box_pack_start(GTK_BOX(hbox), scrolledwindow2, TRUE, TRUE, -		       0); -    gtk_widget_set_size_request(scrolledwindow2, -1, 200); -    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledwindow2), -				   GTK_POLICY_AUTOMATIC, -				   GTK_POLICY_AUTOMATIC); -    gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW -					(scrolledwindow2), GTK_SHADOW_IN); - -    treeview2 = gtk_tree_view_new_with_model(model); -    gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview2), FALSE); -    gtk_widget_show(treeview2); -    gtk_container_add(GTK_CONTAINER(scrolledwindow2), treeview2); - -    column = gtk_tree_view_column_new(); -    gtk_tree_view_append_column(GTK_TREE_VIEW(treeview2), column); - -    cr_toggle = gtk_cell_renderer_toggle_new(); -    gtk_tree_view_column_pack_start(column, cr_toggle, FALSE); -    g_signal_connect(cr_toggle, "toggled", -		     G_CALLBACK(report_dialog_sel_toggle), rd); -    gtk_tree_view_column_add_attribute(column, cr_toggle, "active", -				       TREE_COL_SEL); - -    cr_pbuf = gtk_cell_renderer_pixbuf_new(); -    gtk_tree_view_column_pack_start(column, cr_pbuf, FALSE); -    gtk_tree_view_column_add_attribute(column, cr_pbuf, "pixbuf", -				       TREE_COL_PBUF); - -    cr_text = gtk_cell_renderer_text_new(); -    gtk_tree_view_column_pack_start(column, cr_text, TRUE); -    gtk_tree_view_column_add_attribute(column, cr_text, "markup", -				       TREE_COL_NAME); - -    vbuttonbox3 = gtk_vbutton_box_new(); -    gtk_widget_show(vbuttonbox3); -    gtk_box_pack_start(GTK_BOX(hbox), vbuttonbox3, FALSE, TRUE, 0); -    gtk_box_set_spacing(GTK_BOX(vbuttonbox3), 5); -    gtk_button_box_set_layout(GTK_BUTTON_BOX(vbuttonbox3), -			      GTK_BUTTONBOX_START); - -    button3 = gtk_button_new_with_mnemonic("Select _None"); -    gtk_widget_show(button3); -    gtk_container_add(GTK_CONTAINER(vbuttonbox3), button3); -    GTK_WIDGET_SET_FLAGS(button3, GTK_CAN_DEFAULT); -    g_signal_connect(button3, "clicked", -		     G_CALLBACK(report_dialog_sel_none), rd); - -    button6 = gtk_button_new_with_mnemonic("Select _All"); -    gtk_widget_show(button6); -    gtk_container_add(GTK_CONTAINER(vbuttonbox3), button6); -    GTK_WIDGET_SET_FLAGS(button6, GTK_CAN_DEFAULT); -    g_signal_connect(button6, "clicked", G_CALLBACK(report_dialog_sel_all), -		     rd); - -    dialog1_action_area = GTK_DIALOG(dialog)->action_area; -    gtk_widget_show(dialog1_action_area); -    gtk_button_box_set_layout(GTK_BUTTON_BOX(dialog1_action_area), -			      GTK_BUTTONBOX_END); - -    button8 = gtk_button_new_from_stock(GTK_STOCK_CANCEL); -    gtk_widget_show(button8); -    gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button8, -				 GTK_RESPONSE_CANCEL); -    GTK_WIDGET_SET_FLAGS(button8, GTK_CAN_DEFAULT); - -    button7 = gtk_button_new_with_mnemonic("_Generate"); -    gtk_widget_show(button7); -    gtk_dialog_add_action_widget(GTK_DIALOG(dialog), button7, -				 GTK_RESPONSE_ACCEPT); -    GTK_WIDGET_SET_FLAGS(button7, GTK_CAN_DEFAULT); - -    rd->dialog = dialog; -    rd->btn_cancel = button8; -    rd->btn_generate = button7; -    rd->btn_sel_all = button6; -    rd->btn_sel_none = button3; -    rd->treeview = treeview2; -    rd->model = model; - -    gtk_tree_view_collapse_all(GTK_TREE_VIEW(treeview2)); -    set_all_active(rd, TRUE); - -    return rd; -}  | 
