gtk2 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README +2 -2
- data/Rakefile +5 -3
- data/ext/gtk2/extconf.rb +5 -2
- data/ext/gtk2/global.h +1 -8
- data/ext/gtk2/rbgdk.c +1 -16
- data/ext/gtk2/rbgdkcairo.c +0 -8
- data/ext/gtk2/rbgdkcolormap.c +0 -4
- data/ext/gtk2/rbgdkcursor.c +0 -18
- data/ext/gtk2/rbgdkdisplay.c +7 -45
- data/ext/gtk2/rbgdkdisplaymanager.c +0 -5
- data/ext/gtk2/rbgdkdragcontext.c +0 -13
- data/ext/gtk2/rbgdkdraw.c +2 -26
- data/ext/gtk2/rbgdkevent.c +631 -324
- data/ext/gtk2/rbgdkgc.c +0 -5
- data/ext/gtk2/rbgdkkeymap.c +2 -4
- data/ext/gtk2/rbgdkpango.c +0 -5
- data/ext/gtk2/rbgdkpangorenderer.c +0 -6
- data/ext/gtk2/rbgdkpixbuf.c +0 -3
- data/ext/gtk2/rbgdkpixmap.c +3 -18
- data/ext/gtk2/rbgdkproperty.c +0 -41
- data/ext/gtk2/rbgdkscreen.c +0 -22
- data/ext/gtk2/rbgdkselection.c +0 -13
- data/ext/gtk2/rbgdkvisual.c +0 -4
- data/ext/gtk2/rbgdkwindow.c +2 -71
- data/ext/gtk2/rbgdkx11.c +1 -6
- data/ext/gtk2/rbgtkaboutdialog.c +0 -5
- data/ext/gtk2/rbgtkaccelerator.c +0 -4
- data/ext/gtk2/rbgtkaccelgroup.c +0 -8
- data/ext/gtk2/rbgtkaccelmap.c +0 -15
- data/ext/gtk2/rbgtkaction.c +0 -14
- data/ext/gtk2/rbgtkactiongroup.c +0 -9
- data/ext/gtk2/rbgtkalignment.c +0 -4
- data/ext/gtk2/rbgtkassistant.c +0 -6
- data/ext/gtk2/rbgtkbbox.c +0 -4
- data/ext/gtk2/rbgtkbutton.c +0 -4
- data/ext/gtk2/rbgtkcalendar.c +0 -8
- data/ext/gtk2/rbgtkcelllayout.c +0 -5
- data/ext/gtk2/rbgtkcellrenderer.c +0 -8
- data/ext/gtk2/rbgtkcellrendereraccel.c +0 -6
- data/ext/gtk2/rbgtkcellrenderercombo.c +0 -6
- data/ext/gtk2/rbgtkcellrendererprogress.c +0 -6
- data/ext/gtk2/rbgtkcellrendererspin.c +0 -6
- data/ext/gtk2/rbgtkcellview.c +0 -5
- data/ext/gtk2/rbgtkclipboard.c +0 -48
- data/ext/gtk2/rbgtkcolorbutton.c +0 -6
- data/ext/gtk2/rbgtkcolorsel.c +0 -4
- data/ext/gtk2/rbgtkcombobox.c +0 -12
- data/ext/gtk2/rbgtkcomboboxentry.c +0 -6
- data/ext/gtk2/rbgtkconst.c +0 -2
- data/ext/gtk2/rbgtkdialog.c +0 -10
- data/ext/gtk2/rbgtkdrag.c +0 -24
- data/ext/gtk2/rbgtkentry.c +0 -4
- data/ext/gtk2/rbgtkentrycompletion.c +0 -10
- data/ext/gtk2/rbgtkexpander.c +0 -6
- data/ext/gtk2/rbgtkfilechooser.c +0 -10
- data/ext/gtk2/rbgtkfilechooserbutton.c +0 -6
- data/ext/gtk2/rbgtkfilechooserdialog.c +0 -8
- data/ext/gtk2/rbgtkfilechooserwidget.c +0 -6
- data/ext/gtk2/rbgtkfilefilter.c +0 -11
- data/ext/gtk2/rbgtkfilesystemerror.c +0 -2
- data/ext/gtk2/rbgtkfontbutton.c +0 -6
- data/ext/gtk2/rbgtkiconinfo.c +0 -5
- data/ext/gtk2/rbgtkiconsize.c +0 -4
- data/ext/gtk2/rbgtkicontheme.c +0 -11
- data/ext/gtk2/rbgtkiconview.c +0 -9
- data/ext/gtk2/rbgtkimage.c +0 -8
- data/ext/gtk2/rbgtkinvisible.c +0 -4
- data/ext/gtk2/rbgtklinkbutton.c +0 -5
- data/ext/gtk2/rbgtkliststore.c +0 -14
- data/ext/gtk2/rbgtkmenu.c +0 -12
- data/ext/gtk2/rbgtkmenubar.c +0 -2
- data/ext/gtk2/rbgtkmenushell.c +0 -4
- data/ext/gtk2/rbgtkmenutoolbutton.c +0 -5
- data/ext/gtk2/rbgtkmessagedialog.c +0 -4
- data/ext/gtk2/rbgtknotebook.c +0 -9
- data/ext/gtk2/rbgtkpagesetup.c +0 -5
- data/ext/gtk2/rbgtkpapersize.c +0 -6
- data/ext/gtk2/rbgtkprintcontext.c +0 -5
- data/ext/gtk2/rbgtkprintoperation.c +0 -5
- data/ext/gtk2/rbgtkprintoperationpreview.c +0 -5
- data/ext/gtk2/rbgtkprintsettings.c +0 -5
- data/ext/gtk2/rbgtkradioaction.c +0 -18
- data/ext/gtk2/rbgtkradiotoolbutton.c +0 -6
- data/ext/gtk2/rbgtkrange.c +0 -2
- data/ext/gtk2/rbgtkrc.c +0 -4
- data/ext/gtk2/rbgtkrecentchooser.c +0 -6
- data/ext/gtk2/rbgtkrecentchooserdialog.c +0 -5
- data/ext/gtk2/rbgtkrecentchoosermenu.c +0 -6
- data/ext/gtk2/rbgtkrecentchooserwidget.c +0 -5
- data/ext/gtk2/rbgtkrecentdata.c +0 -6
- data/ext/gtk2/rbgtkrecentfilter.c +0 -5
- data/ext/gtk2/rbgtkrecentfilterinfo.c +0 -6
- data/ext/gtk2/rbgtkrecentinfo.c +0 -5
- data/ext/gtk2/rbgtkrecentmanager.c +0 -5
- data/ext/gtk2/rbgtkscale.c +0 -6
- data/ext/gtk2/rbgtkscrolledwindow.c +0 -9
- data/ext/gtk2/rbgtkselection.c +0 -8
- data/ext/gtk2/rbgtkselectiondata.c +2 -14
- data/ext/gtk2/rbgtkseparatortoolitem.c +0 -6
- data/ext/gtk2/rbgtksettings.c +0 -4
- data/ext/gtk2/rbgtksizegroup.c +0 -5
- data/ext/gtk2/rbgtkstatusicon.c +0 -5
- data/ext/gtk2/rbgtkstock.c +0 -38
- data/ext/gtk2/rbgtkstyle.c +0 -8
- data/ext/gtk2/rbgtktargetlist.c +0 -34
- data/ext/gtk2/rbgtktextbuffer.c +0 -12
- data/ext/gtk2/rbgtktextiter.c +0 -8
- data/ext/gtk2/rbgtktextview.c +0 -4
- data/ext/gtk2/rbgtktoggleaction.c +0 -7
- data/ext/gtk2/rbgtktoggletoolbutton.c +0 -6
- data/ext/gtk2/rbgtktoolbar.c +0 -6
- data/ext/gtk2/rbgtktoolbutton.c +0 -6
- data/ext/gtk2/rbgtktoolitem.c +0 -9
- data/ext/gtk2/rbgtktooltips.c +0 -4
- data/ext/gtk2/rbgtktreeiter.c +0 -4
- data/ext/gtk2/rbgtktreemodelfilter.c +0 -5
- data/ext/gtk2/rbgtktreemodelsort.c +0 -4
- data/ext/gtk2/rbgtktreerowreference.c +0 -4
- data/ext/gtk2/rbgtktreeselection.c +0 -4
- data/ext/gtk2/rbgtktreestore.c +0 -19
- data/ext/gtk2/rbgtktreeview.c +0 -24
- data/ext/gtk2/rbgtktreeviewcolumn.c +0 -10
- data/ext/gtk2/rbgtkuimanager.c +0 -6
- data/ext/gtk2/rbgtkwidget.c +1 -31
- data/ext/gtk2/rbgtkwindow.c +2 -47
- data/sample/gtk-demo/common.rb +6 -1
- data/sample/gtk-demo/main.rb +89 -85
- data/test/test_gtk_icon_theme.rb +11 -6
- metadata +14 -22
data/ext/gtk2/rbgtkwindow.c
CHANGED
|
@@ -178,7 +178,6 @@ rg_set_default(VALUE self, VALUE win)
|
|
|
178
178
|
return self;
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
#if GTK_CHECK_VERSION(2,8,0)
|
|
182
181
|
static VALUE
|
|
183
182
|
rg_present(int argc, VALUE *argv, VALUE self)
|
|
184
183
|
{
|
|
@@ -190,14 +189,6 @@ rg_present(int argc, VALUE *argv, VALUE self)
|
|
|
190
189
|
}
|
|
191
190
|
return self;
|
|
192
191
|
}
|
|
193
|
-
#else
|
|
194
|
-
static VALUE
|
|
195
|
-
gwin_present(VALUE self)
|
|
196
|
-
{
|
|
197
|
-
gtk_window_present(_SELF(self));
|
|
198
|
-
return self;
|
|
199
|
-
}
|
|
200
|
-
#endif
|
|
201
192
|
|
|
202
193
|
static VALUE
|
|
203
194
|
rg_iconify(VALUE self)
|
|
@@ -241,7 +232,6 @@ rg_unmaximize(VALUE self)
|
|
|
241
232
|
return self;
|
|
242
233
|
}
|
|
243
234
|
|
|
244
|
-
#if GTK_CHECK_VERSION(2,2,0)
|
|
245
235
|
static VALUE
|
|
246
236
|
rg_fullscreen(VALUE self)
|
|
247
237
|
{
|
|
@@ -254,8 +244,7 @@ rg_unfullscreen(VALUE self)
|
|
|
254
244
|
gtk_window_unfullscreen(_SELF(self));
|
|
255
245
|
return self;
|
|
256
246
|
}
|
|
257
|
-
|
|
258
|
-
#if GTK_CHECK_VERSION(2,4,0)
|
|
247
|
+
|
|
259
248
|
static VALUE
|
|
260
249
|
rg_set_keep_above(VALUE self, VALUE setting)
|
|
261
250
|
{
|
|
@@ -268,7 +257,6 @@ rg_set_keep_below(VALUE self, VALUE setting)
|
|
|
268
257
|
gtk_window_set_keep_below(_SELF(self), RVAL2CBOOL(setting));
|
|
269
258
|
return self;
|
|
270
259
|
}
|
|
271
|
-
#endif
|
|
272
260
|
|
|
273
261
|
static VALUE
|
|
274
262
|
rg_begin_resize_drag(VALUE self, VALUE edge, VALUE button, VALUE root_x, VALUE root_y, VALUE timestamp)
|
|
@@ -372,13 +360,11 @@ rg_size(VALUE self)
|
|
|
372
360
|
return rb_ary_new3(2, INT2NUM(width), INT2NUM(height));
|
|
373
361
|
}
|
|
374
362
|
|
|
375
|
-
#if GTK_CHECK_VERSION(2,10,0)
|
|
376
363
|
static VALUE
|
|
377
364
|
rg_group(VALUE self)
|
|
378
365
|
{
|
|
379
366
|
return GOBJ2RVAL(gtk_window_get_group(_SELF(self)));
|
|
380
367
|
}
|
|
381
|
-
#endif
|
|
382
368
|
|
|
383
369
|
static VALUE
|
|
384
370
|
rg_move(VALUE self, VALUE x, VALUE y)
|
|
@@ -419,7 +405,6 @@ rg_s_set_default_icon_list(G_GNUC_UNUSED VALUE self, VALUE rblist)
|
|
|
419
405
|
return rblist;
|
|
420
406
|
}
|
|
421
407
|
|
|
422
|
-
#if GTK_CHECK_VERSION(2,2,0)
|
|
423
408
|
static VALUE
|
|
424
409
|
rg_s_set_default_icon(VALUE self, VALUE icon_or_filename)
|
|
425
410
|
{
|
|
@@ -429,40 +414,28 @@ rg_s_set_default_icon(VALUE self, VALUE icon_or_filename)
|
|
|
429
414
|
if (! ret)
|
|
430
415
|
RAISE_GERROR(err);
|
|
431
416
|
} else {
|
|
432
|
-
#if GTK_CHECK_VERSION(2,4,0)
|
|
433
417
|
gtk_window_set_default_icon(GDK_PIXBUF(RVAL2GOBJ(icon_or_filename)));
|
|
434
|
-
#else
|
|
435
|
-
rb_raise(rb_eArgError, "Invalid argument: %s, or you may need to use GTK+-2.4.x",
|
|
436
|
-
rb_class2name(CLASS_OF(icon_or_filename)));
|
|
437
|
-
#endif
|
|
438
418
|
}
|
|
439
419
|
return self;
|
|
440
420
|
}
|
|
441
|
-
#endif
|
|
442
421
|
|
|
443
|
-
#if GTK_CHECK_VERSION(2,6,0)
|
|
444
422
|
static VALUE
|
|
445
423
|
rg_s_set_default_icon_name(VALUE self, VALUE name)
|
|
446
424
|
{
|
|
447
425
|
gtk_window_set_default_icon_name(RVAL2CSTR(name));
|
|
448
426
|
return self;
|
|
449
427
|
}
|
|
450
|
-
#endif
|
|
451
428
|
|
|
452
429
|
static VALUE
|
|
453
430
|
gwin_set_icon(VALUE self, VALUE icon_or_filename)
|
|
454
431
|
{
|
|
455
432
|
if (TYPE(icon_or_filename) == T_STRING){
|
|
456
|
-
#if GTK_CHECK_VERSION(2,2,0)
|
|
457
433
|
GError* err;
|
|
458
434
|
gboolean ret = gtk_window_set_icon_from_file(_SELF(self),
|
|
459
435
|
RVAL2CSTR(icon_or_filename), &err);
|
|
460
436
|
if (! ret)
|
|
461
437
|
RAISE_GERROR(err);
|
|
462
|
-
|
|
463
|
-
rb_raise(rb_eArgError, "Invalid argument: %s, or you may need to use GTK+-2.4.x",
|
|
464
|
-
rb_class2name(CLASS_OF(icon_or_filename)));
|
|
465
|
-
#endif
|
|
438
|
+
|
|
466
439
|
} else {
|
|
467
440
|
gtk_window_set_icon(_SELF(self), GDK_PIXBUF(RVAL2GOBJ(icon_or_filename)));
|
|
468
441
|
}
|
|
@@ -483,14 +456,12 @@ rg_set_icon_list(VALUE self, VALUE rblist)
|
|
|
483
456
|
return rblist;
|
|
484
457
|
}
|
|
485
458
|
|
|
486
|
-
#if GTK_CHECK_VERSION(2,2,0)
|
|
487
459
|
static VALUE
|
|
488
460
|
rg_s_set_auto_startup_notification(VALUE self, VALUE setting)
|
|
489
461
|
{
|
|
490
462
|
gtk_window_set_auto_startup_notification(RVAL2CBOOL(setting));
|
|
491
463
|
return self;
|
|
492
464
|
}
|
|
493
|
-
#endif
|
|
494
465
|
|
|
495
466
|
/* They are not public methods.
|
|
496
467
|
static VALUE
|
|
@@ -556,25 +527,17 @@ Init_gtk_window(VALUE mGtk)
|
|
|
556
527
|
RG_DEF_METHOD(focus, 0);
|
|
557
528
|
RG_DEF_METHOD(set_focus, 1);
|
|
558
529
|
RG_DEF_METHOD(set_default, 1);
|
|
559
|
-
#if GTK_CHECK_VERSION(2,8,0)
|
|
560
530
|
RG_DEF_METHOD(present, -1);
|
|
561
|
-
#else
|
|
562
|
-
RG_DEF_METHOD(present, 0);
|
|
563
|
-
#endif
|
|
564
531
|
RG_DEF_METHOD(iconify, 0);
|
|
565
532
|
RG_DEF_METHOD(deiconify, 0);
|
|
566
533
|
RG_DEF_METHOD(stick, 0);
|
|
567
534
|
RG_DEF_METHOD(unstick, 0);
|
|
568
535
|
RG_DEF_METHOD(maximize, 0);
|
|
569
536
|
RG_DEF_METHOD(unmaximize, 0);
|
|
570
|
-
#if GTK_CHECK_VERSION(2,2,0)
|
|
571
537
|
RG_DEF_METHOD(fullscreen, 0);
|
|
572
538
|
RG_DEF_METHOD(unfullscreen, 0);
|
|
573
|
-
#endif
|
|
574
|
-
#if GTK_CHECK_VERSION(2,4,0)
|
|
575
539
|
RG_DEF_METHOD(set_keep_above, 1);
|
|
576
540
|
RG_DEF_METHOD(set_keep_below, 1);
|
|
577
|
-
#endif
|
|
578
541
|
RG_DEF_METHOD(begin_resize_drag, 5);
|
|
579
542
|
RG_DEF_METHOD(begin_move_drag, 4);
|
|
580
543
|
RG_DEF_METHOD(set_frame_dimensions, 4);
|
|
@@ -588,25 +551,17 @@ Init_gtk_window(VALUE mGtk)
|
|
|
588
551
|
RG_DEF_METHOD(mnemonic_modifier, 0);
|
|
589
552
|
RG_DEF_METHOD(position, 0);
|
|
590
553
|
RG_DEF_METHOD(size, 0);
|
|
591
|
-
#if GTK_CHECK_VERSION(2,10,0)
|
|
592
554
|
RG_DEF_METHOD(group, 0);
|
|
593
|
-
#endif
|
|
594
555
|
RG_DEF_METHOD(move, 2);
|
|
595
556
|
RG_DEF_METHOD(parse_geometry, 1);
|
|
596
557
|
RG_DEF_METHOD(reshow_with_initial_size, 0);
|
|
597
558
|
RG_DEF_METHOD(resize, 2);
|
|
598
559
|
RG_DEF_SMETHOD(set_default_icon_list, 1);
|
|
599
|
-
#if GTK_CHECK_VERSION(2,2,0)
|
|
600
560
|
RG_DEF_SMETHOD(set_default_icon, 1);
|
|
601
|
-
#endif
|
|
602
|
-
#if GTK_CHECK_VERSION(2,6,0)
|
|
603
561
|
RG_DEF_SMETHOD(set_default_icon_name, 1);
|
|
604
|
-
#endif
|
|
605
562
|
G_REPLACE_SET_PROPERTY(RG_TARGET_NAMESPACE, "icon", gwin_set_icon, 1);
|
|
606
563
|
RG_DEF_METHOD(set_icon_list, 1);
|
|
607
|
-
#if GTK_CHECK_VERSION(2,2,0)
|
|
608
564
|
RG_DEF_SMETHOD(set_auto_startup_notification, 1);
|
|
609
|
-
#endif
|
|
610
565
|
|
|
611
566
|
/*
|
|
612
567
|
RG_DEF_METHOD(decorated_window_init, 0);
|
data/sample/gtk-demo/common.rb
CHANGED
|
@@ -11,7 +11,12 @@ require 'gtk2'
|
|
|
11
11
|
|
|
12
12
|
module Demo
|
|
13
13
|
def self.find_file(basename)
|
|
14
|
-
|
|
14
|
+
file_load_paths = [
|
|
15
|
+
File.dirname(__FILE__),
|
|
16
|
+
"/usr/share/gtk-2.0/demo",
|
|
17
|
+
"/usr/local/share/gtk-2.0/demo",
|
|
18
|
+
]
|
|
19
|
+
file_load_paths.each do |dirname|
|
|
15
20
|
path = File.join(dirname, basename)
|
|
16
21
|
if File.exist?(path)
|
|
17
22
|
return path
|
data/sample/gtk-demo/main.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
=begin
|
|
3
3
|
main.rb - Main class of gtk-demo.
|
|
4
4
|
|
|
5
|
-
Copyright (c) 2003-
|
|
5
|
+
Copyright (c) 2003-2013 Ruby-GNOME2 Project Team
|
|
6
6
|
This program is licenced under the same licence as Ruby-GNOME2.
|
|
7
7
|
|
|
8
8
|
$Id: main.rb,v 1.20 2007/07/09 13:21:54 ggc Exp $
|
|
@@ -27,7 +27,7 @@ module Demo
|
|
|
27
27
|
|
|
28
28
|
set_title('Ruby/GTK+ Code Demos')
|
|
29
29
|
signal_connect('destroy') do
|
|
30
|
-
|
|
30
|
+
Gtk.main_quit
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
signal_connect("key_press_event") do |widget, event|
|
|
@@ -51,10 +51,10 @@ module Demo
|
|
|
51
51
|
hbox.pack_start(notebook, true, true, 0)
|
|
52
52
|
|
|
53
53
|
notebook.append_page(create_text(@info_buffer, false),
|
|
54
|
-
|
|
54
|
+
Gtk::Label.new('_Info', true))
|
|
55
55
|
|
|
56
56
|
notebook.append_page(create_text(@source_buffer, true),
|
|
57
|
-
|
|
57
|
+
Gtk::Label.new('_Source', true))
|
|
58
58
|
|
|
59
59
|
@info_buffer.create_tag('title',
|
|
60
60
|
{'font' => 'Sans 18'})
|
|
@@ -65,9 +65,9 @@ module Demo
|
|
|
65
65
|
{'foreground' => 'ForestGreen'})
|
|
66
66
|
@source_buffer.create_tag('string',
|
|
67
67
|
{
|
|
68
|
-
|
|
68
|
+
'foreground' => 'RosyBrown',
|
|
69
69
|
'weight' => Pango::FontDescription::WEIGHT_BOLD
|
|
70
|
-
|
|
70
|
+
})
|
|
71
71
|
@source_buffer.create_tag('reserved',
|
|
72
72
|
{'foreground' => 'purple'})
|
|
73
73
|
end
|
|
@@ -95,21 +95,25 @@ module Demo
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
if not klass
|
|
98
|
-
raise "File not found: #{path}.
|
|
98
|
+
raise "File not found: #{path}."
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
return title, klass.intern, depend
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
def generate_index
|
|
105
|
+
base_dir = File.dirname(__FILE__)
|
|
105
106
|
# Target scripts
|
|
106
|
-
scripts = Dir.glob('*.rb')
|
|
107
|
+
scripts = Dir.glob(File.join(base_dir, '*.rb'))
|
|
107
108
|
|
|
108
109
|
# Generate index tree
|
|
109
110
|
children = {}
|
|
110
111
|
index = []
|
|
111
112
|
|
|
113
|
+
not_script_base_names = %w(common.rb main.rb)
|
|
112
114
|
scripts.each do |fn|
|
|
115
|
+
base_name = File.basename(fn)
|
|
116
|
+
next if not_script_base_names.include?(base_name)
|
|
113
117
|
title, klass, depend = script_info(fn)
|
|
114
118
|
|
|
115
119
|
if depend and not Gtk.const_defined?(depend)
|
|
@@ -169,7 +173,7 @@ module Demo
|
|
|
169
173
|
cell = Gtk::CellRendererText.new
|
|
170
174
|
cell.style = Pango::FontDescription::STYLE_ITALIC
|
|
171
175
|
column = Gtk::TreeViewColumn.new("Widget (double click for demo)", cell,
|
|
172
|
-
|
|
176
|
+
{
|
|
173
177
|
'text' => TITLE_COLUMN,
|
|
174
178
|
'style_set' => ITALIC_COLUMN,
|
|
175
179
|
})
|
|
@@ -177,8 +181,8 @@ module Demo
|
|
|
177
181
|
tree_view.append_column(column)
|
|
178
182
|
|
|
179
183
|
selection.signal_connect('changed') do |selection|
|
|
180
|
-
|
|
181
|
-
|
|
184
|
+
iter = selection.selected
|
|
185
|
+
load_file(iter.get_value(FILENAME_COLUMN)) if iter
|
|
182
186
|
end
|
|
183
187
|
tree_view.signal_connect('row_activated') do |tree_view, path, column|
|
|
184
188
|
row_activated_cb(tree_view.model, path)
|
|
@@ -190,13 +194,13 @@ module Demo
|
|
|
190
194
|
|
|
191
195
|
def append_children(model, source, parent = nil)
|
|
192
196
|
source.each do |title, filename, klass, children|
|
|
193
|
-
|
|
197
|
+
iter = model.append(parent)
|
|
194
198
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
199
|
+
[title, filename, klass].each_with_index do |value, i|
|
|
200
|
+
if value
|
|
201
|
+
iter.set_value(i, value)
|
|
202
|
+
end
|
|
203
|
+
end
|
|
200
204
|
iter.set_value(ITALIC_COLUMN, false)
|
|
201
205
|
|
|
202
206
|
if children
|
|
@@ -212,21 +216,21 @@ module Demo
|
|
|
212
216
|
lib = iter.get_value(FILENAME_COLUMN)
|
|
213
217
|
if lib
|
|
214
218
|
require(lib)
|
|
215
|
-
|
|
219
|
+
|
|
216
220
|
klass = Demo.const_get(iter.get_value(CLASS_COLUMN))
|
|
217
221
|
window = klass.new
|
|
218
222
|
window.signal_connect('destroy') do
|
|
219
223
|
iter.set_value(ITALIC_COLUMN, false)
|
|
220
224
|
end
|
|
221
225
|
window.show_all
|
|
222
|
-
|
|
226
|
+
@window = window
|
|
223
227
|
end
|
|
224
228
|
end
|
|
225
229
|
|
|
226
230
|
def create_text(buffer, is_source)
|
|
227
231
|
scrolled_window = Gtk::ScrolledWindow.new
|
|
228
232
|
scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC,
|
|
229
|
-
|
|
233
|
+
Gtk::POLICY_AUTOMATIC)
|
|
230
234
|
scrolled_window.set_shadow_type(Gtk::SHADOW_IN)
|
|
231
235
|
|
|
232
236
|
text_view = Gtk::TextView.new
|
|
@@ -238,35 +242,35 @@ module Demo
|
|
|
238
242
|
scrolled_window.add(text_view)
|
|
239
243
|
|
|
240
244
|
if is_source
|
|
241
|
-
|
|
242
|
-
|
|
245
|
+
font_desc = Pango::FontDescription.new('Monospace 12')
|
|
246
|
+
text_view.modify_font(font_desc)
|
|
243
247
|
|
|
244
|
-
|
|
248
|
+
text_view.set_wrap_mode(Gtk::TextTag::WRAP_NONE)
|
|
245
249
|
else
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
250
|
+
text_view.set_wrap_mode(Gtk::TextTag::WRAP_WORD)
|
|
251
|
+
text_view.set_pixels_above_lines(2)
|
|
252
|
+
text_view.set_pixels_below_lines(2)
|
|
249
253
|
end
|
|
250
254
|
|
|
251
255
|
return scrolled_window
|
|
252
256
|
end
|
|
253
257
|
|
|
254
258
|
def fontify(start_iter = @source_buffer.start_iter,
|
|
255
|
-
|
|
259
|
+
end_iter = @source_buffer.end_iter)
|
|
256
260
|
str = @source_buffer.get_text(start_iter, end_iter, true)
|
|
257
261
|
|
|
258
262
|
tokenizer = RubyTokonizer.new
|
|
259
263
|
tokenizer.tokenize(str, start_iter.offset) do |tag, start, last|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
264
|
+
@source_buffer.apply_tag(tag.to_s,
|
|
265
|
+
@source_buffer.get_iter_at_offset(start),
|
|
266
|
+
@source_buffer.get_iter_at_offset(last))
|
|
263
267
|
end
|
|
264
268
|
end
|
|
265
269
|
|
|
266
270
|
|
|
267
271
|
def load_file(filename)
|
|
268
272
|
if filename == @current_file
|
|
269
|
-
|
|
273
|
+
return
|
|
270
274
|
end
|
|
271
275
|
|
|
272
276
|
@info_buffer.delete(*@info_buffer.bounds)
|
|
@@ -274,43 +278,43 @@ module Demo
|
|
|
274
278
|
@source_buffer.delete(*@source_buffer.bounds)
|
|
275
279
|
|
|
276
280
|
file = begin
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
281
|
+
File.open(filename)
|
|
282
|
+
rescue
|
|
283
|
+
$stderr.puts "Cannot open: #{$!}" if $DEBUG
|
|
284
|
+
return
|
|
285
|
+
end
|
|
282
286
|
start = @info_buffer.get_iter_at_offset(0)
|
|
283
287
|
state = :before_header
|
|
284
288
|
|
|
285
289
|
file.each do |line|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
290
|
+
case state
|
|
291
|
+
when :before_header
|
|
292
|
+
if line =~ /^=begin$/
|
|
293
|
+
state = :in_header
|
|
294
|
+
end
|
|
295
|
+
when :in_header
|
|
296
|
+
if line =~ /^=end$/
|
|
297
|
+
state = :body
|
|
298
|
+
start = @source_buffer.get_iter_at_offset(0)
|
|
299
|
+
elsif line =~ /^=\s+(.*)$/
|
|
300
|
+
title = $1
|
|
297
301
|
title.gsub!(/\s*\(.*\)$/, '') # Delete depend field
|
|
298
302
|
|
|
299
|
-
|
|
303
|
+
last = start
|
|
300
304
|
|
|
301
|
-
|
|
302
|
-
|
|
305
|
+
@info_buffer.insert(last, title)
|
|
306
|
+
start = last.clone
|
|
303
307
|
|
|
304
|
-
|
|
305
|
-
|
|
308
|
+
start.backward_chars(title.length)
|
|
309
|
+
@info_buffer.apply_tag('title', start, last)
|
|
306
310
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
311
|
+
start = last
|
|
312
|
+
else
|
|
313
|
+
@info_buffer.insert(start, line)
|
|
314
|
+
end
|
|
315
|
+
when :body # Reading program body
|
|
316
|
+
@source_buffer.insert(start, line)
|
|
317
|
+
end
|
|
314
318
|
end
|
|
315
319
|
|
|
316
320
|
fontify
|
|
@@ -325,30 +329,30 @@ module Demo
|
|
|
325
329
|
|
|
326
330
|
def tokenize(str, index = 0)
|
|
327
331
|
until str.empty?
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
332
|
+
tag = nil
|
|
333
|
+
|
|
334
|
+
case str
|
|
335
|
+
when /".+?"/, /'.+?'/
|
|
336
|
+
tag = :string
|
|
337
|
+
when /#.*$/
|
|
338
|
+
tag = :comment
|
|
339
|
+
when RESERVED_WORDS_PATTERN
|
|
340
|
+
tag = :reserved
|
|
341
|
+
when /[A-Z][A-Za-z0-9_]+/
|
|
342
|
+
tag = :const
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
if tag
|
|
346
|
+
tokenize($~.pre_match, index) do |*args|
|
|
343
347
|
yield(*args)
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
348
|
+
end
|
|
349
|
+
yield(tag, index + $~.begin(0), index + $~.end(0))
|
|
350
|
+
index += (str.length - $~.post_match.length)
|
|
351
|
+
str = $~.post_match
|
|
352
|
+
else
|
|
353
|
+
index += str.length
|
|
354
|
+
str = ''
|
|
355
|
+
end
|
|
352
356
|
end
|
|
353
357
|
end
|
|
354
358
|
end
|
|
@@ -365,9 +369,9 @@ if target
|
|
|
365
369
|
window.show_all
|
|
366
370
|
|
|
367
371
|
class << window
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
372
|
+
def quit
|
|
373
|
+
Gtk.main_quit
|
|
374
|
+
end
|
|
371
375
|
end
|
|
372
376
|
|
|
373
377
|
break
|