diff options
Diffstat (limited to 'src/plugin.c')
-rw-r--r-- | src/plugin.c | 310 |
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 |