/* Internal function that builds the dialog */ static CustomReportDialog *gnc_ui_custom_report_internal(GncMainWindow * window) { GtkBuilder *builder; CustomReportDialog *crd; GtkTreeIter iter; GtkTreeModel *model; GtkWidget *no_report_notification; crd = g_new0(CustomReportDialog, 1); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-custom-report.glade", "custom_report_dialog"); crd->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_dialog")); crd->reportview = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_list_view")); no_report_notification = GTK_WIDGET(gtk_builder_get_object (builder, "label2")); set_reports_view_and_model(crd); crd->window = window; gnc_restore_window_size (GNC_PREFS_GROUP_REPORT_SAVED_CONFIGS, GTK_WINDOW(crd->dialog)); /* connect the signals */ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, crd); gtk_widget_show_all(crd->dialog); /* check if there are currently saved reports available * by checking if there is a first element */ model = gtk_tree_view_get_model (GTK_TREE_VIEW (crd->reportview)); if (gtk_tree_model_get_iter_first (model, &iter)) { /* saved reports available -> hide the "no reports available" notification */ gtk_widget_hide(no_report_notification); } else { /* hide the scrolled window of the report list */ gtk_widget_hide(crd->reportview); } g_object_unref(G_OBJECT(builder)); return crd; }
/* Internal function that builds the dialog */ static CustomReportDialog * gnc_ui_custom_report_internal(GncMainWindow * window) { GtkBuilder *builder; CustomReportDialog *crd; GtkTreeIter iter; GtkTreeModel *model; GtkWidget *no_report_notification; GtkWidget *scroll_window; GtkWidget *vscroll; GtkRequisition nat_sb; crd = g_new0(CustomReportDialog, 1); builder = gtk_builder_new(); gnc_builder_add_from_file (builder, "dialog-custom-report.glade", "custom_report_dialog"); crd->dialog = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_dialog")); crd->reportview = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_list_view")); scroll_window = GTK_WIDGET(gtk_builder_get_object (builder, "custom_report_sw")); no_report_notification = GTK_WIDGET(gtk_builder_get_object (builder, "label2")); set_reports_view_and_model(crd); crd->window = window; // get the vertical scroll bar width vscroll = gtk_scrolled_window_get_vscrollbar (GTK_SCROLLED_WINDOW (scroll_window)); gtk_widget_get_preferred_size (vscroll, NULL, &nat_sb); // set the width of the dummy column to that of the scrollbar gtk_tree_view_column_set_fixed_width (crd->dummycol, nat_sb.width); gtk_window_set_transient_for (GTK_WINDOW (crd->dialog), GTK_WINDOW(window)); // Set the style context for this dialog so it can be easily manipulated with css gnc_widget_set_style_context (GTK_WIDGET(crd->dialog), "GncCustomReportDialog"); gnc_restore_window_size (GNC_PREFS_GROUP_REPORT_SAVED_CONFIGS, GTK_WINDOW(crd->dialog), GTK_WINDOW(window)); /* connect the signals */ gtk_builder_connect_signals_full (builder, gnc_builder_connect_full_func, crd); gtk_widget_show_all(crd->dialog); /* check if there are currently saved reports available * by checking if there is a first element */ model = gtk_tree_view_get_model (GTK_TREE_VIEW (crd->reportview)); if (gtk_tree_model_get_iter_first (model, &iter)) { /* saved reports available -> hide the "no reports available" notification */ gtk_widget_hide(no_report_notification); } else { /* hide the scrolled window of the report list */ gtk_widget_hide(crd->reportview); } g_object_unref(G_OBJECT(builder)); return crd; }