[gnome-builder] plugins/buildui: start on runtime selection
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] plugins/buildui: start on runtime selection
- Date: Sat, 16 Jul 2022 06:12:50 +0000 (UTC)
commit e8bba0cb375ba10b1b6fff754db6b48c1858f301
Author: Christian Hergert <chergert redhat com>
Date: Fri Jul 15 23:12:45 2022 -0700
plugins/buildui: start on runtime selection
Still needs something to make the initial label in sync.
.../buildui/gbp-buildui-preferences-addin.c | 67 ++++++++++++++++++++++
1 file changed, 67 insertions(+)
---
diff --git a/src/plugins/buildui/gbp-buildui-preferences-addin.c
b/src/plugins/buildui/gbp-buildui-preferences-addin.c
index fb5608b4e..923eea3e4 100644
--- a/src/plugins/buildui/gbp-buildui-preferences-addin.c
+++ b/src/plugins/buildui/gbp-buildui-preferences-addin.c
@@ -162,6 +162,68 @@ add_entry_row (AdwPreferencesGroup *group,
adw_preferences_group_add (group, row);
}
+static gboolean
+runtime_filter_func (gpointer item,
+ gpointer user_data)
+{
+ IdeRuntime *runtime = item;
+ IdeConfig *config = user_data;
+
+ return ide_config_supports_runtime (config, runtime);
+}
+
+static void
+add_runtiem_row (AdwPreferencesGroup *group,
+ IdeRuntimeManager *runtime_manager,
+ IdeConfig *config)
+{
+ g_autoptr(GtkFilterListModel) model = NULL;
+ g_autoptr(GtkCustomFilter) filter = NULL;
+ g_autoptr(GtkExpression) expression = NULL;
+ const char *runtime_id;
+ GtkWidget *row;
+ guint n_items;
+
+ g_assert (ADW_IS_PREFERENCES_GROUP (group));
+ g_assert (IDE_IS_RUNTIME_MANAGER (runtime_manager));
+ g_assert (IDE_IS_CONFIG (config));
+
+ filter = gtk_custom_filter_new (runtime_filter_func,
+ g_object_ref (config),
+ g_object_unref);
+ model = gtk_filter_list_model_new (g_object_ref (G_LIST_MODEL (runtime_manager)),
+ g_object_ref (GTK_FILTER (filter)));
+ expression = gtk_property_expression_new (IDE_TYPE_RUNTIME, NULL, "display-name");
+ runtime_id = ide_config_get_runtime_id (config);
+
+ row = g_object_new (ADW_TYPE_COMBO_ROW,
+ "title", _("Runtime"),
+ "subtitle", _("The runtime is the environment used to run your application."),
+ "expression", expression,
+ NULL);
+
+ n_items = g_list_model_get_n_items (G_LIST_MODEL (model));
+
+ for (guint i = 0; i < n_items; i++)
+ {
+ g_autoptr(IdeRuntime) runtime = g_list_model_get_item (G_LIST_MODEL (model), i);
+ const char *id = ide_runtime_get_id (runtime);
+
+ if (g_strcmp0 (runtime_id, id) == 0)
+ {
+ adw_combo_row_set_selected (ADW_COMBO_ROW (row), i);
+ break;
+ }
+ }
+
+ /* TODO: need to get the title in sync initially */
+
+ g_object_bind_property (row, "selected-item", config, "runtime", 0);
+
+ adw_combo_row_set_model (ADW_COMBO_ROW (row), G_LIST_MODEL (model));
+ adw_preferences_group_add (group, row);
+}
+
static void
create_general_widgetry (const char *page_name,
const IdePreferenceItemEntry *entry,
@@ -172,6 +234,7 @@ create_general_widgetry (const char *page_name,
IdeConfig *config = user_data;
IdeConfigManager *config_manager;
IdeBuildSystem *build_system;
+ IdeRuntimeManager *runtime_manager;
IdeContext *context;
GtkWidget *box;
static const struct {
@@ -207,6 +270,7 @@ create_general_widgetry (const char *page_name,
add_description_row (group, _("Name"), ide_config_get_display_name (config));
add_description_row (group, _("Source Directory"), g_file_peek_path (workdir));
add_description_row (group, _("Build System"), ide_build_system_get_display_name (build_system));
+
/* Translators: "Install" is a noun here */
add_entry_row (group, _("Install Prefix"), config, "prefix");
/* Translators: "Configure" is a noun here */
@@ -214,6 +278,9 @@ create_general_widgetry (const char *page_name,
/* Translators: "Run" is a noun here, this string is analogous to "Execution Options" */
add_entry_row (group, _("Run Options"), config, "run-opts");
+ runtime_manager = ide_runtime_manager_from_context (context);
+ add_runtiem_row (group, runtime_manager, config);
+
config_manager = ide_config_manager_from_context (context);
gtk_widget_insert_action_group (GTK_WIDGET (group),
"config-manager",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]