/* gap_onion_gui.h * 2001.11.24 hof (Wolfgang Hofer) * * GAP ... Gimp Animation Plugins * * This Module contains MPEG specific Video Encoder GUI Procedures * It is also a wrapper for glade generated sources. */ /* The GIMP -- an image manipulation program * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* revision history: * version 1.2.2a; 2001.11.24 hof: created */ #include #define ENC_MENU_ITEM_INDEX_KEY "gap_enc_menu_item_index" #define ENC_MENU_ITEM_ENC_PTR "gap_enc_menu_item_enc_ptr" #define MAX_SELECT_MODE_ARRAY_ELEMENTS 7 gint gtab_select_modes[MAX_SELECT_MODE_ARRAY_ELEMENTS] = { 0, 1, 2, 3, 4, 5, 6 }; /* add callback functions for optionmenu widgets */ void p_set_menu_item_callbacks(GtkWidget *w, GtkSignalFunc cb_fun, gpointer data) { GList *wgt_children; GtkWidget *opt_menu; GtkWidget *wgt_child; gint l_idx; opt_menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(w)); if(opt_menu == NULL) { if(gap_debug) printf("p_set_menu_item_callbacks: widget is no GTK_OPTION_MENU\n"); return; } l_idx = 0; wgt_children = gtk_container_children(GTK_CONTAINER (opt_menu)); while(wgt_children) { wgt_child = (GtkWidget *)wgt_children->data; if(wgt_child != NULL) { /* if(gap_debug) printf("p_set_menu_item_callbacks: wgt_child found %x\n", (int)wgt_child); */ } if(GTK_IS_MENU_ITEM(wgt_child)) { /* if(gap_debug) printf("p_set_menu_item_callbacks: wgt_child IS_MENU_ITEM\n"); */ gtk_signal_connect (GTK_OBJECT (wgt_child), "activate", (GtkSignalFunc) cb_fun, data); gtk_object_set_data (GTK_OBJECT (wgt_child), ENC_MENU_ITEM_INDEX_KEY, (gpointer) l_idx); l_idx++; } wgt_children = (GList *) g_slist_next (wgt_children); } } static void p_init_sensitive(t_global_params *gpp) { GtkWidget *wgt; gboolean l_sensitive; l_sensitive = TRUE; if(gpp->val.select_mode > 3) { /* insensitive for select modes (4,5,6) that are lists of stacknumbers or all_visible layers */ l_sensitive = FALSE; } wgt = lookup_widget(gpp->main_dialog, "oni__togglebutton_select_case"); gtk_widget_set_sensitive(wgt, l_sensitive); wgt = lookup_widget(gpp->main_dialog, "oni__togglebutton_select_invert"); gtk_widget_set_sensitive(wgt, l_sensitive); l_sensitive = TRUE; if(gpp->val.select_mode == 6) { /* the pattern entry is insensitive if all_visible layers (6) is selected */ l_sensitive = FALSE; } wgt = lookup_widget(gpp->main_dialog, "oni__entry_select_string"); gtk_widget_set_sensitive(wgt, l_sensitive); } static void p_set_option_menu_callbacks(t_global_params *gpp) { GtkWidget *wgt; wgt = lookup_widget(gpp->main_dialog, "oni__optionmenu_select_mode"); p_set_menu_item_callbacks(wgt, (GtkSignalFunc) on_oni__optionmenu_select_mode, (gpointer)gpp); } void p_init_optionmenu_actual_idx(t_global_params *gpp, char *wgtname, gint *gtab_ptr, gint val, gint maxidx) { GtkWidget *wgt; gint l_idx; wgt = lookup_widget(gpp->main_dialog, wgtname); for(l_idx = 0; l_idx < maxidx; l_idx++) { if(val == gtab_ptr[l_idx]) { gtk_option_menu_set_history (GTK_OPTION_MENU (wgt), l_idx); return; } } } void p_init_optionmenus(t_global_params *gpp) { p_init_optionmenu_actual_idx( gpp , "oni__optionmenu_select_mode" , gtab_select_modes , gpp->val.select_mode , MAX_SELECT_MODE_ARRAY_ELEMENTS ); } void p_init_entries(t_global_params *gpp) { GtkEntry *entry; if(gap_debug) printf("p_init_utl_widgets\n"); entry = GTK_ENTRY(lookup_widget(gpp->main_dialog, "oni__entry_select_string")); gtk_entry_set_text(entry, gpp->val.select_string); } void p_init_spinbuttons(t_global_params *gpp) { GtkWidget *wgt; GtkAdjustment *adj; if(gap_debug) printf("p_init_spinbuttons\n"); wgt = lookup_widget(gpp->main_dialog, "oni__spinbutton_range_from"); adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wgt)); adj->lower = (gfloat) gpp->ainfo.first_frame_nr; adj->upper = (gfloat) gpp->ainfo.last_frame_nr; gtk_adjustment_set_value(adj, (gfloat)gpp->range_from); wgt = lookup_widget(gpp->main_dialog, "oni__spinbutton_range_to"); adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wgt)); adj->lower = (gfloat) gpp->ainfo.first_frame_nr; adj->upper = (gfloat) gpp->ainfo.last_frame_nr; gtk_adjustment_set_value(adj, (gfloat)gpp->range_to); wgt = lookup_widget(gpp->main_dialog, "oni__spinbutton_num_olayers"); adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wgt)); gtk_adjustment_set_value(adj, (gfloat)gpp->val.num_olayers); wgt = lookup_widget(gpp->main_dialog, "oni__spinbutton_ref_delta"); adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wgt)); gtk_adjustment_set_value(adj, (gfloat)gpp->val.ref_delta); wgt = lookup_widget(gpp->main_dialog, "oni__spinbutton_stack_pos"); adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wgt)); gtk_adjustment_set_value(adj, (gfloat)gpp->val.stack_pos); wgt = lookup_widget(gpp->main_dialog, "oni__spinbutton_opacity"); adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wgt)); gtk_adjustment_set_value(adj, (gfloat)gpp->val.opacity); wgt = lookup_widget(gpp->main_dialog, "oni__spinbutton_opacity_delta"); adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wgt)); gtk_adjustment_set_value(adj, (gfloat)gpp->val.opacity_delta); wgt = lookup_widget(gpp->main_dialog, "oni__spinbutton_ignore_botlayers"); adj = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(wgt)); gtk_adjustment_set_value(adj, (gfloat)gpp->val.ignore_botlayers); } void p_init_togglebuttons(t_global_params *gpp) { GtkWidget *wgt; GtkAdjustment *adj; wgt = lookup_widget(gpp->main_dialog, "oni__togglebutton_ref_cycle"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wgt), gpp->val.ref_cycle); wgt = lookup_widget(gpp->main_dialog, "oni_togglebutton_stack_top"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wgt), gpp->val.stack_top); wgt = lookup_widget(gpp->main_dialog, "oni__togglebutton_select_case"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wgt), gpp->val.select_case); wgt = lookup_widget(gpp->main_dialog, "oni__togglebutton_select_invert"); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (wgt), gpp->val.select_invert); } void p_init_main_dialog_widgets(t_global_params *gpp) { if(gap_debug) printf("p_init_main_dialog_widgets: Start INIT\n"); /* put initial values to the widgets */ p_init_spinbuttons(gpp); p_init_entries(gpp); p_init_optionmenus(gpp); p_init_togglebuttons(gpp); p_init_sensitive(gpp); } /* end p_init_main_dialog_widgets */ /* ============================================================================ * p_onion_cfg_dialog * * return 0 .. OK * -1 .. in case of Error or cancel * ============================================================================ */ gint p_onion_cfg_dialog(t_global_params *gpp) { gint argc = 1; gchar **argv = g_new (gchar *, 1); if(gap_debug) printf("p_onion_cfg_dialog: Start\n"); argv[0] = g_strdup (_("GAP_ONION__DIALOG")); gtk_set_locale (); setlocale (LC_NUMERIC, "C"); /* is needed when after gtk_set_locale () * to make sure PASSING FLOAT PDB_PARAMETERS works * (thanks to sven for the tip) */ gtk_init (&argc, &argv); /* ---------- dialog ----------*/ if(gap_debug) printf("p_onion_cfg_dialog: Before create_oni__dialog\n"); gpp->main_dialog = create_oni__dialog(); if(gap_debug) printf("p_onion_cfg_dialog: After create_oni__dialog\n"); p_set_option_menu_callbacks(gpp); p_init_main_dialog_widgets(gpp); gtk_widget_show (gpp->main_dialog); gpp->val.run = 0; /* GAP_ONION_RUN_CANCEL */ gtk_main (); if(gap_debug) printf("p_onion_cfg_dialog: A F T E R gtk_main run:%d\n", (int)gpp->val.run); gpp->main_dialog = NULL; if(gpp->val.run) { return 0; } return -1; } /* end p_onion_cfg_dialog */ /* include glade generated stuff */ #include "gen_support.c" #include "gen_callbacks.c" #include "gen_interface.c"