+++ /dev/null
-/* testmultidisplay.c
- * Copyright (C) 2001 Sun Microsystems Inc.
- * Author: Erwann Chenede <erwann.chenede@sun.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "config.h"
-#include <gtk/gtk.h>
-
-gchar *screen2_name = NULL;
-
-typedef struct
-{
- GtkEntry *e1;
- GtkEntry *e2;
-}
-MyDoubleGtkEntry;
-
-void
-get_screen_response (GtkDialog *dialog,
- gint response_id,
- GtkEntry *entry)
-{
- if (response_id == GTK_RESPONSE_DELETE_EVENT)
- return;
- g_free (screen2_name);
- screen2_name = g_strdup (gtk_entry_get_text (entry));
-}
-
-void
-entry_dialog_response (GtkDialog *dialog,
- gint response_id,
- MyDoubleGtkEntry *de)
-{
- if (response_id == GTK_RESPONSE_APPLY)
- gtk_entry_set_text (de->e2, gtk_entry_get_text (de->e1));
- else
- gtk_main_quit ();
-}
-
-void
-make_selection_dialog (GdkScreen * screen,
- GtkWidget * entry,
- GtkWidget * other_entry)
-{
- GtkWidget *window, *vbox;
- GtkWidget *content_area;
- MyDoubleGtkEntry *double_entry = g_new (MyDoubleGtkEntry, 1);
- double_entry->e1 = GTK_ENTRY (entry);
- double_entry->e2 = GTK_ENTRY (other_entry);
-
- if (!screen)
- screen = gdk_screen_get_default ();
-
- window = g_object_new (GTK_TYPE_DIALOG,
- "screen", screen,
- "user_data", NULL,
- "type", GTK_WINDOW_TOPLEVEL,
- "title", "MultiDisplay Cut & Paste",
- NULL);
- g_signal_connect (window, "destroy",
- G_CALLBACK (gtk_main_quit), NULL);
-
- content_area = gtk_dialog_get_content_area (GTK_DIALOG (window));
-
- vbox = g_object_new (GTK_TYPE_BOX,
- "orientation", GTK_ORIENTATION_VERTICAL,
- NULL);
- gtk_box_pack_start (GTK_BOX (content_area), vbox);
-
- gtk_box_pack_start (GTK_BOX (vbox), entry);
- gtk_widget_grab_focus (entry);
-
- gtk_dialog_add_buttons (GTK_DIALOG (window),
- "_Apply", GTK_RESPONSE_APPLY,
- "_Quit", GTK_RESPONSE_DELETE_EVENT,
- NULL);
- gtk_dialog_set_default_response (GTK_DIALOG (window), GTK_RESPONSE_APPLY);
-
- g_signal_connect (window, "response",
- G_CALLBACK (entry_dialog_response), double_entry);
-
- gtk_widget_show (window);
-}
-
-int
-main (int argc, char *argv[])
-{
- GtkWidget *dialog, *display_entry, *dialog_label;
- GtkWidget *entry, *entry2;
- GtkWidget *content_area;
- GdkDisplay *dpy2;
- GdkScreen *scr2 = NULL; /* Quiet GCC */
- gboolean correct_second_display = FALSE;
-
- gtk_init ();
-
- if (argc == 2)
- screen2_name = g_strdup (argv[1]);
-
- /* Get the second display information */
-
- dialog = gtk_dialog_new_with_buttons ("Second Display Selection",
- NULL,
- GTK_DIALOG_MODAL,
- "_OK",
- GTK_RESPONSE_OK, NULL);
-
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
- display_entry = gtk_entry_new ();
- gtk_entry_set_activates_default (GTK_ENTRY (display_entry), TRUE);
- dialog_label =
- gtk_label_new ("Please enter the name of\nthe second display\n");
-
- content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
-
- gtk_container_add (GTK_CONTAINER (content_area), dialog_label);
- gtk_container_add (GTK_CONTAINER (content_area), display_entry);
- g_signal_connect (dialog, "response",
- G_CALLBACK (get_screen_response), display_entry);
-
- gtk_widget_grab_focus (display_entry);
-
- while (!correct_second_display)
- {
- if (screen2_name)
- {
- if (!g_ascii_strcasecmp (screen2_name, ""))
- g_printerr ("No display name, reverting to default display\n");
-
- dpy2 = gdk_display_open (screen2_name);
- if (dpy2)
- {
- scr2 = gdk_display_get_default_screen (dpy2);
- correct_second_display = TRUE;
- }
- else
- {
- char *error_msg =
- g_strdup_printf ("Can't open display :\n\t%s\nplease try another one\n",
- screen2_name);
- gtk_label_set_text (GTK_LABEL (dialog_label), error_msg);
- g_free (error_msg);
- }
- }
-
- if (!correct_second_display)
- gtk_dialog_run (GTK_DIALOG (dialog));
- }
-
- gtk_widget_destroy (dialog);
-
- entry = g_object_new (GTK_TYPE_ENTRY,
- "activates_default", TRUE,
- "visible", TRUE,
- NULL);
- entry2 = g_object_new (GTK_TYPE_ENTRY,
- "activates_default", TRUE,
- "visible", TRUE,
- NULL);
-
- /* for default display */
- make_selection_dialog (NULL, entry2, entry);
- /* for selected display */
- make_selection_dialog (scr2, entry, entry2);
- gtk_main ();
-
- return 0;
-}