Save the stylesheet
[colloquium.git] / src / presentation.h
index 808111f..57542ca 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * presentation.h
  *
- * Copyright © 2013 Thomas White <taw@bitwiz.org.uk>
+ * Copyright © 2013-2018 Thomas White <taw@bitwiz.org.uk>
  *
  * This file is part of Colloquium.
  *
 #include <config.h>
 #endif
 
-#include <cairo.h>
-#include <gtk/gtk.h>
+struct presentation;
 
+#include "imagestore.h"
+#include "sc_parse.h"
+#include "slideshow.h"
+#include "narrative_window.h"
+#include "slide_window.h"
 #include "stylesheet.h"
 
-struct slide
-{
-       struct presentation *parent;
-       struct slide_template *st;
-
-       /* Any of these may be NULL */
-       cairo_surface_t *rendered_proj;
-       cairo_surface_t *rendered_edit;
-
-       /* This should always be present (and up to date). */
-       cairo_surface_t *rendered_thumb;
+struct menu_pl;
 
-       struct frame    *top;
-
-       char *notes;
-};
-
-
-enum drag_reason
+struct presentation
 {
-       DRAG_REASON_NONE,
-       DRAG_REASON_CREATE,
-       DRAG_REASON_IMPORT,
-};
+       char             *uri;
+       GFile            *stylesheet_from;
+       int               completely_empty;
+       int               saved;
+       PangoLanguage    *lang;
 
+       ImageStore       *is;
 
-enum drag_status
-{
-       DRAG_STATUS_NONE,
-       DRAG_STATUS_COULD_DRAG,
-       DRAG_STATUS_DRAGGING,
-};
+       NarrativeWindow  *narrative_window;
+       SlideWindow      *slidewindow;
 
-
-struct presentation
-{
-       char             *titlebar;
-       char             *filename;
-       int               completely_empty;
-       int              *num_presentations;
-
-       GtkWidget        *window;
-       GtkWidget        *drawingarea;
-       GtkUIManager     *ui;
-       GtkActionGroup   *action_group;
-       GtkIMContext     *im_context;
-       GtkWidget       **menu_rebuild_list;
-       int               n_menu_rebuild;
-       PangoContext     *pc;
-
-       /* Pointers to the current "editing" and "projection" slides */
-       struct slide     *cur_edit_slide;
-       struct slide     *cur_proj_slide;
-       struct slide     *cur_notes_slide;
-       int               slideshow_linked;
-
-       /* Pointers to the frame currently being edited */
-       struct frame    **selection;
-       int               n_selection;
-       int               max_selection;
-       size_t            cursor_pos;
+       struct pr_clock  *clock;
 
        /* This is the "native" size of the slide.  It only exists to give
         * font size some meaning in the context of a somewhat arbitrary DPI */
        double            slide_width;
        double            slide_height;
 
-       /* Width of a slide in the editor, projector or thumbnail (pixels) */
-       int               edit_slide_width;
-       int               proj_slide_width;
-       int               thumb_slide_width;
-
-       /* This is just to help with rendering the slides within the
-        * editing window. */
-       double            border_offs_x;
-       double            border_offs_y;
-
-       /* Rubber band boxes and related stuff */
-       double            start_corner_x;
-       double            start_corner_y;
-       double            drag_corner_x;
-       double            drag_corner_y;
-       enum drag_reason  drag_reason;
-       enum drag_status  drag_status;
-
-       /* Stuff to do with drag and drop import of "content" */
-       int               drag_preview_pending;
-       int               have_drag_data;
-       int               drag_highlight;
-       double            import_width;
-       double            import_height;
-       int               import_acceptable;
-
-       /* Slideshow stuff */
-       GtkWidget        *slideshow;
-       GtkWidget        *ss_drawingarea;
-       GdkCursor        *blank_cursor;
-       int               ss_blank;
-       char              ss_geom[256];
-
-       StyleSheet       *ss;
-       unsigned int      num_slides;
-       struct slide    **slides;
+       SCBlock          *scblocks;
+       Stylesheet       *stylesheet;
 };
 
 
-extern struct presentation *new_presentation(void);
+extern struct presentation *new_presentation(const char *imagestore);
 extern void free_presentation(struct presentation *p);
 
-extern struct slide *new_slide(void);
-extern struct slide *add_slide(struct presentation *p, int pos);
-extern int insert_slide(struct presentation *p, struct slide *s, int pos);
-extern void free_slide(struct slide *s);
-
-extern void get_titlebar_string(struct presentation *p);
-
-extern int slide_number(struct presentation *p, struct slide *s);
+extern char *get_titlebar_string(struct presentation *p);
 
-extern int load_presentation(struct presentation *p, const char *filename);
-extern int save_presentation(struct presentation *p, const char *filename);
+extern int slide_number(struct presentation *p, SCBlock *sl);
+extern int num_slides(struct presentation *p);
+extern SCBlock *first_slide(struct presentation *p);
+extern SCBlock *last_slide(struct presentation *p);
+extern SCBlock *next_slide(struct presentation *p, SCBlock *sl);
+extern SCBlock *prev_slide(struct presentation *p, SCBlock *sl);
 
-extern void set_edit(struct presentation *p, struct slide *s);
-extern void set_selection(struct presentation *p, struct frame *fr);
-extern void add_selection(struct presentation *p, struct frame *fr);
+extern int load_presentation(struct presentation *p, GFile *file);
+extern int save_presentation(struct presentation *p, GFile *file, GFile *ssfile);
 
 #define UNUSED __attribute__((unused))