/** * text_search_new: * * Returns: a new #GtkWidget */ GtkWidget * text_search_new (GtkTextView *view) { g_return_val_if_fail (GTK_IS_TEXT_VIEW (view), NULL); TextSearch *tsearch; GtkWidget *wid; tsearch = TEXT_SEARCH (g_object_new (TEXT_SEARCH_TYPE, "spacing", 5, "homogeneous", FALSE, NULL)); tsearch->priv->view = view; g_object_ref ((GObject*) tsearch->priv->view); tsearch->priv->text = gtk_text_view_get_buffer (view); gtk_text_buffer_create_tag (tsearch->priv->text, "search", "background", "yellow", NULL); wid = ui_make_small_button (FALSE, FALSE, NULL, "window-close-symbolic", _("Hide search toolbar")); gtk_box_pack_start (GTK_BOX (tsearch), wid, FALSE, FALSE, 0); g_signal_connect_swapped (wid, "clicked", G_CALLBACK (hide_search_bar), tsearch); wid = gtk_label_new (_("Search:")); gtk_box_pack_start (GTK_BOX (tsearch), wid, FALSE, FALSE, 0); wid = gtk_entry_new (); gtk_box_pack_start (GTK_BOX (tsearch), wid, TRUE, TRUE, 0); tsearch->priv->search_entry = wid; gtk_container_set_focus_child (GTK_CONTAINER (tsearch), tsearch->priv->search_entry); g_signal_connect (wid, "changed", G_CALLBACK (search_text_changed_cb), tsearch); wid = ui_make_small_button (FALSE, FALSE, NULL, "go-previous-symbolic", NULL); gtk_box_pack_start (GTK_BOX (tsearch), wid, FALSE, FALSE, 0); g_signal_connect (wid, "clicked", G_CALLBACK (go_back_search_cb), tsearch); wid = ui_make_small_button (FALSE, FALSE, NULL, "go-next-symbolic", NULL); gtk_box_pack_start (GTK_BOX (tsearch), wid, FALSE, FALSE, 0); g_signal_connect (wid, "clicked", G_CALLBACK (go_forward_search_cb), tsearch); wid = gtk_check_button_new_with_label (_("Case sensitive")); gtk_box_pack_start (GTK_BOX (tsearch), wid, FALSE, FALSE, 0); tsearch->priv->search_sensitive = GTK_TOGGLE_BUTTON (wid); g_signal_connect (wid, "toggled", G_CALLBACK (sensitive_toggled_cb), tsearch); gtk_widget_show_all ((GtkWidget*) tsearch); gtk_widget_hide ((GtkWidget*) tsearch); return (GtkWidget*) tsearch; }
/** * query_console_page_new * * Returns: a new #GtkWidget */ GtkWidget * query_console_page_new (TConnection *tcnc) { QueryConsolePage *tconsole; g_return_val_if_fail (T_IS_CONNECTION (tcnc), NULL); tconsole = QUERY_CONSOLE_PAGE (g_object_new (QUERY_CONSOLE_PAGE_TYPE, NULL)); tconsole->priv->tcnc = g_object_ref (tcnc); /* header */ GtkWidget *label; gchar *str; str = g_strdup_printf ("<b>%s</b>", _("Query editor")); label = gdaui_bar_new (str); g_free (str); gtk_box_pack_start (GTK_BOX (tconsole), label, FALSE, FALSE, 0); gtk_widget_show (label); tconsole->priv->header = GDAUI_BAR (label); /* main contents */ GtkWidget *vpaned; vpaned = gtk_paned_new (GTK_ORIENTATION_VERTICAL); tconsole->priv->vpaned = NULL; gtk_box_pack_start (GTK_BOX (tconsole), vpaned, TRUE, TRUE, 6); /* top paned for the editor */ GtkWidget *wid, *vbox, *hbox, *bbox, *hpaned, *button; hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_paned_pack1 (GTK_PANED (vpaned), hbox, TRUE, FALSE); hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start (GTK_BOX (hbox), hpaned, TRUE, TRUE, 0); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_paned_pack1 (GTK_PANED (hpaned), vbox, TRUE, FALSE); wid = gtk_label_new (""); str = g_strdup_printf ("<b>%s</b>", _("SQL code to execute:")); gtk_label_set_markup (GTK_LABEL (wid), str); g_free (str); gtk_widget_set_halign (wid, GTK_ALIGN_START); gtk_widget_set_tooltip_markup (wid, QUERY_EDITOR_TOOLTIP); gtk_box_pack_start (GTK_BOX (vbox), wid, FALSE, FALSE, 0); wid = query_editor_new (); tconsole->priv->editor = QUERY_EDITOR (wid); gtk_box_pack_start (GTK_BOX (vbox), wid, TRUE, TRUE, 0); g_signal_connect (wid, "changed", G_CALLBACK (editor_changed_cb), tconsole); g_signal_connect (wid, "execute-request", G_CALLBACK (editor_execute_request_cb), tconsole); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); tconsole->priv->params_top = vbox; gtk_paned_pack2 (GTK_PANED (hpaned), vbox, FALSE, FALSE); wid = gtk_label_new (""); str = g_strdup_printf ("<b>%s</b>", _("Variables' values:")); gtk_label_set_markup (GTK_LABEL (wid), str); g_free (str); gtk_widget_set_halign (wid, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), wid, FALSE, FALSE, 0); GtkWidget *sw; sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_NONE); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); tconsole->priv->params_form_box = gtk_viewport_new (NULL, NULL); gtk_widget_set_name (tconsole->priv->params_form_box, "gdaui-transparent-background"); gtk_viewport_set_shadow_type (GTK_VIEWPORT (tconsole->priv->params_form_box), GTK_SHADOW_NONE); gtk_container_add (GTK_CONTAINER (sw), tconsole->priv->params_form_box); gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0); gtk_widget_set_size_request (tconsole->priv->params_form_box, 250, -1); wid = gtk_label_new (""); gtk_label_set_markup (GTK_LABEL (wid), VARIABLES_HELP); gtk_widget_set_halign (wid, GTK_ALIGN_START); gtk_container_add (GTK_CONTAINER (tconsole->priv->params_form_box), wid); tconsole->priv->params_form = wid; bbox = gtk_button_box_new (GTK_ORIENTATION_VERTICAL); gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END); gtk_box_pack_start (GTK_BOX (hbox), bbox, FALSE, FALSE, 5); button = ui_make_small_button (FALSE, FALSE, _("Clear"), "_Clear", _("Clear the editor's\ncontents")); gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); g_signal_connect (button, "clicked", G_CALLBACK (sql_clear_clicked_cb), tconsole); button = ui_make_small_button (TRUE, FALSE, _("Variables"), NULL, _("Show variables needed\nto execute SQL")); gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); tconsole->priv->params_toggle = GTK_TOGGLE_BUTTON (button); g_signal_connect (button, "toggled", G_CALLBACK (sql_variables_clicked_cb), tconsole); button = ui_make_small_button (FALSE, FALSE, _("Execute"), "_Execute", _("Execute SQL in editor")); tconsole->priv->exec_button = button; gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); g_signal_connect (button, "clicked", G_CALLBACK (sql_execute_clicked_cb), tconsole); button = ui_make_small_button (FALSE, FALSE, _("Indent"), NULL, _("Indent SQL in editor\n" "and make the code more readable\n" "(removes comments)")); tconsole->priv->indent_button = button; gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); g_signal_connect (button, "clicked", G_CALLBACK (sql_indent_clicked_cb), tconsole); button = ui_make_small_button (FALSE, TRUE, _("Favorite"), NULL, _("Add SQL to favorite")); gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); g_signal_connect (button, "clicked", G_CALLBACK (sql_favorite_clicked_cb), tconsole); /* bottom paned for the results and history */ hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); gtk_paned_pack2 (GTK_PANED (vpaned), hpaned, TRUE, FALSE); /* bottom left */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_paned_pack1 (GTK_PANED (hpaned), vbox, FALSE, FALSE); wid = gtk_label_new (""); str = g_strdup_printf ("<b>%s</b>", _("Execution history:")); gtk_label_set_markup (GTK_LABEL (wid), str); g_free (str); gtk_widget_set_halign (wid, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), wid, FALSE, FALSE, 0); wid = query_editor_new (); tconsole->priv->history = QUERY_EDITOR (wid); query_editor_set_mode (tconsole->priv->history, QUERY_EDITOR_HISTORY); gtk_widget_set_size_request (wid, 200, -1); gtk_box_pack_start (GTK_BOX (vbox), wid, TRUE, TRUE, 6); g_signal_connect (wid, "changed", G_CALLBACK (history_changed_cb), tconsole); bbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start (GTK_BOX (vbox), bbox, FALSE, FALSE, 0); gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), GTK_BUTTONBOX_END); button = ui_make_small_button (FALSE, FALSE, _("Copy"), "_Copy", _("Copy selected history\nto editor")); gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); g_signal_connect (button, "clicked", G_CALLBACK (history_copy_clicked_cb), tconsole); tconsole->priv->history_copy_button = button; gtk_widget_set_sensitive (button, FALSE); button = ui_make_small_button (FALSE, FALSE, _("Clear"), "_Clear", _("Clear history")); gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 0); g_signal_connect (button, "clicked", G_CALLBACK (history_clear_clicked_cb), tconsole); tconsole->priv->history_del_button = button; gtk_widget_set_sensitive (button, FALSE); /* bottom right */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8); gtk_paned_pack2 (GTK_PANED (hpaned), vbox, TRUE, FALSE); wid = gtk_label_new (""); str = g_strdup_printf ("<b>%s</b>", _("Execution Results:")); gtk_label_set_markup (GTK_LABEL (wid), str); g_free (str); gtk_widget_set_halign (wid, GTK_ALIGN_START); gtk_box_pack_start (GTK_BOX (vbox), wid, FALSE, FALSE, 0); wid = query_result_new (tconsole->priv->history); tconsole->priv->query_result = wid; gtk_box_pack_start (GTK_BOX (vbox), wid, TRUE, TRUE, 0); g_signal_connect (wid, "rerun-requested", G_CALLBACK (rerun_requested_cb), tconsole); /* show everything */ gtk_widget_show_all (vpaned); gtk_widget_hide (tconsole->priv->params_top); /* busy connection handling */ connection_status_changed_cb (tconsole->priv->tcnc, gda_connection_get_status (t_connection_get_cnc (tconsole->priv->tcnc)), tconsole); g_signal_connect (tconsole->priv->tcnc, "status-changed", G_CALLBACK (connection_status_changed_cb), tconsole); return (GtkWidget*) tconsole; }