#include "config.h"
#include <stdlib.h>
#include <string.h>
+#include <ctype.h>
#include <stdio.h>
#include <math.h>
#include "gtkframe.h"
#include "gtkalignment.h"
#include "gtklabel.h"
-#include "gtktooltips.h"
#include "gtkeventbox.h"
#include "gtkprintbackend.h"
GtkPageSetup *page_setup;
- GtkTooltips *tooltips;
GtkWidget *all_pages_radio;
GtkWidget *current_page_radio;
GtkWidget *page_range_radio;
priv->print_backends = NULL;
priv->current_page = -1;
- priv->tooltips = gtk_tooltips_new ();
- g_object_ref_sink (priv->tooltips);
-
priv->page_setup = gtk_page_setup_new ();
g_signal_connect (dialog,
unschedule_idle_mark_conflicts (dialog);
- if (priv->tooltips)
- {
- g_object_unref (priv->tooltips);
- priv->tooltips = NULL;
- }
-
if (priv->request_details_tag)
{
g_source_remove (priv->request_details_tag);
GtkPrintUnixDialogPrivate *priv = dialog->priv;
GtkTreeIter iter, filter_iter;
GtkTreeSelection *selection;
+ GtkTreePath *path;
gtk_list_store_append (GTK_LIST_STORE (priv->printer_list), &iter);
gtk_tree_model_filter_convert_child_iter_to_iter (priv->printer_list_filter,
&filter_iter, &iter);
-
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (priv->printer_list_filter), &filter_iter);
+
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (priv->printer_treeview));
if (priv->waiting_for_printer != NULL &&
{
priv->internal_printer_change = TRUE;
gtk_tree_selection_select_iter (selection, &filter_iter);
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (priv->printer_treeview),
+ path, NULL, TRUE, 0.5, 0.0);
priv->internal_printer_change = FALSE;
g_free (priv->waiting_for_printer);
priv->waiting_for_printer = NULL;
{
priv->internal_printer_change = TRUE;
gtk_tree_selection_select_iter (selection, &filter_iter);
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (priv->printer_treeview),
+ path, NULL, TRUE, 0.5, 0.0);
priv->internal_printer_change = FALSE;
}
+
+ gtk_tree_path_free (path);
}
static void
caps & GTK_PRINT_CAPABILITY_REVERSE);
gtk_widget_set_sensitive (priv->scale_spin,
caps & GTK_PRINT_CAPABILITY_SCALE);
+ gtk_widget_set_sensitive (GTK_WIDGET (priv->pages_per_sheet),
+ caps & GTK_PRINT_CAPABILITY_NUMBER_UP);
if (caps & GTK_PRINT_CAPABILITY_PREVIEW)
gtk_widget_show (priv->preview_button);
-1);
}
- if (printer != NULL && !_gtk_printer_has_details (printer))
+ if (printer != NULL && !gtk_printer_has_details (printer))
{
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE);
priv->request_details_tag =
g_signal_connect (printer, "details-acquired",
G_CALLBACK (printer_details_acquired), dialog);
- _gtk_printer_request_details (printer);
+ gtk_printer_request_details (printer);
g_object_unref (printer);
return;
}
if (printer != NULL)
{
- priv->printer_capabilities = _gtk_printer_get_capabilities (printer);
+ priv->printer_capabilities = gtk_printer_get_capabilities (printer);
priv->options = _gtk_printer_get_options (printer,
priv->initial_settings,
priv->page_setup,
GtkPrintUnixDialogPrivate *priv = dialog->priv;
GtkWidget *main_vbox, *label, *vbox, *hbox;
GtkWidget *scrolled, *treeview, *frame, *table;
- GtkWidget *entry, *spinbutton, *event_box;
+ GtkWidget *entry, *spinbutton;
GtkWidget *radio, *check, *image;
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
0, 0);
radio = gtk_radio_button_new_with_mnemonic (gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio)), _("Ra_nge"));
- gtk_tooltips_set_tip (priv->tooltips, radio, _("Specify one or more page ranges,\n e.g. 1-3,7,11"), NULL);
+ gtk_widget_set_tooltip_text (radio, _("Specify one or more page ranges,\n e.g. 1-3,7,11"));
priv->page_range_radio = radio;
gtk_widget_show (radio);
p = text;
while (*p)
{
- start = (int)strtol (p, &next, 10);
- if (start < 1)
- start = 1;
+ while (isspace (*p)) p++;
+
+ if (*p == '-')
+ {
+ /* a half-open range like -2 */
+ start = 1;
+ }
+ else
+ {
+ start = (int)strtol (p, &next, 10);
+ if (start < 1)
+ start = 1;
+ p = next;
+ }
+
end = start;
- if (next != p)
- {
- p = next;
+ while (isspace (*p)) p++;
- if (*p == '-')
- {
- p++;
- end = (int)strtol (p, NULL, 10);
- if (end < start)
- end = start;
- }
+ if (*p == '-')
+ {
+ p++;
+ end = (int)strtol (p, &next, 10);
+ if (next == p) /* a half-open range like 2- */
+ end = 0;
+ else if (end < start)
+ end = start;
}
ranges[i].start = start - 1;
g_string_append_printf (s, "%d", ranges[i].start + 1);
if (ranges[i].end > ranges[i].start)
g_string_append_printf (s, "-%d", ranges[i].end + 1);
+ else if (ranges[i].end == -1)
+ g_string_append (s, "-");
if (i != n_ranges - 1)
g_string_append (s, ",");