/* Object initialization * Create private structure and set up default values */ static void xfdashboard_text_box_init(XfdashboardTextBox *self) { XfdashboardTextBoxPrivate *priv; priv=self->priv=XFDASHBOARD_TEXT_BOX_GET_PRIVATE(self); /* This actor is react on events */ clutter_actor_set_reactive(CLUTTER_ACTOR(self), TRUE); /* Set up default values */ priv->padding=0.0f; priv->spacing=0.0f; priv->isEditable=FALSE; priv->primaryIconName=NULL; priv->secondaryIconName=NULL; priv->textFont=NULL; priv->textColor=NULL; priv->selectionTextColor=NULL; priv->selectionBackgroundColor=NULL; priv->hintTextFont=NULL; priv->hintTextColor=NULL; priv->showPrimaryIcon=FALSE; priv->showSecondaryIcon=FALSE; priv->selectionColorSet=FALSE; priv->hintTextSet=FALSE; /* Create actors */ g_signal_connect(self, "key-press-event", G_CALLBACK(_xfdashboard_text_box_on_key_press_event), NULL); g_signal_connect(self, "key-release-event", G_CALLBACK(_xfdashboard_text_box_on_key_release_event), NULL); priv->actorPrimaryIcon=xfdashboard_button_new(); xfdashboard_stylable_add_class(XFDASHBOARD_STYLABLE(priv->actorPrimaryIcon), "primary-icon"); clutter_actor_set_reactive(priv->actorPrimaryIcon, TRUE); clutter_actor_hide(priv->actorPrimaryIcon); clutter_actor_add_child(CLUTTER_ACTOR(self), priv->actorPrimaryIcon); g_signal_connect_swapped(priv->actorPrimaryIcon, "clicked", G_CALLBACK(_xfdashboard_text_box_on_primary_icon_clicked), self); priv->actorSecondaryIcon=xfdashboard_button_new(); xfdashboard_stylable_add_class(XFDASHBOARD_STYLABLE(priv->actorSecondaryIcon), "secondary-icon"); clutter_actor_set_reactive(priv->actorSecondaryIcon, TRUE); clutter_actor_hide(priv->actorSecondaryIcon); clutter_actor_add_child(CLUTTER_ACTOR(self), priv->actorSecondaryIcon); g_signal_connect_swapped(priv->actorSecondaryIcon, "clicked", G_CALLBACK(_xfdashboard_text_box_on_secondary_icon_clicked), self); priv->actorTextBox=clutter_text_new(); clutter_actor_add_child(CLUTTER_ACTOR(self), priv->actorTextBox); clutter_actor_set_reactive(priv->actorTextBox, TRUE); clutter_text_set_selectable(CLUTTER_TEXT(priv->actorTextBox), FALSE); clutter_text_set_editable(CLUTTER_TEXT(priv->actorTextBox), FALSE); clutter_text_set_single_line_mode(CLUTTER_TEXT(priv->actorTextBox), TRUE); g_signal_connect_swapped(priv->actorTextBox, "text-changed", G_CALLBACK(_xfdashboard_text_box_on_text_changed), self); priv->actorHintLabel=clutter_text_new(); clutter_actor_add_child(CLUTTER_ACTOR(self), priv->actorHintLabel); clutter_actor_set_reactive(priv->actorHintLabel, FALSE); clutter_text_set_selectable(CLUTTER_TEXT(priv->actorHintLabel), FALSE); clutter_text_set_editable(CLUTTER_TEXT(priv->actorHintLabel), FALSE); clutter_text_set_single_line_mode(CLUTTER_TEXT(priv->actorHintLabel), TRUE); clutter_actor_hide(priv->actorHintLabel); }
static ClutterActor * create_label (const ClutterColor *color, const gchar *text) { ClutterActor *retval = clutter_text_new (); clutter_text_set_color (CLUTTER_TEXT (retval), color); clutter_text_set_markup (CLUTTER_TEXT (retval), text); clutter_text_set_editable (CLUTTER_TEXT (retval), FALSE); clutter_text_set_selectable (CLUTTER_TEXT (retval), FALSE); clutter_text_set_single_line_mode (CLUTTER_TEXT (retval), TRUE); clutter_text_set_ellipsize (CLUTTER_TEXT (retval), PANGO_ELLIPSIZE_END); return retval; }
static void penge_event_tile_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { PengeEventTilePrivate *priv = GET_PRIVATE (object); switch (property_id) { case PROP_EVENT: if (priv->event) g_object_unref (priv->event); priv->event = g_value_dup_object (value); penge_event_tile_update ((PengeEventTile *)object); break; case PROP_TIME: if (priv->time) g_object_unref (priv->time); priv->time = g_value_dup_object (value); penge_event_tile_update ((PengeEventTile *)object); break; case PROP_STORE: penge_event_tile_set_store ((PengeEventTile *)object, g_value_get_object (value)); break; case PROP_MULTILINE_SUMMARY: { ClutterActor *tmp_text; tmp_text = mx_label_get_clutter_text (MX_LABEL (priv->summary_label)); clutter_text_set_single_line_mode (CLUTTER_TEXT (tmp_text), !g_value_get_boolean (value)); clutter_text_set_line_wrap (CLUTTER_TEXT (tmp_text), g_value_get_boolean (value)); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
void mpd_storage_device_tile_show_message_full (MpdStorageDeviceTile *self, char const *message, bool replace_buttons, unsigned int timeout_s, GSourceFunc function, void *data) { MpdStorageDeviceTilePrivate *priv = GET_PRIVATE (self); g_return_if_fail (MPD_IS_STORAGE_DEVICE_TILE (self)); if (priv->message == NULL) { ClutterText *text; priv->message = mx_label_new_with_text (message); mx_stylable_set_style_class (MX_STYLABLE (priv->message), "message"); text = (ClutterText *) mx_label_get_clutter_text (MX_LABEL (priv->message)); clutter_text_set_line_wrap (text, true); clutter_text_set_line_wrap_mode (text, PANGO_WRAP_WORD); clutter_text_set_single_line_mode (text, false); clutter_text_set_ellipsize (text, PANGO_ELLIPSIZE_NONE); mx_box_layout_add_actor_with_properties (MX_BOX_LAYOUT (self), priv->message, 2, "x-align", MX_ALIGN_MIDDLE, NULL); } if (replace_buttons) { mx_widget_set_disabled (MX_WIDGET (priv->open), true); mx_widget_set_disabled (MX_WIDGET (priv->eject), true); clutter_container_remove_actor (CLUTTER_CONTAINER (self), priv->import); } mx_label_set_text (MX_LABEL (priv->message), message); if (timeout_s) { g_timeout_add_seconds (timeout_s, function, data); } }
/** * mx_label_set_fade_out: * @label: A #MxLabel * @fade: %TRUE to fade out, %FALSE otherwise * * Set whether to fade out the end of the label, instead of ellipsizing. * Enabling this mode will also set the #ClutterText:single-line-mode and * #ClutterText:ellipsize properties. * * Since: 1.2 */ void mx_label_set_fade_out (MxLabel *label, gboolean fade) { MxLabelPrivate *priv; g_return_if_fail (MX_IS_LABEL (label)); priv = label->priv; if (priv->fade_out != fade) { priv->fade_out = fade; g_object_notify (G_OBJECT (label), "fade-out"); /* Enable the fade-effect */ if (fade) { priv->label_should_fade = FALSE; clutter_text_set_single_line_mode (CLUTTER_TEXT (priv->label), TRUE); clutter_text_set_ellipsize (CLUTTER_TEXT (priv->label), PANGO_ELLIPSIZE_NONE); } /* If we need to fade, listen for the font-description changing so * we can keep track of the em-width of the label. */ if (fade) { g_signal_connect (priv->label, "notify::font-description", G_CALLBACK (mx_label_font_description_cb), label); mx_label_font_description_cb (CLUTTER_TEXT (priv->label), NULL, label); } else { g_signal_handlers_disconnect_by_func (priv->label, mx_label_font_description_cb, label); } } }
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); }
static ClutterActor * create_entry (const ClutterColor *color, const gchar *text, PangoAttrList *attrs, gunichar password_char, gint max_length) { ClutterActor *retval = clutter_text_new_full (NULL, text, color); ClutterColor selection = { 0, }; ClutterColor selected_text = { 0x00, 0x00, 0xff, 0xff }; clutter_actor_set_reactive (retval, TRUE); clutter_color_darken (color, &selection); clutter_text_set_editable (CLUTTER_TEXT (retval), TRUE); clutter_text_set_selectable (CLUTTER_TEXT (retval), TRUE); clutter_text_set_activatable (CLUTTER_TEXT (retval), TRUE); clutter_text_set_single_line_mode (CLUTTER_TEXT (retval), TRUE); clutter_text_set_password_char (CLUTTER_TEXT (retval), password_char); clutter_text_set_cursor_color (CLUTTER_TEXT (retval), &selection); clutter_text_set_max_length (CLUTTER_TEXT (retval), max_length); clutter_text_set_selected_text_color (CLUTTER_TEXT (retval), &selected_text); clutter_actor_set_background_color (retval, CLUTTER_COLOR_LightGray); if (attrs) clutter_text_set_attributes (CLUTTER_TEXT (retval), attrs); g_signal_connect (retval, "activate", G_CALLBACK (on_entry_activate), NULL); g_signal_connect (retval, "captured-event", G_CALLBACK (on_captured_event), NULL); return retval; }
int main(int argc, char *argv[]) { ClutterActor *stage; WebKitWebView *web_view; ClutterConstraint *width_binding; ClutterConstraint *height_binding; ClutterConstraint *web_view_height_binding; gfloat stageWidth, stageHeight; ClutterActorBox stageAllocation; ClutterLayoutManager *mainLayout; ClutterActor *mainLayoutContainer; ClutterLayoutManager *toolbarLayout; ClutterActor *toolbarContainer; ClutterLayoutManager *toolbarBinLayout; ClutterActor *toolbarBinContainer; ClutterActor *toolbarBgr; ClutterActor *statusBar; ClutterActor *backFwdBtns; ClutterActor *backBtn; ClutterActor *fwdBtn; ClutterActor *uriGroup; ClutterActor *uriBgr; ClutterActor *uriText; ClutterActor *spacer; GError *error = NULL; ClutterColor whiteColor = { 255, 255, 255, 255 }; ClutterColor blackColor = { 0, 0, 0, 255 }; ClutterColor grayColor = { 200, 200, 200, 255 }; ClutterColor transparentColor = { 0, 0, 0, 0 }; gchar *toolbarBgrPath = clutter_launcher_file_path("toolbar_bgr.png"); gchar *backBtnPath = clutter_launcher_file_path("back_btn.png"); gchar *fwdBtnPath = clutter_launcher_file_path("fwd_btn.png"); g_thread_init(NULL); clutter_threads_init(); clutter_init(&argc, &argv); stage = clutter_stage_get_default(); clutter_actor_set_size(stage, 1024, 768); clutter_stage_set_color(CLUTTER_STAGE(stage), &stage_color); g_signal_connect (stage, "destroy", G_CALLBACK(clutter_main_quit), NULL); /* make the stage resizable */ clutter_stage_set_user_resizable(CLUTTER_STAGE(stage), TRUE); clutter_actor_show(stage); mainLayout = clutter_box_layout_new(); clutter_box_layout_set_vertical(CLUTTER_BOX_LAYOUT(mainLayout), TRUE); clutter_actor_get_allocation_box(stage, &stageAllocation); stageWidth = stageAllocation.x2 - stageAllocation.x1; stageHeight = stageAllocation.y2 - stageAllocation.y1; web_view = WEBKIT_WEB_VIEW(webkit_web_view_new((guint)stageWidth, (guint)stageHeight - (toolbarHeight + statusBarHeight))); g_object_set(web_view, "reactive", TRUE, NULL); mainLayoutContainer = clutter_box_new(mainLayout); clutter_actor_set_size(mainLayoutContainer, stageWidth, stageHeight); width_binding = clutter_bind_constraint_new(stage, CLUTTER_BIND_WIDTH, 0); height_binding = clutter_bind_constraint_new(stage, CLUTTER_BIND_HEIGHT, 0); /* web_view_height_binding = clutter_bind_constraint_new(stage, CLUTTER_BIND_HEIGHT, -(toolbarHeight + statusBarHeight)); */ clutter_actor_add_constraint(mainLayoutContainer, width_binding); clutter_actor_add_constraint(mainLayoutContainer, height_binding); /* clutter_actor_add_constraint(CLUTTER_ACTOR(web_view), web_view_height_binding); */ toolbarBinLayout = clutter_bin_layout_new(CLUTTER_BIN_ALIGNMENT_FILL, CLUTTER_BIN_ALIGNMENT_CENTER); toolbarBinContainer = clutter_box_new(toolbarBinLayout); toolbarBgr = clutter_texture_new_from_file(toolbarBgrPath, &error); if (toolbarBgr == NULL) { fprintf(stderr, "Can't load file: %s. Aborting...\n", toolbarBgrPath); exit(1); } clutter_actor_set_height(toolbarBgr, toolbarHeight); clutter_texture_set_repeat(CLUTTER_TEXTURE(toolbarBgr), TRUE, FALSE); clutter_box_pack(CLUTTER_BOX(toolbarBinContainer), toolbarBgr, NULL, NULL); toolbarLayout = clutter_box_layout_new(); clutter_box_layout_set_vertical(CLUTTER_BOX_LAYOUT(toolbarLayout), FALSE); clutter_box_layout_set_spacing(CLUTTER_BOX_LAYOUT(toolbarLayout), 16); toolbarContainer = clutter_box_new(toolbarLayout); spacer = clutter_rectangle_new_with_color(&transparentColor); clutter_actor_set_size(spacer, 1, 1); clutter_box_pack(CLUTTER_BOX(toolbarContainer), spacer, NULL, NULL); backFwdBtns = clutter_group_new(); backBtn = clutter_texture_new_from_file(backBtnPath, &error); if (backBtn == NULL) { fprintf(stderr, "Can't load file: %s. Aborting...\n", backBtnPath); exit(1); } clutter_actor_set_reactive(backBtn, TRUE); /* connect the release event */ g_signal_connect (backBtn, "button-release-event", G_CALLBACK (on_back_release_cb), web_view); fwdBtn = clutter_texture_new_from_file(fwdBtnPath, &error); if (fwdBtn == NULL) { fprintf(stderr, "Can't load file: %s. Aborting...\n", fwdBtnPath); exit(1); } clutter_actor_set_reactive(fwdBtn, TRUE); /* connect the release event */ g_signal_connect (fwdBtn, "button-release-event", G_CALLBACK (on_fwd_release_cb), web_view); clutter_actor_set_position(fwdBtn, clutter_actor_get_width(backBtn), 0); clutter_container_add(CLUTTER_CONTAINER(backFwdBtns), backBtn, fwdBtn, NULL); clutter_box_pack(CLUTTER_BOX(toolbarContainer), backFwdBtns, NULL, NULL); uriGroup = clutter_group_new(); uriBgr = clutter_rectangle_new_with_color(&whiteColor); clutter_rectangle_set_border_color(CLUTTER_RECTANGLE(uriBgr), &blackColor); clutter_rectangle_set_border_width(CLUTTER_RECTANGLE(uriBgr), 1); clutter_actor_set_size(uriBgr, 400, 25); uriText = clutter_text_new_full("Helvetica 11px", "http://www.google.com", &blackColor); clutter_text_set_editable(CLUTTER_TEXT(uriText), TRUE); clutter_text_set_single_line_mode(CLUTTER_TEXT(uriText), TRUE); clutter_actor_set_position(uriText, 5, 7); clutter_actor_set_size(uriText, 390, 17); clutter_actor_set_reactive(uriText, TRUE); g_signal_connect(uriText, "activate", G_CALLBACK(on_uri_activate_cb), web_view); clutter_container_add(CLUTTER_CONTAINER(uriGroup), uriBgr, uriText, NULL); clutter_box_pack(CLUTTER_BOX(toolbarContainer), uriGroup, NULL, NULL); clutter_box_pack(CLUTTER_BOX(toolbarBinContainer), toolbarContainer, NULL, NULL); clutter_box_pack(CLUTTER_BOX(mainLayoutContainer), toolbarBinContainer, "y-align", CLUTTER_BOX_ALIGNMENT_START, NULL); clutter_box_layout_set_expand(CLUTTER_BOX_LAYOUT(mainLayout), toolbarBinContainer, TRUE); clutter_box_layout_set_fill(CLUTTER_BOX_LAYOUT(mainLayout), toolbarBinContainer, TRUE, FALSE); statusBar = clutter_rectangle_new_with_color(&grayColor); clutter_actor_set_height(statusBar, statusBarHeight); clutter_box_pack(CLUTTER_BOX(mainLayoutContainer), statusBar, "y-align", CLUTTER_BOX_ALIGNMENT_END, NULL); clutter_box_layout_set_expand(CLUTTER_BOX_LAYOUT(mainLayout), statusBar, TRUE); clutter_box_layout_set_fill(CLUTTER_BOX_LAYOUT(mainLayout), statusBar, TRUE, FALSE); clutter_box_pack_after(CLUTTER_BOX(mainLayoutContainer), CLUTTER_ACTOR(web_view), toolbarBinContainer, "y-align", CLUTTER_BOX_ALIGNMENT_START, NULL); clutter_box_layout_set_expand(CLUTTER_BOX_LAYOUT(mainLayout), CLUTTER_ACTOR(web_view), TRUE); clutter_box_layout_set_fill(CLUTTER_BOX_LAYOUT(mainLayout), CLUTTER_ACTOR(web_view), TRUE, TRUE); clutter_container_add(CLUTTER_CONTAINER(stage), mainLayoutContainer, NULL); g_signal_connect(web_view, "webkit-load-finished", G_CALLBACK(load_finished_cb), web_view); g_signal_connect(web_view, "notify::progress", G_CALLBACK (notify_progress_cb), web_view); /* g_signal_connect(stage, "delete-event", G_CALLBACK(delete_cb), web_view);*/ g_signal_connect(web_view, "notify::uri", G_CALLBACK(notify_uri_cb), uriText); gchar *uri = (gchar*) (argc > 1 ? argv[1] : "http://www.google.com/"); gchar *fileURL = filenameToURL(uri); webkit_web_view_load_uri(web_view, fileURL ? fileURL : uri); printf("%s\n", fileURL ? fileURL : uri); g_free(fileURL); g_timeout_add_full(G_PRIORITY_DEFAULT, 3000, timeout_cb, web_view, 0); clutter_threads_enter (); clutter_main(); clutter_threads_leave (); return EXIT_SUCCESS; }
static void penge_count_tile_init (PengeCountTile *self) { ClutterActor *tmp_text; PengeCountTilePrivate *priv = GET_PRIVATE_REAL (self); self->priv = priv; priv->table = mx_table_new (); g_object_ref (priv->table); priv->count_label = mx_label_new (); tmp_text = mx_label_get_clutter_text (MX_LABEL (priv->count_label)); clutter_text_set_ellipsize (CLUTTER_TEXT (tmp_text), PANGO_ELLIPSIZE_NONE); clutter_text_set_single_line_mode (CLUTTER_TEXT (tmp_text), TRUE); g_object_set (G_OBJECT (priv->count_label), "x-align", MX_ALIGN_MIDDLE, "y-align", MX_ALIGN_MIDDLE, NULL); penge_count_tile_set_count (self, 0); clutter_actor_show (priv->count_label); mx_table_insert_actor_with_properties (MX_TABLE (priv->table), priv->count_label, 0, 0, "row-span", 2, "x-expand", FALSE, NULL); priv->message_label = mx_label_new (); tmp_text = mx_label_get_clutter_text (MX_LABEL (priv->message_label)); clutter_text_set_ellipsize (CLUTTER_TEXT (tmp_text), PANGO_ELLIPSIZE_END); clutter_text_set_single_line_mode (CLUTTER_TEXT (tmp_text), TRUE); mx_stylable_set_style_class (MX_STYLABLE (priv->message_label), "PengeCountMessageLabel"); clutter_actor_show (priv->message_label); mx_table_insert_actor_with_properties (MX_TABLE (priv->table), priv->message_label, 0, 1, "x-expand", TRUE, NULL); priv->account_label = mx_label_new (); tmp_text = mx_label_get_clutter_text (MX_LABEL (priv->account_label)); clutter_text_set_ellipsize (CLUTTER_TEXT (tmp_text), PANGO_ELLIPSIZE_END); clutter_text_set_single_line_mode (CLUTTER_TEXT (tmp_text), TRUE); mx_stylable_set_style_class (MX_STYLABLE (priv->account_label), "PengeCountAccountLabel"); clutter_actor_show (priv->account_label); mx_table_insert_actor_with_properties (MX_TABLE (priv->table), priv->account_label, 1, 1, "x-expand", TRUE, NULL); mx_table_set_column_spacing (MX_TABLE (priv->table), 12); clutter_actor_show (priv->table); clutter_actor_add_child ((self), priv->table); //mx_bin_set_fill ((self), TRUE, FALSE); }
static void penge_event_tile_init (PengeEventTile *self) { PengeEventTilePrivate *priv = GET_PRIVATE_REAL (self); ClutterActor *tmp_text; ClutterActor *indicator_container, *indicator_overlay; GError *error = NULL; self->priv = priv; priv->inner_table = mx_table_new (); mx_bin_set_child (MX_BIN (self), (ClutterActor *)priv->inner_table); mx_bin_set_fill (MX_BIN (self), TRUE, TRUE); indicator_container = mx_stack_new (); clutter_actor_set_size (indicator_container, 20, 20); priv->calendar_indicator = clutter_cairo_texture_new (20, 20); clutter_actor_set_size (priv->calendar_indicator, 20, 20); indicator_overlay = clutter_texture_new_from_file (CALENDAR_INDICATOR_OVERLAY_MASK, &error); if (error != NULL) { g_critical (G_STRLOC ": Loading calendar colour overlay failed: %s", error->message); g_clear_error (&error); indicator_overlay = NULL; } else { clutter_actor_set_size (indicator_overlay, 20, 20); } clutter_container_add (CLUTTER_CONTAINER (indicator_container), priv->calendar_indicator, indicator_overlay, NULL); priv->time_label = mx_label_new (); tmp_text = mx_label_get_clutter_text (MX_LABEL (priv->time_label)); clutter_text_set_ellipsize (CLUTTER_TEXT (tmp_text), PANGO_ELLIPSIZE_NONE); mx_stylable_set_style_class (MX_STYLABLE (priv->time_label), "PengeEventTimeLabel"); priv->summary_label = mx_label_new (); mx_stylable_set_style_class (MX_STYLABLE (priv->summary_label), "PengeEventSummary"); tmp_text = mx_label_get_clutter_text (MX_LABEL (priv->summary_label)); clutter_text_set_ellipsize (CLUTTER_TEXT (tmp_text), PANGO_ELLIPSIZE_END); clutter_text_set_single_line_mode (CLUTTER_TEXT (tmp_text), TRUE); /* Populate the table */ mx_table_add_actor (MX_TABLE (priv->inner_table), indicator_container, 0, 0); mx_table_add_actor (MX_TABLE (priv->inner_table), priv->time_label, 0, 1); mx_table_add_actor (MX_TABLE (priv->inner_table), priv->summary_label, 0, 2); clutter_container_child_set (CLUTTER_CONTAINER (priv->inner_table), indicator_container, "x-expand", FALSE, "x-fill", FALSE, "y-expand", FALSE, "y-fill", FALSE, NULL); clutter_container_child_set (CLUTTER_CONTAINER (priv->inner_table), priv->time_label, "x-expand", FALSE, "x-fill", FALSE, "y-expand", FALSE, "y-fill", FALSE, NULL); clutter_container_child_set (CLUTTER_CONTAINER (priv->inner_table), priv->summary_label, "x-expand", TRUE, "x-fill", TRUE, "y-expand", FALSE, "y-fill", FALSE, NULL); /* Setup spacing and padding */ mx_table_set_column_spacing (MX_TABLE (priv->inner_table), 6); g_signal_connect (self, "clicked", (GCallback)_button_clicked_cb, self); clutter_actor_set_reactive (CLUTTER_ACTOR (self), TRUE); }
static void mpd_storage_device_tile_init (MpdStorageDeviceTile *self) { MpdStorageDeviceTilePrivate *priv = GET_PRIVATE (self); ClutterText *text; ClutterActor *separator; mx_box_layout_set_orientation (MX_BOX_LAYOUT (self), MX_ORIENTATION_VERTICAL); mx_box_layout_set_enable_animations (MX_BOX_LAYOUT (self), true); priv->table = mx_table_new (); mx_table_set_column_spacing (MX_TABLE (priv->table), 5); mx_box_layout_add_actor_with_properties (MX_BOX_LAYOUT (self), priv->table, -1, "x-fill", true, NULL); /* 0 1 2 +--------------------------+ Table 0 | | Text | Open | 1 | Icon | Progress | Eject | +------+-----------+-------+ Vbox 2 | <message> .. Import data | +--------------------------+ 3 | ======================== | +--------------------------+ */ /* * Column 0: icon */ priv->icon = clutter_texture_new (); clutter_actor_set_size (priv->icon, MPD_STORAGE_DEVICE_TILE_ICON_SIZE, MPD_STORAGE_DEVICE_TILE_ICON_SIZE); mx_table_add_actor_with_properties (MX_TABLE (priv->table), priv->icon, 0, 0, "row-span", 2, "column-span", 1, "x-align", MX_ALIGN_START, "x-expand", false, "x-fill", false, "y-align", MX_ALIGN_MIDDLE, "y-expand", false, "y-fill", false, NULL); /* * Column 1 */ /* Text */ priv->label = mx_label_new (); clutter_actor_set_width (priv->label, 200.0); text = (ClutterText *) mx_label_get_clutter_text (MX_LABEL (priv->label)); clutter_text_set_line_wrap (text, true); clutter_text_set_line_wrap_mode (text, PANGO_WRAP_WORD); clutter_text_set_single_line_mode (text, false); clutter_text_set_ellipsize (text, PANGO_ELLIPSIZE_END); mx_table_add_actor_with_properties (MX_TABLE (priv->table), priv->label, 0, 1, "x-align", MX_ALIGN_START, "x-expand", true, "x-fill", true, "y-align", MX_ALIGN_MIDDLE, "y-expand", false, "y-fill", false, NULL); /* Progress */ priv->meter = mx_progress_bar_new (); mx_table_add_actor_with_properties (MX_TABLE (priv->table), priv->meter, 1, 1, "x-align", MX_ALIGN_START, "x-expand", true, "x-fill", true, "y-align", MX_ALIGN_MIDDLE, "y-expand", false, "y-fill", false, NULL); /* * Column 2: buttons */ /* Open button */ priv->open = mx_button_new_with_label (_("Open")); g_signal_connect (priv->open, "clicked", G_CALLBACK (_open_clicked_cb), self); mx_table_add_actor_with_properties (MX_TABLE (priv->table), priv->open, 0, 2, "x-align", MX_ALIGN_END, "x-expand", false, "x-fill", true, "y-align", MX_ALIGN_END, "y-expand", false, "y-fill", false, NULL); /* Eject button */ priv->eject = mx_button_new_with_label (_("Eject")); g_signal_connect (priv->eject, "clicked", G_CALLBACK (_eject_clicked_cb), self); mx_table_add_actor_with_properties (MX_TABLE (priv->table), priv->eject, 1, 2, "x-align", MX_ALIGN_END, "x-expand", false, "x-fill", true, "y-align", MX_ALIGN_MIDDLE, "y-expand", false, "y-fill", false, NULL); /* * Row 2 */ /* Import button */ priv->import = mx_button_new (); clutter_actor_set_name (priv->import, "import"); g_signal_connect (priv->import, "clicked", G_CALLBACK (_import_clicked_cb), self); mx_box_layout_add_actor_with_properties (MX_BOX_LAYOUT (self), priv->import, -1, "expand", false, "x-align", MX_ALIGN_END, "x-fill", false, NULL); /* * 4th row: separator */ /* Separator */ separator = mx_frame_new (); mx_stylable_set_style_class (MX_STYLABLE (separator), "separator"); mx_box_layout_add_actor_with_properties (MX_BOX_LAYOUT (self), separator, -1, "expand", false, "x-align", MX_ALIGN_MIDDLE, "x-fill", true, "y-align", MX_ALIGN_START, "y-fill", false, NULL); }