643
643
ar_card_themes_install_themes (ArCardThemes *theme_manager,
644
GtkWindow *parent_window,
644
GtkWidget *parent_window,
647
static const char *formats[] = {
648
#ifdef ENABLE_CARD_THEME_FORMAT_SVG
651
#ifdef ENABLE_CARD_THEME_FORMAT_KDE
654
#ifdef ENABLE_CARD_THEME_FORMAT_PYSOL
661
648
GDBusConnection *connection;
662
649
GVariantBuilder builder;
664
650
GError *error = NULL;
652
path = ar_runtime_get_file (AR_RUNTIME_PKG_DATA_DIRECTORY, "aisleriot.catalog");
654
/* The gnome-packagekit DBUS API is broken */
655
if (!g_utf8_validate (path, -1, NULL)) {
657
g_warning ("Borked! Cannot call InstallCatalogs with non-UTF-8 path!\n");
666
661
connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
667
662
if (connection == NULL) {
668
663
ar_debug_print (AR_DEBUG_CARD_THEME,
669
"Failed to get the session bus: %s\n",
664
"Failed to get the session bus: %s\n",
671
666
g_error_free (error);
675
key_file = g_key_file_new ();
676
path = ar_runtime_get_file (AR_RUNTIME_PKG_DATA_DIRECTORY, "theme-install.ini");
677
if (!g_key_file_load_from_file (key_file, path, 0, NULL)) {
679
g_key_file_free (key_file);
680
g_object_unref (connection);
685
671
g_variant_builder_init (&builder, G_VARIANT_TYPE ("(uass)"));
687
673
#ifdef GDK_WINDOWING_X11
675
GDK_IS_X11_DISPLAY (gtk_widget_get_display (parent_window))) {
689
676
g_variant_builder_add (&builder, "u",
690
(guint) GDK_WINDOW_XID (gtk_widget_get_window (GTK_WIDGET (parent_window))));
677
(guint) GDK_WINDOW_XID (gtk_widget_get_window (parent_window)));
693
680
g_variant_builder_add (&builder, "u", (guint) 0);
695
682
g_variant_builder_open (&builder, G_VARIANT_TYPE ("as"));
697
/* If there's a group for the specific distribution, use that one, or
698
* otherwise the generic one. E.g.:
699
* If "Ubuntu 8.10" group exists, use it, else fallback to "Ubuntu" group.
701
for (i = 0; formats[i] != NULL; ++i) {
705
packages = g_key_file_get_string_list (key_file, LSB_DISTRIBUTION, formats[i], &n_packages, NULL);
706
if (packages == NULL)
707
packages = g_key_file_get_string_list (key_file, LSB_DISTRIBUTOR, formats[i], &n_packages, NULL);
708
if (packages == NULL)
711
for (j = 0; j < n_packages; ++j) {
712
g_variant_builder_add (&builder, "s", packages[j]);
713
ar_debug_print (AR_DEBUG_CARD_THEME, "Requesting pkg '%s'\n",
717
g_strfreev (packages);
720
g_key_file_free (key_file);
683
g_variant_builder_add (&builder, "s", path);
722
684
g_variant_builder_close (&builder);
723
687
g_variant_builder_add (&builder, "s", "hide-confirm-search" ","
724
688
"show-confirm-install" ","
728
692
"org.freedesktop.PackageKit",
729
693
"/org/freedesktop/PackageKit",
730
694
"org.freedesktop.PackageKit.Modify",
731
"InstallPackageNames",
732
696
g_variant_builder_end (&builder),
733
697
G_VARIANT_TYPE ("()"),
734
698
G_DBUS_CALL_FLAGS_NONE,
735
699
G_MAXINT /* no timeout */,
700
NULL /* cancellable */,
737
701
(GAsyncReadyCallback) theme_install_reply_cb,
738
702
g_object_ref (theme_manager));