/* scratchcore.h generated by valac 0.28.1, the Vala compiler, do not modify */


#ifndef __SCRATCHCORE_H__
#define __SCRATCHCORE_H__

#include <glib.h>
#include <gtk/gtk.h>
#include <granite.h>
#include <stdlib.h>
#include <string.h>
#include <float.h>
#include <math.h>
#include <glib-object.h>
#include <gtksourceview/gtksource.h>
#include <gio/gio.h>
#include <gee.h>
#include <gdk-pixbuf/gdk-pixbuf.h>

G_BEGIN_DECLS


#define SCRATCH_TYPE_MAIN_WINDOW (scratch_main_window_get_type ())
#define SCRATCH_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_TYPE_MAIN_WINDOW, ScratchMainWindow))
#define SCRATCH_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_TYPE_MAIN_WINDOW, ScratchMainWindowClass))
#define SCRATCH_IS_MAIN_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_TYPE_MAIN_WINDOW))
#define SCRATCH_IS_MAIN_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_TYPE_MAIN_WINDOW))
#define SCRATCH_MAIN_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_TYPE_MAIN_WINDOW, ScratchMainWindowClass))

typedef struct _ScratchMainWindow ScratchMainWindow;
typedef struct _ScratchMainWindowClass ScratchMainWindowClass;
typedef struct _ScratchMainWindowPrivate ScratchMainWindowPrivate;

#define SCRATCH_TYPE_SCRATCH_APP (scratch_scratch_app_get_type ())
#define SCRATCH_SCRATCH_APP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_TYPE_SCRATCH_APP, ScratchScratchApp))
#define SCRATCH_SCRATCH_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_TYPE_SCRATCH_APP, ScratchScratchAppClass))
#define SCRATCH_IS_SCRATCH_APP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_TYPE_SCRATCH_APP))
#define SCRATCH_IS_SCRATCH_APP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_TYPE_SCRATCH_APP))
#define SCRATCH_SCRATCH_APP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_TYPE_SCRATCH_APP, ScratchScratchAppClass))

typedef struct _ScratchScratchApp ScratchScratchApp;
typedef struct _ScratchScratchAppClass ScratchScratchAppClass;

#define SCRATCH_WIDGETS_TYPE_TOOLBAR (scratch_widgets_toolbar_get_type ())
#define SCRATCH_WIDGETS_TOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_WIDGETS_TYPE_TOOLBAR, ScratchWidgetsToolbar))
#define SCRATCH_WIDGETS_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_WIDGETS_TYPE_TOOLBAR, ScratchWidgetsToolbarClass))
#define SCRATCH_WIDGETS_IS_TOOLBAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_WIDGETS_TYPE_TOOLBAR))
#define SCRATCH_WIDGETS_IS_TOOLBAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_WIDGETS_TYPE_TOOLBAR))
#define SCRATCH_WIDGETS_TOOLBAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_WIDGETS_TYPE_TOOLBAR, ScratchWidgetsToolbarClass))

typedef struct _ScratchWidgetsToolbar ScratchWidgetsToolbar;
typedef struct _ScratchWidgetsToolbarClass ScratchWidgetsToolbarClass;

#define SCRATCH_WIDGETS_TYPE_SEARCH_MANAGER (scratch_widgets_search_manager_get_type ())
#define SCRATCH_WIDGETS_SEARCH_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_WIDGETS_TYPE_SEARCH_MANAGER, ScratchWidgetsSearchManager))
#define SCRATCH_WIDGETS_SEARCH_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_WIDGETS_TYPE_SEARCH_MANAGER, ScratchWidgetsSearchManagerClass))
#define SCRATCH_WIDGETS_IS_SEARCH_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_WIDGETS_TYPE_SEARCH_MANAGER))
#define SCRATCH_WIDGETS_IS_SEARCH_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_WIDGETS_TYPE_SEARCH_MANAGER))
#define SCRATCH_WIDGETS_SEARCH_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_WIDGETS_TYPE_SEARCH_MANAGER, ScratchWidgetsSearchManagerClass))

typedef struct _ScratchWidgetsSearchManager ScratchWidgetsSearchManager;
typedef struct _ScratchWidgetsSearchManagerClass ScratchWidgetsSearchManagerClass;

#define SCRATCH_WIDGETS_TYPE_LOADING_VIEW (scratch_widgets_loading_view_get_type ())
#define SCRATCH_WIDGETS_LOADING_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_WIDGETS_TYPE_LOADING_VIEW, ScratchWidgetsLoadingView))
#define SCRATCH_WIDGETS_LOADING_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_WIDGETS_TYPE_LOADING_VIEW, ScratchWidgetsLoadingViewClass))
#define SCRATCH_WIDGETS_IS_LOADING_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_WIDGETS_TYPE_LOADING_VIEW))
#define SCRATCH_WIDGETS_IS_LOADING_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_WIDGETS_TYPE_LOADING_VIEW))
#define SCRATCH_WIDGETS_LOADING_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_WIDGETS_TYPE_LOADING_VIEW, ScratchWidgetsLoadingViewClass))

typedef struct _ScratchWidgetsLoadingView ScratchWidgetsLoadingView;
typedef struct _ScratchWidgetsLoadingViewClass ScratchWidgetsLoadingViewClass;

#define SCRATCH_WIDGETS_TYPE_SPLIT_VIEW (scratch_widgets_split_view_get_type ())
#define SCRATCH_WIDGETS_SPLIT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_WIDGETS_TYPE_SPLIT_VIEW, ScratchWidgetsSplitView))
#define SCRATCH_WIDGETS_SPLIT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_WIDGETS_TYPE_SPLIT_VIEW, ScratchWidgetsSplitViewClass))
#define SCRATCH_WIDGETS_IS_SPLIT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_WIDGETS_TYPE_SPLIT_VIEW))
#define SCRATCH_WIDGETS_IS_SPLIT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_WIDGETS_TYPE_SPLIT_VIEW))
#define SCRATCH_WIDGETS_SPLIT_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_WIDGETS_TYPE_SPLIT_VIEW, ScratchWidgetsSplitViewClass))

typedef struct _ScratchWidgetsSplitView ScratchWidgetsSplitView;
typedef struct _ScratchWidgetsSplitViewClass ScratchWidgetsSplitViewClass;

#define SCRATCH_WIDGETS_TYPE_DOCUMENT_VIEW (scratch_widgets_document_view_get_type ())
#define SCRATCH_WIDGETS_DOCUMENT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_WIDGETS_TYPE_DOCUMENT_VIEW, ScratchWidgetsDocumentView))
#define SCRATCH_WIDGETS_DOCUMENT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_WIDGETS_TYPE_DOCUMENT_VIEW, ScratchWidgetsDocumentViewClass))
#define SCRATCH_WIDGETS_IS_DOCUMENT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_WIDGETS_TYPE_DOCUMENT_VIEW))
#define SCRATCH_WIDGETS_IS_DOCUMENT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_WIDGETS_TYPE_DOCUMENT_VIEW))
#define SCRATCH_WIDGETS_DOCUMENT_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_WIDGETS_TYPE_DOCUMENT_VIEW, ScratchWidgetsDocumentViewClass))

typedef struct _ScratchWidgetsDocumentView ScratchWidgetsDocumentView;
typedef struct _ScratchWidgetsDocumentViewClass ScratchWidgetsDocumentViewClass;

#define SCRATCH_SERVICES_TYPE_DOCUMENT (scratch_services_document_get_type ())
#define SCRATCH_SERVICES_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_SERVICES_TYPE_DOCUMENT, ScratchServicesDocument))
#define SCRATCH_SERVICES_DOCUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_SERVICES_TYPE_DOCUMENT, ScratchServicesDocumentClass))
#define SCRATCH_SERVICES_IS_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_SERVICES_TYPE_DOCUMENT))
#define SCRATCH_SERVICES_IS_DOCUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_SERVICES_TYPE_DOCUMENT))
#define SCRATCH_SERVICES_DOCUMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_SERVICES_TYPE_DOCUMENT, ScratchServicesDocumentClass))

typedef struct _ScratchServicesDocument ScratchServicesDocument;
typedef struct _ScratchServicesDocumentClass ScratchServicesDocumentClass;

#define SCRATCH_TYPE_SAVED_STATE (scratch_saved_state_get_type ())
#define SCRATCH_SAVED_STATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_TYPE_SAVED_STATE, ScratchSavedState))
#define SCRATCH_SAVED_STATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_TYPE_SAVED_STATE, ScratchSavedStateClass))
#define SCRATCH_IS_SAVED_STATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_TYPE_SAVED_STATE))
#define SCRATCH_IS_SAVED_STATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_TYPE_SAVED_STATE))
#define SCRATCH_SAVED_STATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_TYPE_SAVED_STATE, ScratchSavedStateClass))

typedef struct _ScratchSavedState ScratchSavedState;
typedef struct _ScratchSavedStateClass ScratchSavedStateClass;

#define SCRATCH_TYPE_SETTINGS (scratch_settings_get_type ())
#define SCRATCH_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_TYPE_SETTINGS, ScratchSettings))
#define SCRATCH_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_TYPE_SETTINGS, ScratchSettingsClass))
#define SCRATCH_IS_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_TYPE_SETTINGS))
#define SCRATCH_IS_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_TYPE_SETTINGS))
#define SCRATCH_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_TYPE_SETTINGS, ScratchSettingsClass))

typedef struct _ScratchSettings ScratchSettings;
typedef struct _ScratchSettingsClass ScratchSettingsClass;

#define SCRATCH_TYPE_SERVICES_SETTINGS (scratch_services_settings_get_type ())
#define SCRATCH_SERVICES_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_TYPE_SERVICES_SETTINGS, ScratchServicesSettings))
#define SCRATCH_SERVICES_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_TYPE_SERVICES_SETTINGS, ScratchServicesSettingsClass))
#define SCRATCH_IS_SERVICES_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_TYPE_SERVICES_SETTINGS))
#define SCRATCH_IS_SERVICES_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_TYPE_SERVICES_SETTINGS))
#define SCRATCH_SERVICES_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_TYPE_SERVICES_SETTINGS, ScratchServicesSettingsClass))

typedef struct _ScratchServicesSettings ScratchServicesSettings;
typedef struct _ScratchServicesSettingsClass ScratchServicesSettingsClass;
typedef struct _ScratchScratchAppPrivate ScratchScratchAppPrivate;

#define SCRATCH_DIALOGS_TYPE_PREFERENCES (scratch_dialogs_preferences_get_type ())
#define SCRATCH_DIALOGS_PREFERENCES(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_DIALOGS_TYPE_PREFERENCES, ScratchDialogsPreferences))
#define SCRATCH_DIALOGS_PREFERENCES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_DIALOGS_TYPE_PREFERENCES, ScratchDialogsPreferencesClass))
#define SCRATCH_DIALOGS_IS_PREFERENCES(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_DIALOGS_TYPE_PREFERENCES))
#define SCRATCH_DIALOGS_IS_PREFERENCES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_DIALOGS_TYPE_PREFERENCES))
#define SCRATCH_DIALOGS_PREFERENCES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_DIALOGS_TYPE_PREFERENCES, ScratchDialogsPreferencesClass))

typedef struct _ScratchDialogsPreferences ScratchDialogsPreferences;
typedef struct _ScratchDialogsPreferencesClass ScratchDialogsPreferencesClass;
typedef struct _ScratchDialogsPreferencesPrivate ScratchDialogsPreferencesPrivate;

#define SCRATCH_SERVICES_TYPE_PLUGINS_MANAGER (scratch_services_plugins_manager_get_type ())
#define SCRATCH_SERVICES_PLUGINS_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_SERVICES_TYPE_PLUGINS_MANAGER, ScratchServicesPluginsManager))
#define SCRATCH_SERVICES_PLUGINS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_SERVICES_TYPE_PLUGINS_MANAGER, ScratchServicesPluginsManagerClass))
#define SCRATCH_SERVICES_IS_PLUGINS_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_SERVICES_TYPE_PLUGINS_MANAGER))
#define SCRATCH_SERVICES_IS_PLUGINS_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_SERVICES_TYPE_PLUGINS_MANAGER))
#define SCRATCH_SERVICES_PLUGINS_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_SERVICES_TYPE_PLUGINS_MANAGER, ScratchServicesPluginsManagerClass))

typedef struct _ScratchServicesPluginsManager ScratchServicesPluginsManager;
typedef struct _ScratchServicesPluginsManagerClass ScratchServicesPluginsManagerClass;
typedef struct _ScratchWidgetsDocumentViewPrivate ScratchWidgetsDocumentViewPrivate;
typedef struct _ScratchWidgetsToolbarPrivate ScratchWidgetsToolbarPrivate;
typedef struct _ScratchWidgetsLoadingViewPrivate ScratchWidgetsLoadingViewPrivate;
typedef struct _ScratchWidgetsSearchManagerPrivate ScratchWidgetsSearchManagerPrivate;

#define SCRATCH_WIDGETS_TYPE_SOURCE_VIEW (scratch_widgets_source_view_get_type ())
#define SCRATCH_WIDGETS_SOURCE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_WIDGETS_TYPE_SOURCE_VIEW, ScratchWidgetsSourceView))
#define SCRATCH_WIDGETS_SOURCE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_WIDGETS_TYPE_SOURCE_VIEW, ScratchWidgetsSourceViewClass))
#define SCRATCH_WIDGETS_IS_SOURCE_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_WIDGETS_TYPE_SOURCE_VIEW))
#define SCRATCH_WIDGETS_IS_SOURCE_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_WIDGETS_TYPE_SOURCE_VIEW))
#define SCRATCH_WIDGETS_SOURCE_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_WIDGETS_TYPE_SOURCE_VIEW, ScratchWidgetsSourceViewClass))

typedef struct _ScratchWidgetsSourceView ScratchWidgetsSourceView;
typedef struct _ScratchWidgetsSourceViewClass ScratchWidgetsSourceViewClass;
typedef struct _ScratchWidgetsSplitViewPrivate ScratchWidgetsSplitViewPrivate;
typedef struct _ScratchWidgetsSourceViewPrivate ScratchWidgetsSourceViewPrivate;

#define SCRATCH_SERVICES_TYPE_DOCUMENT_STATES (scratch_services_document_states_get_type ())
typedef struct _ScratchServicesDocumentPrivate ScratchServicesDocumentPrivate;

#define SCRATCH_SERVICES_TYPE_ENCODING_TYPE (scratch_services_encoding_type_get_type ())

#define SCRATCH_SERVICES_TYPE_ENCODING (scratch_services_encoding_get_type ())
typedef struct _ScratchServicesEncoding ScratchServicesEncoding;

#define SCRATCH_SERVICES_TYPE_FILE_OPTION (scratch_services_file_option_get_type ())

#define SCRATCH_SERVICES_TYPE_FILE_HANDLER (scratch_services_file_handler_get_type ())
#define SCRATCH_SERVICES_FILE_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_SERVICES_TYPE_FILE_HANDLER, ScratchServicesFileHandler))
#define SCRATCH_SERVICES_FILE_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_SERVICES_TYPE_FILE_HANDLER, ScratchServicesFileHandlerClass))
#define SCRATCH_SERVICES_IS_FILE_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_SERVICES_TYPE_FILE_HANDLER))
#define SCRATCH_SERVICES_IS_FILE_HANDLER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_SERVICES_TYPE_FILE_HANDLER))
#define SCRATCH_SERVICES_FILE_HANDLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_SERVICES_TYPE_FILE_HANDLER, ScratchServicesFileHandlerClass))

typedef struct _ScratchServicesFileHandler ScratchServicesFileHandler;
typedef struct _ScratchServicesFileHandlerClass ScratchServicesFileHandlerClass;
typedef struct _ScratchServicesFileHandlerPrivate ScratchServicesFileHandlerPrivate;

#define SCRATCH_SERVICES_TYPE_INTERFACE (scratch_services_interface_get_type ())
#define SCRATCH_SERVICES_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_SERVICES_TYPE_INTERFACE, ScratchServicesInterface))
#define SCRATCH_SERVICES_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_SERVICES_TYPE_INTERFACE, ScratchServicesInterfaceClass))
#define SCRATCH_SERVICES_IS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_SERVICES_TYPE_INTERFACE))
#define SCRATCH_SERVICES_IS_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_SERVICES_TYPE_INTERFACE))
#define SCRATCH_SERVICES_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_SERVICES_TYPE_INTERFACE, ScratchServicesInterfaceClass))

typedef struct _ScratchServicesInterface ScratchServicesInterface;
typedef struct _ScratchServicesInterfaceClass ScratchServicesInterfaceClass;
typedef struct _ScratchServicesInterfacePrivate ScratchServicesInterfacePrivate;

#define SCRATCH_TYPE_TEMPLATE_MANAGER (scratch_template_manager_get_type ())
#define SCRATCH_TEMPLATE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_TYPE_TEMPLATE_MANAGER, ScratchTemplateManager))
#define SCRATCH_TEMPLATE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_TYPE_TEMPLATE_MANAGER, ScratchTemplateManagerClass))
#define SCRATCH_IS_TEMPLATE_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_TYPE_TEMPLATE_MANAGER))
#define SCRATCH_IS_TEMPLATE_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_TYPE_TEMPLATE_MANAGER))
#define SCRATCH_TEMPLATE_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_TYPE_TEMPLATE_MANAGER, ScratchTemplateManagerClass))

typedef struct _ScratchTemplateManager ScratchTemplateManager;
typedef struct _ScratchTemplateManagerClass ScratchTemplateManagerClass;
typedef struct _ScratchServicesPluginsManagerPrivate ScratchServicesPluginsManagerPrivate;

#define SCRATCH_TYPE_SCRATCH_WINDOW_STATE (scratch_scratch_window_state_get_type ())
typedef struct _ScratchSavedStatePrivate ScratchSavedStatePrivate;
typedef struct _ScratchSettingsPrivate ScratchSettingsPrivate;
typedef struct _ScratchServicesSettingsPrivate ScratchServicesSettingsPrivate;

#define SCRATCH_TYPE_TEMPLATE (scratch_template_get_type ())
#define SCRATCH_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_TYPE_TEMPLATE, ScratchTemplate))
#define SCRATCH_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_TYPE_TEMPLATE, ScratchTemplateClass))
#define SCRATCH_IS_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_TYPE_TEMPLATE))
#define SCRATCH_IS_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_TYPE_TEMPLATE))
#define SCRATCH_TEMPLATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_TYPE_TEMPLATE, ScratchTemplateClass))

typedef struct _ScratchTemplate ScratchTemplate;
typedef struct _ScratchTemplateClass ScratchTemplateClass;
typedef struct _ScratchTemplatePrivate ScratchTemplatePrivate;

#define SCRATCH_TYPE_TEST_TEMPLATE (scratch_test_template_get_type ())
#define SCRATCH_TEST_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_TYPE_TEST_TEMPLATE, ScratchTestTemplate))
#define SCRATCH_TEST_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_TYPE_TEST_TEMPLATE, ScratchTestTemplateClass))
#define SCRATCH_IS_TEST_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_TYPE_TEST_TEMPLATE))
#define SCRATCH_IS_TEST_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_TYPE_TEST_TEMPLATE))
#define SCRATCH_TEST_TEMPLATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_TYPE_TEST_TEMPLATE, ScratchTestTemplateClass))

typedef struct _ScratchTestTemplate ScratchTestTemplate;
typedef struct _ScratchTestTemplateClass ScratchTestTemplateClass;
typedef struct _ScratchTestTemplatePrivate ScratchTestTemplatePrivate;

#define TYPE_TEMPLATE_BUTTON (template_button_get_type ())
#define TEMPLATE_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_TEMPLATE_BUTTON, TemplateButton))
#define TEMPLATE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_TEMPLATE_BUTTON, TemplateButtonClass))
#define IS_TEMPLATE_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_TEMPLATE_BUTTON))
#define IS_TEMPLATE_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_TEMPLATE_BUTTON))
#define TEMPLATE_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_TEMPLATE_BUTTON, TemplateButtonClass))

typedef struct _TemplateButton TemplateButton;
typedef struct _TemplateButtonClass TemplateButtonClass;
typedef struct _TemplateButtonPrivate TemplateButtonPrivate;
typedef struct _ScratchTemplateManagerPrivate ScratchTemplateManagerPrivate;

#define SCRATCH_SERVICES_TYPE_ZEITGEIST_LOGGER (scratch_services_zeitgeist_logger_get_type ())
#define SCRATCH_SERVICES_ZEITGEIST_LOGGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SCRATCH_SERVICES_TYPE_ZEITGEIST_LOGGER, ScratchServicesZeitgeistLogger))
#define SCRATCH_SERVICES_ZEITGEIST_LOGGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SCRATCH_SERVICES_TYPE_ZEITGEIST_LOGGER, ScratchServicesZeitgeistLoggerClass))
#define SCRATCH_SERVICES_IS_ZEITGEIST_LOGGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCRATCH_SERVICES_TYPE_ZEITGEIST_LOGGER))
#define SCRATCH_SERVICES_IS_ZEITGEIST_LOGGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SCRATCH_SERVICES_TYPE_ZEITGEIST_LOGGER))
#define SCRATCH_SERVICES_ZEITGEIST_LOGGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SCRATCH_SERVICES_TYPE_ZEITGEIST_LOGGER, ScratchServicesZeitgeistLoggerClass))

typedef struct _ScratchServicesZeitgeistLogger ScratchServicesZeitgeistLogger;
typedef struct _ScratchServicesZeitgeistLoggerClass ScratchServicesZeitgeistLoggerClass;
typedef struct _ScratchServicesZeitgeistLoggerPrivate ScratchServicesZeitgeistLoggerPrivate;

struct _ScratchMainWindow {
	GtkWindow parent_instance;
	ScratchMainWindowPrivate * priv;
	gint FONT_SIZE_MAX;
	gint FONT_SIZE_MIN;
	ScratchScratchApp* app;
	ScratchWidgetsToolbar* toolbar;
	ScratchWidgetsSearchManager* search_manager;
	ScratchWidgetsLoadingView* loading_view;
	ScratchWidgetsSplitView* split_view;
	GtkNotebook* sidebar;
	GtkNotebook* contextbar;
	GtkNotebook* bottombar;
	GtkActionGroup* main_actions;
	GtkUIManager* ui;
	GtkClipboard* clipboard;
};

struct _ScratchMainWindowClass {
	GtkWindowClass parent_class;
};

struct _ScratchScratchApp {
	GraniteApplication parent_instance;
	ScratchScratchAppPrivate * priv;
};

struct _ScratchScratchAppClass {
	GraniteApplicationClass parent_class;
};

struct _ScratchDialogsPreferences {
	GtkDialog parent_instance;
	ScratchDialogsPreferencesPrivate * priv;
};

struct _ScratchDialogsPreferencesClass {
	GtkDialogClass parent_class;
};

struct _ScratchWidgetsDocumentView {
	GtkBox parent_instance;
	ScratchWidgetsDocumentViewPrivate * priv;
	GraniteWidgetsDynamicNotebook* notebook;
	GList* docs;
};

struct _ScratchWidgetsDocumentViewClass {
	GtkBoxClass parent_class;
};

struct _ScratchWidgetsToolbar {
	GtkHeaderBar parent_instance;
	ScratchWidgetsToolbarPrivate * priv;
	GtkToolButton* open_button;
	GtkToolButton* templates_button;
	GtkToolButton* save_button;
	GtkToolButton* save_as_button;
	GtkToolButton* revert_button;
	GtkToolButton* find_button;
	GtkToolButton* zoom_default;
	GtkMenu* share_menu;
	GtkMenu* menu;
	GraniteWidgetsToolButtonWithMenu* share_app_menu;
	GraniteWidgetsAppMenu* app_menu;
};

struct _ScratchWidgetsToolbarClass {
	GtkHeaderBarClass parent_class;
};

struct _ScratchWidgetsLoadingView {
	GtkEventBox parent_instance;
	ScratchWidgetsLoadingViewPrivate * priv;
};

struct _ScratchWidgetsLoadingViewClass {
	GtkEventBoxClass parent_class;
};

struct _ScratchWidgetsSearchManager {
	GtkToolbar parent_instance;
	ScratchWidgetsSearchManagerPrivate * priv;
	GtkSearchEntry* search_entry;
	GtkSearchEntry* replace_entry;
	GtkSpinButton* go_to_entry;
};

struct _ScratchWidgetsSearchManagerClass {
	GtkToolbarClass parent_class;
};

struct _ScratchWidgetsSplitView {
	GraniteWidgetsCollapsiblePaned parent_instance;
	ScratchWidgetsSplitViewPrivate * priv;
	GraniteWidgetsWelcome* welcome_screen;
	ScratchWidgetsDocumentView* current_view;
	GList* views;
};

struct _ScratchWidgetsSplitViewClass {
	GraniteWidgetsCollapsiblePanedClass parent_class;
};

struct _ScratchWidgetsSourceView {
	GtkSourceView parent_instance;
	ScratchWidgetsSourceViewPrivate * priv;
	GtkSourceBuffer* buffer;
	GtkTextMark* mark;
	GtkSourceLanguageManager* manager;
	GtkSourceStyleSchemeManager* style_scheme_manager;
	GtkTextTag* warning_tag;
	GtkTextTag* error_tag;
};

struct _ScratchWidgetsSourceViewClass {
	GtkSourceViewClass parent_class;
};

typedef enum  {
	SCRATCH_SERVICES_DOCUMENT_STATES_NORMAL,
	SCRATCH_SERVICES_DOCUMENT_STATES_READONLY
} ScratchServicesDocumentStates;

struct _ScratchServicesDocument {
	GraniteWidgetsTab parent_instance;
	ScratchServicesDocumentPrivate * priv;
	ScratchWidgetsSourceView* source_view;
	gchar* original_content;
	gboolean saved;
};

struct _ScratchServicesDocumentClass {
	GraniteWidgetsTabClass parent_class;
};

typedef void (*ScratchServicesDocumentVoidFunc) (void* user_data);
typedef enum  {
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_1,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_2,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_3,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_4,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_5,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_6,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_7,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_8,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_9,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_10,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_13,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_14,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_15,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_8859_16,
	SCRATCH_SERVICES_ENCODING_TYPE_UTF_7,
	SCRATCH_SERVICES_ENCODING_TYPE_UTF_16,
	SCRATCH_SERVICES_ENCODING_TYPE_UTF_16_BE,
	SCRATCH_SERVICES_ENCODING_TYPE_UTF_16_LE,
	SCRATCH_SERVICES_ENCODING_TYPE_UTF_32,
	SCRATCH_SERVICES_ENCODING_TYPE_UCS_2,
	SCRATCH_SERVICES_ENCODING_TYPE_UCS_4,
	SCRATCH_SERVICES_ENCODING_TYPE_ARMSCII_8,
	SCRATCH_SERVICES_ENCODING_TYPE_BIG5,
	SCRATCH_SERVICES_ENCODING_TYPE_BIG5_HKSCS,
	SCRATCH_SERVICES_ENCODING_TYPE_CP_866,
	SCRATCH_SERVICES_ENCODING_TYPE_EUC_JP,
	SCRATCH_SERVICES_ENCODING_TYPE_EUC_JP_MS,
	SCRATCH_SERVICES_ENCODING_TYPE_CP932,
	SCRATCH_SERVICES_ENCODING_TYPE_EUC_KR,
	SCRATCH_SERVICES_ENCODING_TYPE_EUC_TW,
	SCRATCH_SERVICES_ENCODING_TYPE_GB18030,
	SCRATCH_SERVICES_ENCODING_TYPE_GB2312,
	SCRATCH_SERVICES_ENCODING_TYPE_GBK,
	SCRATCH_SERVICES_ENCODING_TYPE_GEOSTD8,
	SCRATCH_SERVICES_ENCODING_TYPE_IBM_850,
	SCRATCH_SERVICES_ENCODING_TYPE_IBM_852,
	SCRATCH_SERVICES_ENCODING_TYPE_IBM_855,
	SCRATCH_SERVICES_ENCODING_TYPE_IBM_857,
	SCRATCH_SERVICES_ENCODING_TYPE_IBM_862,
	SCRATCH_SERVICES_ENCODING_TYPE_IBM_864,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_2022_JP,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_2022_KR,
	SCRATCH_SERVICES_ENCODING_TYPE_ISO_IR_111,
	SCRATCH_SERVICES_ENCODING_TYPE_JOHAB,
	SCRATCH_SERVICES_ENCODING_TYPE_KOI8_R,
	SCRATCH_SERVICES_ENCODING_TYPE_KOI8__R,
	SCRATCH_SERVICES_ENCODING_TYPE_KOI8_U,
	SCRATCH_SERVICES_ENCODING_TYPE_SHIFT_JIS,
	SCRATCH_SERVICES_ENCODING_TYPE_TCVN,
	SCRATCH_SERVICES_ENCODING_TYPE_TIS_620,
	SCRATCH_SERVICES_ENCODING_TYPE_UHC,
	SCRATCH_SERVICES_ENCODING_TYPE_VISCII,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1250,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1251,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1252,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1253,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1254,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1255,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1256,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1257,
	SCRATCH_SERVICES_ENCODING_TYPE_WINDOWS_1258,
	SCRATCH_SERVICES_ENCODING_TYPE_LAST,
	SCRATCH_SERVICES_ENCODING_TYPE_UTF_8,
	SCRATCH_SERVICES_ENCODING_TYPE_UNKNOWN
} ScratchServicesEncodingType;

struct _ScratchServicesEncoding {
	ScratchServicesEncodingType type;
	gchar* encoding;
	gchar* name;
};

typedef enum  {
	SCRATCH_SERVICES_FILE_OPTION_EXISTS,
	SCRATCH_SERVICES_FILE_OPTION_IS_DIR,
	SCRATCH_SERVICES_FILE_OPTION_IS_EXECUTABLE
} ScratchServicesFileOption;

struct _ScratchServicesFileHandler {
	GObject parent_instance;
	ScratchServicesFileHandlerPrivate * priv;
};

struct _ScratchServicesFileHandlerClass {
	GObjectClass parent_class;
};

struct _ScratchServicesInterface {
	GObject parent_instance;
	ScratchServicesInterfacePrivate * priv;
	ScratchServicesPluginsManager* manager;
};

struct _ScratchServicesInterfaceClass {
	GObjectClass parent_class;
};

struct _ScratchServicesPluginsManager {
	GObject parent_instance;
	ScratchServicesPluginsManagerPrivate * priv;
	ScratchMainWindow* window;
};

struct _ScratchServicesPluginsManagerClass {
	GObjectClass parent_class;
};

typedef enum  {
	SCRATCH_SCRATCH_WINDOW_STATE_NORMAL = 0,
	SCRATCH_SCRATCH_WINDOW_STATE_MAXIMIZED = 1,
	SCRATCH_SCRATCH_WINDOW_STATE_FULLSCREEN = 2
} ScratchScratchWindowState;

struct _ScratchSavedState {
	GraniteServicesSettings parent_instance;
	ScratchSavedStatePrivate * priv;
};

struct _ScratchSavedStateClass {
	GraniteServicesSettingsClass parent_class;
};

struct _ScratchSettings {
	GraniteServicesSettings parent_instance;
	ScratchSettingsPrivate * priv;
};

struct _ScratchSettingsClass {
	GraniteServicesSettingsClass parent_class;
};

struct _ScratchServicesSettings {
	GraniteServicesSettings parent_instance;
	ScratchServicesSettingsPrivate * priv;
};

struct _ScratchServicesSettingsClass {
	GraniteServicesSettingsClass parent_class;
};

struct _ScratchTemplate {
	GObject parent_instance;
	ScratchTemplatePrivate * priv;
};

struct _ScratchTemplateClass {
	GObjectClass parent_class;
	GtkWidget* (*get_creation_box) (ScratchTemplate* self);
};

struct _ScratchTestTemplate {
	ScratchTemplate parent_instance;
	ScratchTestTemplatePrivate * priv;
};

struct _ScratchTestTemplateClass {
	ScratchTemplateClass parent_class;
};

struct _TemplateButton {
	GtkButton parent_instance;
	TemplateButtonPrivate * priv;
};

struct _TemplateButtonClass {
	GtkButtonClass parent_class;
};

struct _ScratchTemplateManager {
	GObject parent_instance;
	ScratchTemplateManagerPrivate * priv;
	gboolean template_available;
};

struct _ScratchTemplateManagerClass {
	GObjectClass parent_class;
};

struct _ScratchServicesZeitgeistLogger {
	GTypeInstance parent_instance;
	volatile int ref_count;
	ScratchServicesZeitgeistLoggerPrivate * priv;
	gchar* actor;
	gchar* event_manifestation;
};

struct _ScratchServicesZeitgeistLoggerClass {
	GTypeClass parent_class;
	void (*finalize) (ScratchServicesZeitgeistLogger *self);
};


GType scratch_main_window_get_type (void) G_GNUC_CONST;
GType scratch_scratch_app_get_type (void) G_GNUC_CONST;
GType scratch_widgets_toolbar_get_type (void) G_GNUC_CONST;
GType scratch_widgets_search_manager_get_type (void) G_GNUC_CONST;
GType scratch_widgets_loading_view_get_type (void) G_GNUC_CONST;
GType scratch_widgets_split_view_get_type (void) G_GNUC_CONST;
ScratchMainWindow* scratch_main_window_new (ScratchScratchApp* scratch_app);
ScratchMainWindow* scratch_main_window_construct (GType object_type, ScratchScratchApp* scratch_app);
GType scratch_widgets_document_view_get_type (void) G_GNUC_CONST;
ScratchWidgetsDocumentView* scratch_main_window_get_current_view (ScratchMainWindow* self);
GType scratch_services_document_get_type (void) G_GNUC_CONST;
ScratchServicesDocument* scratch_main_window_get_current_document (ScratchMainWindow* self);
ScratchWidgetsDocumentView* scratch_main_window_add_view (ScratchMainWindow* self);
void scratch_main_window_start_loading (ScratchMainWindow* self);
void scratch_main_window_stop_loading (ScratchMainWindow* self);
void scratch_main_window_open_document (ScratchMainWindow* self, ScratchServicesDocument* doc);
void scratch_main_window_close_document (ScratchMainWindow* self, ScratchServicesDocument* doc);
gboolean scratch_main_window_is_empty (ScratchMainWindow* self);
gboolean scratch_main_window_has_temporary_files (ScratchMainWindow* self);
gboolean scratch_main_window_quit_source_func (ScratchMainWindow* self);
void scratch_main_window_set_default_zoom (ScratchMainWindow* self);
void scratch_main_window_zoom_in (ScratchMainWindow* self);
void scratch_main_window_zoom_out (ScratchMainWindow* self);
gchar* scratch_main_window_get_current_font (ScratchMainWindow* self);
gdouble scratch_main_window_get_current_font_size (ScratchMainWindow* self);
gchar* scratch_main_window_get_default_font (ScratchMainWindow* self);
gdouble scratch_main_window_get_default_font_size (ScratchMainWindow* self);
GType scratch_saved_state_get_type (void) G_GNUC_CONST;
extern ScratchSavedState* scratch_saved_state;
GType scratch_settings_get_type (void) G_GNUC_CONST;
extern ScratchSettings* scratch_settings;
GType scratch_services_settings_get_type (void) G_GNUC_CONST;
extern ScratchServicesSettings* scratch_services;
extern ScratchScratchApp* scratch_scratch_app__instance;
ScratchScratchApp* scratch_scratch_app_new (void);
ScratchScratchApp* scratch_scratch_app_construct (GType object_type);
ScratchMainWindow* scratch_scratch_app_get_last_window (ScratchScratchApp* self);
ScratchMainWindow* scratch_scratch_app_new_window (ScratchScratchApp* self);
gint scratch_scratch_app_main (gchar** args, int args_length1);
const gchar* scratch_scratch_app_get_app_cmd_name (ScratchScratchApp* self);
const gchar* scratch_scratch_app_get_data_home_folder_unsaved (ScratchScratchApp* self);
const gchar* scratch_scratch_app_get_default_font (ScratchScratchApp* self);
void scratch_scratch_app_set_default_font (ScratchScratchApp* self, const gchar* value);
ScratchScratchApp* scratch_scratch_app_get_instance (void);
#define SCRATCH_UTILS_UI_PATH CONSTANTS_DATADIR "/scratch-ui.xml"
extern gchar* scratch_utils_last_path;
GtkFileChooserDialog* scratch_utils_new_file_chooser_dialog (GtkFileChooserAction action, const gchar* title, GtkWindow* parent, gboolean select_multiple);
GType scratch_dialogs_preferences_get_type (void) G_GNUC_CONST;
GType scratch_services_plugins_manager_get_type (void) G_GNUC_CONST;
ScratchDialogsPreferences* scratch_dialogs_preferences_new (GtkWindow* parent, ScratchServicesPluginsManager* plugins);
ScratchDialogsPreferences* scratch_dialogs_preferences_construct (GType object_type, GtkWindow* parent, ScratchServicesPluginsManager* plugins);
ScratchWidgetsDocumentView* scratch_widgets_document_view_new (ScratchMainWindow* window);
ScratchWidgetsDocumentView* scratch_widgets_document_view_construct (GType object_type, ScratchMainWindow* window);
void scratch_widgets_document_view_new_document (ScratchWidgetsDocumentView* self);
void scratch_widgets_document_view_new_document_from_clipboard (ScratchWidgetsDocumentView* self, const gchar* clipboard);
void scratch_widgets_document_view_open_document (ScratchWidgetsDocumentView* self, ScratchServicesDocument* doc);
void scratch_widgets_document_view_duplicate_document (ScratchWidgetsDocumentView* self, ScratchServicesDocument* original);
void scratch_widgets_document_view_next_document (ScratchWidgetsDocumentView* self);
void scratch_widgets_document_view_previous_document (ScratchWidgetsDocumentView* self);
void scratch_widgets_document_view_close_document (ScratchWidgetsDocumentView* self, ScratchServicesDocument* doc);
void scratch_widgets_document_view_close_current_document (ScratchWidgetsDocumentView* self);
ScratchServicesDocument* scratch_widgets_document_view_get_current_document (ScratchWidgetsDocumentView* self);
void scratch_widgets_document_view_set_current_document (ScratchWidgetsDocumentView* self, ScratchServicesDocument* doc);
gboolean scratch_widgets_document_view_is_empty (ScratchWidgetsDocumentView* self);
void scratch_widgets_document_view_focus (ScratchWidgetsDocumentView* self);
void scratch_widgets_document_view_set_current (ScratchWidgetsDocumentView* self, ScratchServicesDocument* value);
ScratchWidgetsToolbar* scratch_widgets_toolbar_new (GtkActionGroup* main_actions);
ScratchWidgetsToolbar* scratch_widgets_toolbar_construct (GType object_type, GtkActionGroup* main_actions);
ScratchWidgetsLoadingView* scratch_widgets_loading_view_new (void);
ScratchWidgetsLoadingView* scratch_widgets_loading_view_construct (GType object_type);
void scratch_widgets_loading_view_start (ScratchWidgetsLoadingView* self);
void scratch_widgets_loading_view_stop (ScratchWidgetsLoadingView* self);
ScratchWidgetsSearchManager* scratch_widgets_search_manager_new (ScratchMainWindow* window);
ScratchWidgetsSearchManager* scratch_widgets_search_manager_construct (GType object_type, ScratchMainWindow* window);
GType scratch_widgets_source_view_get_type (void) G_GNUC_CONST;
void scratch_widgets_search_manager_set_text_view (ScratchWidgetsSearchManager* self, ScratchWidgetsSourceView* text_view);
void scratch_widgets_search_manager_set_search_string (ScratchWidgetsSearchManager* self, const gchar* to_search);
gboolean scratch_widgets_search_manager_search (ScratchWidgetsSearchManager* self);
void scratch_widgets_search_manager_highlight_none (ScratchWidgetsSearchManager* self);
void scratch_widgets_search_manager_search_previous (ScratchWidgetsSearchManager* self);
void scratch_widgets_search_manager_search_next (ScratchWidgetsSearchManager* self);
gboolean scratch_widgets_search_manager_get_cycle_search (ScratchWidgetsSearchManager* self);
void scratch_widgets_search_manager_set_cycle_search (ScratchWidgetsSearchManager* self, gboolean value);
ScratchWidgetsSplitView* scratch_widgets_split_view_new (ScratchMainWindow* window);
ScratchWidgetsSplitView* scratch_widgets_split_view_construct (GType object_type, ScratchMainWindow* window);
ScratchWidgetsDocumentView* scratch_widgets_split_view_add_view (ScratchWidgetsSplitView* self);
void scratch_widgets_split_view_remove_view (ScratchWidgetsSplitView* self, ScratchWidgetsDocumentView* view);
ScratchWidgetsDocumentView* scratch_widgets_split_view_get_current_view (ScratchWidgetsSplitView* self);
gboolean scratch_widgets_split_view_is_empty (ScratchWidgetsSplitView* self);
void scratch_widgets_split_view_show_welcome (ScratchWidgetsSplitView* self);
void scratch_widgets_split_view_hide_welcome (ScratchWidgetsSplitView* self);
ScratchWidgetsSourceView* scratch_widgets_source_view_new (void);
ScratchWidgetsSourceView* scratch_widgets_source_view_construct (GType object_type);
void scratch_widgets_source_view_use_default_font (ScratchWidgetsSourceView* self, gboolean value);
void scratch_widgets_source_view_change_syntax_highlight_from_file (ScratchWidgetsSourceView* self, GFile* file);
void scratch_widgets_source_view_go_to_line (ScratchWidgetsSourceView* self, gint line);
gchar* scratch_widgets_source_view_get_selected_text (ScratchWidgetsSourceView* self, gboolean replace_new_line);
void scratch_widgets_source_view_duplicate_selection (ScratchWidgetsSourceView* self);
void scratch_widgets_source_view_set_text (ScratchWidgetsSourceView* self, const gchar* text, gboolean opening);
void scratch_widgets_source_view_set_language (ScratchWidgetsSourceView* self, GtkSourceLanguage* lang);
GType scratch_services_document_states_get_type (void) G_GNUC_CONST;
ScratchServicesDocument* scratch_services_document_new (GtkActionGroup* actions, GFile* file);
ScratchServicesDocument* scratch_services_document_construct (GType object_type, GtkActionGroup* actions, GFile* file);
void scratch_services_document_toggle_changed_handlers (ScratchServicesDocument* self, gboolean enabled);
void scratch_services_document_open (ScratchServicesDocument* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean scratch_services_document_open_finish (ScratchServicesDocument* self, GAsyncResult* _res_);
gboolean scratch_services_document_close (ScratchServicesDocument* self, gboolean app_closing);
void scratch_services_document_save (ScratchServicesDocument* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean scratch_services_document_save_finish (ScratchServicesDocument* self, GAsyncResult* _res_);
void scratch_services_document_save_as (ScratchServicesDocument* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
gboolean scratch_services_document_save_as_finish (ScratchServicesDocument* self, GAsyncResult* _res_);
gboolean scratch_services_document_move (ScratchServicesDocument* self, GFile* new_dest);
gchar* scratch_services_document_get_mime_type (ScratchServicesDocument* self);
void scratch_services_document_focus (ScratchServicesDocument* self);
void scratch_services_document_create_page (ScratchServicesDocument* self);
gchar* scratch_services_document_get_uri (ScratchServicesDocument* self);
gchar* scratch_services_document_get_basename (ScratchServicesDocument* self);
void scratch_services_document_set_message (ScratchServicesDocument* self, GtkMessageType type, const gchar* label, const gchar* button1, ScratchServicesDocumentVoidFunc callback1, void* callback1_target, GDestroyNotify callback1_target_destroy_notify, const gchar* button2, ScratchServicesDocumentVoidFunc callback2, void* callback2_target, GDestroyNotify callback2_target_destroy_notify);
void scratch_services_document_hide_info_bar (ScratchServicesDocument* self);
void scratch_services_document_undo (ScratchServicesDocument* self);
void scratch_services_document_redo (ScratchServicesDocument* self);
void scratch_services_document_revert (ScratchServicesDocument* self);
gchar* scratch_services_document_get_text (ScratchServicesDocument* self);
gchar* scratch_services_document_get_selected_text (ScratchServicesDocument* self);
gchar* scratch_services_document_get_language_name (ScratchServicesDocument* self);
gchar* scratch_services_document_get_language_id (ScratchServicesDocument* self);
void scratch_services_document_duplicate_selection (ScratchServicesDocument* self);
void scratch_services_document_check_file_status (ScratchServicesDocument* self);
void scratch_services_document_check_undoable_actions (ScratchServicesDocument* self);
void scratch_services_document_set_saved_status (ScratchServicesDocument* self, gboolean val);
gboolean scratch_services_document_can_write (ScratchServicesDocument* self);
gboolean scratch_services_document_exists (ScratchServicesDocument* self);
GtkActionGroup* scratch_services_document_get_main_actions (ScratchServicesDocument* self);
void scratch_services_document_set_main_actions (ScratchServicesDocument* self, GtkActionGroup* value);
GFile* scratch_services_document_get_file (ScratchServicesDocument* self);
void scratch_services_document_set_file (ScratchServicesDocument* self, GFile* value);
gboolean scratch_services_document_get_is_file_temporary (ScratchServicesDocument* self);
GType scratch_services_encoding_type_get_type (void) G_GNUC_CONST;
GType scratch_services_encoding_get_type (void) G_GNUC_CONST;
ScratchServicesEncoding* scratch_services_encoding_dup (const ScratchServicesEncoding* self);
void scratch_services_encoding_free (ScratchServicesEncoding* self);
void scratch_services_encoding_copy (const ScratchServicesEncoding* self, ScratchServicesEncoding* dest);
void scratch_services_encoding_destroy (ScratchServicesEncoding* self);
GType scratch_services_file_option_get_type (void) G_GNUC_CONST;
GType scratch_services_file_handler_get_type (void) G_GNUC_CONST;
void scratch_services_file_handler_load_content_from_file (GFile* file, GAsyncReadyCallback _callback_, gpointer _user_data_);
gchar* scratch_services_file_handler_load_content_from_file_finish (GAsyncResult* _res_);
gchar* scratch_services_file_handler_load_content_from_file_sync (GFile* file);
gboolean scratch_services_file_handler_move (const gchar* path, const gchar* new_path);
gboolean scratch_services_file_handler_move_uri (const gchar* uri, const gchar* new_uri);
gboolean scratch_services_file_handler_copy (const gchar* path, const gchar* new_path);
ScratchServicesFileHandler* scratch_services_file_handler_new (void);
ScratchServicesFileHandler* scratch_services_file_handler_construct (GType object_type);
GType scratch_services_interface_get_type (void) G_GNUC_CONST;
ScratchServicesInterface* scratch_services_interface_new (ScratchServicesPluginsManager* manager);
ScratchServicesInterface* scratch_services_interface_construct (GType object_type, ScratchServicesPluginsManager* manager);
ScratchServicesDocument* scratch_services_interface_open_file (ScratchServicesInterface* self, GFile* file);
void scratch_services_interface_close_document (ScratchServicesInterface* self, ScratchServicesDocument* doc);
GType scratch_template_manager_get_type (void) G_GNUC_CONST;
ScratchTemplateManager* scratch_services_interface_get_template_manager (ScratchServicesInterface* self);
ScratchServicesPluginsManager* scratch_services_plugins_manager_new (ScratchMainWindow* window, const gchar* set_name);
ScratchServicesPluginsManager* scratch_services_plugins_manager_construct (GType object_type, ScratchMainWindow* window, const gchar* set_name);
GtkWidget* scratch_services_plugins_manager_get_view (ScratchServicesPluginsManager* self);
ScratchServicesInterface* scratch_services_plugins_manager_get_plugin_iface (ScratchServicesPluginsManager* self);
GType scratch_scratch_window_state_get_type (void) G_GNUC_CONST;
ScratchSavedState* scratch_saved_state_new (void);
ScratchSavedState* scratch_saved_state_construct (GType object_type);
gint scratch_saved_state_get_window_width (ScratchSavedState* self);
void scratch_saved_state_set_window_width (ScratchSavedState* self, gint value);
gint scratch_saved_state_get_window_height (ScratchSavedState* self);
void scratch_saved_state_set_window_height (ScratchSavedState* self, gint value);
ScratchScratchWindowState scratch_saved_state_get_window_state (ScratchSavedState* self);
void scratch_saved_state_set_window_state (ScratchSavedState* self, ScratchScratchWindowState value);
gint scratch_saved_state_get_window_x (ScratchSavedState* self);
void scratch_saved_state_set_window_x (ScratchSavedState* self, gint value);
gint scratch_saved_state_get_window_y (ScratchSavedState* self);
void scratch_saved_state_set_window_y (ScratchSavedState* self, gint value);
gint scratch_saved_state_get_hp1_size (ScratchSavedState* self);
void scratch_saved_state_set_hp1_size (ScratchSavedState* self, gint value);
gint scratch_saved_state_get_hp2_size (ScratchSavedState* self);
void scratch_saved_state_set_hp2_size (ScratchSavedState* self, gint value);
gint scratch_saved_state_get_vp_size (ScratchSavedState* self);
void scratch_saved_state_set_vp_size (ScratchSavedState* self, gint value);
ScratchSettings* scratch_settings_new (void);
ScratchSettings* scratch_settings_construct (GType object_type);
gboolean scratch_settings_get_show_line_numbers (ScratchSettings* self);
void scratch_settings_set_show_line_numbers (ScratchSettings* self, gboolean value);
gboolean scratch_settings_get_line_break (ScratchSettings* self);
void scratch_settings_set_line_break (ScratchSettings* self, gboolean value);
gboolean scratch_settings_get_highlight_current_line (ScratchSettings* self);
void scratch_settings_set_highlight_current_line (ScratchSettings* self, gboolean value);
gboolean scratch_settings_get_highlight_matching_brackets (ScratchSettings* self);
void scratch_settings_set_highlight_matching_brackets (ScratchSettings* self, gboolean value);
gboolean scratch_settings_get_draw_spaces (ScratchSettings* self);
void scratch_settings_set_draw_spaces (ScratchSettings* self, gboolean value);
gboolean scratch_settings_get_spaces_instead_of_tabs (ScratchSettings* self);
void scratch_settings_set_spaces_instead_of_tabs (ScratchSettings* self, gboolean value);
gboolean scratch_settings_get_auto_indent (ScratchSettings* self);
void scratch_settings_set_auto_indent (ScratchSettings* self, gboolean value);
gint scratch_settings_get_indent_width (ScratchSettings* self);
void scratch_settings_set_indent_width (ScratchSettings* self, gint value);
gboolean scratch_settings_get_show_right_margin (ScratchSettings* self);
void scratch_settings_set_show_right_margin (ScratchSettings* self, gboolean value);
gint scratch_settings_get_right_margin_position (ScratchSettings* self);
void scratch_settings_set_right_margin_position (ScratchSettings* self, gint value);
gboolean scratch_settings_get_use_system_font (ScratchSettings* self);
void scratch_settings_set_use_system_font (ScratchSettings* self, gboolean value);
const gchar* scratch_settings_get_font (ScratchSettings* self);
void scratch_settings_set_font (ScratchSettings* self, const gchar* value);
const gchar* scratch_settings_get_style_scheme (ScratchSettings* self);
void scratch_settings_set_style_scheme (ScratchSettings* self, const gchar* value);
gchar** scratch_settings_get_plugins_enabled (ScratchSettings* self, int* result_length1);
void scratch_settings_set_plugins_enabled (ScratchSettings* self, gchar** value, int value_length1);
const gchar* scratch_settings_get_show_at_start (ScratchSettings* self);
void scratch_settings_set_show_at_start (ScratchSettings* self, const gchar* value);
gchar** scratch_settings_get_opened_files (ScratchSettings* self, int* result_length1);
void scratch_settings_set_opened_files (ScratchSettings* self, gchar** value, int value_length1);
gboolean scratch_settings_get_autosave (ScratchSettings* self);
void scratch_settings_set_autosave (ScratchSettings* self, gboolean value);
const gchar* scratch_settings_get_focused_document (ScratchSettings* self);
void scratch_settings_set_focused_document (ScratchSettings* self, const gchar* value);
ScratchServicesSettings* scratch_services_settings_new (void);
ScratchServicesSettings* scratch_services_settings_construct (GType object_type);
const gchar* scratch_services_settings_get_paste_format_code (ScratchServicesSettings* self);
void scratch_services_settings_set_paste_format_code (ScratchServicesSettings* self, const gchar* value);
const gchar* scratch_services_settings_get_expiry_time (ScratchServicesSettings* self);
void scratch_services_settings_set_expiry_time (ScratchServicesSettings* self, const gchar* value);
gboolean scratch_services_settings_get_set_private (ScratchServicesSettings* self);
void scratch_services_settings_set_set_private (ScratchServicesSettings* self, gboolean value);
GType scratch_template_get_type (void) G_GNUC_CONST;
GtkWidget* scratch_template_get_creation_box (ScratchTemplate* self);
void scratch_template_configure_template (const gchar* origin, const gchar* destination, GeeHashMap* variables);
void scratch_template_enumerate_directory (GFile* origin, GList** files, GList** directories);
void scratch_template_info_directory (GFile* file, gboolean* is_directory, gboolean* exists);
ScratchTemplate* scratch_template_construct (GType object_type);
GType scratch_test_template_get_type (void) G_GNUC_CONST;
ScratchTestTemplate* scratch_test_template_new (void);
ScratchTestTemplate* scratch_test_template_construct (GType object_type);
GType template_button_get_type (void) G_GNUC_CONST;
TemplateButton* template_button_new (const gchar* title, const gchar* description, const gchar* icon);
TemplateButton* template_button_construct (GType object_type, const gchar* title, const gchar* description, const gchar* icon);
void template_button_set_icon_from_pixbuf (TemplateButton* self, GdkPixbuf* pixbuf);
ScratchTemplateManager* scratch_template_manager_new (void);
ScratchTemplateManager* scratch_template_manager_construct (GType object_type);
void scratch_template_manager_register_template (ScratchTemplateManager* self, const gchar* icon_id, const gchar* label, const gchar* description, GType template_type);
void scratch_template_manager_show_window (ScratchTemplateManager* self, GtkWidget* parent);
gpointer scratch_services_zeitgeist_logger_ref (gpointer instance);
void scratch_services_zeitgeist_logger_unref (gpointer instance);
GParamSpec* scratch_services_param_spec_zeitgeist_logger (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void scratch_services_value_set_zeitgeist_logger (GValue* value, gpointer v_object);
void scratch_services_value_take_zeitgeist_logger (GValue* value, gpointer v_object);
gpointer scratch_services_value_get_zeitgeist_logger (const GValue* value);
GType scratch_services_zeitgeist_logger_get_type (void) G_GNUC_CONST;
void scratch_services_zeitgeist_logger_open_insert (ScratchServicesZeitgeistLogger* self, const gchar* uri, const gchar* mimetype);
void scratch_services_zeitgeist_logger_close_insert (ScratchServicesZeitgeistLogger* self, const gchar* uri, const gchar* mimetype);
void scratch_services_zeitgeist_logger_save_insert (ScratchServicesZeitgeistLogger* self, const gchar* uri, const gchar* mimetype);
void scratch_services_zeitgeist_logger_move_insert (ScratchServicesZeitgeistLogger* self, const gchar* old_uri, const gchar* new_uri, const gchar* mimetype);
ScratchServicesZeitgeistLogger* scratch_services_zeitgeist_logger_new (void);
ScratchServicesZeitgeistLogger* scratch_services_zeitgeist_logger_construct (GType object_type);
#define CONSTANTS_DATADIR "/usr/share/scratch"
#define CONSTANTS_SCRIPTDIR "/usr/share/scratch/scripts"
#define CONSTANTS_PKGDATADIR "/usr/share/scratch/scratch"
#define CONSTANTS_GETTEXT_PACKAGE "scratch-text-editor"
#define CONSTANTS_RELEASE_NAME "The elementary Text Editor."
#define CONSTANTS_VERSION "2.2.1"
#define CONSTANTS_VERSION_INFO "Release"
#define CONSTANTS_PLUGINDIR "/usr/lib/scratch/plugins"
#define CONSTANTS_INSTALL_PREFIX "/usr"
#define CONSTANTS_COMMENT "Edit text files"
#define CONSTANTS_GENERIC "Text Editor"
#define CONSTANTS_NEW_DOCUMENT "New Document"
#define CONSTANTS_NEW_WINDOW "New Window"
#define CONSTANTS_ABOUT_SCRATCH "About Scratch"

extern const ScratchServicesEncoding SCRATCH_SERVICES_encodings[61];

G_END_DECLS

#endif
