109
110
* gcm_calib_activate_cb:
112
gcm_calib_activate_cb (GApplication *application, GcmCalibratePriv *calib)
113
gcm_calib_activate_cb (GApplication *application, GcmCalibratePriv *priv)
114
gtk_window_present (calib->main_window);
115
gtk_window_present (priv->main_window);
118
119
gcm_calib_confirm_quit_cb (GtkDialog *dialog,
119
120
gint response_id,
120
GcmCalibratePriv *calib)
121
GcmCalibratePriv *priv)
122
123
if (response_id != GTK_RESPONSE_CLOSE) {
123
124
gtk_widget_destroy (GTK_WIDGET (dialog));
126
gcm_calibrate_interaction (calib->calibrate, GTK_RESPONSE_CANCEL);
127
g_application_release (G_APPLICATION (calib->application));
127
gcm_calibrate_interaction (priv->calibrate, GTK_RESPONSE_CANCEL);
128
g_application_release (G_APPLICATION (priv->application));
131
132
* gcm_calib_confirm_quit:
134
gcm_calib_confirm_quit (GcmCalibratePriv *calib)
135
gcm_calib_confirm_quit (GcmCalibratePriv *priv)
136
137
GtkWidget *dialog;
138
139
/* do not ask for confirmation on the initial page */
139
if (calib->current_page == GCM_CALIBRATE_PAGE_INTRO)
140
g_application_release (G_APPLICATION (calib->application));
140
if (priv->current_page == GCM_CALIBRATE_PAGE_INTRO)
141
g_application_release (G_APPLICATION (priv->application));
142
dialog = gtk_message_dialog_new (GTK_WINDOW (calib->main_window),
143
dialog = gtk_message_dialog_new (GTK_WINDOW (priv->main_window),
143
144
GTK_DIALOG_MODAL,
144
145
GTK_MESSAGE_QUESTION,
145
146
GTK_BUTTONS_NONE,
175
176
* gcm_calib_assistant_cancel_cb:
178
gcm_calib_assistant_cancel_cb (GtkAssistant *assistant, GcmCalibratePriv *calib)
179
gcm_calib_assistant_cancel_cb (GtkAssistant *assistant, GcmCalibratePriv *priv)
180
gcm_calib_confirm_quit (calib);
181
gcm_calib_confirm_quit (priv);
184
185
* gcm_calib_assistant_close_cb:
187
gcm_calib_assistant_close_cb (GtkAssistant *assistant, GcmCalibratePriv *calib)
188
gcm_calib_assistant_close_cb (GtkAssistant *assistant, GcmCalibratePriv *priv)
189
g_application_release (G_APPLICATION (calib->application));
190
g_application_release (G_APPLICATION (priv->application));
193
194
* gcm_calib_play_sound:
196
gcm_calib_play_sound (GcmCalibratePriv *calib)
197
gcm_calib_play_sound (GcmCalibratePriv *priv)
198
199
/* play sound from the naming spec */
199
200
ca_context_play (ca_gtk_context_get (), 0,
432
429
CdProfile *profile = NULL;
433
430
const gchar *filename;
432
GcmCalibratePriv *priv = (GcmCalibratePriv *) user_data;
435
433
GError *error = NULL;
436
434
GFile *file = NULL;
436
GtkAssistant *assistant = GTK_ASSISTANT (priv->main_window);
438
GcmCalibratePriv *calib = (GcmCalibratePriv *) user_data;
439
GtkAssistant *assistant = GTK_ASSISTANT (calib->main_window);
441
/* actuall do the action */
442
calib->started_calibration = TRUE;
443
ret = gcm_calibrate_device (calib->calibrate,
440
inhibit_cookie = gtk_application_inhibit (priv->application,
442
GTK_APPLICATION_INHIBIT_LOGOUT |
443
GTK_APPLICATION_INHIBIT_SWITCH |
444
GTK_APPLICATION_INHIBIT_SUSPEND |
445
GTK_APPLICATION_INHIBIT_IDLE,
446
"Calibration in progress");
448
/* actually do the action */
449
priv->started_calibration = TRUE;
450
ret = gcm_calibrate_device (priv->calibrate,
448
gcm_calibrate_set_title (calib->calibrate,
455
gcm_calibrate_set_title (priv->calibrate,
449
456
_("Failed to calibrate"),
450
457
GCM_CALIBRATE_UI_ERROR);
451
gcm_calibrate_set_message (calib->calibrate,
458
gcm_calibrate_set_message (priv->calibrate,
453
460
GCM_CALIBRATE_UI_ERROR);
454
gcm_calibrate_set_image (calib->calibrate, NULL);
461
gcm_calibrate_set_image (priv->calibrate, NULL);
456
463
g_warning ("failed to calibrate: %s",
458
465
g_error_free (error);
460
467
/* mark this box as the end */
461
vbox = gcm_calib_get_vbox_for_page (calib, GCM_CALIBRATE_PAGE_ACTION);
468
vbox = gcm_calib_get_vbox_for_page (priv, GCM_CALIBRATE_PAGE_ACTION);
462
469
gtk_assistant_set_page_type (assistant, vbox, GTK_ASSISTANT_PAGE_SUMMARY);
463
470
gtk_assistant_set_page_complete (assistant, vbox, TRUE);
467
474
/* get profile */
468
filename = gcm_calibrate_get_filename_result (calib->calibrate);
475
filename = gcm_calibrate_get_filename_result (priv->calibrate);
469
476
if (filename == NULL) {
470
477
g_warning ("failed to get filename from calibration");
474
481
/* set some private properties */
475
ret = gcm_calib_set_extra_metadata (calib, filename, &error);
482
ret = gcm_calib_set_extra_metadata (priv, filename, &error);
477
484
g_warning ("failed to set extra metadata: %s",
533
544
gcm_calib_assistant_page_forward_cb (gint current_page, gpointer user_data)
536
GcmCalibratePriv *calib = (GcmCalibratePriv *) user_data;
547
GcmCalibratePriv *priv = (GcmCalibratePriv *) user_data;
538
549
/* shouldn't happen... */
539
if (calib->current_page != GCM_CALIBRATE_PAGE_ACTION)
550
if (priv->current_page != GCM_CALIBRATE_PAGE_ACTION)
540
551
return current_page + 1;
542
if (!calib->has_pending_interaction)
553
if (!priv->has_pending_interaction)
543
554
return current_page;
545
556
/* continue calibration */
546
gcm_calibrate_interaction (calib->calibrate, GTK_RESPONSE_OK);
547
calib->has_pending_interaction = FALSE;
557
gcm_calibrate_interaction (priv->calibrate, GTK_RESPONSE_OK);
558
priv->has_pending_interaction = FALSE;
549
560
/* no longer allow forward */
550
vbox = gcm_calib_get_vbox_for_page (calib,
561
vbox = gcm_calib_get_vbox_for_page (priv,
551
562
GCM_CALIBRATE_PAGE_ACTION);
553
gtk_assistant_set_page_complete (GTK_ASSISTANT (calib->main_window),
564
gtk_assistant_set_page_complete (GTK_ASSISTANT (priv->main_window),
555
566
return current_page;
562
573
gcm_calib_assistant_prepare_cb (GtkAssistant *assistant,
563
574
GtkWidget *page_widget,
564
GcmCalibratePriv *calib)
575
GcmCalibratePriv *priv)
566
calib->current_page = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (page_widget),
577
priv->current_page = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (page_widget),
567
578
"GcmCalibrateMain::Index"));
568
switch (calib->current_page) {
579
switch (priv->current_page) {
569
580
case GCM_CALIBRATE_PAGE_LAST:
570
gcm_calib_play_sound (calib);
581
gcm_calib_play_sound (priv);
572
583
case GCM_CALIBRATE_PAGE_ACTION:
573
584
g_debug ("lights! camera! action!");
574
if (!calib->started_calibration)
575
g_idle_add (gcm_calib_start_idle_cb, calib);
585
if (!priv->started_calibration)
586
g_idle_add (gcm_calib_start_idle_cb, priv);
581
592
/* ensure we cancel argyllcms if the user clicks back */
582
if (calib->current_page != GCM_CALIBRATE_PAGE_ACTION &&
583
calib->started_calibration) {
584
gcm_calibrate_interaction (calib->calibrate,
593
if (priv->current_page != GCM_CALIBRATE_PAGE_ACTION &&
594
priv->started_calibration) {
595
gcm_calibrate_interaction (priv->calibrate,
585
596
GTK_RESPONSE_CANCEL);
586
calib->started_calibration = FALSE;
597
priv->started_calibration = FALSE;
589
600
/* forward on the action page just unsticks the calibration */
590
if (calib->current_page == GCM_CALIBRATE_PAGE_ACTION) {
601
if (priv->current_page == GCM_CALIBRATE_PAGE_ACTION) {
591
602
gtk_assistant_set_forward_page_func (assistant,
592
603
gcm_calib_assistant_page_forward_cb,
596
607
gtk_assistant_set_forward_page_func (assistant,
694
705
* gcm_calib_setup_page_intro:
697
gcm_calib_setup_page_intro (GcmCalibratePriv *calib)
708
gcm_calib_setup_page_intro (GcmCalibratePriv *priv)
700
711
GtkWidget *content;
701
GtkAssistant *assistant = GTK_ASSISTANT (calib->main_window);
712
GtkAssistant *assistant = GTK_ASSISTANT (priv->main_window);
703
714
/* TRANSLATORS: this is intro page text */
704
switch (calib->device_kind) {
715
switch (priv->device_kind) {
705
716
case CD_DEVICE_KIND_CAMERA:
706
717
case CD_DEVICE_KIND_WEBCAM:
707
718
/* TRANSLATORS: this is the page title */
708
vbox = gcm_calib_add_page_title (calib, _("Calibrate your camera"));
719
vbox = gcm_calib_add_page_title (priv, _("Calibrate your camera"));
710
721
case CD_DEVICE_KIND_DISPLAY:
711
722
/* TRANSLATORS: this is the page title */
712
vbox = gcm_calib_add_page_title (calib, _("Calibrate your display"));
723
vbox = gcm_calib_add_page_title (priv, _("Calibrate your display"));
714
725
case CD_DEVICE_KIND_PRINTER:
715
726
/* TRANSLATORS: this is the page title */
716
vbox = gcm_calib_add_page_title (calib, _("Calibrate your printer"));
727
vbox = gcm_calib_add_page_title (priv, _("Calibrate your printer"));
719
730
/* TRANSLATORS: this is the page title */
720
vbox = gcm_calib_add_page_title (calib, _("Calibrate your device"));
731
vbox = gcm_calib_add_page_title (priv, _("Calibrate your device"));
843
854
* gcm_calib_setup_page_summary:
846
gcm_calib_setup_page_summary (GcmCalibratePriv *calib)
857
gcm_calib_setup_page_summary (GcmCalibratePriv *priv)
850
861
GtkWidget *content;
851
862
GtkWidget *image;
852
GtkAssistant *assistant = GTK_ASSISTANT (calib->main_window);
863
GtkAssistant *assistant = GTK_ASSISTANT (priv->main_window);
854
865
/* TRANSLATORS: this is the page title */
855
vbox = gcm_calib_add_page_title (calib, _("All done!"));
866
vbox = gcm_calib_add_page_title (priv, _("All done!"));
857
868
/* main contents */
858
869
content = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
859
870
gtk_box_pack_start (GTK_BOX (vbox), content, FALSE, FALSE, 0);
861
switch (calib->device_kind) {
872
switch (priv->device_kind) {
862
873
case CD_DEVICE_KIND_CAMERA:
863
874
case CD_DEVICE_KIND_WEBCAM:
864
875
/* TRANSLATORS: this is the final summary */
939
950
content = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
940
951
gtk_box_pack_start (GTK_BOX (vbox), content, FALSE, FALSE, 0);
942
calib->action_message = gcm_calib_add_page_para (content, _("Calibration is about to start"));
953
priv->action_message = gcm_calib_add_page_para (content, _("Calibration is about to start"));
944
955
/* add image for success */
945
calib->action_image = gtk_image_new ();
946
gtk_image_set_from_icon_name (GTK_IMAGE (calib->action_image), "face-frown", GTK_ICON_SIZE_DIALOG);
947
gtk_box_pack_start (GTK_BOX (content), calib->action_image, FALSE, FALSE, 0);
956
priv->action_image = gtk_image_new ();
957
gtk_image_set_from_icon_name (GTK_IMAGE (priv->action_image), "face-frown", GTK_ICON_SIZE_DIALOG);
958
gtk_box_pack_start (GTK_BOX (content), priv->action_image, FALSE, FALSE, 0);
949
960
/* add progress marker */
950
calib->action_progress = gtk_progress_bar_new ();
951
gtk_box_pack_start (GTK_BOX (content), calib->action_progress, FALSE, FALSE, 0);
961
priv->action_progress = gtk_progress_bar_new ();
962
gtk_box_pack_start (GTK_BOX (content), priv->action_progress, FALSE, FALSE, 0);
953
964
/* add content widget */
954
gcm_calibrate_set_content_widget (calib->calibrate, vbox);
965
gcm_calibrate_set_content_widget (priv->calibrate, vbox);
956
967
/* add to assistant */
957
968
gtk_assistant_append_page (assistant, vbox);
959
970
/* TRANSLATORS: this is the calibration wizard page title */
960
971
gtk_assistant_set_page_title (assistant, vbox, _("Action"));
961
972
gtk_assistant_set_page_complete (assistant, vbox, FALSE);
962
g_ptr_array_add (calib->pages, vbox);
973
g_ptr_array_add (priv->pages, vbox);
963
974
g_object_set_data (G_OBJECT (vbox),
964
975
"GcmCalibrateMain::Index",
965
976
GUINT_TO_POINTER (GCM_CALIBRATE_PAGE_ACTION));
968
979
gtk_widget_show_all (vbox);
969
gtk_widget_hide (calib->action_image);
980
gtk_widget_hide (priv->action_image);
973
984
* gcm_calib_setup_page_display_configure_wait:
976
gcm_calib_setup_page_display_configure_wait (GcmCalibratePriv *calib)
987
gcm_calib_setup_page_display_configure_wait (GcmCalibratePriv *priv)
979
990
GtkWidget *content;
980
GtkAssistant *assistant = GTK_ASSISTANT (calib->main_window);
991
GtkAssistant *assistant = GTK_ASSISTANT (priv->main_window);
982
993
/* TRANSLATORS: dialog message, preface */
983
vbox = gcm_calib_add_page_title (calib, _("Calibration checklist"));
994
vbox = gcm_calib_add_page_title (priv, _("Calibration checklist"));
985
996
/* main contents */
986
997
content = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
1031
1042
* gcm_calib_button_clicked_install_argyllcms_cb:
1034
gcm_calib_button_clicked_install_argyllcms_cb (GtkButton *button, GcmCalibratePriv *calib)
1045
gcm_calib_button_clicked_install_argyllcms_cb (GtkButton *button, GcmCalibratePriv *priv)
1037
1048
GtkWidget *vbox;
1038
GtkAssistant *assistant = GTK_ASSISTANT (calib->main_window);
1049
GtkAssistant *assistant = GTK_ASSISTANT (priv->main_window);
1040
1051
ret = gcm_utils_install_package (GCM_PREFS_PACKAGE_NAME_ARGYLLCMS,
1041
calib->main_window);
1042
1053
/* we can continue now */
1043
1054
if (TRUE || ret) {
1044
vbox = gcm_calib_get_vbox_for_page (calib,
1055
vbox = gcm_calib_get_vbox_for_page (priv,
1045
1056
GCM_CALIBRATE_PAGE_INSTALL_ARGYLLCMS);
1046
1057
gtk_assistant_set_page_complete (assistant, vbox, TRUE);
1047
1058
gtk_assistant_next_page (assistant);
1973
1984
* gcm_calib_add_pages:
1976
gcm_calib_add_pages (GcmCalibratePriv *calib)
1987
gcm_calib_add_pages (GcmCalibratePriv *priv)
1979
1990
const gchar *xrandr_name;
1981
1992
/* device not found */
1982
if (calib->device_kind == CD_DEVICE_KIND_UNKNOWN) {
1983
gcm_calib_setup_page_failure (calib);
1984
gtk_widget_show_all (GTK_WIDGET (calib->main_window));
1993
if (priv->device_kind == CD_DEVICE_KIND_UNKNOWN) {
1994
gcm_calib_setup_page_failure (priv);
1995
gtk_widget_show_all (GTK_WIDGET (priv->main_window));
1988
gcm_calib_setup_page_intro (calib);
1999
gcm_calib_setup_page_intro (priv);
1990
if (calib->device_kind == CD_DEVICE_KIND_DISPLAY ||
1991
calib->device_kind == CD_DEVICE_KIND_PRINTER)
1992
gcm_calib_setup_page_sensor (calib);
2001
if (priv->device_kind == CD_DEVICE_KIND_DISPLAY ||
2002
priv->device_kind == CD_DEVICE_KIND_PRINTER)
2003
gcm_calib_setup_page_sensor (priv);
1994
2005
/* find whether argyllcms is installed using a tool which should exist */
1995
ret = gcm_calibrate_get_enabled (calib->calibrate);
2006
ret = gcm_calibrate_get_enabled (priv->calibrate);
1997
gcm_calib_setup_page_install_argyllcms (calib);
2008
gcm_calib_setup_page_install_argyllcms (priv);
1999
xrandr_name = cd_device_get_metadata_item (calib->device,
2010
xrandr_name = cd_device_get_metadata_item (priv->device,
2000
2011
CD_DEVICE_METADATA_XRANDR_NAME);
2001
2012
if (xrandr_name != NULL)
2002
calib->internal_lcd = gcm_utils_output_is_lcd_internal (xrandr_name);
2003
if (!calib->internal_lcd && calib->device_kind == CD_DEVICE_KIND_DISPLAY)
2004
gcm_calib_setup_page_display_configure_wait (calib);
2006
gcm_calib_setup_page_precision (calib);
2008
if (calib->device_kind == CD_DEVICE_KIND_DISPLAY) {
2009
if (!calib->internal_lcd) {
2010
gcm_calib_setup_page_display_kind (calib);
2013
priv->internal_lcd = gcm_utils_output_is_lcd_internal (xrandr_name);
2014
if (!priv->internal_lcd && priv->device_kind == CD_DEVICE_KIND_DISPLAY)
2015
gcm_calib_setup_page_display_configure_wait (priv);
2017
gcm_calib_setup_page_precision (priv);
2019
if (priv->device_kind == CD_DEVICE_KIND_DISPLAY) {
2020
if (!priv->internal_lcd) {
2021
gcm_calib_setup_page_display_kind (priv);
2012
g_object_set (calib->calibrate,
2023
g_object_set (priv->calibrate,
2013
2024
"display-kind", GCM_CALIBRATE_DEVICE_KIND_LCD,
2016
gcm_calib_setup_page_display_temp (calib);
2017
} else if (calib->device_kind == CD_DEVICE_KIND_PRINTER) {
2018
gcm_calib_setup_page_print_kind (calib);
2027
gcm_calib_setup_page_display_temp (priv);
2028
} else if (priv->device_kind == CD_DEVICE_KIND_PRINTER) {
2029
gcm_calib_setup_page_print_kind (priv);
2020
gcm_calib_setup_page_target_kind (calib);
2031
gcm_calib_setup_page_target_kind (priv);
2021
2032
ret = g_file_test ("/usr/share/shared-color-targets", G_FILE_TEST_IS_DIR);
2023
gcm_calib_setup_page_install_targets (calib);
2034
gcm_calib_setup_page_install_targets (priv);
2026
gcm_calib_setup_page_profile_title (calib);
2027
gcm_calib_setup_page_action (calib);
2037
gcm_calib_setup_page_profile_title (priv);
2038
gcm_calib_setup_page_action (priv);
2029
gcm_calib_setup_page_summary (calib);
2040
gcm_calib_setup_page_summary (priv);
2031
2042
/* see if we can hide the sensor check */
2032
cd_client_get_sensors (calib->client,
2043
cd_client_get_sensors (priv->client,
2034
2045
gcm_calib_get_sensors_cb,
2039
2050
* gcm_calib_sensor_added_cb:
2042
gcm_calib_sensor_added_cb (CdClient *client, CdSensor *sensor, GcmCalibratePriv *calib)
2053
gcm_calib_sensor_added_cb (CdClient *client, CdSensor *sensor, GcmCalibratePriv *priv)
2044
2055
g_debug ("sensor inserted");
2045
gcm_calib_got_sensor (calib, sensor);
2046
gtk_assistant_next_page (GTK_ASSISTANT (calib->main_window));
2056
gcm_calib_got_sensor (priv, sensor);
2057
gtk_assistant_next_page (GTK_ASSISTANT (priv->main_window));
2050
2061
* gcm_calib_startup_cb:
2053
gcm_calib_startup_cb (GApplication *application, GcmCalibratePriv *calib)
2064
gcm_calib_startup_cb (GApplication *application, GcmCalibratePriv *priv)
2055
2066
const gint window_width = 640;
2056
2067
const gint window_height = 440;
2086
2097
/* show main UI */
2087
calib->main_window = GTK_WINDOW (gtk_assistant_new ());
2088
gtk_window_set_default_size (calib->main_window, window_width, window_height);
2089
gtk_window_set_resizable (calib->main_window, TRUE);
2090
gtk_window_set_title (calib->main_window, "");
2091
gtk_container_set_border_width (GTK_CONTAINER (calib->main_window), 12);
2092
g_signal_connect (calib->main_window, "delete_event",
2093
G_CALLBACK (gcm_calib_delete_event_cb), calib);
2094
g_signal_connect (calib->main_window, "close",
2095
G_CALLBACK (gcm_calib_assistant_close_cb), calib);
2096
g_signal_connect (calib->main_window, "cancel",
2097
G_CALLBACK (gcm_calib_assistant_cancel_cb), calib);
2098
g_signal_connect (calib->main_window, "prepare",
2099
G_CALLBACK (gcm_calib_assistant_prepare_cb), calib);
2100
gtk_application_add_window (calib->application,
2101
calib->main_window);
2098
priv->main_window = GTK_WINDOW (gtk_assistant_new ());
2099
gtk_window_set_default_size (priv->main_window, window_width, window_height);
2100
gtk_window_set_resizable (priv->main_window, TRUE);
2101
gtk_window_set_title (priv->main_window, "");
2102
gtk_container_set_border_width (GTK_CONTAINER (priv->main_window), 12);
2103
g_signal_connect (priv->main_window, "delete_event",
2104
G_CALLBACK (gcm_calib_delete_event_cb), priv);
2105
g_signal_connect (priv->main_window, "close",
2106
G_CALLBACK (gcm_calib_assistant_close_cb), priv);
2107
g_signal_connect (priv->main_window, "cancel",
2108
G_CALLBACK (gcm_calib_assistant_cancel_cb), priv);
2109
g_signal_connect (priv->main_window, "prepare",
2110
G_CALLBACK (gcm_calib_assistant_prepare_cb), priv);
2111
gtk_application_add_window (priv->application,
2103
2114
/* set the parent window if it is specified */
2104
if (calib->xid != 0) {
2105
g_debug ("Setting xid %i", calib->xid);
2106
gcm_window_set_parent_xid (GTK_WINDOW (calib->main_window), calib->xid);
2115
if (priv->xid != 0) {
2116
g_debug ("Setting xid %i", priv->xid);
2117
gcm_window_set_parent_xid (GTK_WINDOW (priv->main_window), priv->xid);
2109
2120
/* select a specific profile only */
2110
calib->device = cd_client_find_device_sync (calib->client,
2121
priv->device = cd_client_find_device_sync (priv->client,
2114
if (calib->device == NULL) {
2125
if (priv->device == NULL) {
2115
2126
g_warning ("failed to get device %s: %s",
2117
2128
error->message);
2118
2129
g_error_free (error);
2122
2133
/* connect to the device */
2123
ret = cd_device_connect_sync (calib->device,
2134
ret = cd_device_connect_sync (priv->device,
2133
2144
/* get the device properties */
2134
calib->device_kind = cd_device_get_kind (calib->device);
2145
priv->device_kind = cd_device_get_kind (priv->device);
2136
2147
/* for display calibration move the window to lower right area to
2137
2148
* limit argyll from obscuring the window (too much) */
2138
if (calib->device_kind == CD_DEVICE_KIND_DISPLAY) {
2139
gtk_window_set_gravity (calib->main_window, GDK_GRAVITY_SOUTH_EAST);
2140
gtk_window_move (calib->main_window, gdk_screen_width() - window_width,
2149
if (priv->device_kind == CD_DEVICE_KIND_DISPLAY) {
2150
gtk_window_set_gravity (priv->main_window, GDK_GRAVITY_SOUTH_EAST);
2151
gtk_window_move (priv->main_window, gdk_screen_width() - window_width,
2141
2152
gdk_screen_height() - window_height);
2144
2155
/* set, with fallbacks */
2145
serial = cd_device_get_serial (calib->device);
2156
serial = cd_device_get_serial (priv->device);
2146
2157
if (serial == NULL) {
2147
2158
/* TRANSLATORS: this is saved in the profile */
2148
2159
serial = _("Unknown serial");
2150
model = cd_device_get_model (calib->device);
2161
model = cd_device_get_model (priv->device);
2151
2162
if (model == NULL) {
2152
2163
/* TRANSLATORS: this is saved in the profile */
2153
2164
model = _("Unknown model");
2155
description = cd_device_get_model (calib->device);
2166
description = cd_device_get_model (priv->device);
2156
2167
if (description == NULL) {
2157
2168
/* TRANSLATORS: this is saved in the profile */
2158
2169
description = _("Unknown description");
2160
manufacturer = cd_device_get_vendor (calib->device);
2171
manufacturer = cd_device_get_vendor (priv->device);
2161
2172
if (manufacturer == NULL) {
2162
2173
/* TRANSLATORS: this is saved in the profile */
2163
2174
manufacturer = _("Unknown manufacturer");
2184
2195
/* display specific properties */
2185
if (calib->device_kind == CD_DEVICE_KIND_DISPLAY) {
2186
native_device = cd_device_get_metadata_item (calib->device,
2196
if (priv->device_kind == CD_DEVICE_KIND_DISPLAY) {
2197
native_device = cd_device_get_metadata_item (priv->device,
2187
2198
CD_DEVICE_METADATA_XRANDR_NAME);
2188
2199
if (native_device == NULL) {
2189
2200
g_warning ("failed to get output");
2192
g_object_set (calib->calibrate,
2203
g_object_set (priv->calibrate,
2193
2204
"output-name", native_device,
2197
2208
/* add different pages depending on the device kind */
2198
gcm_calib_add_pages (calib);
2199
gtk_assistant_set_current_page (GTK_ASSISTANT (calib->main_window), 0);
2209
gcm_calib_add_pages (priv);
2210
gtk_assistant_set_current_page (GTK_ASSISTANT (priv->main_window), 0);
2200
2211
if (dt != NULL)
2201
2212
g_date_time_unref (dt);
2202
2213
g_free (copyright);
2206
2217
gcm_calib_title_changed_cb (GcmCalibrate *calibrate,
2207
2218
const gchar *title,
2208
GcmCalibratePriv *calib)
2219
GcmCalibratePriv *priv)
2212
2223
markup = g_strdup_printf ("<span size=\"large\" font_weight=\"bold\">%s</span>", title);
2213
gtk_label_set_markup (GTK_LABEL (calib->action_title), markup);
2224
gtk_label_set_markup (GTK_LABEL (priv->action_title), markup);
2214
2225
g_free (markup);
2218
2229
gcm_calib_message_changed_cb (GcmCalibrate *calibrate,
2219
2230
const gchar *title,
2220
GcmCalibratePriv *calib)
2231
GcmCalibratePriv *priv)
2222
gtk_label_set_label (GTK_LABEL (calib->action_message), title);
2233
gtk_label_set_label (GTK_LABEL (priv->action_message), title);
2226
2237
gcm_calib_progress_changed_cb (GcmCalibrate *calibrate,
2227
2238
guint percentage,
2228
GcmCalibratePriv *calib)
2239
GcmCalibratePriv *priv)
2230
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (calib->action_progress),
2241
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->action_progress),
2231
2242
percentage / 100.0f);
2235
2246
gcm_calib_image_changed_cb (GcmCalibrate *calibrate,
2236
2247
const gchar *filename,
2237
GcmCalibratePriv *calib)
2248
GcmCalibratePriv *priv)
2240
2251
GdkPixbuf *pixbuf;
2246
2257
if (pixbuf == NULL) {
2247
2258
g_warning ("failed to load image: %s", error->message);
2248
2259
g_error_free (error);
2249
gtk_widget_hide (calib->action_image);
2260
gtk_widget_hide (priv->action_image);
2251
gtk_image_set_from_pixbuf (GTK_IMAGE (calib->action_image), pixbuf);
2252
gtk_widget_show (calib->action_image);
2262
gtk_image_set_from_pixbuf (GTK_IMAGE (priv->action_image), pixbuf);
2263
gtk_widget_show (priv->action_image);
2256
gtk_widget_hide (calib->action_image);
2267
gtk_widget_hide (priv->action_image);
2261
2272
gcm_calib_interaction_required_cb (GcmCalibrate *calibrate,
2262
2273
const gchar *button_text,
2263
GcmCalibratePriv *calib)
2274
GcmCalibratePriv *priv)
2265
2276
GtkWidget *vbox;
2266
vbox = gcm_calib_get_vbox_for_page (calib,
2277
vbox = gcm_calib_get_vbox_for_page (priv,
2267
2278
GCM_CALIBRATE_PAGE_ACTION);
2268
gtk_assistant_set_page_complete (GTK_ASSISTANT (calib->main_window),
2279
gtk_assistant_set_page_complete (GTK_ASSISTANT (priv->main_window),
2270
calib->has_pending_interaction = TRUE;
2281
priv->has_pending_interaction = TRUE;
2307
2318
g_option_context_parse (context, &argc, &argv, NULL);
2308
2319
g_option_context_free (context);
2310
calib = g_new0 (GcmCalibratePriv, 1);
2311
calib->pages = g_ptr_array_new ();
2313
calib->device_id = device_id;
2314
calib->calibrate = gcm_calibrate_argyll_new ();
2315
g_object_set (calib->calibrate,
2321
priv = g_new0 (GcmCalibratePriv, 1);
2322
priv->pages = g_ptr_array_new ();
2324
priv->device_id = device_id;
2325
priv->calibrate = gcm_calibrate_argyll_new ();
2326
g_object_set (priv->calibrate,
2316
2327
"precision", GCM_CALIBRATE_PRECISION_LONG,
2318
calib->device_kind = CD_DEVICE_KIND_UNKNOWN;
2319
g_signal_connect (calib->calibrate, "title-changed",
2320
G_CALLBACK (gcm_calib_title_changed_cb), calib);
2321
g_signal_connect (calib->calibrate, "message-changed",
2322
G_CALLBACK (gcm_calib_message_changed_cb), calib);
2323
g_signal_connect (calib->calibrate, "image-changed",
2324
G_CALLBACK (gcm_calib_image_changed_cb), calib);
2325
g_signal_connect (calib->calibrate, "progress-changed",
2326
G_CALLBACK (gcm_calib_progress_changed_cb), calib);
2327
g_signal_connect (calib->calibrate, "interaction-required",
2328
G_CALLBACK (gcm_calib_interaction_required_cb), calib);
2329
priv->device_kind = CD_DEVICE_KIND_UNKNOWN;
2330
g_signal_connect (priv->calibrate, "title-changed",
2331
G_CALLBACK (gcm_calib_title_changed_cb), priv);
2332
g_signal_connect (priv->calibrate, "message-changed",
2333
G_CALLBACK (gcm_calib_message_changed_cb), priv);
2334
g_signal_connect (priv->calibrate, "image-changed",
2335
G_CALLBACK (gcm_calib_image_changed_cb), priv);
2336
g_signal_connect (priv->calibrate, "progress-changed",
2337
G_CALLBACK (gcm_calib_progress_changed_cb), priv);
2338
g_signal_connect (priv->calibrate, "interaction-required",
2339
G_CALLBACK (gcm_calib_interaction_required_cb), priv);
2330
2341
/* nothing specified */
2331
if (calib->device_id == NULL) {
2342
if (priv->device_id == NULL) {
2332
2343
g_print ("%s\n", _("No device was specified!"));
2336
2347
/* ensure single instance */
2337
calib->application = gtk_application_new ("org.gnome.ColorManager.Calibration", 0);
2338
g_signal_connect (calib->application, "startup",
2339
G_CALLBACK (gcm_calib_startup_cb), calib);
2340
g_signal_connect (calib->application, "activate",
2341
G_CALLBACK (gcm_calib_activate_cb), calib);
2348
priv->application = gtk_application_new ("org.gnome.ColorManager.Calibration", 0);
2349
g_signal_connect (priv->application, "startup",
2350
G_CALLBACK (gcm_calib_startup_cb), priv);
2351
g_signal_connect (priv->application, "activate",
2352
G_CALLBACK (gcm_calib_activate_cb), priv);
2344
status = g_application_run (G_APPLICATION (calib->application), argc, argv);
2355
status = g_application_run (G_APPLICATION (priv->application), argc, argv);
2346
g_ptr_array_unref (calib->pages);
2347
g_object_unref (calib->application);
2348
g_object_unref (calib->calibrate);
2349
if (calib->client != NULL)
2350
g_object_unref (calib->client);
2351
if (calib->device_id != NULL)
2352
g_free (calib->device_id);
2353
if (calib->device != NULL)
2354
g_object_unref (calib->device);
2357
g_ptr_array_unref (priv->pages);
2358
g_object_unref (priv->application);
2359
g_object_unref (priv->calibrate);
2360
if (priv->client != NULL)
2361
g_object_unref (priv->client);
2362
if (priv->device_id != NULL)
2363
g_free (priv->device_id);
2364
if (priv->device != NULL)
2365
g_object_unref (priv->device);