2 * Copyright (C) 2001 Sun Microsystems Inc.
3 * Author: Erwann Chenede <erwann.chenede@sun.com>
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
15 * You should have received a copy of the GNU Library General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 * Boston, MA 02111-1307, USA.
25 static gint num_monitors
;
28 request (GtkWidget
*widget
,
32 gint i
= gdk_screen_get_monitor_at_window (gtk_widget_get_screen (widget
),
36 str
= g_strdup ("<big><span foreground='white' background='black'>Not on a monitor </span></big>");
40 gdk_screen_get_monitor_geometry (gtk_widget_get_screen (widget
), i
, &monitor
);
41 str
= g_strdup_printf ("<big><span foreground='white' background='black'>"
42 "Monitor %d of %d</span></big>\n"
43 "<i>Width - Height </i>: (%d,%d)\n"
44 "<i>Top left coordinate </i>: (%d,%d)",i
+1, num_monitors
,
45 monitor
.width
, monitor
.height
, monitor
.x
, monitor
.y
);
48 gtk_label_set_markup (GTK_LABEL (user_data
), str
);
53 main (int argc
, char *argv
[])
55 GtkWidget
*window
, *label
, *vbox
, *button
;
59 gtk_init (&argc
, &argv
);
61 screen
= gdk_screen_get_default ();
63 num_monitors
= gdk_screen_get_n_monitors (screen
);
64 if (num_monitors
== 1)
65 g_warning ("The default screen of the current display only has one monitor.");
67 for (i
=0; i
<num_monitors
; i
++)
72 window
= gtk_window_new (GTK_WINDOW_TOPLEVEL
);
74 gdk_screen_get_monitor_geometry (screen
, i
, &monitor
);
75 gtk_window_set_default_size (GTK_WINDOW (window
), 200, 200);
76 gtk_window_move (GTK_WINDOW (window
), (monitor
.width
- 200) / 2 + monitor
.x
,
77 (monitor
.height
- 200) / 2 + monitor
.y
);
79 label
= gtk_label_new (NULL
);
80 str
= g_strdup_printf ("<big><span foreground='white' background='black'>"
81 "Monitor %d of %d</span></big>\n"
82 "<i>Width - Height </i>: (%d,%d)\n"
83 "<i>Top left coordinate </i>: (%d,%d)",i
+1, num_monitors
,
84 monitor
.width
, monitor
.height
, monitor
.x
, monitor
.y
);
85 gtk_label_set_markup (GTK_LABEL (label
), str
);
87 vbox
= gtk_vbox_new (TRUE
, 1);
88 gtk_container_add (GTK_CONTAINER (window
), vbox
);
89 gtk_container_add (GTK_CONTAINER (vbox
), label
);
90 button
= gtk_button_new_with_label ("Query current monitor");
91 g_signal_connect (button
, "clicked", G_CALLBACK (request
), label
);
92 gtk_container_add (GTK_CONTAINER (vbox
), button
);
93 button
= gtk_button_new_with_label ("Close");
94 g_signal_connect (button
, "clicked", G_CALLBACK (gtk_main_quit
), NULL
);
95 gtk_container_add (GTK_CONTAINER (vbox
), button
);
96 gtk_widget_show_all (window
);