static void createBrowserWindow(const gchar *uri, WebKitSettings *webkitSettings, gboolean shouldLoadSession) { GtkWidget *webView = webkit_web_view_new(); if (editorMode) webkit_web_view_set_editable(WEBKIT_WEB_VIEW(webView), TRUE); GtkWidget *mainWindow = browser_window_new(WEBKIT_WEB_VIEW(webView), NULL); if (backgroundColor) browser_window_set_background_color(BROWSER_WINDOW(mainWindow), backgroundColor); if (webkitSettings) webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView), webkitSettings); if (!editorMode) { if (shouldLoadSession && sessionFile) browser_window_load_session(BROWSER_WINDOW(mainWindow), sessionFile); else { gchar *url = argumentToURL(uri); browser_window_load_uri(BROWSER_WINDOW(mainWindow), url); g_free(url); } } gtk_widget_grab_focus(webView); gtk_widget_show(mainWindow); }
void createBrowserWindow(const gchar *uri, WebKitSettings *webkitSettings) { GtkWidget *webView = webkit_web_view_new(); GtkWidget *mainWindow = browser_window_new(WEBKIT_WEB_VIEW(webView), NULL); gtk_widget_set_sensitive(BROWSER_WINDOW(mainWindow)->backItem, FALSE); gtk_widget_set_sensitive(BROWSER_WINDOW(mainWindow)->forwardItem, FALSE); gchar *url = argumentToURL(uri); gtk_window_set_title(GTK_WINDOW(mainWindow), "Cuprum Browser"); if (webkitSettings) webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView), webkitSettings); browser_window_load_uri(BROWSER_WINDOW(mainWindow), url); g_free(url); //zgh gtk_widget_grab_focus(webView); gtk_widget_show(mainWindow); }
static void cbAddTab( GtkWidget *widget,BrowserWindow* window){ if(!window->tabmng->canAddTab(window->tabmng)){ g_print("AddTab can't add more tab\n"); return; } gtk_widget_hide(GTK_WIDGET(window->overlay)); window->webView = webkit_web_view_new(); browserWindowConstructed((GObject *)window); browser_window_load_uri(BROWSER_WINDOW(window), "http://www.sina.com.cn"); }
static void browserWindowSetProperty(GObject *object, guint propId, const GValue *value, GParamSpec *pspec) { BrowserWindow* window = BROWSER_WINDOW(object); switch (propId) { case PROP_VIEW: window->webView = g_value_get_object(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec); } }
static void browserWindowGetProperty(GObject *object, guint propId, GValue *value, GParamSpec *pspec) { BrowserWindow *window = BROWSER_WINDOW(object); switch (propId) { case PROP_VIEW: g_value_set_object(value, browser_window_get_view(window)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec); } }
static TConnection * get_t_connection (UiFormGrid *formgrid) { if (formgrid->priv->tcnc) return formgrid->priv->tcnc; else { GtkWidget *toplevel; toplevel = gtk_widget_get_toplevel (GTK_WIDGET (formgrid)); if (BROWSER_IS_WINDOW (toplevel)) return browser_window_get_connection (BROWSER_WINDOW (toplevel)); } return NULL; }
// Public API. GtkWidget *browser_window_new(WebKitWebView *view, GtkWindow *parent) { g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(view), 0); BrowserWindow *window = BROWSER_WINDOW(g_object_new(BROWSER_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "view", view, NULL)); if (parent) { window->parentWindow = parent; g_object_add_weak_pointer(G_OBJECT(parent), (gpointer *)&window->parentWindow); } return GTK_WIDGET(window); }
static void createBrowserWindow(const gchar *uri, WebKitSettings *webkitSettings) { GtkWidget *webView = webkit_web_view_new(); GtkWidget *mainWindow = browser_window_new(WEBKIT_WEB_VIEW(webView), NULL); gchar *url = argumentToURL(uri); if (webkitSettings) { webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView), webkitSettings); g_object_unref(webkitSettings); } browser_window_load_uri(BROWSER_WINDOW(mainWindow), url); g_free(url); gtk_widget_grab_focus(webView); gtk_widget_show(mainWindow); }
static void browserWindowFinalize(GObject *gObject) { BrowserWindow *window = BROWSER_WINDOW(gObject); if (window->favicon) { g_object_unref(window->favicon); window->favicon = NULL; } if (window->accelGroup) { g_object_unref(window->accelGroup); window->accelGroup = NULL; } if (window->fullScreenMessageLabelId) g_source_remove(window->fullScreenMessageLabelId); if (window->resetEntryProgressTimeoutId) g_source_remove(window->resetEntryProgressTimeoutId); G_OBJECT_CLASS(browser_window_parent_class)->finalize(gObject); if (g_atomic_int_dec_and_test(&windowCount)) gtk_main_quit(); }
static void execute_action_mitem_cb (GtkMenuItem *menuitem, UiFormGrid *formgrid) { TFavoritesAction *act; GtkWidget *dlg; gchar *tmp; gint response; GtkWidget *toplevel; act = (TFavoritesAction*) g_object_get_data (G_OBJECT (menuitem), "action"); toplevel = gtk_widget_get_toplevel ((GtkWidget*) formgrid); tmp = g_strdup_printf (_("Set or confirm the parameters to execute\n" "action '%s'"), act->name); dlg = gdaui_basic_form_new_in_dialog (act->params, (GtkWindow*) toplevel, _("Execution of action"), tmp); g_free (tmp); response = gtk_dialog_run (GTK_DIALOG (dlg)); gtk_widget_destroy (dlg); if (response == GTK_RESPONSE_ACCEPT) { GError *lerror = NULL; TConnection *tcnc; tcnc = get_t_connection (formgrid); g_assert (tcnc); GObject *result; result = t_connection_execute_statement (tcnc, act->stmt, act->params, GDA_STATEMENT_MODEL_RANDOM_ACCESS, NULL, &lerror); if (result && GDA_IS_DATA_MODEL (result)) { GtkWidget *dialog, *label, *fg; GtkWidget *dcontents; gchar *tmp; dialog = gtk_dialog_new_with_buttons (act->name, NULL, 0, _("_Close"), GTK_RESPONSE_CLOSE, NULL); dcontents = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); gtk_box_set_spacing (GTK_BOX (dcontents), 5); gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE, TRUE); tmp = g_markup_printf_escaped ("<b>%s:</b>", act->name); label = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (label), tmp); g_free (tmp); gtk_widget_set_halign (label, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (dcontents), label, FALSE, FALSE, 5); fg = ui_formgrid_new (GDA_DATA_MODEL (result), TRUE, GDAUI_DATA_PROXY_INFO_CURRENT_ROW); ui_formgrid_set_connection (UI_FORMGRID (fg), tcnc); ActionExecutedData *aed; aed = g_new0 (ActionExecutedData, 1); aed->formgrid = g_object_ref (formgrid); aed->tcnc = g_object_ref (tcnc); if (act->name) aed->name = g_strdup (act->name); aed->stmt = g_object_ref (act->stmt); aed->params = g_object_ref (act->params); if (GDA_IS_DATA_SELECT (result)) { GdaStatement *stmt; g_object_get (G_OBJECT (result), "select-stmt", &stmt, NULL); if (stmt) { ui_formgrid_handle_user_prefs (UI_FORMGRID (fg), NULL, stmt); g_object_unref (stmt); } aed->model = g_object_ref (result); g_signal_connect (aed->params, "holder-changed", G_CALLBACK (action_executed_holder_changed_cb), aed); aed->formgrid = g_object_ref (fg); aed->formgrid->priv->autoupdate_possible = TRUE; gtk_widget_show (aed->formgrid->priv->autoupdate_toggle); } gtk_box_pack_start (GTK_BOX (dcontents), fg, TRUE, TRUE, 0); gtk_window_set_default_size (GTK_WINDOW (dialog), 400, 600); gtk_widget_show_all (dialog); g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); g_signal_connect (dialog, "close", G_CALLBACK (gtk_widget_destroy), NULL); g_object_set_data_full (G_OBJECT (dialog), "aed", aed, (GDestroyNotify) action_executed_data_free); } else if (result) { if (BROWSER_IS_WINDOW (toplevel)) { browser_window_show_notice_printf (BROWSER_WINDOW (toplevel), GTK_MESSAGE_INFO, "ActionExecution", "%s", _("Action successfully executed")); } else ui_show_message (GTK_WINDOW (toplevel), "%s", _("Action successfully executed")); g_object_unref (result); } else { ui_show_error (GTK_WINDOW (toplevel), _("Error executing query: %s"), lerror && lerror->message ? lerror->message : _("No detail")); g_clear_error (&lerror); } } }
static void actually_execute (QueryConsolePage *tconsole, const gchar *sql, GdaSet *params, gboolean add_editor_history) { GdaBatch *batch; GError *error = NULL; const gchar *remain; /* if a query is being executed, then show an error */ if (tconsole->priv->currently_executing) { ui_show_error (GTK_WINDOW (gtk_widget_get_toplevel ((GtkWidget*) tconsole)), _("A query is already being executed, " "to execute another query, open a new connection.")); return; } tconsole->priv->currently_executing = TRUE; if (!tconsole->priv->parser) tconsole->priv->parser = t_connection_create_parser (tconsole->priv->tcnc); batch = gda_sql_parser_parse_string_as_batch (tconsole->priv->parser, sql, &remain, &error); if (!batch) { ui_show_error (GTK_WINDOW (gtk_widget_get_toplevel ((GtkWidget*) tconsole)), _("Error while parsing code: %s"), error && error->message ? error->message : _("No detail")); g_clear_error (&error); return; } if (add_editor_history) { /* mark the current SQL to be kept by the editor as an internal history */ query_editor_keep_current_state (tconsole->priv->editor); } /* actual Execution */ const GSList *stmt_list, *list; GTimeVal start_time; g_get_current_time (&start_time); QueryEditorHistoryBatch *hist_batch; hist_batch = query_editor_history_batch_new (start_time, params); query_editor_start_history_batch (tconsole->priv->history, hist_batch); query_editor_history_batch_unref (hist_batch); gboolean within_transaction; stmt_list = gda_batch_get_statements (batch); for (list = stmt_list; list; list = list->next) { GdaStatement *stmt; GObject *result; GError *lerror = NULL; within_transaction = t_connection_get_transaction_status (tconsole->priv->tcnc) ? TRUE : FALSE; stmt = GDA_STATEMENT (list->data); result = t_connection_execute_statement (tconsole->priv->tcnc, stmt, params, GDA_STATEMENT_MODEL_RANDOM_ACCESS, NULL, &lerror); if (result) { QueryEditorHistoryItem *history; GdaSqlStatement *sqlst; g_object_get (G_OBJECT (stmt), "structure", &sqlst, NULL); if (!sqlst->sql) { gchar *sql; sql = gda_statement_to_sql (stmt, NULL, NULL); history = query_editor_history_item_new (sql, result, lerror); g_free (sql); } else history = query_editor_history_item_new (sqlst->sql, result, lerror); g_object_unref (result); gda_sql_statement_free (sqlst); history->within_transaction = within_transaction; /* display a message if a transaction has been started */ if (! history->within_transaction && t_connection_get_transaction_status (tconsole->priv->tcnc) && gda_statement_get_statement_type (stmt) != GDA_SQL_STATEMENT_BEGIN) { browser_window_show_notice_printf (BROWSER_WINDOW (gtk_widget_get_toplevel ((GtkWidget*) tconsole)), GTK_MESSAGE_INFO, "QueryExecTransactionStarted", "%s", _("A transaction has automatically been started\n" "during this statement's execution, this usually\n" "happens when blobs are selected (and the transaction\n" "will have to remain opened while the blobs are still\n" "accessible, clear the corresponding history item before\n" "closing the transaction).")); } query_editor_add_history_item (tconsole->priv->history, history); query_editor_history_item_unref (history); browser_window_push_status (BROWSER_WINDOW (gtk_widget_get_toplevel ((GtkWidget*) tconsole)), "QueryConsolePage", _("Statement executed"), TRUE); } else { ui_show_error (GTK_WINDOW (gtk_widget_get_toplevel ((GtkWidget*) tconsole)), _("Error executing query:\n%s"), lerror && lerror->message ? lerror->message : _("No detail")); g_clear_error (&lerror); break; } } g_object_unref (batch); tconsole->priv->currently_executing = FALSE; }
//by zgh static void menuSearchCallback(gpointer *data) { browser_search_bar_open(BROWSER_WINDOW(data)->searchBar); }
static void browserWindowConstructed(GObject *gObject) { BrowserWindow *window = BROWSER_WINDOW(gObject); WebKitSettings *settings = webkit_web_view_get_settings(window->webView); /*init minimumZoomLevel, maximumZoomLevel sunhaiming add.*/ minimumZoomLevel = zoom_factor[0]; maximumZoomLevel = zoom_factor[settings->pageZoomNum - 1]; // browserWindowUpdateZoomActions(window); g_signal_connect(window->webView, "notify::uri", G_CALLBACK(webViewURIChanged), window); g_signal_connect(window->webView, "notify::estimated-load-progress", G_CALLBACK(webViewLoadProgressChanged), window); g_signal_connect(window->webView, "notify::title", G_CALLBACK(webViewTitleChanged), window); g_signal_connect(window->webView, "create", G_CALLBACK(webViewCreate), window); g_signal_connect(window->webView, "load-failed", G_CALLBACK(webViewLoadFailed), window); g_signal_connect(window->webView, "decide-policy", G_CALLBACK(webViewDecidePolicy), window); g_signal_connect(window->webView, "permission-request", G_CALLBACK(webViewDecidePermissionRequest), window); g_signal_connect(window->webView, "mouse-target-changed", G_CALLBACK(webViewMouseTargetChanged), window); // g_signal_connect(window->webView, "notify::zoom-level", G_CALLBACK(webViewZoomLevelChanged), window); g_signal_connect(window->webView, "notify::favicon", G_CALLBACK(faviconChanged), window); g_signal_connect(window->webView, "enter-fullscreen", G_CALLBACK(webViewEnterFullScreen), window); g_signal_connect(window->webView, "leave-fullscreen", G_CALLBACK(webViewLeaveFullScreen), window); g_signal_connect(window->webView, "notify::is-loading", G_CALLBACK(webViewIsLoadingChanged), window); g_signal_connect(webkit_web_view_get_context(window->webView), "download-started", G_CALLBACK(downloadStarted), window); window->searchBar = BROWSER_SEARCH_BAR(browser_search_bar_new(window->webView)); browser_search_bar_add_accelerators(window->searchBar, window->accelGroup); gtk_box_pack_start(GTK_BOX(window->mainBox), GTK_WIDGET(window->searchBar), FALSE, FALSE, 0); WebKitBackForwardList *backForwadlist = webkit_web_view_get_back_forward_list(window->webView); g_signal_connect(backForwadlist, "changed", G_CALLBACK(backForwadlistChanged), window); WebKitWebInspector *inspectorWindow = webkit_web_view_get_inspector(WEBKIT_WEB_VIEW(window->webView)); g_signal_connect(inspectorWindow, "open-window", G_CALLBACK(inspectorWasOpenedInAnotherWindow), window); g_signal_connect(inspectorWindow, "closed", G_CALLBACK(inspectorWasClosed), window); GtkWidget *overlay = gtk_overlay_new(); gtk_box_pack_start(GTK_BOX(window->mainBox), overlay, TRUE, TRUE, 0); gtk_widget_show(overlay); window->statusLabel = gtk_label_new(NULL); gtk_widget_set_halign(window->statusLabel, GTK_ALIGN_START); gtk_widget_set_valign(window->statusLabel, GTK_ALIGN_END); gtk_widget_set_margin_left(window->statusLabel, 1); gtk_widget_set_margin_right(window->statusLabel, 1); gtk_widget_set_margin_top(window->statusLabel, 1); gtk_widget_set_margin_bottom(window->statusLabel, 1); gtk_overlay_add_overlay(GTK_OVERLAY(overlay), window->statusLabel); gtk_container_add(GTK_CONTAINER(overlay), GTK_WIDGET(window->webView)); window->fullScreenMessageLabel = gtk_label_new(NULL); gtk_widget_set_halign(window->fullScreenMessageLabel, GTK_ALIGN_CENTER); gtk_widget_set_valign(window->fullScreenMessageLabel, GTK_ALIGN_CENTER); gtk_widget_set_no_show_all(window->fullScreenMessageLabel, TRUE); gtk_overlay_add_overlay(GTK_OVERLAY(overlay), window->fullScreenMessageLabel); gtk_widget_show(GTK_WIDGET(window->webView)); //<wangc attach webview to tab window->overlay=overlay; GtkWidget *btab = gtk_button_new_with_label ("Tab"); gtk_box_pack_start (GTK_BOX(window->boxtab), btab, FALSE, FALSE, 0); int tabid=window->tabmng->generateTabId(window->tabmng); TabInfo* ti=(TabInfo*)malloc(sizeof(TabInfo)); ti->window=window; ti->tabid=tabid; g_signal_connect (G_OBJECT (btab), "clicked", G_CALLBACK (cbShowTab), ti); gtk_widget_show (btab); window->tabmng->addTab(window->tabmng,tabid,window->overlay,window->webView); //> }