gnome-control-center/panels/wacom/test-wacom.c
Carlos Garnacho 92b784f561 wacom: Use Mutter's input mapping interface to show calibration UI
When the "Automatic" mapping is chosen for a display-attached tablet device,
Mutter is in charge of applying the heuristics to map the tablet device to
its most likely attached display.

When that happens, the Wacom panel does not know better (or anything)
to show the calibration UI than picking a GdkMonitor and hoping for the
best.

To improve this situation, Mutter has been added a D-Bus interface so it
is possible to query it for the output that a tablet device is mapped to.
This commit adds the support for this interface, so that the Wacom panel
does know to pick the right GdkMonitor to fullscreen the calibration UI on.
2022-09-01 23:14:07 +02:00

155 lines
3.1 KiB
C

#include "config.h"
#include <glib/gi18n.h>
#include "cc-wacom-page.h"
#define FIXED_WIDTH 675
void
cc_wacom_panel_switch_to_panel (CcWacomPanel *self, const char *panel)
{
g_message ("Should launch %s preferences here", panel);
}
GDBusProxy *
cc_wacom_panel_get_gsd_wacom_bus_proxy (CcWacomPanel *self)
{
g_message ("Should get the g-s-d wacom dbus proxy here");
return NULL;
}
GDBusProxy *
cc_wacom_panel_get_input_mapping_bus_proxy (CcWacomPanel *self)
{
g_message ("Should get the mutter input mapping dbus proxy here");
return NULL;
}
static void
add_page (GList *devices,
GtkWidget *notebook)
{
GtkWidget *widget;
CcWacomDevice *stylus = NULL;
GList *l;
if (devices == NULL)
return;
for (l = devices; l ; l = l->next) {
stylus = l->data;
}
g_list_free (devices);
widget = cc_wacom_page_new (NULL, stylus);
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), widget, NULL);
gtk_widget_show (widget);
}
static GList *
create_fake_cintiq (void)
{
CcWacomDevice *device;
GList *devices;
device = cc_wacom_device_new_fake ("Wacom Cintiq 21UX2");
devices = g_list_prepend (NULL, device);
return devices;
}
static GList *
create_fake_bt (void)
{
CcWacomDevice *device;
GList *devices;
device = cc_wacom_device_new_fake ("Wacom Graphire Wireless");
devices = g_list_prepend (NULL, device);
return devices;
}
static GList *
create_fake_x201 (void)
{
CcWacomDevice *device;
GList *devices;
device = cc_wacom_device_new_fake ("Wacom Serial Tablet WACf004");
devices = g_list_prepend (NULL, device);
return devices;
}
static GList *
create_fake_intuos4 (void)
{
CcWacomDevice *device;
GList *devices;
device = cc_wacom_device_new_fake ("Wacom Intuos4 6x9");
devices = g_list_prepend (NULL, device);
return devices;
}
static GList *
create_fake_h610pro (void)
{
CcWacomDevice *device;
GList *devices;
device = cc_wacom_device_new_fake ("Huion H610 Pro");
devices = g_list_prepend (NULL, device);
return devices;
}
int main (int argc, char **argv)
{
GtkWidget *window, *notebook;
GList *devices;
bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
textdomain (GETTEXT_PACKAGE);
gtk_init ();
window = gtk_window_new ();
gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
gtk_window_set_default_size (GTK_WINDOW (window), FIXED_WIDTH, -1);
notebook = gtk_notebook_new ();
gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);
gtk_notebook_set_show_border (GTK_NOTEBOOK (notebook), FALSE);
gtk_widget_set_vexpand (notebook, TRUE);
gtk_window_set_child (GTK_WINDOW (window), notebook);
gtk_widget_show (notebook);
devices = create_fake_intuos4 ();
add_page (devices, notebook);
devices = create_fake_cintiq ();
add_page (devices, notebook);
devices = create_fake_bt ();
add_page (devices, notebook);
devices = create_fake_x201 ();
add_page (devices, notebook);
devices = create_fake_h610pro ();
add_page (devices, notebook);
gtk_widget_show (window);
while (g_list_model_get_n_items (gtk_window_get_toplevels ()) > 0)
g_main_context_iteration (NULL, TRUE);
return 0;
}