예제 #1
0
/* 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;
}
예제 #2
0
/* 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;
}