aboutsummaryrefslogtreecommitdiff
path: root/hardinfo2/report.c
diff options
context:
space:
mode:
authorLeandro A. F. Pereira <leandro@hardinfo.org>2006-10-27 14:51:46 +0000
committerLeandro A. F. Pereira <leandro@hardinfo.org>2006-10-27 14:51:46 +0000
commit0f224e134234a6fb880613babd45942ece918f92 (patch)
treed453a4912c514a45955c2badcd8e0b187b6af5da /hardinfo2/report.c
parente5c7cba7ec1deb207ff5b6b93815d8d15e84d270 (diff)
Cleanups. Fallback to using hardcoded paths if binreloc fails. Add GTK+ log handler (shows errors and warnings in a graphical window).
Diffstat (limited to 'hardinfo2/report.c')
-rw-r--r--hardinfo2/report.c56
1 files changed, 31 insertions, 25 deletions
diff --git a/hardinfo2/report.c b/hardinfo2/report.c
index 500a3536..e3e28705 100644
--- a/hardinfo2/report.c
+++ b/hardinfo2/report.c
@@ -31,7 +31,6 @@ static FileTypes file_types[] = {
{ NULL, NULL, NULL, NULL }
};
-
void
report_header(ReportContext *ctx)
{
@@ -273,8 +272,13 @@ static void
report_generate_children(ReportContext *ctx, GtkTreeIter *iter)
{
GtkTreeModel *model = ctx->rd->model;
+ gboolean selected;
gchar *name;
+ gtk_tree_model_get(model, iter, TREE_COL_SEL, &selected, -1);
+ if (!selected)
+ return;
+
gtk_tree_model_get(model, iter, TREE_COL_NAME, &name, -1);
report_title(ctx, name);
@@ -368,40 +372,42 @@ report_generate(ReportDialog *rd)
{
GtkTreeIter iter;
ReportContext *ctx;
- ReportContext *(*ctx_gen)(ReportDialog *rd);
+ ReportContext *(*create_context)(ReportDialog *rd);
gchar *file;
FILE *stream;
if (!(file = report_get_filename()))
return FALSE;
- if (!(stream = fopen(file, "w+")))
- return FALSE;
-
- 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_context_free(ctx);
+ if (!(stream = fopen(file, "w+"))) {
g_free(file);
-
- return TRUE;
+ return FALSE;
}
+ create_context = file_types_get_data_by_name(file_types, file);
g_free(file);
- return FALSE;
+
+ if (!create_context) {
+ g_warning("Cannot create ReportContext. Programming bug?");
+ return FALSE;
+ }
+
+ ctx = create_context(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_context_free(ctx);
+
+ return TRUE;
}
void