/* * Web view scheme-specific members and methods * * Copyright (C) 2017 Patrick McDermott * * This file is part of Marquee. * * Marquee is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Marquee 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Marquee. If not, see . */ typedef struct _MqWebViewScheme MqWebViewScheme; #ifndef MQ_WEB_VIEW_SCHEMES_H #define MQ_WEB_VIEW_SCHEMES_H #include #include #include "../web-view.h" G_BEGIN_DECLS typedef struct { WebKitHitTestResult *hit_test_result; GtkComboBox *save_type_combo_box; GFile *save_file; } MqWebViewNormalScheme; typedef struct { gint64 origin_tab_id; const gchar *uri; } MqWebViewViewSourceScheme; struct _MqWebViewScheme { union { /* C11: Anonymous union whose members are accessed directly */ MqWebViewNormalScheme normal; MqWebViewViewSourceScheme view_source; }; void (*ready_cb)(MqWebViewScheme *, MqWebView *); }; typedef struct { gboolean (*match_uri) (const gchar *uri); void (*initialize) (MqWebView *, MqWebViewScheme *, const gchar *); void (*finalize) (MqWebViewScheme *); gchar * (*rewrite_uri) (MqWebView *, MqWebViewScheme *, const gchar *); gchar * (*display_uri) (MqWebView *, MqWebViewScheme *, const gchar *); gboolean (*context_menu)(MqWebView *, MqWebViewScheme *, WebKitContextMenu *, GdkEvent *, WebKitHitTestResult *); void (*save_file) (MqWebView *, MqWebViewScheme *); } MqWebViewSchemeMethods; extern MqWebViewSchemeMethods mq_web_view_normal_scheme_methods; extern MqWebViewSchemeMethods mq_web_view_view_source_scheme_methods; void mq_web_view_scheme_connect_ready_callback(MqWebViewScheme *scheme, void (*ready_cb)(MqWebViewScheme *, MqWebView *)); void mq_web_view_scheme_set_methods(MqWebViewSchemeMethods **methods, MqWebViewScheme *scheme, const gchar *uri); G_END_DECLS #endif /* MQ_WEB_VIEW_SCHEMES_H */