* Delete current page
* Select/move/resize current page frames with select tool
* You can remove a frame selecting it and pressing "del" key
+ * You can clone a frame pressing ctrl+d
* Create new page frames
When you have a frame you can go to "frame view" by double clicking in
* 't' for text
...
- * Copy and paste frame and objects in frame (easy)
-
* Ask for size at export as png, pdf and svg. (easy)
* Zoom levels: (easy)
snprintf (buffer, 255, " </frame>\n");
fwrite (buffer, sizeof (char), strlen (buffer), file);
}
+
+Frame *
+tbo_frame_clone (Frame *frame)
+{
+ GList *o;
+ tbo_object *cur_object;
+ Frame *newframe = tbo_frame_new (frame->x, frame->y,
+ frame->width, frame->height);
+
+ for (o=g_list_first (frame->objects); o; o = g_list_next(o))
+ {
+ cur_object = (tbo_object *) o->data;
+ tbo_frame_add_obj (newframe, cur_object->clone (cur_object));
+ }
+ newframe->border = frame->border;
+ newframe->color->r = frame->color->r;
+ newframe->color->g = frame->color->g;
+ newframe->color->b = frame->color->b;
+
+ return newframe;
+}
int tbo_frame_get_base_x (int x);
void tbo_frame_set_color (Frame *frame, GdkColor *color);
void tbo_frame_save (Frame *frame, FILE *file);
+Frame *tbo_frame_clone (Frame *frame);
#endif
}
void
+tbo_page_add_frame (Page *page, Frame *frame)
+{
+ page->frames = g_list_append (page->frames, frame);
+}
+
+void
tbo_page_del_frame_by_index (Page *page, int nth)
{
Frame *frame;
Page *tbo_page_new (Comic *comic);
void tbo_page_free (Page *page);
Frame *tbo_page_new_frame (Page *page, int x, int y, int w, int h);
+void tbo_page_add_frame (Page *page, Frame *frame);
void tbo_page_del_frame_by_index (Page *page, int nth);
void tbo_page_del_frame (Page *page, Frame *frame);
int tbo_page_len (Page *page);
set_selected (NULL, tbo);
}
- if (event->keyval == GDK_Tab)
+ switch (event->keyval)
{
- set_selected (tbo_page_next_frame (page), tbo);
- if (SELECTED == NULL)
- {
- set_selected (tbo_page_first_frame (page), tbo);
- }
+ case GDK_Tab:
+ set_selected (tbo_page_next_frame (page), tbo);
+ if (SELECTED == NULL)
+ {
+ set_selected (tbo_page_first_frame (page), tbo);
+ }
+ break;
+
+ case GDK_d:
+ if ((event->state & GDK_CONTROL_MASK) && SELECTED)
+ {
+ Frame *cloned_frame = tbo_frame_clone (SELECTED);
+ cloned_frame->x += 10;
+ cloned_frame->y -= 10;
+ tbo_page_add_frame (page, cloned_frame);
+ set_selected (cloned_frame, tbo);
+ }
+ break;
+ default:
+ break;
}
}