static GdkPixbuf * biji_note_obj_get_pristine (BijiItem *item) { GdkRGBA note_color; cairo_t *cr; cairo_surface_t *surface = NULL; BijiNoteObj *note = BIJI_NOTE_OBJ (item); if (note->priv->pristine) return note->priv->pristine; /* Create & Draw surface */ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, BIJI_EMBLEM_WIDTH, BIJI_EMBLEM_HEIGHT) ; cr = cairo_create (surface); /* Background */ cairo_rectangle (cr, 0, 0, BIJI_EMBLEM_WIDTH, BIJI_EMBLEM_HEIGHT); if (biji_note_obj_get_rgba (note, ¬e_color)) gdk_cairo_set_source_rgba (cr, ¬e_color); cairo_fill (cr); cairo_destroy (cr); note->priv->pristine = gdk_pixbuf_get_from_surface (surface, 0, 0, BIJI_EMBLEM_WIDTH, BIJI_EMBLEM_HEIGHT); cairo_surface_destroy (surface); return note->priv->pristine; }
static void link_callback (GtkWidget *button, BjbEditorToolbar *self) { gchar *link; GtkWidget *window; BijiNoteObj *result; GdkRGBA color; BijiNoteBook *book; BjbEditorToolbarPrivate *priv = self->priv; link = biji_note_obj_editor_get_selection (priv->note); if (link == NULL) return; window = bjb_note_view_get_base_window (priv->view); book = bjb_window_base_get_book(window); result = biji_note_book_get_new_note_from_string (book, link); /* Change result color. */ if (biji_note_obj_get_rgba (priv->note, &color)) biji_note_obj_set_rgba (result, &color); bijiben_new_window_for_note(g_application_get_default(), result); }
static void bjb_selection_toolbar_set_item_visibility (BjbSelectionToolbar *self) { BjbSelectionToolbarPrivate *priv; GList *l, *selection; GdkRGBA color; g_return_if_fail (BJB_IS_SELECTION_TOOLBAR (self)); priv = self->priv; selection = bjb_main_view_get_selected_items (priv->view); /* Color */ gtk_widget_set_sensitive (priv->toolbar_color, FALSE); for (l=selection; l !=NULL; l=l->next) { if (!biji_item_has_color (l->data)) { gtk_widget_set_sensitive (priv->toolbar_color, FALSE); break; } else if (BIJI_IS_NOTE_OBJ (l->data)) { if (biji_note_obj_get_rgba (BIJI_NOTE_OBJ (l->data), &color)) { gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (priv->toolbar_color), &color); gtk_widget_set_sensitive (priv->toolbar_color, TRUE); break; } } } /* Organize */ gtk_widget_set_sensitive (priv->toolbar_tag, TRUE); for (l=selection; l!=NULL; l=l->next) { if (!biji_item_is_collectable (l->data)) { gtk_widget_set_sensitive (priv->toolbar_tag, FALSE); break; } } g_list_free (selection); }
static GdkPixbuf * biji_note_obj_get_icon (BijiItem *item) { GdkRGBA note_color; const gchar *text; cairo_t *cr; PangoLayout *layout; PangoFontDescription *desc; GdkPixbuf *ret = NULL; cairo_surface_t *surface = NULL; GtkBorder frame_slice = { 4, 3, 3, 6 }; BijiNoteObj *note = BIJI_NOTE_OBJ (item); if (note->priv->icon) return note->priv->icon; /* Create & Draw surface */ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, BIJI_ICON_WIDTH, BIJI_ICON_HEIGHT) ; cr = cairo_create (surface); /* Background */ cairo_rectangle (cr, 0, 0, BIJI_ICON_WIDTH, BIJI_ICON_HEIGHT); if (biji_note_obj_get_rgba (note, ¬e_color)) gdk_cairo_set_source_rgba (cr, ¬e_color); cairo_fill (cr); /* Text */ text = biji_note_id_get_content (note->priv->id); if (text != NULL) { cairo_translate (cr, 10, 10); layout = pango_cairo_create_layout (cr); pango_layout_set_width (layout, 180000 ); pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR); pango_layout_set_height (layout, 180000 ) ; pango_layout_set_text (layout, text, -1); desc = pango_font_description_from_string (BIJI_ICON_FONT); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); pango_cairo_update_layout (cr, layout); pango_cairo_show_layout (cr, layout); g_object_unref (layout); } cairo_destroy (cr); ret = gdk_pixbuf_get_from_surface (surface, 0, 0, BIJI_ICON_WIDTH, BIJI_ICON_HEIGHT); cairo_surface_destroy (surface); note->priv->icon = gd_embed_image_in_frame (ret, "resource:///org/gnome/bijiben/thumbnail-frame.png", &frame_slice, &frame_slice); g_clear_object (&ret); return note->priv->icon; }
gboolean biji_lazy_serialize_internal (BijiLazySerializer *self) { BijiLazySerializerPrivate *priv = self->priv; GList *tags; GdkRGBA color; gchar *date, *color_str; gboolean retval; const gchar *path; GTimeVal time = {0, 0}; priv->writer = xmlNewTextWriterMemory(priv->buf, 0); // Header xmlTextWriterStartDocument (priv->writer,"1.0","utf-8",NULL); xmlTextWriterStartElement (priv->writer, BAD_CAST "note"); xmlTextWriterWriteAttributeNS (priv->writer, NULL, BAD_CAST "version",NULL, BAD_CAST "1"); xmlTextWriterWriteAttributeNS (priv->writer, BAD_CAST "xmlns", BAD_CAST "link", NULL, BAD_CAST "http://projects.gnome.org/bijiben/link"); xmlTextWriterWriteAttributeNS (priv->writer, BAD_CAST "xmlns", BAD_CAST "size", NULL, BAD_CAST "http://projects.gnome.org/bijiben/size"); xmlTextWriterWriteAttributeNS (priv->writer, NULL, BAD_CAST "xmlns", NULL, BAD_CAST "http://projects.gnome.org/bijiben"); // <Title> serialize_node (priv->writer, "title", (gchar*) biji_item_get_title (BIJI_ITEM (priv->note))); // <text> xmlTextWriterWriteRaw(priv->writer, BAD_CAST "\n "); xmlTextWriterStartElement(priv->writer, BAD_CAST "text"); xmlTextWriterWriteAttributeNS(priv->writer, BAD_CAST "xml", BAD_CAST "space", NULL, BAD_CAST "preserve"); serialize_html (self); // </text> xmlTextWriterEndElement(priv->writer); // <last-change-date> time.tv_sec = biji_item_get_mtime (BIJI_ITEM (priv->note)); date = g_time_val_to_iso8601 (&time); if (date) { serialize_node (priv->writer, "last-change-date", date); g_free (date); } time.tv_sec = biji_note_obj_get_last_metadata_change_date (priv->note); date = g_time_val_to_iso8601 (&time); if (date) { serialize_node (priv->writer, "last-metadata-change-date", date); g_free (date); } time.tv_sec = biji_note_obj_get_create_date (priv->note); date = g_time_val_to_iso8601 (&time); if (date) { serialize_node (priv->writer, "create-date", date); g_free (date); } serialize_node (priv->writer, "cursor-position", "0"); serialize_node (priv->writer, "selection-bound-position", "0"); serialize_node (priv->writer, "width", "0"); serialize_node (priv->writer, "height", "0"); serialize_node (priv->writer, "x", "0"); serialize_node (priv->writer, "y", "0"); if (biji_note_obj_get_rgba (priv->note, &color)) { color_str = gdk_rgba_to_string (&color); serialize_node (priv->writer, "color", color_str); g_free (color_str); } //<tags> xmlTextWriterWriteRaw(priv->writer, BAD_CAST "\n "); xmlTextWriterStartElement (priv->writer, BAD_CAST "tags"); tags = biji_note_obj_get_notebooks (priv->note); g_list_foreach (tags, (GFunc) serialize_tags, priv->writer); xmlTextWriterEndElement (priv->writer); g_list_free (tags); // <open-on-startup> serialize_node (priv->writer, "open-on-startup", "False"); // <note> xmlTextWriterWriteRaw(priv->writer, BAD_CAST "\n "); xmlTextWriterEndElement(priv->writer); xmlFreeTextWriter(priv->writer); path = biji_item_get_uuid (BIJI_ITEM (priv->note)); retval = g_file_set_contents (path, (gchar*) priv->buf->content, -1, NULL); return retval; }