static void mpl_entry_init (MplEntry *self) { MplEntryPrivate *priv; ClutterActor *text; self->priv = priv = MPL_ENTRY_GET_PRIVATE (self); priv->entry = mx_entry_new (); clutter_actor_add_child (CLUTTER_ACTOR (self), priv->entry); mx_stylable_set_style_class (MX_STYLABLE (priv->entry), "MplEntryEntry"); text = mx_entry_get_clutter_text (MX_ENTRY (priv->entry)); clutter_text_set_single_line_mode (CLUTTER_TEXT (text), TRUE); g_signal_connect (text, "text-changed", G_CALLBACK (text_changed_cb), self); priv->table = CLUTTER_ACTOR (mx_table_new ()); clutter_actor_add_child (CLUTTER_ACTOR (self), priv->table); priv->clear_button = CLUTTER_ACTOR (mx_button_new ()); clutter_actor_hide (priv->clear_button); mx_table_insert_actor (MX_TABLE (priv->table), priv->clear_button, 0, 0); mx_stylable_set_style_class (MX_STYLABLE (priv->clear_button), "MplEntryClearButton"); set_clear_button_size (priv->clear_button); g_signal_connect (priv->clear_button, "clicked", G_CALLBACK (clear_button_clicked_cb), self); priv->search_button = CLUTTER_ACTOR (mx_button_new ()); mx_table_insert_actor (MX_TABLE (priv->table), priv->search_button, 0, 1); mx_stylable_set_style_class (MX_STYLABLE (priv->search_button), "MplEntryButton"); g_signal_connect (priv->search_button, "clicked", G_CALLBACK (search_button_clicked_cb), self); }
void entry_main (ClutterContainer *stage) { ClutterActor *entry, *button, *clear_button; entry = mx_entry_new_with_text ("Hello World!"); clutter_actor_set_position (entry, 20, 20); clutter_actor_set_width (entry, 150); clutter_container_add_actor (stage, entry); clutter_stage_set_key_focus (CLUTTER_STAGE (clutter_actor_get_stage (entry)), mx_entry_get_clutter_text (MX_ENTRY (entry))); entry = mx_entry_new (); clutter_actor_set_position (entry, 20, 70); clutter_container_add_actor (stage, entry); mx_entry_set_hint_text (MX_ENTRY (entry), "hint hint..."); #ifdef HAVE_CLUTTER_IMCONTEXT clutter_imtext_set_autoshow_im (CLUTTER_IMTEXT (mx_entry_get_clutter_text (MX_ENTRY (entry))), TRUE); #else g_debug ("Input method support is disabled"); #endif g_signal_connect (G_OBJECT (entry), "notify::text", G_CALLBACK (text_changed_cb), NULL); button = mx_button_new_with_label ("Set"); clutter_actor_set_position (button, 20, 120); g_signal_connect (button, "clicked", G_CALLBACK (btn_clicked_cb), entry); clear_button = mx_button_new_with_label ("clear"); clutter_actor_set_position (clear_button, 70, 120); g_signal_connect (clear_button, "clicked", G_CALLBACK (clear_btn_clicked_cb), entry); clutter_container_add (stage, button, clear_button, NULL); entry = mx_entry_new (); clutter_actor_set_position (entry, 20, 170); clutter_container_add_actor (stage, entry); mx_entry_set_hint_text (MX_ENTRY (entry), "Search..."); mx_entry_set_primary_icon_from_file (MX_ENTRY (entry), "edit-find.png"); mx_entry_set_secondary_icon_from_file (MX_ENTRY (entry), "edit-clear.png"); mx_entry_set_icon_highlight_suffix (MX_ENTRY (entry), "-highlight"); mx_entry_set_secondary_icon_tooltip_text (MX_ENTRY (entry), "one"); mx_entry_set_primary_icon_tooltip_text (MX_ENTRY (entry), "two"); g_signal_connect (entry, "primary-icon-clicked", G_CALLBACK (print_notice), "primary icon clicked\n"); g_signal_connect (entry, "secondary-icon-clicked", G_CALLBACK (print_notice), "secondary icon clicked\n"); entry = mx_entry_new (); clutter_actor_set_position (entry, 20, 220); clutter_container_add_actor (stage, entry); mx_entry_set_hint_text (MX_ENTRY (entry), "Secret!"); mx_entry_set_password_char (MX_ENTRY (entry), 0x2022); }
void scroll_grid_main (ClutterContainer *stage) { ClutterActor *scroll, *grid, *table, *label, *visible_entry, *stride_entry; int i; scroll = mx_scroll_view_new (); clutter_container_add_actor (stage, scroll); clutter_actor_set_position (scroll, 10, 10); clutter_actor_set_size (scroll, 400, 400); grid = mx_grid_new (); clutter_container_add_actor (CLUTTER_CONTAINER (scroll), grid); for (i = 1; i <= 200; i++) { ClutterActor *button; gchar *text; text = g_strdup_printf ("Button %d", i); button = mx_button_new_with_label (text); clutter_container_add_actor (CLUTTER_CONTAINER (grid), button); mx_widget_set_tooltip_text (MX_WIDGET (button), "test"); if (i == 1) g_signal_connect (button, "clicked", G_CALLBACK (swap_orientation), grid); g_free (text); } table = mx_table_new (); label = mx_label_new_with_text ("Make button visible:"); visible_entry = mx_entry_new (); mx_table_insert_actor_with_properties (MX_TABLE (table), label, 0, 0, "x-expand", FALSE, NULL); mx_table_insert_actor (MX_TABLE (table), visible_entry, 0, 1); label = mx_label_new_with_text ("Set max-stride:"); stride_entry = mx_entry_new (); mx_table_insert_actor_with_properties (MX_TABLE (table), label, 1, 0, "x-expand", FALSE, NULL); mx_table_insert_actor (MX_TABLE (table), stride_entry, 1, 1); clutter_actor_set_position (table, 10, 420); clutter_actor_set_width (table, 400); clutter_container_add_actor (stage, table); g_signal_connect (mx_entry_get_clutter_text (MX_ENTRY (visible_entry)), "activate", G_CALLBACK (ensure_visible), grid); g_signal_connect (mx_entry_get_clutter_text (MX_ENTRY (stride_entry)), "activate", G_CALLBACK (set_max_stride), grid); }
static void mex_search_plugin_init (MexSearchPlugin *self) { MexProxy *suggest_proxy; ClutterActor *icon, *header, *text, *frame, *box, *hbox; MexSearchPluginPrivate *priv = self->priv = SEARCH_PLUGIN_PRIVATE (self); /* Load style data */ mx_style_load_from_file (mx_style_get_default (), PLUGIN_DATA_DIR "/style.css", NULL); /* Create the history model and models list */ priv->history_model = mex_feed_new (_("Search"), _("Search")); priv->model_info = mex_model_info_new_with_sort_funcs (MEX_MODEL (priv->history_model), "search", 0); g_object_unref (priv->history_model); priv->models = g_list_append (NULL, priv->model_info); /* Create the actions list */ memset (&priv->action_info, 0, sizeof (MexActionInfo)); priv->action_info.action = mx_action_new_full ("x-mex/search", _("Search"), G_CALLBACK (mex_search_plugin_history_cb), self); priv->action_info.mime_types = (gchar **)search_mimetypes; priv->actions = g_list_append (NULL, &priv->action_info); /* Create the suggestions model */ priv->suggest_model = mex_feed_new (_("Suggestions"), _("Google Suggestions")); /* Create the search page */ /* Create header */ icon = mx_icon_new (); mx_stylable_set_style_class (MX_STYLABLE (icon), "Search"); header = mx_box_layout_new (); mx_box_layout_set_spacing (MX_BOX_LAYOUT (header), 5); clutter_actor_set_name (header, "search-header"); /* Create search entry */ frame = mx_table_new (); clutter_actor_set_name (frame, "search-entry-frame"); priv->search_entry = mx_entry_new (); priv->spinner = mx_spinner_new (); mx_table_add_actor (MX_TABLE (frame), priv->search_entry, 0, 0); mx_table_add_actor (MX_TABLE (frame), priv->spinner, 0, 1); mx_table_child_set_x_fill (MX_TABLE (frame), priv->spinner, FALSE); mx_table_child_set_x_expand (MX_TABLE (frame), priv->spinner, FALSE); mx_table_child_set_y_fill (MX_TABLE (frame), priv->spinner, FALSE); mx_spinner_set_animating (MX_SPINNER (priv->spinner), FALSE); clutter_actor_hide (priv->spinner); clutter_container_add (CLUTTER_CONTAINER (header), icon, frame, NULL); clutter_container_child_set (CLUTTER_CONTAINER (header), icon, "x-fill", FALSE, "y-fill", FALSE, NULL); clutter_container_child_set (CLUTTER_CONTAINER (header), frame, "expand", TRUE, "x-fill", TRUE, NULL); text = mx_entry_get_clutter_text (MX_ENTRY (priv->search_entry)); g_signal_connect_swapped (text, "activate", G_CALLBACK (mex_search_plugin_search_cb), self); g_signal_connect (priv->search_entry, "notify::text", G_CALLBACK (mex_search_text_changed_cb), self); g_signal_connect (priv->search_entry, "notify::style-pseudo-class", G_CALLBACK (mex_search_text_style_changed), header); /* Create the suggestions column */ priv->suggest_column = mx_box_layout_new (); clutter_actor_set_name (priv->suggest_column, "suggest-column"); mx_box_layout_set_orientation (MX_BOX_LAYOUT (priv->suggest_column), MX_ORIENTATION_VERTICAL); suggest_proxy = mex_generic_proxy_new (MEX_MODEL (priv->suggest_model), MX_TYPE_BUTTON); mex_generic_proxy_bind (MEX_GENERIC_PROXY (suggest_proxy), mex_enum_to_string (MEX_TYPE_CONTENT_METADATA, MEX_CONTENT_METADATA_TITLE), "label"); g_signal_connect (suggest_proxy, "object-created", G_CALLBACK (mex_search_proxy_add_cb), priv->suggest_column); g_signal_connect (suggest_proxy, "object-removed", G_CALLBACK (mex_search_proxy_remove_cb), priv->suggest_column); g_object_weak_ref (G_OBJECT (priv->suggest_column), (GWeakNotify)g_object_unref, suggest_proxy); /* Pack the search page */ priv->search_page = mx_frame_new (); clutter_actor_set_name (priv->search_page, "search-page"); mx_bin_set_fill (MX_BIN (priv->search_page), FALSE, TRUE); mx_bin_set_alignment (MX_BIN (priv->search_page), MX_ALIGN_START, MX_ALIGN_START); hbox = mex_resizing_hbox_new (); mex_resizing_hbox_set_resizing_enabled (MEX_RESIZING_HBOX (hbox), FALSE); box = mx_box_layout_new (); clutter_container_add_actor (CLUTTER_CONTAINER (priv->search_page), hbox); clutter_container_add_actor (CLUTTER_CONTAINER (hbox), box); mx_box_layout_set_orientation (MX_BOX_LAYOUT (box), MX_ORIENTATION_VERTICAL); clutter_container_add (CLUTTER_CONTAINER (box), header, priv->suggest_column, NULL); mx_box_layout_child_set_expand (MX_BOX_LAYOUT (box), priv->suggest_column, TRUE); clutter_container_child_set (CLUTTER_CONTAINER (box), header, "x-fill", TRUE, "x-align", MX_ALIGN_START, NULL); clutter_container_child_set (CLUTTER_CONTAINER (box), priv->suggest_column, "x-fill", TRUE, "x-align", MX_ALIGN_START, NULL); clutter_actor_set_width (box, 426.0); /* Update the history list */ mex_search_plugin_update_history (self, NULL); /* Start the history list and suggestions proxy */ mex_proxy_start (suggest_proxy); }