1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 
3 /*
4  *  GThumb
5  *
6  *  Copyright (C) 2009 Free Software Foundation, Inc.
7  *
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #ifndef GTH_VIEWER_PAGE_H
23 #define GTH_VIEWER_PAGE_H
24 
25 #include <gtk/gtk.h>
26 #include "gth-file-data.h"
27 #include "typedefs.h"
28 
29 G_BEGIN_DECLS
30 
31 typedef struct _GthBrowser GthBrowser;
32 
33 #define GTH_TYPE_VIEWER_PAGE (gth_viewer_page_get_type ())
34 #define GTH_VIEWER_PAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTH_TYPE_VIEWER_PAGE, GthViewerPage))
35 #define GTH_IS_VIEWER_PAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTH_TYPE_VIEWER_PAGE))
36 #define GTH_VIEWER_PAGE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GTH_TYPE_VIEWER_PAGE, GthViewerPageInterface))
37 
38 typedef struct _GthViewerPage GthViewerPage;
39 typedef struct _GthViewerPageInterface GthViewerPageInterface;
40 
41 typedef void (*FileSavedFunc)  (GthViewerPage *viewer_page,
42 				GthFileData   *file_data,
43 				GError        *error,
44 				gpointer       user_data);
45 
46 struct _GthViewerPageInterface {
47 	GTypeInterface parent_iface;
48 
49 	/*< virtual functions >*/
50 
51 	void      (*activate)            (GthViewerPage *self,
52 				 	  GthBrowser    *browser);
53 	void      (*deactivate)          (GthViewerPage *self);
54 	void      (*show)                (GthViewerPage *self);
55 	void      (*hide)                (GthViewerPage *self);
56 	gboolean  (*can_view)            (GthViewerPage *self,
57 				 	  GthFileData   *file_data);
58 	void      (*view)                (GthViewerPage *self,
59 				 	  GthFileData   *file_data);
60 	void      (*focus)               (GthViewerPage *self);
61 	void      (*fullscreen)          (GthViewerPage *self,
62 					  gboolean       active);
63 	void      (*show_pointer)        (GthViewerPage *self,
64 					  gboolean       show);
65 	void      (*update_sensitivity)  (GthViewerPage *self);
66 	gboolean  (*can_save)            (GthViewerPage *self);
67 	void      (*save)                (GthViewerPage *self,
68 					  GFile         *file,
69 					  FileSavedFunc  func,
70 					  gpointer       data);
71 	void      (*save_as)             (GthViewerPage *self,
72 					  FileSavedFunc  func,
73 					  gpointer       data);
74 	void      (*revert)              (GthViewerPage *self);
75 	void      (*update_info)         (GthViewerPage *self,
76 					  GthFileData   *file_data);
77 	void      (*show_properties)     (GthViewerPage *self,
78 					  gboolean       show);
79 	gboolean  (*zoom_from_scroll)    (GthViewerPage *self,
80 					  GdkEventScroll *event);
81 
82 	/*< signals >*/
83 
84 	void      (*file_loaded)         (GthViewerPage *self,
85 					  GthFileData   *file_data,
86 					  gboolean       success);
87 };
88 
89 GType        gth_viewer_page_get_type            (void);
90 void         gth_viewer_page_activate            (GthViewerPage  *self,
91 					  	  GthBrowser     *browser);
92 void         gth_viewer_page_deactivate          (GthViewerPage  *self);
93 void         gth_viewer_page_show                (GthViewerPage  *self);
94 void         gth_viewer_page_hide                (GthViewerPage  *self);
95 gboolean     gth_viewer_page_can_view            (GthViewerPage  *self,
96 						  GthFileData    *file_data);
97 void         gth_viewer_page_view                (GthViewerPage  *self,
98 						  GthFileData    *file_data);
99 void         gth_viewer_page_focus               (GthViewerPage  *self);
100 void         gth_viewer_page_fullscreen          (GthViewerPage  *self,
101 						  gboolean       active);
102 void         gth_viewer_page_show_pointer        (GthViewerPage  *self,
103 						  gboolean        show);
104 void         gth_viewer_page_update_sensitivity  (GthViewerPage  *self);
105 gboolean     gth_viewer_page_can_save            (GthViewerPage  *self);
106 void         gth_viewer_page_save                (GthViewerPage  *self,
107 						  GFile          *file,
108 						  FileSavedFunc   func,
109 						  gpointer        data);
110 void         gth_viewer_page_save_as             (GthViewerPage  *self,
111 						  FileSavedFunc   func,
112 						  gpointer        data);
113 void         gth_viewer_page_revert              (GthViewerPage  *self);
114 void         gth_viewer_page_update_info         (GthViewerPage  *self,
115 		  	  	  	  	  GthFileData    *file_data);
116 void         gth_viewer_page_show_properties     (GthViewerPage  *self,
117 						  gboolean        show);
118 gboolean     gth_viewer_page_zoom_from_scroll    (GthViewerPage  *self,
119 						  GdkEventScroll *event);
120 void         gth_viewer_page_file_loaded         (GthViewerPage  *self,
121 						  GthFileData    *file_data,
122 						  GFileInfo      *updated_metadata,
123 						  gboolean        success);
124 
125 G_END_DECLS
126 
127 #endif /* GTH_VIEWER_PAGE_H */
128