OLD | NEW |
| (Empty) |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Boilerplate code was generated by http://burtonini.com/cgi/gobject.py | |
6 | |
7 #include <gdk/gdkkeysyms.h> | |
8 | |
9 #include "undo_view.h" | |
10 | |
11 G_DEFINE_TYPE (GtkUndoView, gtk_undo_view, GTK_TYPE_TEXT_VIEW) | |
12 | |
13 static void | |
14 gtk_undo_view_dispose(GObject *object) { | |
15 GtkUndoView *uview = GTK_UNDO_VIEW(object); | |
16 | |
17 if(uview->undo_manager_) { | |
18 g_object_unref(G_OBJECT(uview->undo_manager_)); | |
19 uview->undo_manager_ = NULL; | |
20 } | |
21 G_OBJECT_CLASS(gtk_undo_view_parent_class)->dispose(object); | |
22 } | |
23 | |
24 static void | |
25 gtk_undo_view_undo(GtkUndoView *uview) { | |
26 if(gtk_source_undo_manager_can_undo(uview->undo_manager_)) | |
27 gtk_source_undo_manager_undo(uview->undo_manager_); | |
28 } | |
29 | |
30 static void | |
31 gtk_undo_view_redo(GtkUndoView *uview) { | |
32 if(gtk_source_undo_manager_can_redo(uview->undo_manager_)) | |
33 gtk_source_undo_manager_redo(uview->undo_manager_); | |
34 } | |
35 | |
36 static void | |
37 gtk_undo_view_class_init(GtkUndoViewClass *klass) { | |
38 GObjectClass *object_class = G_OBJECT_CLASS(klass); | |
39 GtkBindingSet *binding_set; | |
40 | |
41 g_signal_new("undo", | |
42 G_TYPE_FROM_CLASS(klass), | |
43 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, | |
44 G_STRUCT_OFFSET(GtkUndoViewClass, undo), | |
45 NULL, | |
46 NULL, | |
47 g_cclosure_marshal_VOID__VOID, | |
48 G_TYPE_NONE, | |
49 0); | |
50 g_signal_new("redo", | |
51 G_TYPE_FROM_CLASS(klass), | |
52 G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, | |
53 G_STRUCT_OFFSET(GtkUndoViewClass, redo), | |
54 NULL, | |
55 NULL, | |
56 g_cclosure_marshal_VOID__VOID, | |
57 G_TYPE_NONE, | |
58 0); | |
59 | |
60 klass->undo = gtk_undo_view_undo; | |
61 klass->redo = gtk_undo_view_redo; | |
62 | |
63 binding_set = gtk_binding_set_by_class(klass); | |
64 gtk_binding_entry_add_signal(binding_set, GDK_z, GDK_CONTROL_MASK, "undo", 0); | |
65 gtk_binding_entry_add_signal(binding_set, GDK_y, GDK_CONTROL_MASK, "redo", 0); | |
66 gtk_binding_entry_add_signal(binding_set, GDK_z, GDK_CONTROL_MASK | GDK_SHIFT_
MASK, "redo", 0); | |
67 gtk_binding_entry_add_signal(binding_set, GDK_F14, 0, "undo", 0); | |
68 | |
69 object_class->dispose = gtk_undo_view_dispose; | |
70 } | |
71 | |
72 static void | |
73 gtk_undo_view_init(GtkUndoView *self) { | |
74 } | |
75 | |
76 GtkWidget* | |
77 gtk_undo_view_new(GtkTextBuffer *buffer) { | |
78 GtkWidget *ret = g_object_new(GTK_TYPE_UNDO_VIEW, "buffer", buffer, NULL); | |
79 GTK_UNDO_VIEW(ret)->undo_manager_ = gtk_source_undo_manager_new(GTK_TEXT_BUFFE
R(buffer)); | |
80 | |
81 return ret; | |
82 } | |
83 | |
OLD | NEW |