The WebKit-based implementation can now execute Javascript code on demand
This commit is contained in:
parent
a92edc3f72
commit
1592373742
@ -454,6 +454,24 @@ void on_close(gpointer data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* on_console_clear */
|
||||||
|
void on_console_clear(gpointer data)
|
||||||
|
{
|
||||||
|
Surfer * surfer = data;
|
||||||
|
|
||||||
|
surfer_console_clear(surfer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* on_console_close */
|
||||||
|
void on_console_close(gpointer data)
|
||||||
|
{
|
||||||
|
Surfer * surfer = data;
|
||||||
|
|
||||||
|
surfer_show_console(surfer, FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* on_console_closex */
|
/* on_console_closex */
|
||||||
gboolean on_console_closex(gpointer data)
|
gboolean on_console_closex(gpointer data)
|
||||||
{
|
{
|
||||||
@ -464,6 +482,15 @@ gboolean on_console_closex(gpointer data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* on_console_execute */
|
||||||
|
void on_console_execute(gpointer data)
|
||||||
|
{
|
||||||
|
Surfer * surfer = data;
|
||||||
|
|
||||||
|
surfer_console_execute(surfer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* on_forward */
|
/* on_forward */
|
||||||
void on_forward(gpointer data)
|
void on_forward(gpointer data)
|
||||||
{
|
{
|
||||||
|
@ -71,6 +71,9 @@ void on_notebook_close_tab(GtkWidget * widget, gpointer data);
|
|||||||
void on_notebook_switch_page(gpointer data);
|
void on_notebook_switch_page(gpointer data);
|
||||||
|
|
||||||
/* console */
|
/* console */
|
||||||
|
void on_console_clear(gpointer data);
|
||||||
|
void on_console_close(gpointer data);
|
||||||
gboolean on_console_closex(gpointer data);
|
gboolean on_console_closex(gpointer data);
|
||||||
|
void on_console_execute(gpointer data);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -63,6 +63,7 @@ struct _Surfer
|
|||||||
|
|
||||||
/* console */
|
/* console */
|
||||||
GtkWidget * co_window;
|
GtkWidget * co_window;
|
||||||
|
GtkWidget * co_entry;
|
||||||
GtkListStore * co_store;
|
GtkListStore * co_store;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -282,6 +282,13 @@ int ghtml_set_base(GtkWidget * widget, char const * url)
|
|||||||
|
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
|
/* ghtml_execute */
|
||||||
|
void ghtml_execute(GtkWidget * ghtml, char const * code)
|
||||||
|
{
|
||||||
|
/* FIXME implement */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ghtml_find */
|
/* ghtml_find */
|
||||||
gboolean ghtml_find(GtkWidget * ghtml, char const * text, gboolean sensitive,
|
gboolean ghtml_find(GtkWidget * ghtml, char const * text, gboolean sensitive,
|
||||||
gboolean wrap)
|
gboolean wrap)
|
||||||
|
@ -359,6 +359,13 @@ char const * ghtml_get_title(GtkWidget * ghtml)
|
|||||||
|
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
|
/* ghtml_execute */
|
||||||
|
void ghtml_execute(GtkWidget * ghtml, char const * code)
|
||||||
|
{
|
||||||
|
/* FIXME implement */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ghtml_find */
|
/* ghtml_find */
|
||||||
gboolean ghtml_find(GtkWidget * ghtml, char const * text, gboolean sensitive,
|
gboolean ghtml_find(GtkWidget * ghtml, char const * text, gboolean sensitive,
|
||||||
gboolean wrap)
|
gboolean wrap)
|
||||||
|
@ -185,6 +185,13 @@ char const * ghtml_get_title(GtkWidget * widget)
|
|||||||
|
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
|
/* ghtml_execute */
|
||||||
|
void ghtml_execute(GtkWidget * ghtml, char const * code)
|
||||||
|
{
|
||||||
|
/* FIXME implement */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ghtml_find */
|
/* ghtml_find */
|
||||||
static char const * _find_string(char const * big, char const * little,
|
static char const * _find_string(char const * big, char const * little,
|
||||||
gboolean sensitive);
|
gboolean sensitive);
|
||||||
|
@ -214,6 +214,16 @@ int ghtml_set_base(GtkWidget * ghtml, char const * url)
|
|||||||
|
|
||||||
|
|
||||||
/* useful */
|
/* useful */
|
||||||
|
/* ghtml_execute */
|
||||||
|
void ghtml_execute(GtkWidget * ghtml, char const * code)
|
||||||
|
{
|
||||||
|
GtkWidget * view;
|
||||||
|
|
||||||
|
view = g_object_get_data(G_OBJECT(ghtml), "view");
|
||||||
|
webkit_web_view_execute_script(WEBKIT_WEB_VIEW(view), code);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ghtml_find */
|
/* ghtml_find */
|
||||||
gboolean ghtml_find(GtkWidget * ghtml, char const * text, gboolean sensitive,
|
gboolean ghtml_find(GtkWidget * ghtml, char const * text, gboolean sensitive,
|
||||||
gboolean wrap)
|
gboolean wrap)
|
||||||
|
@ -62,4 +62,6 @@ void ghtml_zoom_in(GtkWidget * ghtml);
|
|||||||
void ghtml_zoom_out(GtkWidget * ghtml);
|
void ghtml_zoom_out(GtkWidget * ghtml);
|
||||||
void ghtml_zoom_reset(GtkWidget * ghtml);
|
void ghtml_zoom_reset(GtkWidget * ghtml);
|
||||||
|
|
||||||
|
void ghtml_execute(GtkWidget * ghtml, char const * code);
|
||||||
|
|
||||||
#endif /* !SURFER_GHTML_H */
|
#endif /* !SURFER_GHTML_H */
|
||||||
|
56
src/surfer.c
56
src/surfer.c
@ -447,7 +447,7 @@ void surfer_set_status(Surfer * surfer, char const * status)
|
|||||||
surfer->statusbar_id);
|
surfer->statusbar_id);
|
||||||
surfer->statusbar_id = gtk_statusbar_push(sb,
|
surfer->statusbar_id = gtk_statusbar_push(sb,
|
||||||
gtk_statusbar_get_context_id(sb, ""), (status != NULL)
|
gtk_statusbar_get_context_id(sb, ""), (status != NULL)
|
||||||
? status : "Ready");
|
? status : _("Ready"));
|
||||||
if(status == NULL)
|
if(status == NULL)
|
||||||
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_stop), FALSE);
|
gtk_widget_set_sensitive(GTK_WIDGET(surfer->tb_stop), FALSE);
|
||||||
if(status == NULL)
|
if(status == NULL)
|
||||||
@ -582,6 +582,28 @@ int surfer_confirm(Surfer * surfer, char const * message, gboolean * confirmed)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* surfer_console_clear */
|
||||||
|
void surfer_console_clear(Surfer * surfer)
|
||||||
|
{
|
||||||
|
gtk_list_store_clear(surfer->co_store);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* surfer_console_execute */
|
||||||
|
void surfer_console_execute(Surfer * surfer)
|
||||||
|
{
|
||||||
|
GtkWidget * view;
|
||||||
|
char const * text;
|
||||||
|
|
||||||
|
if((view = surfer_get_view(surfer)) == NULL)
|
||||||
|
return;
|
||||||
|
if((text = gtk_entry_get_text(GTK_ENTRY(surfer->co_entry))) == NULL
|
||||||
|
|| strlen(text) == 0)
|
||||||
|
return;
|
||||||
|
ghtml_execute(view, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* surfer_console_message */
|
/* surfer_console_message */
|
||||||
void surfer_console_message(Surfer * surfer, char const * message,
|
void surfer_console_message(Surfer * surfer, char const * message,
|
||||||
char const * source, long line)
|
char const * source, long line)
|
||||||
@ -1003,6 +1025,7 @@ void surfer_select_all(Surfer * surfer)
|
|||||||
void surfer_show_console(Surfer * surfer, gboolean show)
|
void surfer_show_console(Surfer * surfer, gboolean show)
|
||||||
{
|
{
|
||||||
GtkWidget * vbox;
|
GtkWidget * vbox;
|
||||||
|
GtkWidget * hbox;
|
||||||
GtkWidget * widget;
|
GtkWidget * widget;
|
||||||
GtkCellRenderer * renderer;
|
GtkCellRenderer * renderer;
|
||||||
GtkTreeViewColumn * column;
|
GtkTreeViewColumn * column;
|
||||||
@ -1022,6 +1045,18 @@ void surfer_show_console(Surfer * surfer, gboolean show)
|
|||||||
g_signal_connect_swapped(G_OBJECT(surfer->co_window), "delete-event",
|
g_signal_connect_swapped(G_OBJECT(surfer->co_window), "delete-event",
|
||||||
G_CALLBACK(on_console_closex), surfer);
|
G_CALLBACK(on_console_closex), surfer);
|
||||||
vbox = gtk_vbox_new(FALSE, 0);
|
vbox = gtk_vbox_new(FALSE, 0);
|
||||||
|
hbox = gtk_hbox_new(FALSE, 0);
|
||||||
|
widget = gtk_label_new(_("Command:"));
|
||||||
|
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 4);
|
||||||
|
surfer->co_entry = gtk_entry_new();
|
||||||
|
g_signal_connect_swapped(G_OBJECT(surfer->co_entry), "activate",
|
||||||
|
G_CALLBACK(on_console_execute), surfer);
|
||||||
|
gtk_box_pack_start(GTK_BOX(hbox), surfer->co_entry, TRUE, TRUE, 0);
|
||||||
|
widget = gtk_button_new_from_stock(GTK_STOCK_EXECUTE);
|
||||||
|
gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 4);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 4);
|
||||||
|
/* view */
|
||||||
|
hbox = gtk_scrolled_window_new(NULL, NULL);
|
||||||
widget = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
|
widget = gtk_tree_view_new_with_model(GTK_TREE_MODEL(
|
||||||
surfer->co_store));
|
surfer->co_store));
|
||||||
/* message */
|
/* message */
|
||||||
@ -1039,9 +1074,24 @@ void surfer_show_console(Surfer * surfer, gboolean show)
|
|||||||
column = gtk_tree_view_column_new_with_attributes("Line",
|
column = gtk_tree_view_column_new_with_attributes("Line",
|
||||||
renderer, "text", SCM_DISPLAY_LINE, NULL);
|
renderer, "text", SCM_DISPLAY_LINE, NULL);
|
||||||
gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column);
|
gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column);
|
||||||
gtk_box_pack_start(GTK_BOX(vbox), widget, TRUE, TRUE, 0);
|
gtk_container_add(GTK_CONTAINER(hbox), widget);
|
||||||
gtk_container_add(GTK_CONTAINER(surfer->co_window), vbox);
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
|
||||||
|
/* dialog */
|
||||||
|
hbox = gtk_hbutton_box_new();
|
||||||
|
gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_END);
|
||||||
|
gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 4);
|
||||||
|
gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
|
||||||
|
widget = gtk_button_new_from_stock(GTK_STOCK_CLEAR);
|
||||||
|
g_signal_connect_swapped(G_OBJECT(widget), "clicked", G_CALLBACK(
|
||||||
|
on_console_clear), surfer);
|
||||||
|
gtk_container_add(GTK_CONTAINER(hbox), widget);
|
||||||
|
widget = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
|
||||||
|
g_signal_connect_swapped(G_OBJECT(widget), "clicked", G_CALLBACK(
|
||||||
|
on_console_close), surfer);
|
||||||
|
gtk_container_add(GTK_CONTAINER(hbox), widget);
|
||||||
|
gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0);
|
||||||
gtk_widget_show_all(vbox);
|
gtk_widget_show_all(vbox);
|
||||||
|
gtk_container_add(GTK_CONTAINER(surfer->co_window), vbox);
|
||||||
surfer_show_console(surfer, show);
|
surfer_show_console(surfer, show);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +66,8 @@ int surfer_config_load(Surfer * surfer);
|
|||||||
int surfer_config_save(Surfer * surfer);
|
int surfer_config_save(Surfer * surfer);
|
||||||
|
|
||||||
int surfer_confirm(Surfer * surfer, char const * message, gboolean * confirmed);
|
int surfer_confirm(Surfer * surfer, char const * message, gboolean * confirmed);
|
||||||
|
void surfer_console_clear(Surfer * surfer);
|
||||||
|
void surfer_console_execute(Surfer * surfer);
|
||||||
void surfer_console_message(Surfer * surfer, char const * message,
|
void surfer_console_message(Surfer * surfer, char const * message,
|
||||||
char const * source, long line);
|
char const * source, long line);
|
||||||
int surfer_error(Surfer * surfer, char const * message, int ret);
|
int surfer_error(Surfer * surfer, char const * message, int ret);
|
||||||
|
Loading…
Reference in New Issue
Block a user