* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#include "main.h"
#include "logwindow.h"
#include <algorithm>
+#include <cstring>
#include <deque>
#include <string>
+#include <gdk-pixbuf/gdk-pixbuf.h>
+#include <gdk/gdk.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include <config.h>
+
+#include "compat.h"
+#include "debug.h"
+#include "intl.h"
#include "layout.h"
+#include "main-defines.h"
#include "misc.h"
+#include "options.h"
#include "ui-misc.h"
#include "window.h"
{
}
-static gboolean iter_char_search_cb(gunichar ch, gpointer data)
-{
- gboolean ret;
-
- if (ch == GPOINTER_TO_UINT(data))
- {
- ret = TRUE;
- }
- else
- {
- ret = FALSE;
- }
-
- return ret;
-}
-
/**
* @brief Handle escape and F1 keys
* @param UNUSED
* @returns
*
* If escape key pressed, hide log window. \n
- * If no text selected, form a selection bounded by space characters or
- * start and end of line. \n
+ * If no text selected, select the entire line. \n
* If F1 pressed, execute command line program: \n
* <options->log_window.action> <selected text>
*
*/
static gboolean key_pressed(GtkWidget *, GdkEventKey *event, LogWindow *logwin)
{
+ gchar *cmd_line;
+ gchar *sel_text;
GtkTextBuffer *buffer;
GtkTextIter chr_end;
+ GtkTextIter chr_marker;
GtkTextIter chr_start;
GtkTextIter cursor_iter;
GtkTextIter line_end;
GtkTextIter line_start;
GtkTextMark *cursor_mark;
- gchar *cmd_line;
- gchar *sel_text;
if (event && event->keyval == GDK_KEY_Escape)
gtk_widget_hide(logwin->window);
gtk_text_iter_set_line_offset(&line_start, 0);
line_end = cursor_iter;
gtk_text_iter_forward_to_line_end(&line_end);
-
- chr_start = cursor_iter;
- gtk_text_iter_backward_find_char(&chr_start, static_cast<GtkTextCharPredicate>(iter_char_search_cb), GUINT_TO_POINTER(' '), &line_start);
-
- chr_end = cursor_iter;
- gtk_text_iter_forward_find_char(&chr_end, static_cast<GtkTextCharPredicate>(iter_char_search_cb), GUINT_TO_POINTER(' '), &line_end);
-
- gtk_text_buffer_select_range(buffer, &chr_start, &chr_end);
+ chr_marker = line_end;
+ gtk_text_buffer_select_range(buffer, &line_start, &line_end);
}
if (gtk_text_buffer_get_selection_bounds(gtk_text_view_get_buffer(GTK_TEXT_VIEW(logwin->text)), &chr_start, &chr_end))
{
sel_text = gtk_text_buffer_get_text( gtk_text_view_get_buffer(GTK_TEXT_VIEW(logwin->text)), &chr_start, &chr_end, FALSE);
- cmd_line = g_strconcat(options->log_window.action, " ", sel_text, NULL);
+ cmd_line = g_strconcat(options->log_window.action, " \"", sel_text, "\"", NULL);
runcmd(cmd_line);
gq_gtk_container_add(GTK_WIDGET(window), win_vbox);
gtk_widget_show(win_vbox);
- gtk_window_resize(GTK_WINDOW(window), lw->options.log_window.w,
- lw->options.log_window.h);
- gtk_window_move(GTK_WINDOW(window), lw->options.log_window.x, lw->options.log_window.y);
+ gtk_window_resize(GTK_WINDOW(window), lw->options.log_window.width, lw->options.log_window.height);
+ gq_gtk_window_move(GTK_WINDOW(window), lw->options.log_window.x, lw->options.log_window.y);
g_signal_connect(G_OBJECT(window), "delete_event",
G_CALLBACK(gtk_widget_hide_on_delete), NULL);
gtk_widget_show_all(logwin->wrap);
logwin->timer_data = gtk_toggle_button_new();
- label = gtk_label_new("Timer");
+ label = gtk_label_new(_("Timer"));
gtk_widget_set_tooltip_text(GTK_WIDGET(logwin->timer_data), _("Enable timer data"));
gq_gtk_container_add(GTK_WIDGET(logwin->timer_data), label) ;
gq_gtk_box_pack_start(GTK_BOX(hbox),logwin->timer_data, FALSE, FALSE, 0) ;
g_signal_connect(logwin->search_entry_box, "activate", G_CALLBACK(search_activate_event), logwin);
theme = gtk_icon_theme_get_default();
- pixbuf = gtk_icon_theme_load_icon(theme, "pan-up-symbolic", 20, GTK_ICON_LOOKUP_GENERIC_FALLBACK, nullptr);
+ pixbuf = gtk_icon_theme_load_icon(theme, GQ_ICON_PAN_UP, 20, GTK_ICON_LOOKUP_GENERIC_FALLBACK, nullptr);
image = gtk_image_new_from_pixbuf(pixbuf);
backwards_button = gtk_button_new();
gtk_button_set_image(GTK_BUTTON(backwards_button), GTK_WIDGET(image));
g_signal_connect(backwards_button, "button_release_event", G_CALLBACK(backwards_keypress_event_cb), logwin);
g_object_unref(pixbuf);
- pixbuf = gtk_icon_theme_load_icon(theme, "pan-down-symbolic", 20, GTK_ICON_LOOKUP_GENERIC_FALLBACK, nullptr);
+ pixbuf = gtk_icon_theme_load_icon(theme, GQ_ICON_PAN_DOWN, 20, GTK_ICON_LOOKUP_GENERIC_FALLBACK, nullptr);
image = gtk_image_new_from_pixbuf(pixbuf);
forwards_button = gtk_button_new();
gtk_button_set_image(GTK_BUTTON(forwards_button), GTK_WIDGET(image));
if (options->log_window_lines > 0 && logwindow->lines >= options->log_window_lines)
{
- GtkTextIter start, end;
+ GtkTextIter start;
+ GtkTextIter end;
gtk_text_buffer_get_start_iter(buffer, &start);
end = start;