aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/gal-view-instance.h
blob: 33427d42e66ef07d36bb2310acd6d7cc64c4a348 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) version 3.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with the program; if not, see <http://www.gnu.org/licenses/>
 *
 *
 * Authors:
 *      Chris Lahey <clahey@ximian.com>
 *
 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
 *
 */

#if !defined (__E_UTIL_H_INSIDE__) && !defined (LIBEUTIL_COMPILATION)
#error "Only <e-util/e-util.h> should be included directly."
#endif

#ifndef GAL_VIEW_INSTANCE_H
#define GAL_VIEW_INSTANCE_H

#include <e-util/gal-view-collection.h>

/* Standard GObject macros */
#define GAL_TYPE_VIEW_INSTANCE \
    (gal_view_instance_get_type ())
#define GAL_VIEW_INSTANCE(obj) \
    (G_TYPE_CHECK_INSTANCE_CAST \
    ((obj), GAL_TYPE_VIEW_INSTANCE, GalViewInstance))
#define GAL_VIEW_INSTANCE_CLASS(cls) \
    (G_TYPE_CHECK_CLASS_CAST \
    ((cls), GAL_TYPE_VIEW_INSTANCE, GalViewInstanceClass))
#define GAL_IS_VIEW_INSTANCE(obj) \
    (G_TYPE_CHECK_INSTANCE_TYPE \
    ((obj), GAL_TYPE_VIEW_INSTANCE))
#define GAL_IS_VIEW_INSTANCE_CLASS(cls) \
    (G_TYPE_CHECK_CLASS_TYPE \
    ((cls), GAL_TYPE_VIEW_INSTANCE))
#define GAL_VIEW_INSTANCE_GET_CLASS(obj) \
    (G_TYPE_INSTANCE_GET_CLASS \
    ((obj), GAL_TYPE_VIEW_INSTANCE, GalViewInstanceClass))

G_BEGIN_DECLS

typedef struct _GalViewInstance GalViewInstance;
typedef struct _GalViewInstanceClass GalViewInstanceClass;

struct _GalViewInstance {
    GObject parent;

    GalViewCollection *collection;

    gchar *instance_id;
    gchar *current_view_filename;
    gchar *custom_filename;

    gchar *current_title;
    gchar *current_type;
    gchar *current_id;

    GalView *current_view;

    guint view_changed_id;
    guint collection_changed_id;

    guint loaded : 1;
    gchar *default_view;
};

struct _GalViewInstanceClass {
    GObjectClass parent_class;

    /* Signals */
    void        (*display_view)     (GalViewInstance *instance,
                         GalView *view);
    void        (*changed)      (GalViewInstance *instance);
    void        (*loaded)       (GalViewInstance *instance);
};

GType       gal_view_instance_get_type  (void) G_GNUC_CONST;

/*collection should be loaded when you call this.
  instance_id: Which instance of this type of object is this (for most of evo, this is the folder id.) */
GalViewInstance *
        gal_view_instance_new       (GalViewCollection *collection,
                         const gchar *instance_id);
GalViewInstance *
        gal_view_instance_construct (GalViewInstance *instance,
                         GalViewCollection *collection,
                         const gchar *instance_id);

/* Manipulate the current view. */
gchar *     gal_view_instance_get_current_view_id
                        (GalViewInstance *instance);
void        gal_view_instance_set_current_view_id
                        (GalViewInstance *instance,
                         const gchar *view_id);
GalView *   gal_view_instance_get_current_view
                        (GalViewInstance *instance);

/* Sets the current view to the given custom view. */
void        gal_view_instance_set_custom_view
                        (GalViewInstance *instance,
                         GalView *view);

/* Returns true if this instance has ever been used before. */
gboolean    gal_view_instance_exists    (GalViewInstance *instance);

/* Manipulate the view collection */
void        gal_view_instance_save_as   (GalViewInstance *instance);

/* This is idempotent.  Once it's been called
 * once, the rest of the calls are ignored. */
void        gal_view_instance_load      (GalViewInstance *instance);

/* These only mean anything before gal_view_instance_load()
 * is called the first time.  */
const gchar *   gal_view_instance_get_default_view
                        (GalViewInstance *instance);
void        gal_view_instance_set_default_view
                        (GalViewInstance   *instance,
                         const gchar *id);

G_END_DECLS

#endif /* GAL_VIEW_INSTANCE_H */