Пример #1
0
static void
immerse_sanitize_args(ImmerseArgs *args)
{
    args->sampling = MIN(args->sampling, GWY_IMMERSE_SAMPLING_LAST - 1);
    args->leveling = MIN(args->leveling, GWY_IMMERSE_LEVEL_LAST - 1);
    args->draw_frame = !!args->draw_frame;
    gwy_app_data_id_verify_channel(&args->detail);
}
Пример #2
0
static void
maskcor_sanitize_args(MaskcorArgs *args)
{
    args->result = MIN(args->result, GWY_MASKCOR_LAST-1);
    args->method = MIN(args->method, GWY_CORRELATION_POC);
    args->threshold = CLAMP(args->threshold, -1.0, 1.0);
    gwy_app_data_id_verify_channel(&args->kernel);
}
Пример #3
0
static void
merge_sanitize_args(MergeArgs *args)
{
    args->direction = MIN(args->direction, GWY_MERGE_DIRECTION_LAST - 1);
    args->mode = MIN(args->mode, GWY_MERGE_MODE_LAST - 1);
    args->boundary = MIN(args->boundary, GWY_MERGE_BOUNDARY_LAST - 1);
    args->create_mask = !!args->create_mask;
    args->crop_to_rectangle = !!args->crop_to_rectangle;
    gwy_app_data_id_verify_channel(&args->op2);
}
Пример #4
0
static void
presentation_attach(GwyContainer *data,
                    GwyRunType run)
{
    GtkWidget *dialog, *table, *label, *chooser;
    GwyAppDataId target;
    gint row, response;

    g_return_if_fail(run & PRESENTATION_ATTACH_RUN_MODES);
    gwy_app_data_browser_get_current(GWY_APP_CONTAINER_ID, &target.datano,
                                     GWY_APP_DATA_FIELD_ID, &target.id,
                                     0);

    gwy_app_data_id_verify_channel(&attach_source_id);

    dialog = gtk_dialog_new_with_buttons(_("Attach Presentation"), NULL, 0,
                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                         GTK_STOCK_OK, GTK_RESPONSE_OK,
                                         NULL);
    gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
    gwy_help_add_to_proc_dialog(GTK_DIALOG(dialog), GWY_HELP_DEFAULT);

    table = gtk_table_new(1, 2, FALSE);
    gtk_table_set_row_spacings(GTK_TABLE(table), 2);
    gtk_table_set_col_spacings(GTK_TABLE(table), 6);
    gtk_container_set_border_width(GTK_CONTAINER(table), 4);
    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, TRUE, TRUE, 4);
    row = 0;

    label = gtk_label_new_with_mnemonic(_("_Data to attach:"));
    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
    gtk_table_attach(GTK_TABLE(table), label, 0, 1, row, row+1,
                     GTK_EXPAND | GTK_FILL, 0, 0, 0);

    chooser = gwy_data_chooser_new_channels();
    gwy_data_chooser_set_filter(GWY_DATA_CHOOSER(chooser),
                                &presentation_attach_filter, &target, NULL);
    gwy_data_chooser_set_active_id(GWY_DATA_CHOOSER(chooser),
                                   &attach_source_id);
    gtk_table_attach(GTK_TABLE(table), chooser, 1, 2, row, row+1,
                     GTK_EXPAND | GTK_FILL, 0, 0, 0);
    gtk_label_set_mnemonic_widget(GTK_LABEL(label), chooser);
    gtk_table_set_row_spacing(GTK_TABLE(table), row, 8);
    row++;

    gtk_widget_show_all(dialog);
    do {
        response = gtk_dialog_run(GTK_DIALOG(dialog));
        switch (response) {
            case GTK_RESPONSE_CANCEL:
            case GTK_RESPONSE_DELETE_EVENT:
            gtk_widget_destroy(dialog);
            case GTK_RESPONSE_NONE:
            return;
            break;

            case GTK_RESPONSE_OK:
            gwy_data_chooser_get_active_id(GWY_DATA_CHOOSER(chooser),
                                           &attach_source_id);
            /* The data must be always compatible at least with itself */
            g_assert(attach_source_id.datano);
            presentation_attach_do(&attach_source_id, &target);
            gwy_app_channel_log_add_proc(data, target.id, target.id);
            break;

            default:
            g_assert_not_reached();
            break;
        }
    } while (response != GTK_RESPONSE_OK);

    gtk_widget_destroy(dialog);
}