static void gs_editor_startup_cb (GtkApplication *application, GsEditor *self) { GtkTextBuffer *buffer; GtkWidget *main_window; GtkWidget *widget; gboolean ret; guint retval; g_autoptr(GError) error = NULL; /* get UI */ retval = gtk_builder_add_from_resource (self->builder, "/org/gnome/Software/Editor/gs-editor.ui", &error); if (retval == 0) { g_warning ("failed to load ui: %s", error->message); return; } /* load all system appstream */ as_store_set_add_flags (self->store_global, AS_STORE_ADD_FLAG_USE_MERGE_HEURISTIC); ret = as_store_load (self->store_global, AS_STORE_LOAD_FLAG_IGNORE_INVALID | AS_STORE_LOAD_FLAG_APP_INFO_SYSTEM | AS_STORE_LOAD_FLAG_APPDATA | AS_STORE_LOAD_FLAG_DESKTOP, self->cancellable, &error); if (!ret) { g_warning ("failed to load global store: %s", error->message); return; } /* load all the IDs into the completion model */ gs_editor_load_completion_model (self); self->featured_tile1 = gs_feature_tile_new (NULL); self->upgrade_banner = gs_upgrade_banner_new (); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "box_featured")); gtk_container_add (GTK_CONTAINER (widget), self->featured_tile1); gtk_container_add (GTK_CONTAINER (widget), self->upgrade_banner); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "textview_css")); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget)); g_signal_connect (buffer, "changed", G_CALLBACK (gs_design_dialog_buffer_changed_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "flowbox_main")); gtk_flow_box_set_sort_func (GTK_FLOW_BOX (widget), gs_editor_flow_box_sort_cb, self, NULL); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_save")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_save_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_new_feature")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_new_feature_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_new_os_upgrade")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_new_os_upgrade_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_new")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_new_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_remove")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_remove_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_import")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_import_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_back")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_back_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_menu")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_menu_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_notification_dismiss")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_notification_dismiss_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_notification_undo_remove")); g_signal_connect (widget, "clicked", G_CALLBACK (gs_editor_button_undo_remove_clicked_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "checkbutton_editors_pick")); g_signal_connect (widget, "toggled", G_CALLBACK (gs_editor_checkbutton_editors_pick_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "checkbutton_category_featured")); g_signal_connect (widget, "toggled", G_CALLBACK (gs_editor_checkbutton_category_featured_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "entry_desktop_id")); g_signal_connect (widget, "notify::text", G_CALLBACK (gs_editor_entry_desktop_id_notify_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "entry_name")); g_signal_connect (widget, "notify::text", G_CALLBACK (gs_editor_entry_name_notify_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "entry_summary")); g_signal_connect (widget, "notify::text", G_CALLBACK (gs_editor_entry_summary_notify_cb), self); widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "window_main")); g_signal_connect (widget, "delete_event", G_CALLBACK (gs_editor_delete_event_cb), self); /* clear entries */ gs_editor_refresh_choice (self); gs_editor_refresh_details (self); gs_editor_refresh_file (self, NULL); /* set the appropriate page */ gs_editor_set_page (self, "none"); main_window = GTK_WIDGET (gtk_builder_get_object (self->builder, "window_main")); gtk_application_add_window (application, GTK_WINDOW (main_window)); gtk_widget_show (main_window); }
/** * fu_util_verify_all: **/ static gboolean fu_util_verify_all (FuUtilPrivate *priv, GError **error) { AsApp *app; FuDevice *dev; const gchar *tmp; guint i; _cleanup_object_unref_ AsStore *store = NULL; _cleanup_ptrarray_unref_ GPtrArray *devices = NULL; _cleanup_ptrarray_unref_ GPtrArray *devices_tmp = NULL; /* get devices from daemon */ devices_tmp = fu_util_get_devices_internal (priv, error); if (devices_tmp == NULL) return FALSE; /* get results */ for (i = 0; i < devices_tmp->len; i++) { _cleanup_error_free_ GError *error_local = NULL; dev = g_ptr_array_index (devices_tmp, i); if (!fu_util_verify_internal (priv, fu_device_get_id (dev), &error_local)) { g_print ("Failed to verify %s: %s\n", fu_device_get_id (dev), error_local->message); } } /* only load firmware from the system */ store = as_store_new (); as_store_add_filter (store, AS_ID_KIND_FIRMWARE); if (!as_store_load (store, AS_STORE_LOAD_FLAG_APP_INFO_SYSTEM, NULL, error)) return FALSE; /* print */ devices = fu_util_get_devices_internal (priv, error); if (devices == NULL) return FALSE; for (i = 0; i < devices->len; i++) { const gchar *hash = NULL; const gchar *ver = NULL; _cleanup_free_ gchar *status = NULL; dev = g_ptr_array_index (devices, i); hash = fu_device_get_metadata (dev, FU_DEVICE_KEY_FIRMWARE_HASH); if (hash == NULL) continue; app = as_store_get_app_by_id (store, fu_device_get_guid (dev)); if (app == NULL) { status = g_strdup ("No metadata"); } else { AsRelease *rel; ver = fu_device_get_metadata (dev, FU_DEVICE_KEY_VERSION); rel = as_app_get_release (app, ver); if (rel == NULL) { status = g_strdup_printf ("No version %s", ver); } else { tmp = as_release_get_checksum (rel, G_CHECKSUM_SHA1); if (g_strcmp0 (tmp, hash) != 0) { status = g_strdup_printf ("Failed: for v%s expected %s", ver, tmp); } else { status = g_strdup ("OK"); } } } g_print ("%s\t%s\t%s\n", fu_device_get_guid (dev), hash, status); } return TRUE; }