Remove WebKitWebView creation from Glade

The Glade template cannot assign an already created WebKitWebViewGroup
to the WebKitWebView it creates. Thus we need to create it manuallp
This commit is contained in:
Gergely Polonkai 2014-07-10 23:33:22 +02:00
parent b8cc90912d
commit 2af46ece40
4 changed files with 33 additions and 27 deletions

View File

@ -52,8 +52,9 @@ static GtkWidget *
ag_app_create_window(AgApp *app) ag_app_create_window(AgApp *app)
{ {
GtkWidget *window; GtkWidget *window;
AgAppPrivate *priv = ag_app_get_instance_private(app);
window = ag_window_new(app); window = ag_window_new(app, priv->web_view_group);
gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW(window)); gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW(window));
gtk_widget_show_all(window); gtk_widget_show_all(window);

View File

@ -30,6 +30,7 @@ struct _AgWindowPrivate {
GtkWidget *second; GtkWidget *second;
GtkWidget *timezone; GtkWidget *timezone;
GtkWidget *tab_chart;
GtkWidget *tab_edit; GtkWidget *tab_edit;
GtkWidget *current_tab; GtkWidget *current_tab;
@ -695,20 +696,6 @@ ag_window_init(AgWindow *window)
g_signal_connect(G_OBJECT(main_settings), "changed::planets-char", G_CALLBACK(ag_window_display_changed), window); g_signal_connect(G_OBJECT(main_settings), "changed::planets-char", G_CALLBACK(ag_window_display_changed), window);
g_signal_connect(G_OBJECT(main_settings), "changed::aspects-char", G_CALLBACK(ag_window_display_changed), window); g_signal_connect(G_OBJECT(main_settings), "changed::aspects-char", G_CALLBACK(ag_window_display_changed), window);
// TODO: translate this error message!
webkit_web_view_load_html(
WEBKIT_WEB_VIEW(priv->chart_web_view),
"<html>" \
"<head>" \
"<title>No Chart</title>" \
"</head>" \
"<body>" \
"<h1>No Chart</h1>" \
"<p>No chart is loaded. Create one on the edit view, or open one from the application menu!</p>" \
"</body>" \
"</html>",
NULL);
gtk_stack_set_visible_child_name(GTK_STACK(priv->stack), "edit"); gtk_stack_set_visible_child_name(GTK_STACK(priv->stack), "edit");
priv->current_tab = priv->tab_edit; priv->current_tab = priv->tab_edit;
g_object_set(priv->year_adjust, "lower", (gdouble)G_MININT, "upper", (gdouble)G_MAXINT, NULL); g_object_set(priv->year_adjust, "lower", (gdouble)G_MININT, "upper", (gdouble)G_MAXINT, NULL);
@ -759,9 +746,13 @@ ag_window_class_init(AgWindowClass *klass)
gtk_widget_class_bind_template_child_private(widget_class, AgWindow, west_long); gtk_widget_class_bind_template_child_private(widget_class, AgWindow, west_long);
gtk_widget_class_bind_template_child_private(widget_class, AgWindow, latitude); gtk_widget_class_bind_template_child_private(widget_class, AgWindow, latitude);
gtk_widget_class_bind_template_child_private(widget_class, AgWindow, longitude); gtk_widget_class_bind_template_child_private(widget_class, AgWindow, longitude);
gtk_widget_class_bind_template_child_private(widget_class, AgWindow, chart_web_view);
gtk_widget_class_bind_template_child_private(widget_class, AgWindow, aspect_table); gtk_widget_class_bind_template_child_private(widget_class, AgWindow, aspect_table);
gtk_widget_class_bind_template_child_private(widget_class, AgWindow, year_adjust); gtk_widget_class_bind_template_child_private(widget_class, AgWindow, year_adjust);
gtk_widget_class_bind_template_child_private(
widget_class,
AgWindow,
tab_chart
);
gtk_widget_class_bind_template_child_private(widget_class, AgWindow, stack); gtk_widget_class_bind_template_child_private(widget_class, AgWindow, stack);
gtk_widget_class_bind_template_child_private(widget_class, AgWindow, note_buffer); gtk_widget_class_bind_template_child_private(widget_class, AgWindow, note_buffer);
} }
@ -784,11 +775,29 @@ ag_window_configure_event_cb(GtkWidget *widget, GdkEventConfigure *event, gpoint
} }
GtkWidget * GtkWidget *
ag_window_new(AgApp *app) ag_window_new(AgApp *app, WebKitWebViewGroup *web_view_group)
{ {
AgWindow *window = g_object_new(AG_TYPE_WINDOW, NULL); AgWindow *window = g_object_new(AG_TYPE_WINDOW, NULL);
AgWindowPrivate *priv = ag_window_get_instance_private(window); AgWindowPrivate *priv = ag_window_get_instance_private(window);
priv->chart_web_view = webkit_web_view_new_with_group(web_view_group);
gtk_container_add(GTK_CONTAINER(priv->tab_chart), priv->chart_web_view);
// TODO: translate this error message!
webkit_web_view_load_html(
WEBKIT_WEB_VIEW(priv->chart_web_view),
"<html>" \
"<head>" \
"<title>No Chart</title>" \
"</head>" \
"<body>" \
"<h1>No Chart</h1>" \
"<p>No chart is loaded. Create one on the " \
"edit view, or open one from the application menu!</p>" \
"</body>" \
"</html>",
NULL);
gtk_window_set_application(GTK_WINDOW(window), GTK_APPLICATION(app)); gtk_window_set_application(GTK_WINDOW(window), GTK_APPLICATION(app));
gtk_window_set_icon_name(GTK_WINDOW(window), "astrognome"); gtk_window_set_icon_name(GTK_WINDOW(window), "astrognome");

View File

@ -2,6 +2,8 @@
#define __AG_WINDOW_H__ #define __AG_WINDOW_H__
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <webkit2/webkit2.h>
#include "ag-app.h" #include "ag-app.h"
#include "ag-chart.h" #include "ag-chart.h"
@ -32,7 +34,7 @@ struct _AgWindowClass {
}; };
GType ag_window_get_type(void) G_GNUC_CONST; GType ag_window_get_type(void) G_GNUC_CONST;
GtkWidget *ag_window_new(AgApp *app); GtkWidget *ag_window_new(AgApp *app, WebKitWebViewGroup *web_view_group);
void ag_window_set_chart(AgWindow *window, void ag_window_set_chart(AgWindow *window,
AgChart *chart); AgChart *chart);
AgChart *ag_window_get_chart(AgWindow *window); AgChart *ag_window_get_chart(AgWindow *window);

View File

@ -568,15 +568,9 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkScrolledWindow" id="tab_chart"> <object class="GtkAlignment" id="tab_chart">
<property name="shadow_type">in</property> <property name="visible">True</property>
<child> <property name="can_focus">False</property>
<object class="WebkitWebView" id="chart_web_view">
<property name="width_request">600</property>
<property name="height_request">600</property>
<signal name="context-menu" handler="ag_window_chart_context_cb" swapped="no"/>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="name">chart</property> <property name="name">chart</property>