diff options
author | Roger Leigh <rleigh@debian.org> | 2008-10-26 16:17:32 +0000 |
---|---|---|
committer | Roger Leigh <rleigh@debian.org> | 2008-10-26 16:17:32 +0000 |
commit | cda0fb3b8a7cb56045b24fd0af0ed36591b5d7eb (patch) | |
tree | 31ef197ec5c98ac9ac08714a2440a787c065d8c7 /src/gutenprintui/panel.c | |
parent | 92b02ddce00dec2787514568fa9d644d4f0350e9 (diff) |
Imported Upstream version 5.0.1
Diffstat (limited to 'src/gutenprintui/panel.c')
-rw-r--r-- | src/gutenprintui/panel.c | 99 |
1 files changed, 86 insertions, 13 deletions
diff --git a/src/gutenprintui/panel.c b/src/gutenprintui/panel.c index ea8eb70..a8b1858 100644 --- a/src/gutenprintui/panel.c +++ b/src/gutenprintui/panel.c @@ -1,5 +1,5 @@ /* - * "$Id: panel.c,v 1.9 2006/07/16 21:02:22 rlk Exp $" + * "$Id: panel.c,v 1.9.6.1 2007/03/02 12:01:17 rlk Exp $" * * Main window code for Print plug-in for the GIMP. * @@ -120,6 +120,8 @@ static GtkWidget *ppd_box; static GtkWidget *ppd_label; /* PPD file entry */ static GtkWidget *ppd_button; /* PPD file browse button */ static GtkWidget *ppd_browser; /* File selection dialog for PPDs */ +static GtkWidget *ppd_model_label; /* PPD file entry */ +static GtkWidget *ppd_model; /* PPD file entry */ static GtkWidget *new_printer_dialog; /* New printer dialog window */ static GtkWidget *new_printer_entry; /* New printer text entry */ static GtkWidget *file_button; /* PPD file browse button */ @@ -192,6 +194,7 @@ static void combo_callback (GtkWidget *widget, gpointer data); static void output_type_callback (GtkWidget *widget, gpointer data); static void unit_callback (GtkWidget *widget, gpointer data); static void orientation_callback (GtkWidget *widget, gpointer data); +static void ppd_file_callback (GtkWidget *widget, gpointer data); static void printandsave_callback (void); static void about_callback (void); static void print_callback (void); @@ -1647,6 +1650,8 @@ create_printer_dialog (void) GTK_FILL, GTK_FILL, 0, 0); ppd_file = gtk_entry_new (); + gtk_signal_connect(GTK_OBJECT(ppd_file), "activate", + GTK_SIGNAL_FUNC(ppd_file_callback), NULL); gtk_box_pack_start (GTK_BOX (ppd_box), ppd_file, TRUE, TRUE, 0); gtk_widget_show (ppd_file); @@ -1663,6 +1668,19 @@ create_printer_dialog (void) gtk_signal_connect (GTK_OBJECT (ppd_button), "clicked", GTK_SIGNAL_FUNC (ppd_browse_callback), NULL); + ppd_model_label = gtk_label_new (_("Printer Model:")); + gtk_misc_set_alignment (GTK_MISC (ppd_model_label), 1.0, 0.5); + gtk_table_attach (GTK_TABLE (table), ppd_model_label, 1, 2, 4, 5, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (ppd_model_label); + + ppd_model = gtk_label_new (""); + gtk_misc_set_alignment (GTK_MISC (ppd_model), 0.0, 0.5); + gtk_table_attach (GTK_TABLE (table), ppd_model, 2, 7, 4, 5, + GTK_FILL, GTK_FILL, 0, 0); + gtk_widget_show (ppd_model); + + /* * Print command. */ @@ -1670,11 +1688,11 @@ create_printer_dialog (void) group = NULL; for (i = 0; i < command_options_count; i++) group = stpui_create_radio_button(&(command_options[i]), group, table, - 0, i > 0 ? i + 5 : i + 4, + 0, i > 0 ? i + 6 : i + 5, command_type_callback); standard_cmd_entry = gtk_entry_new(); - gtk_table_attach (GTK_TABLE (table), standard_cmd_entry, 2, 7, 5, 6, + gtk_table_attach (GTK_TABLE (table), standard_cmd_entry, 2, 7, 6, 7, GTK_FILL, GTK_FILL, 0, 0); gtk_entry_set_editable(GTK_ENTRY(standard_cmd_entry), FALSE); gtk_widget_set_sensitive(standard_cmd_entry, FALSE); @@ -1692,13 +1710,13 @@ create_printer_dialog (void) "or model, of printer) that you wish to print to")); label = gtk_label_new(_("Printer Queue:")); gtk_widget_show(label); - gtk_table_attach (GTK_TABLE (table), label, 2, 3, 4, 5, + gtk_table_attach (GTK_TABLE (table), label, 2, 3, 5, 6, GTK_FILL, GTK_FILL, 0, 0); - gtk_table_attach (GTK_TABLE (table), event_box, 3, 7, 4, 5, + gtk_table_attach (GTK_TABLE (table), event_box, 3, 7, 5, 6, GTK_FILL, GTK_FILL, 0, 0); custom_command_entry = gtk_entry_new (); - gtk_table_attach (GTK_TABLE (table), custom_command_entry, 2, 7, 6, 7, + gtk_table_attach (GTK_TABLE (table), custom_command_entry, 2, 7, 7, 8, GTK_FILL, GTK_FILL, 0, 0); gtk_signal_connect(GTK_OBJECT(custom_command_entry), "activate", GTK_SIGNAL_FUNC(setup_callback), NULL); @@ -1709,7 +1727,7 @@ create_printer_dialog (void) (custom_command_entry, _("Enter the correct command to print to your printer. ")); file_entry = gtk_entry_new (); - gtk_table_attach (GTK_TABLE (table), file_entry, 2, 6, 7, 8, + gtk_table_attach (GTK_TABLE (table), file_entry, 2, 6, 8, 9, GTK_FILL, GTK_FILL, 0, 0); gtk_signal_connect(GTK_OBJECT(file_entry), "activate", GTK_SIGNAL_FUNC(setup_callback), NULL); @@ -1721,7 +1739,7 @@ create_printer_dialog (void) file_button = gtk_button_new_with_label (_("Browse")); - gtk_table_attach (GTK_TABLE (table), file_button, 6, 7, 7, 8, + gtk_table_attach (GTK_TABLE (table), file_button, 6, 7, 8, 9, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (file_button); @@ -2597,9 +2615,10 @@ plist_build_combo (GtkWidget *combo, /* I - Combo widget */ gtk_combo_set_popdown_strings (GTK_COMBO (combo), list); - for (i = 0; i < num_items; i ++) - if (strcmp(stp_string_list_param(items, i)->name, cur_item) == 0) - break; + if (cur_item) + for (i = 0; i < num_items; i ++) + if (strcmp(stp_string_list_param(items, i)->name, cur_item) == 0) + break; if (i >= num_items && def_value) for (i = 0; i < num_items; i ++) @@ -3564,6 +3583,7 @@ setup_update (void) gint idx = 0; gint i; gchar *tmp; + stp_parameter_t desc; const char *ppd_file_name = stp_get_file_parameter(pv->v, "PPDFile"); for (i = 0; i < GTK_CLIST(manufacturer_clist)->rows; i++) @@ -3586,23 +3606,49 @@ setup_update (void) idx = 0; */ gtk_clist_select_row (GTK_CLIST (printer_driver), idx, 0); - gtk_label_set_text (GTK_LABEL (printer_model_label), - gettext (stp_printer_get_long_name (tmp_printer))); + stp_describe_parameter(pv->v, "ModelName", &desc); + if (desc.p_type == STP_PARAMETER_TYPE_STRING_LIST && desc.is_active && + desc.deflt.str) + { + const char *extra_printer_model = desc.deflt.str; + char *label_text = + g_malloc(strlen(gettext (stp_printer_get_long_name (tmp_printer))) + + 2 + /* " (" */ + strlen(extra_printer_model) + + 2); /* ")" + null terminator */ + strcpy(label_text, extra_printer_model); + strcat(label_text, " ("); + strcat(label_text, gettext (stp_printer_get_long_name (tmp_printer))); + strcat(label_text, ")"); + gtk_label_set_text (GTK_LABEL (printer_model_label), label_text); + g_free(label_text); + } + else + { + gtk_label_set_text (GTK_LABEL (printer_model_label), + gettext (stp_printer_get_long_name (tmp_printer))); + } + stp_parameter_description_destroy(&desc); if (ppd_file_name) gtk_entry_set_text (GTK_ENTRY (ppd_file), ppd_file_name); else gtk_entry_set_text (GTK_ENTRY (ppd_file), ""); + ppd_file_callback(ppd_file, NULL); if (stp_parameter_find_in_settings(pv->v, "PPDFile")) { gtk_widget_show (ppd_box); gtk_widget_show (ppd_label); + gtk_widget_show (ppd_model_label); + gtk_widget_show (ppd_model); } else { gtk_widget_hide (ppd_box); gtk_widget_hide (ppd_label); + gtk_widget_hide (ppd_model_label); + gtk_widget_hide (ppd_model); } gtk_entry_set_text (GTK_ENTRY (custom_command_entry), stpui_plist_get_custom_command (pv)); @@ -3619,6 +3665,27 @@ setup_update (void) TRUE); } +static void +ppd_file_callback(GtkWidget *widget, gpointer data) +{ + const gchar *name = gtk_entry_get_text(GTK_ENTRY(widget)); + if (name && pv && pv->v) + { + stp_parameter_t desc; + stp_vars_t *v = stp_vars_create_copy(pv->v); + stp_set_file_parameter(v, "PPDFile", name); + stp_describe_parameter(v, "ModelName", &desc); + if (desc.is_active) + gtk_label_set_text(GTK_LABEL(ppd_model), desc.deflt.str); + else + gtk_label_set_text(GTK_LABEL(ppd_model), ""); + stp_parameter_description_destroy(&desc); + stp_vars_destroy(v); + } + else + gtk_label_set_text(GTK_LABEL(ppd_model), ""); +} + /* * setup_open_callback() - */ @@ -3739,11 +3806,15 @@ pop_ppd_box(void) { gtk_widget_show (ppd_label); gtk_widget_show (ppd_box); + gtk_widget_show (ppd_model_label); + gtk_widget_show (ppd_model); } else { gtk_widget_hide (ppd_label); gtk_widget_hide (ppd_box); + gtk_widget_hide (ppd_model_label); + gtk_widget_hide (ppd_model); } } @@ -3847,6 +3918,8 @@ ppd_ok_callback (void) gtk_entry_set_text (GTK_ENTRY (ppd_file), gtk_file_selection_get_filename (GTK_FILE_SELECTION (ppd_browser))); + ppd_file_callback(ppd_file, NULL); + update_options(); } /* |