* Boston, MA 02111-1307, USA.
*/
-#include <config.h>
+#include "config.h"
#include <stdio.h>
#include <sys/stat.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
-#undef GTK_DISABLE_DEPRECATED
-
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
msgbox_yes_cb (GtkWidget *widget, gboolean *result)
{
*result = 0;
- gtk_object_destroy (GTK_OBJECT (gtk_widget_get_toplevel (widget)));
+ gtk_widget_destroy (gtk_widget_get_toplevel (widget));
}
static void
msgbox_no_cb (GtkWidget *widget, gboolean *result)
{
*result = 1;
- gtk_object_destroy (GTK_OBJECT (gtk_widget_get_toplevel (widget)));
+ gtk_widget_destroy (gtk_widget_get_toplevel (widget));
}
static gboolean
if (event->keyval == GDK_Escape)
{
g_signal_stop_emission_by_name (widget, "key_press_event");
- gtk_object_destroy (GTK_OBJECT (widget));
+ gtk_widget_destroy (widget);
return TRUE;
}
/* Fill in the contents of the widget
*/
- vbox = gtk_vbox_new (FALSE, 0);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
gtk_container_add (GTK_CONTAINER (dialog), vbox);
label = gtk_label_new (message);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
- separator = gtk_hseparator_new ();
+ separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 0);
- button_box = gtk_hbutton_box_new ();
+ button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
gtk_box_pack_start (GTK_BOX (vbox), button_box, FALSE, FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (button_box), 8);
if (yes_button)
{
button = gtk_button_new_with_label (yes_button);
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+ gtk_widget_set_can_default (button, TRUE);
gtk_container_add (GTK_CONTAINER (button_box), button);
if (default_index == 0)
if (no_button)
{
button = gtk_button_new_with_label (no_button);
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+ gtk_widget_set_can_default (button, TRUE);
gtk_container_add (GTK_CONTAINER (button_box), button);
if (default_index == 0)
if (cancel_button)
{
button = gtk_button_new_with_label (cancel_button);
- GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+ gtk_widget_set_can_default (button, TRUE);
gtk_container_add (GTK_CONTAINER (button_box), button);
if (default_index == 1)
tag = gtk_text_buffer_create_tag (buffer, "fg_blue", NULL);
#ifdef DO_BLINK
- gtk_timeout_add (1000, blink_timeout, tag);
+ g_timeout_add (1000, (GSourceFunc)blink_timeout, tag);
#endif
setup_tag (tag);
gtk_text_view_set_editable (GTK_TEXT_VIEW (view->text_view), callback_action);
}
+static void
+change_cursor_color (GtkWidget *widget,
+ gboolean set)
+{
+ if (set)
+ {
+ GdkColor red = {0, 65535, 0, 0};
+ gtk_widget_modify_cursor (widget, &red, &red);
+ }
+ else
+ gtk_widget_modify_cursor (widget, NULL, NULL);
+}
+
static void
do_cursor_visible_changed (gpointer callback_data,
guint callback_action,
{
View *view = view_from_widget (widget);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->text_view), callback_action);
+ switch (callback_action)
+ {
+ case 0:
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->text_view), FALSE);
+ break;
+ case 1:
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->text_view), TRUE);
+ change_cursor_color (view->text_view, FALSE);
+ break;
+ case 2:
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->text_view), TRUE);
+ change_cursor_color (view->text_view, TRUE);
+ break;
+ }
}
static void
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), tv);
- hbox = gtk_hbox_new (FALSE, 6);
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, FALSE, 6);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox,
FALSE, FALSE, 0);
gtk_widget_destroy (dialog);
}
+static void
+do_copy (gpointer callback_data,
+ guint callback_action,
+ GtkWidget *widget)
+{
+ View *view = view_from_widget (widget);
+ GtkTextBuffer *buffer;
+
+ buffer = view->buffer->buffer;
+
+ gtk_text_buffer_copy_clipboard (buffer,
+ gtk_clipboard_get (GDK_NONE));
+}
+
static void
do_search (gpointer callback_data,
guint callback_action,
{ "/File/E_xit", "<control>Q" , do_exit, 0, NULL },
{ "/_Edit", NULL, 0, 0, "<Branch>" },
+ { "/Edit/Copy", NULL, do_copy, 0, NULL },
+ { "/Edit/sep1", NULL, NULL, 0, "<Separator>" },
{ "/Edit/Find...", NULL, do_search, 0, NULL },
{ "/Edit/Select All", "<control>A", do_select_all, 0, NULL },
{ "/Settings/Not editable", NULL, do_editable_changed, FALSE, "/Settings/Editable" },
{ "/Settings/sep1", NULL, NULL, 0, "<Separator>" },
- { "/Settings/Cursor visible", NULL, do_cursor_visible_changed, TRUE, "<RadioItem>" },
- { "/Settings/Cursor not visible", NULL, do_cursor_visible_changed, FALSE, "/Settings/Cursor visible" },
+ { "/Settings/Cursor normal", NULL, do_cursor_visible_changed, 1, "<RadioItem>" },
+ { "/Settings/Cursor not visible", NULL, do_cursor_visible_changed, 0, "/Settings/Cursor normal" },
+ { "/Settings/Cursor colored", NULL, do_cursor_visible_changed, 2, "/Settings/Cursor normal" },
{ "/Settings/sep1", NULL, NULL, 0, "<Separator>" },
{ "/Settings/Left-to-Right", NULL, do_direction_changed, GTK_TEXT_DIR_LTR, "<RadioItem>" },
gdouble hue = 0.0;
if (enabled && buffer->color_cycle_timeout == 0)
- buffer->color_cycle_timeout = g_timeout_add (200, color_cycle_timeout, buffer);
+ buffer->color_cycle_timeout = gdk_threads_add_timeout (200, color_cycle_timeout, buffer);
else if (!enabled && buffer->color_cycle_timeout != 0)
{
g_source_remove (buffer->color_cycle_timeout);
text_view = GTK_TEXT_VIEW (user_data);
- if (GTK_WIDGET_MAPPED (text_view) &&
+ if (gtk_widget_get_mapped (GTK_WIDGET (text_view)) &&
mark == gtk_text_buffer_get_insert (buffer))
{
GdkWindow *tab_window;
gtk_paint_layout (widget->style,
target,
- GTK_WIDGET_STATE (widget),
+ gtk_widget_get_state (widget),
FALSE,
NULL,
widget,
return FALSE;
}
+static void
+selection_changed (GtkTextBuffer *buffer,
+ GParamSpec *pspec,
+ GtkWidget *copy_menu)
+{
+ gtk_widget_set_sensitive (copy_menu, gtk_text_buffer_get_has_selection (buffer));
+}
+
static View *
create_view (Buffer *buffer)
{
View *view;
-
+ GtkWidget *copy_menu;
GtkWidget *sw;
GtkWidget *vbox;
gtk_item_factory_create_items (view->item_factory, G_N_ELEMENTS (menu_items), menu_items, view);
+ /* make the Copy menu item sensitivity update according to the selection */
+ copy_menu = gtk_item_factory_get_item (view->item_factory, "<main>/Edit/Copy");
+ gtk_widget_set_sensitive (copy_menu, gtk_text_buffer_get_has_selection (view->buffer->buffer));
+ g_signal_connect (view->buffer->buffer,
+ "notify::has-selection",
+ G_CALLBACK (selection_changed),
+ copy_menu);
+
gtk_window_add_accel_group (GTK_WINDOW (view->window), view->accel_group);
- vbox = gtk_vbox_new (FALSE, 0);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
gtk_container_add (GTK_CONTAINER (view->window), vbox);
gtk_box_pack_start (GTK_BOX (vbox),
if (g_file_test ("../gdk-pixbuf/libpixbufloader-pnm.la",
G_FILE_TEST_EXISTS))
{
- g_setenv ("GDK_PIXBUF_MODULE_FILE", "../gdk-pixbuf/gdk-pixbuf.loaders", TRUE);
- g_setenv ("GTK_IM_MODULE_FILE", "../modules/input/gtk.immodules", TRUE);
+ g_setenv ("GDK_PIXBUF_MODULE_FILE", "../gdk-pixbuf/loaders.cache", TRUE);
+ g_setenv ("GTK_IM_MODULE_FILE", "../modules/input/immodules.cache", TRUE);
}
}