1 #ifndef __XED_WINDOW_H__ 2 #define __XED_WINDOW_H__ 3 4 #include <gtksourceview/gtksource.h> 5 6 #include <xed/xed-tab.h> 7 #include <xed/xed-panel.h> 8 #include <xed/xed-message-bus.h> 9 #include <xed/xed-paned.h> 10 11 G_BEGIN_DECLS 12 13 typedef enum 14 { 15 XED_WINDOW_STATE_NORMAL = 0, 16 XED_WINDOW_STATE_SAVING = 1 << 1, 17 XED_WINDOW_STATE_PRINTING = 1 << 2, 18 XED_WINDOW_STATE_LOADING = 1 << 3, 19 XED_WINDOW_STATE_ERROR = 1 << 4, 20 XED_WINDOW_STATE_SAVING_SESSION = 1 << 5 21 } XedWindowState; 22 23 #define XED_TYPE_WINDOW (xed_window_get_type()) 24 #define XED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), XED_TYPE_WINDOW, XedWindow)) 25 #define XED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), XED_TYPE_WINDOW, XedWindowClass)) 26 #define XED_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), XED_TYPE_WINDOW)) 27 #define XED_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), XED_TYPE_WINDOW)) 28 #define XED_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), XED_TYPE_WINDOW, XedWindowClass)) 29 30 typedef struct _XedWindow XedWindow; 31 typedef struct _XedWindowPrivate XedWindowPrivate; 32 typedef struct _XedWindowClass XedWindowClass; 33 34 struct _XedWindow 35 { 36 GtkApplicationWindow window; 37 38 /*< private > */ 39 XedWindowPrivate *priv; 40 }; 41 42 struct _XedWindowClass 43 { 44 GtkApplicationWindowClass parent_class; 45 46 /* Signals */ 47 void (* tab_added) (XedWindow *window, XedTab *tab); 48 void (* tab_removed) (XedWindow *window, XedTab *tab); 49 void (* tabs_reordered) (XedWindow *window); 50 void (* active_tab_changed) (XedWindow *window, XedTab *tab); 51 void (* active_tab_state_changed) (XedWindow *window); 52 }; 53 54 /* Public methods */ 55 GType xed_window_get_type (void) G_GNUC_CONST; 56 XedTab *xed_window_create_tab (XedWindow *window, gboolean jump_to); 57 XedTab *xed_window_create_tab_from_location (XedWindow *window, GFile *location, const GtkSourceEncoding *encoding, 58 gint line_pos, gboolean create, gboolean jump_to); 59 XedTab *xed_window_create_tab_from_stream (XedWindow *window, GInputStream *stream, const GtkSourceEncoding *encoding, 60 gint line_pos, gboolean jump_to); 61 void xed_window_close_tab (XedWindow *window, XedTab *tab); 62 void xed_window_close_all_tabs (XedWindow *window); 63 void xed_window_close_tabs (XedWindow *window, const GList *tabs); 64 XedTab *xed_window_get_active_tab (XedWindow *window); 65 void xed_window_set_active_tab (XedWindow *window, XedTab *tab); 66 67 /* Helper functions */ 68 XedView *xed_window_get_active_view (XedWindow *window); 69 XedDocument *xed_window_get_active_document (XedWindow *window); 70 71 /* Returns a newly allocated list with all the documents in the window */ 72 GList *xed_window_get_documents (XedWindow *window); 73 74 /* Returns a newly allocated list with all the documents that need to be 75 saved before closing the window */ 76 GList *xed_window_get_unsaved_documents (XedWindow *window); 77 78 /* Returns a newly allocated list with all the views in the window */ 79 GList *xed_window_get_views (XedWindow *window); 80 GtkWindowGroup *xed_window_get_group (XedWindow *window); 81 XedPanel *xed_window_get_side_panel (XedWindow *window); 82 XedPanel *xed_window_get_bottom_panel (XedWindow *window); 83 GtkWidget *xed_window_get_statusbar (XedWindow *window); 84 GtkWidget *xed_window_get_searchbar (XedWindow *window); 85 GtkUIManager *xed_window_get_ui_manager (XedWindow *window); 86 XedWindowState xed_window_get_state (XedWindow *window); 87 XedTab *xed_window_get_tab_from_location (XedWindow *window, GFile *location); 88 89 /* Message bus */ 90 XedMessageBus *xed_window_get_message_bus (XedWindow *window); 91 92 /* 93 * Non exported functions 94 */ 95 GtkWidget *_xed_window_get_notebook (XedWindow *window); 96 XedWindow *_xed_window_move_tab_to_new_window (XedWindow *window, XedTab *tab); 97 gboolean _xed_window_is_removing_tabs (XedWindow *window); 98 GFile *_xed_window_get_default_location (XedWindow *window); 99 void _xed_window_set_default_location (XedWindow *window, GFile *location); 100 void _xed_window_set_saving_session_state (XedWindow *window, gboolean saving_session); 101 void _xed_window_fullscreen (XedWindow *window); 102 void _xed_window_unfullscreen (XedWindow *window); 103 gboolean _xed_window_is_fullscreen (XedWindow *window); 104 105 /* these are in xed-window because of screen safety */ 106 void _xed_recent_add (XedWindow *window, GFile *location, const gchar *mime); 107 void _xed_recent_remove (XedWindow *window, GFile *location); 108 109 void _xed_window_get_default_size (gint *width, gint *height); 110 gint _xed_window_get_side_panel_size (XedWindow *window); 111 gint _xed_window_get_bottom_panel_size (XedWindow *window); 112 113 XedPaned *_xed_window_get_hpaned (XedWindow *window); 114 XedPaned *_xed_window_get_vpaned (XedWindow *window); 115 116 G_END_DECLS 117 118 #endif /* __XED_WINDOW_H__ */ 119