/** * main: **/ int main (int argc, char *argv[]) { gboolean ret; gint status = 1; GOptionContext *context; GtkApplication *application = NULL; const GOptionEntry options[] = { { "filter", 'f', 0, G_OPTION_ARG_STRING, &filter, /* TRANSLATORS: preset the GtktextBox with this filter text */ N_("Set the filter to this value"), NULL }, { "parent-window", 'p', 0, G_OPTION_ARG_INT, &xid, /* TRANSLATORS: we can make this modal (stay on top of) another window */ _("Set the parent window to make this modal"), NULL }, { NULL} }; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); gtk_init (&argc, &argv); context = g_option_context_new (NULL); g_option_context_set_summary (context, _("Software Log Viewer")); g_option_context_add_main_entries (context, options, NULL); g_option_context_add_group (context, gpk_debug_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); /* are we running privileged */ ret = gpk_check_privileged_user (_("Log viewer"), TRUE); if (!ret) goto out; /* add application specific icons to search path */ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), GPK_DATA G_DIR_SEPARATOR_S "icons"); /* are we already activated? */ application = gtk_application_new ("org.freedesktop.PackageKit.LogViewer", 0); g_signal_connect (application, "startup", G_CALLBACK (gpk_log_startup_cb), NULL); g_signal_connect (application, "activate", G_CALLBACK (gpk_log_activate_cb), NULL); /* run */ status = g_application_run (G_APPLICATION (application), argc, argv); out: if (builder != NULL) g_object_unref (builder); if (application != NULL) g_object_unref (application); return status; }
/** * main: **/ int main (int argc, char *argv[]) { GOptionContext *context; gboolean ret; GError *error = NULL; gchar **files = NULL; gchar *tmp; gchar *current_dir; guint i; DBusGConnection *connection; DBusGProxy *proxy = NULL; const GOptionEntry options[] = { { G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &files, /* TRANSLATORS: command line option: a list of files to install */ _("Files to install"), NULL }, { NULL} }; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); gtk_init (&argc, &argv); /* TRANSLATORS: program name: application to install a package to provide a file */ g_set_application_name (_("Software Install")); context = g_option_context_new ("gpk-install-local-file"); g_option_context_set_summary (context, _("PackageKit File Installer")); g_option_context_add_main_entries (context, options, NULL); g_option_context_add_group (context, gpk_debug_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); /* TRANSLATORS: title to pass to to the user if there are not enough privs */ ret = gpk_check_privileged_user (_("Local file installer"), TRUE); if (!ret) goto out; if (files == NULL) { /* TRANSLATORS: could not install a package that contained the file we wanted */ gpk_error_dialog (_("Failed to install a package to provide a file"), /* TRANSLATORS: nothing selected */ _("You need to specify a file to install"), NULL); goto out; } /* make sure we don't pass relative paths to the session-interface */ /* (this is needed if install-local-files is executed from the command-line) */ current_dir = g_get_current_dir (); for (i = 0; files[i] != NULL; i++) { if (!g_str_has_prefix (files[i], "/")) { tmp = g_build_filename (current_dir, files[i], NULL); g_free (files[i]); files[i] = tmp; } } g_free (current_dir); /* check dbus connections, exit if not valid */ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); if (connection == NULL) { g_warning ("%s", error->message); goto out; } /* get a connection */ proxy = dbus_g_proxy_new_for_name (connection, "org.freedesktop.PackageKit", "/org/freedesktop/PackageKit", "org.freedesktop.PackageKit.Modify"); if (proxy == NULL) { g_warning ("Cannot connect to session service"); goto out; } /* don't timeout, as dbus-glib sets the timeout ~25 seconds */ dbus_g_proxy_set_default_timeout (proxy, INT_MAX); /* do method */ ret = dbus_g_proxy_call (proxy, "InstallPackageFiles", &error, G_TYPE_UINT, 0, /* xid */ G_TYPE_STRV, files, /* data */ G_TYPE_STRING, "hide-finished,show-warnings", /* interaction */ G_TYPE_INVALID, G_TYPE_INVALID); if (!ret) { g_warning ("%s", error->message); goto out; } out: if (error != NULL) g_error_free (error); if (proxy != NULL) g_object_unref (proxy); g_strfreev (files); return !ret; }
/** * main: **/ int main (int argc, char *argv[]) { GOptionContext *context; GConfClient *gconf_client; GtkWidget *widget; GtkTreeSelection *selection; GtkEntryCompletion *completion; UniqueApp *unique_app; gboolean ret; guint retval; guint xid = 0; GError *error = NULL; const GOptionEntry options[] = { { "filter", 'f', 0, G_OPTION_ARG_STRING, &filter, /* TRANSLATORS: preset the GtktextBox with this filter text */ N_("Set the filter to this value"), NULL }, { "parent-window", 'p', 0, G_OPTION_ARG_INT, &xid, /* TRANSLATORS: we can make this modal (stay on top of) another window */ _("Set the parent window to make this modal"), NULL }, { NULL} }; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); if (! g_thread_supported ()) g_thread_init (NULL); g_type_init (); gtk_init (&argc, &argv); context = g_option_context_new (NULL); g_option_context_set_summary (context, _("Software Log Viewer")); g_option_context_add_main_entries (context, options, NULL); g_option_context_add_group (context, egg_debug_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); /* are we running privileged */ ret = gpk_check_privileged_user (_("Log viewer"), TRUE); if (!ret) return 1; /* are we already activated? */ unique_app = unique_app_new ("org.freedesktop.PackageKit.LogViewer", NULL); if (unique_app_is_running (unique_app)) { egg_debug ("You have another instance running. This program will now close"); unique_app_send_message (unique_app, UNIQUE_ACTIVATE, NULL); goto unique_out; } g_signal_connect (unique_app, "message-received", G_CALLBACK (gpk_log_message_received_cb), NULL); /* add application specific icons to search path */ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), GPK_DATA G_DIR_SEPARATOR_S "icons"); client = pk_client_new (); g_object_set (client, "background", FALSE, NULL); /* get UI */ builder = gtk_builder_new (); retval = gtk_builder_add_from_file (builder, GPK_DATA "/gpk-log.ui", &error); if (retval == 0) { egg_warning ("failed to load ui: %s", error->message); g_error_free (error); goto out_build; } widget = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_simple")); gtk_window_set_icon_name (GTK_WINDOW (widget), GPK_ICON_SOFTWARE_LOG); /* set a size, if the screen allows */ gpk_window_set_size_request (GTK_WINDOW (widget), 900, 300); /* if command line arguments are set, then setup UI */ if (filter != NULL) { widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_package")); gtk_entry_set_text (GTK_ENTRY(widget), filter); } /* Get the main window quit */ g_signal_connect_swapped (widget, "delete_event", G_CALLBACK (gtk_main_quit), NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_close")); g_signal_connect_swapped (widget, "clicked", G_CALLBACK (gtk_main_quit), NULL); gtk_widget_grab_default (widget); widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_help")); g_signal_connect (widget, "clicked", G_CALLBACK (gpk_log_button_help_cb), NULL); widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_refresh")); g_signal_connect (widget, "clicked", G_CALLBACK (gpk_log_button_refresh_cb), NULL); gtk_widget_hide (widget); widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_filter")); g_signal_connect (widget, "clicked", G_CALLBACK (gpk_log_button_filter_cb), NULL); /* hit enter in the search box for filter */ widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_package")); g_signal_connect (widget, "activate", G_CALLBACK (gpk_log_button_filter_cb), NULL); /* autocompletion can be turned off as it's slow */ gconf_client = gconf_client_get_default (); ret = gconf_client_get_bool (gconf_client, GPK_CONF_AUTOCOMPLETE, NULL); if (ret) { /* create the completion object */ completion = gpk_package_entry_completion_new (); widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_package")); gtk_entry_set_completion (GTK_ENTRY (widget), completion); g_object_unref (completion); } else { /* use search as you type */ g_signal_connect (widget, "key-release-event", G_CALLBACK (gpk_log_entry_filter_cb), NULL); } g_object_unref (gconf_client); /* create list stores */ list_store = gtk_list_store_new (GPK_LOG_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); /* create transaction_id tree view */ widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_simple")); gtk_tree_view_set_model (GTK_TREE_VIEW (widget), GTK_TREE_MODEL (list_store)); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget)); g_signal_connect (selection, "changed", G_CALLBACK (gpk_log_treeview_clicked_cb), NULL); /* add columns to the tree view */ pk_treeview_add_general_columns (GTK_TREE_VIEW (widget)); gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget)); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store), GPK_LOG_COLUMN_TIMESPEC, GTK_SORT_DESCENDING); /* show */ widget = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_simple")); gtk_widget_show (widget); /* set the parent window if it is specified */ if (xid != 0) { egg_debug ("Setting xid %i", xid); gpk_window_set_parent_xid (GTK_WINDOW (widget), xid); } /* get the update list */ gpk_log_refresh (); gtk_main (); out_build: g_object_unref (builder); g_object_unref (list_store); g_object_unref (client); g_free (transaction_id); g_free (filter); if (transactions != NULL) g_ptr_array_unref (transactions); unique_out: g_object_unref (unique_app); return 0; }
/** * main: **/ int main (int argc, char *argv[]) { gboolean program_version = FALSE; gboolean timed_exit = FALSE; GpkCheckUpdate *cupdate = NULL; GpkWatch *watch = NULL; GpkFirmware *firmware = NULL; GpkHardware *hardware = NULL; GOptionContext *context; UniqueApp *unique_app; gboolean ret; const GOptionEntry options[] = { { "timed-exit", '\0', 0, G_OPTION_ARG_NONE, &timed_exit, _("Exit after a small delay"), NULL }, { "version", '\0', 0, G_OPTION_ARG_NONE, &program_version, _("Show the program version and exit"), NULL }, { NULL} }; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); if (! g_thread_supported ()) g_thread_init (NULL); g_type_init (); gtk_init (&argc, &argv); dbus_g_thread_init (); notify_init ("gpk-update-icon"); /* TRANSLATORS: program name, a session wide daemon to watch for updates and changing system state */ g_set_application_name (_("Update Applet")); context = g_option_context_new (NULL); g_option_context_set_summary (context, _("Update Applet")); g_option_context_add_main_entries (context, options, NULL); g_option_context_add_group (context, egg_debug_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); if (program_version) { g_print (VERSION "\n"); return 0; } /* TRANSLATORS: title to pass to to the user if there are not enough privs */ ret = gpk_check_privileged_user (_("Update applet"), FALSE); if (!ret) { egg_warning ("Exit: gpk_check_privileged_user returned FALSE"); return 1; } /* are we already activated? */ unique_app = unique_app_new ("org.freedesktop.PackageKit.UpdateIcon", NULL); if (unique_app_is_running (unique_app)) { egg_debug ("You have another instance running. This program will now close"); unique_app_send_message (unique_app, UNIQUE_ACTIVATE, NULL); goto unique_out; } /* add application specific icons to search path */ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), GPK_DATA G_DIR_SEPARATOR_S "icons"); /* create new objects */ cupdate = gpk_check_update_new (); watch = gpk_watch_new (); firmware = gpk_firmware_new (); hardware = gpk_hardware_new (); /* Only timeout if we have specified iton the command line */ if (timed_exit) g_timeout_add_seconds (120, (GSourceFunc) gtk_main_quit, NULL); /* wait */ gtk_main (); g_object_unref (cupdate); g_object_unref (watch); g_object_unref (firmware); g_object_unref (hardware); unique_out: g_object_unref (unique_app); return 0; }
/** * main: **/ int main (int argc, char *argv[]) { gboolean program_version = FALSE; GpkUpdateViewer *update_viewer = NULL; GOptionContext *context; UniqueApp *unique_app; gboolean ret; const GOptionEntry options[] = { { "version", '\0', 0, G_OPTION_ARG_NONE, &program_version, /* TRANSLATORS: show the program version */ _("Show the program version and exit"), NULL }, { NULL} }; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); if (! g_thread_supported ()) g_thread_init (NULL); dbus_g_thread_init (); g_type_init (); gtk_init (&argc, &argv); context = g_option_context_new (NULL); g_option_context_set_summary (context, _("Add/Remove Software")); g_option_context_add_main_entries (context, options, NULL); g_option_context_add_group (context, egg_debug_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); if (program_version) { g_print (VERSION "\n"); return 0; } /* add application specific icons to search path */ gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (), GPK_DATA G_DIR_SEPARATOR_S "icons"); /* TRANSLATORS: title to pass to to the user if there are not enough privs */ ret = gpk_check_privileged_user (_("Software Update Viewer"), TRUE); if (!ret) return 1; /* are we already activated? */ unique_app = unique_app_new ("org.freedesktop.PackageKit.UpdateViewer", NULL); if (unique_app_is_running (unique_app)) { egg_debug ("You have another instance running. This program will now close"); unique_app_send_message (unique_app, UNIQUE_ACTIVATE, NULL); goto unique_out; } /* create a new update_viewer object */ update_viewer = gpk_update_viewer_new (); g_signal_connect (unique_app, "message-received", G_CALLBACK (gpk_update_viewer_message_received_cb), update_viewer); g_signal_connect (update_viewer, "action-close", G_CALLBACK (gpk_update_viewer_close_cb), NULL); /* wait */ gtk_main (); g_object_unref (update_viewer); unique_out: g_object_unref (unique_app); return 0; }
/** * main: **/ int main (int argc, char *argv[]) { GOptionContext *context; gboolean ret; GError *error = NULL; DBusGConnection *connection; DBusGProxy *proxy = NULL; gchar **files = NULL; const GOptionEntry options[] = { { G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &files, /* TRANSLATORS: command line option: a list of files to install */ _("Local files to install"), NULL }, { NULL} }; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); if (! g_thread_supported ()) g_thread_init (NULL); g_type_init (); gtk_init (&argc, &argv); /* TRANSLATORS: program name, an application to install a file that is needed by an application and is provided by packages */ g_set_application_name (_("Single File Installer")); context = g_option_context_new ("gpk-install-provide-file"); g_option_context_set_summary (context, _("Single File Installer")); g_option_context_add_main_entries (context, options, NULL); g_option_context_add_group (context, egg_debug_get_option_group ()); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, &argc, &argv, NULL); g_option_context_free (context); /* TRANSLATORS: application name to pass to to the user if there are not enough privs */ ret = gpk_check_privileged_user (_("Single File Installer"), TRUE); if (!ret) goto out; if (files == NULL) { /* TRANSLATORS: nothing done */ gpk_error_dialog (_("Failed to install a package to provide a file"), /* TRANSLATORS: nothig was specified */ _("You need to specify a filename to install"), NULL); goto out; } /* check dbus connections, exit if not valid */ connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); if (connection == NULL) { egg_warning ("%s", error->message); goto out; } /* get a connection */ proxy = dbus_g_proxy_new_for_name (connection, "org.freedesktop.PackageKit", "/org/freedesktop/PackageKit", "org.freedesktop.PackageKit.Modify"); if (proxy == NULL) { egg_warning ("Cannot connect to session service"); goto out; } /* don't timeout, as dbus-glib sets the timeout ~25 seconds */ dbus_g_proxy_set_default_timeout (proxy, INT_MAX); /* do method */ ret = dbus_g_proxy_call (proxy, "InstallProvideFiles", &error, G_TYPE_UINT, 0, /* xid */ G_TYPE_STRV, files, /* data */ G_TYPE_STRING, "hide-finished,hide-warnings", /* interaction */ G_TYPE_INVALID, G_TYPE_INVALID); if (!ret && !gpk_ignore_session_error (error)) { /* TRANSLATORS: This is when the specified DBus method did not execute successfully */ gpk_error_dialog (_("The action could not be completed"), /* TRANSLATORS: we don't have anything more useful to translate. sorry. */ _("The request failed. More details are available in the detailed report."), error->message); egg_warning ("%s", error->message); goto out; } out: if (error != NULL) g_error_free (error); if (proxy != NULL) g_object_unref (proxy); g_strfreev (files); return !ret; }