diff options
| author | Leandro A. F. Pereira <leandro@hardinfo.org> | 2006-10-25 14:21:04 +0000 | 
|---|---|---|
| committer | Leandro A. F. Pereira <leandro@hardinfo.org> | 2006-10-25 14:21:04 +0000 | 
| commit | e5c7cba7ec1deb207ff5b6b93815d8d15e84d270 (patch) | |
| tree | e546e8708ae156db0b8674bda92718b1285ee9f0 | |
| parent | fd6337f2c940aa3aae42eb9952b32ca12f8b757d (diff) | |
More cleanups
| -rw-r--r-- | hardinfo2/hardinfo.h | 3 | ||||
| -rw-r--r-- | hardinfo2/report.c | 59 | ||||
| -rw-r--r-- | hardinfo2/util.c | 15 | 
3 files changed, 47 insertions, 30 deletions
| diff --git a/hardinfo2/hardinfo.h b/hardinfo2/hardinfo.h index b497fcdb..afed5ca0 100644 --- a/hardinfo2/hardinfo.h +++ b/hardinfo2/hardinfo.h @@ -28,6 +28,7 @@ struct _FileTypes {    gchar	*name;    gchar *mime_type;    gchar *extension; +  gpointer data;  };  struct _ModuleEntry { @@ -46,6 +47,8 @@ inline gchar *size_human_readable(gfloat size);          void  file_chooser_add_filters(GtkWidget *chooser, FileTypes *filters);         gchar *file_chooser_get_extension(GtkWidget *chooser, FileTypes *filters);         gchar *file_chooser_build_filename(GtkWidget *chooser, gchar *extension); +        +    gpointer  file_types_get_data_by_name(FileTypes *file_types, gchar *name);  extern	gchar*	path_lib;  extern	gchar*	path_data; diff --git a/hardinfo2/report.c b/hardinfo2/report.c index d20a8041..500a3536 100644 --- a/hardinfo2/report.c +++ b/hardinfo2/report.c @@ -25,6 +25,13 @@  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)  { @@ -287,14 +294,8 @@ report_generate_children(ReportContext *ctx, GtkTreeIter *iter)  static gchar *  report_get_filename(void)  { -    GtkFileFilter *filter;      GtkWidget *dialog;      gchar *filename = NULL; -    static FileTypes file_types[] = { -      { "HTML", "text/html", ".html" }, -      { "Plain Text", "text/plain", ".txt" }, -      { NULL, NULL, NULL } -    };      dialog = gtk_file_chooser_dialog_new("Save File",  	                                 NULL, @@ -302,10 +303,6 @@ report_get_filename(void)                                           GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,                                           GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,                                           NULL); -#if GTK_CHECK_VERSION(2,8,0) -    gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), -                                                   TRUE); -#endif                                                         gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "hardinfo report"); @@ -314,7 +311,6 @@ report_get_filename(void)      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);              } @@ -372,6 +368,7 @@ report_generate(ReportDialog *rd)  {      GtkTreeIter		 iter;      ReportContext	*ctx; +    ReportContext	*(*ctx_gen)(ReportDialog *rd);      gchar		*file;      FILE		*stream; @@ -381,28 +378,30 @@ report_generate(ReportDialog *rd)      if (!(stream = fopen(file, "w+")))          return FALSE; -    if (g_str_has_suffix(file, ".html")) { -        ctx = report_context_html_new(rd); -    } else { -        ctx = report_context_text_new(rd); -    } -     -    report_header(ctx); -     -    gtk_tree_model_get_iter_first(rd->model, &iter); -    do { -         report_generate_children(ctx, &iter); -    } while (gtk_tree_model_iter_next(rd->model, &iter)); +    ctx_gen = file_types_get_data_by_name(file_types, file); +    if (ctx_gen) { +        ctx = ctx_gen(rd); +         +        report_header(ctx); +         +        gtk_tree_model_get_iter_first(rd->model, &iter); +        do { +             report_generate_children(ctx, &iter); +        } while (gtk_tree_model_iter_next(rd->model, &iter)); -    report_footer(ctx); -     -    fputs(ctx->output, stream); -    fclose(stream); +        report_footer(ctx); +         +        fputs(ctx->output, stream); +        fclose(stream); +         +        report_context_free(ctx); +        g_free(file); +         +        return TRUE; +    } -    report_context_free(ctx);      g_free(file); -     -    return TRUE; +    return FALSE;  }  void diff --git a/hardinfo2/util.c b/hardinfo2/util.c index 19102213..e39f02d9 100644 --- a/hardinfo2/util.c +++ b/hardinfo2/util.c @@ -97,6 +97,7 @@ __expand_cb(GtkWidget *widget, gpointer data)  {      if (GTK_IS_EXPANDER(widget)) {          gtk_expander_set_expanded(GTK_EXPANDER(widget), TRUE); +        gtk_widget_hide(widget);      } else if (GTK_IS_CONTAINER(widget)) {          gtk_container_forall(GTK_CONTAINER(widget), (GtkCallback)__expand_cb, NULL);      } @@ -140,6 +141,20 @@ gchar      return NULL;  } +gpointer +file_types_get_data_by_name(FileTypes *filters, gchar *filename) +{ +    gint i; +     +    for (i = 0; filters[i].name; i++) { +        if (g_str_has_suffix(filename, filters[i].extension)) { +            return filters[i].data; +        } +    } +     +    return NULL; +} +  gchar  *file_chooser_build_filename(GtkWidget *chooser, gchar *extension)  { | 
