aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugin.c')
-rw-r--r--src/plugin.c310
1 files changed, 3 insertions, 307 deletions
diff --git a/src/plugin.c b/src/plugin.c
index 92488fa..0ea32c6 100644
--- a/src/plugin.c
+++ b/src/plugin.c
@@ -35,15 +35,6 @@
#define g_timeout_add_seconds(interval, function, data) g_timeout_add ((interval) * 1000, function, data)
#endif
-#define PREFS_PROP_SDK_ROOT "sdk.root"
-#define PREFS_PROP_TRIPLET "sdk.triplet"
-#define PREFS_PROP_POKY_ROOT "sdk.poky_root"
-
-#define PREFS_PROP_POKY_MODE "sdk.poky_mode"
-
-#define PREFS_PROP_KERNEL "sdk.kernel"
-#define PREFS_PROP_ROOTFS "sdk.rootfs"
-
#define UI_FILE ANJUTA_DATA_DIR"/ui/anjuta-plugin-sdk.ui"
#define ICON_FILE "anjuta-plugin-sdk.png"
@@ -1716,315 +1707,20 @@ anjuta_plugin_sdk_class_init (GObjectClass *klass)
klass->dispose = anjuta_plugin_sdk_dispose;
}
-static gboolean
-preferences_timeout_cb (gpointer userdata)
-{
- AnjutaPluginSdk *sp = (AnjutaPluginSdk *)userdata;
- gchar *filename;
-
- filename = anjuta_preferences_get (ANJUTA_PREFERENCES (sp->prefs),
- PREFS_PROP_KERNEL);
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (sp->kernel_chooser),
- filename);
- g_free (filename);
-
- filename = anjuta_preferences_get (ANJUTA_PREFERENCES (sp->prefs),
- PREFS_PROP_ROOTFS);
- gtk_file_chooser_set_filename (GTK_FILE_CHOOSER (sp->rootfs_chooser),
- filename);
- g_free (filename);
-
- return FALSE;
-}
-
-static void
-full_radio_toggled_cb (GtkToggleButton *toggle, gpointer userdata)
-{
- gtk_widget_set_sensitive (GTK_WIDGET (userdata),
- gtk_toggle_button_get_active (toggle));
-}
-
-static void
-toolchain_radio_toggled_cb (GtkToggleButton *toggle, gpointer userdata)
-{
- gtk_widget_set_sensitive (GTK_WIDGET (userdata),
- gtk_toggle_button_get_active (toggle));
-}
-
static void
ipreferences_merge (IAnjutaPreferences *ipref, AnjutaPreferences *prefs,
GError **error)
{
AnjutaPluginSdk *sp = (AnjutaPluginSdk *)ipref;
-
- GtkWidget *vbox;
- GtkSizeGroup *opts_labels_group;
- GtkSizeGroup *opts_fields_group;
- GtkSizeGroup *qemu_labels_group;
- GtkSizeGroup *qemu_fields_group;
-
- GtkWidget *frame;
- GtkWidget *inner_vbox;
- GtkWidget *hbox;
- GtkWidget *label;
- GtkWidget *chooser;
- GtkWidget *entry;
- GtkWidget *inner_alignment;
- GtkWidget *qemu_vbox;
-
- GtkWidget *toolchain_radio;
- GtkWidget *full_radio;
-
- gboolean res;
- gchar *filename = NULL;
-
GtkWidget *dialog = NULL;
+ GtkWidget *page = NULL;
dialog = anjuta_preferences_get_dialog (prefs);
-
- /* Create main vbox */
- vbox = gtk_vbox_new (FALSE, 6);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 6);
-
- /* Frame for options */
- frame = gtk_frame_new (_("<b>Cross-compiler Options</b>"));
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 2);
- label = gtk_frame_get_label_widget (GTK_FRAME (frame));
- gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-
- /* size groups for files */
- opts_labels_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- opts_fields_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
-
- /* Pack inner vbox */
- inner_vbox = gtk_vbox_new (FALSE, 6);
- inner_alignment = gtk_alignment_new (0, 0.5, 1, 1);
- g_object_set (inner_alignment, "left-padding", 12, "top-padding", 6, NULL);
- gtk_container_add (GTK_CONTAINER (inner_alignment), inner_vbox);
- gtk_container_add (GTK_CONTAINER (frame), inner_alignment);
-
- /* Radio for external toolchain */
- toolchain_radio = gtk_radio_button_new_with_label (NULL,
- _("Use an external toolchain"));
- gtk_box_pack_start (GTK_BOX (inner_vbox), toolchain_radio, TRUE, FALSE, 0);
-
- /* Widgets for sdk root */
- inner_alignment = gtk_alignment_new (0, 0.5, 1, 1);
- g_object_set (inner_alignment, "left-padding", 24, NULL);
- gtk_box_pack_start (GTK_BOX (inner_vbox), inner_alignment, TRUE, FALSE, 0);
-
- hbox = gtk_hbox_new (FALSE, 6);
- gtk_container_add (GTK_CONTAINER (inner_alignment), hbox);
- g_signal_connect (toolchain_radio, "toggled", (GCallback)toolchain_radio_toggled_cb,
- hbox);
-
- /* label */
- label = gtk_label_new (_("SDK root: "));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
- gtk_size_group_add_widget (opts_labels_group, label);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
- /* chooser */
- chooser = gtk_file_chooser_button_new (_("Select SDK root"),
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
- gtk_size_group_add_widget (opts_fields_group, label);
- gtk_box_pack_start (GTK_BOX (hbox), chooser, TRUE, TRUE, 0);
-
- res = anjuta_preferences_register_property_raw (
- ANJUTA_PREFERENCES (prefs),
- chooser,
- PREFS_PROP_SDK_ROOT,
- NULL,
- 0,
- ANJUTA_PROPERTY_OBJECT_TYPE_FOLDER,
- ANJUTA_PROPERTY_DATA_TYPE_TEXT);
-
- if (!res)
- g_warning ("Error adding preference for SDK root");
-
- /* Radio for poky tree */
- full_radio = gtk_radio_button_new_with_label_from_widget (
- GTK_RADIO_BUTTON (toolchain_radio),
- _("Use a full Poky tree"));
- gtk_box_pack_start (GTK_BOX (inner_vbox), full_radio, TRUE, FALSE, 0);
-
- /* Widgets for full tree */
- inner_alignment = gtk_alignment_new (0, 0.5, 1, 1);
- g_object_set (inner_alignment, "left-padding", 24, NULL);
- gtk_box_pack_start (GTK_BOX (inner_vbox), inner_alignment, TRUE, FALSE, 0);
-
- hbox = gtk_hbox_new (FALSE, 6);
- gtk_container_add (GTK_CONTAINER (inner_alignment), hbox);
- g_signal_connect (full_radio, "toggled", (GCallback)full_radio_toggled_cb,
- hbox);
-
- /* Make the full options insensitive since by default we used external
- * toolchain mode */
- gtk_widget_set_sensitive (hbox, FALSE);
-
- /* label */
- label = gtk_label_new (_("Poky root: "));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
- gtk_size_group_add_widget (opts_labels_group, label);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
- /* chooser */
- chooser = gtk_file_chooser_button_new (_("Select Poky root"),
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
- sp->poky_root_chooser = chooser;
-
- gtk_size_group_add_widget (opts_fields_group, label);
- gtk_box_pack_start (GTK_BOX (hbox), chooser, TRUE, TRUE, 0);
-
- res = anjuta_preferences_register_property_raw (
- ANJUTA_PREFERENCES (prefs),
- chooser,
- PREFS_PROP_POKY_ROOT,
- NULL,
- 0,
- ANJUTA_PROPERTY_OBJECT_TYPE_FOLDER,
- ANJUTA_PROPERTY_DATA_TYPE_TEXT);
-
- if (!res)
- g_warning ("Error adding preference for Poky root");
-
- /* Register a preference for the toggle */
-
- /* This is all a bit of a hack, we register the property on the second one
- * in the group. If the mode is 1 then this gets selected and the world is a
- * happy place. But if this is 0, then the group is in an inconsistent
- * state...Ah, but actually when the widgets are created the first is
- * toggled on by default.
- */
- res = anjuta_preferences_register_property_raw (
- ANJUTA_PREFERENCES (prefs),
- full_radio,
- PREFS_PROP_POKY_MODE,
- NULL,
- 0,
- ANJUTA_PROPERTY_OBJECT_TYPE_TOGGLE,
- ANJUTA_PROPERTY_DATA_TYPE_INT);
-
- if (!res)
- g_warning ("Error adding preference for mode of operation");
-
- /* Widgets for toolchain triplet */
- hbox = gtk_hbox_new (FALSE, 6);
- gtk_box_pack_start (GTK_BOX (inner_vbox), hbox, TRUE, FALSE, 0);
-
- /* label */
- label = gtk_label_new (_("Toolchain triplet: "));
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
- gtk_size_group_add_widget (opts_labels_group, label);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
- /* entry */
- entry = gtk_entry_new ();
- gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
- gtk_size_group_add_widget (opts_fields_group, label);
-
- /* register prop */
- res = anjuta_preferences_register_property_raw (ANJUTA_PREFERENCES (prefs),
- entry,
- PREFS_PROP_TRIPLET,
- NULL,
- 0,
- ANJUTA_PROPERTY_OBJECT_TYPE_ENTRY,
- ANJUTA_PROPERTY_DATA_TYPE_TEXT);
-
- if (!res)
- g_warning ("Error adding preference for triplet");
-
- /* Frame for qemu */
- frame = gtk_frame_new ("<b>QEMU Options</b>");
- gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 2);
- gtk_label_set_use_markup (GTK_LABEL (gtk_frame_get_label_widget (GTK_FRAME (frame))),
- TRUE);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
-
- /* size groups for files */
- qemu_labels_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- qemu_fields_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
-
- /* Pack inner vbox */
- inner_vbox = gtk_vbox_new (FALSE, 6);
- inner_alignment = gtk_alignment_new (0, 0.5, 1, 1);
- g_object_set (inner_alignment, "left-padding", 12, "top-padding", 6, NULL);
- gtk_container_add (GTK_CONTAINER (inner_alignment), inner_vbox);
- gtk_container_add (GTK_CONTAINER (frame), inner_alignment);
-
- /* Widgets for kernel */
- hbox = gtk_hbox_new (FALSE, 6);
- gtk_box_pack_start (GTK_BOX (inner_vbox), hbox, TRUE, FALSE, 0);
-
- /* label */
- label = gtk_label_new ("Kernel: ");
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
- gtk_size_group_add_widget (qemu_labels_group, label);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
- /* chooser */
- chooser = gtk_file_chooser_button_new (_("Select kernel file"), GTK_FILE_CHOOSER_ACTION_OPEN);
- gtk_box_pack_start (GTK_BOX (hbox), chooser, TRUE, TRUE, 0);
- gtk_size_group_add_widget (qemu_fields_group, chooser);
-
- anjuta_preferences_register_property_raw (
- ANJUTA_PREFERENCES (prefs),
- chooser,
- PREFS_PROP_KERNEL,
- NULL,
- 0,
- ANJUTA_PROPERTY_OBJECT_TYPE_FILE,
- ANJUTA_PROPERTY_DATA_TYPE_TEXT);
-
- sp->kernel_chooser = chooser;
-
- /* Widgets for rootfs */
- hbox = gtk_hbox_new (FALSE, 6);
- gtk_box_pack_start (GTK_BOX (inner_vbox), hbox, TRUE, FALSE, 0);
-
- /* label */
- label = gtk_label_new ("Root filesystem: ");
- gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
- gtk_size_group_add_widget (qemu_labels_group, label);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-
- /* chooser */
- chooser = gtk_file_chooser_button_new (_("Select root filesystem file"),
- GTK_FILE_CHOOSER_ACTION_OPEN);
- gtk_box_pack_start (GTK_BOX (hbox), chooser, TRUE, TRUE, 0);
- gtk_size_group_add_widget (qemu_fields_group, chooser);
- sp->rootfs_chooser = chooser;
-
- anjuta_preferences_register_property_raw (
- ANJUTA_PREFERENCES (prefs),
- chooser,
- PREFS_PROP_ROOTFS,
- NULL,
- 0,
- ANJUTA_PROPERTY_OBJECT_TYPE_FILE,
- ANJUTA_PROPERTY_DATA_TYPE_TEXT);
-
- /* add page */
- gtk_widget_show_all (vbox);
-
+ page = beaver_settings_page_new (ANJUTA_PLUGIN (sp)->shell);
anjuta_preferences_dialog_add_page (ANJUTA_PREFERENCES_DIALOG (dialog),
_("Poky SDK"), _("Poky SDK"),
sp->prefs_icon,
- vbox);
-
- /*
- * This is a horrible hack around some kind of race condition that seems to
- * mean that the GtkFileChooserButton doesn't reflect the filename it is
- * given by the prefences code in Anjuta. Even if it just gets set here it
- * isn't guaranteed to work. This is the best option i've come up with.
- *
- * After 800ms fire a timeout that reads the values for the preferences and
- * then sets the widgets. It only needs to be done for those that are of
- * ANJUTA_PROPERTY_OBJECT_TYPE_FILE type.
- */
- g_timeout_add (800, preferences_timeout_cb, sp);
+ page);
}
static void