vimamsa 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -70,13 +70,6 @@ class Editor
70
70
  end
71
71
 
72
72
  def start
73
- # $highlight = {}
74
-
75
- # GLib::Idle.add
76
- # Ripl.start :binding => binding
77
- # GLib::Idle.add(proc{ debug "IDLEFUNC"})
78
- # GLib::Idle.add(proc { idle_func })
79
-
80
73
  @gui = $vmag #TODO
81
74
 
82
75
  $hook = Hook.new
@@ -95,13 +88,15 @@ class Editor
95
88
  # build_key_bindings_tree
96
89
  @kbd = KeyBindingTree.new()
97
90
  $kbd = @kbd
98
- $kbd.add_mode("C", :command)
99
- $kbd.add_mode("I", :insert)
100
- $kbd.add_mode("V", :visual)
101
- $kbd.add_mode("M", :minibuffer)
102
- $kbd.add_mode("R", :readchar)
103
- $kbd.add_mode("B", :browse)
104
- $kbd.set_default_mode(:command)
91
+ @kbd.add_mode("C", :command)
92
+ @kbd.add_mode("I", :insert)
93
+ @kbd.add_mode("V", :visual)
94
+ @kbd.add_mode("M", :minibuffer)
95
+ @kbd.add_mode("R", :readchar)
96
+ @kbd.add_mode("B", :browse)
97
+ @kbd.set_default_mode(:command)
98
+ @kbd.set_mode(:command)
99
+ @kbd.show_state_trail
105
100
  require "vimamsa/key_bindings_vimlike"
106
101
  sleep(0.03)
107
102
 
@@ -118,6 +113,14 @@ class Editor
118
113
  end
119
114
  listener.start
120
115
 
116
+ custom_fn = File.expand_path("~/.vimamsa/custom.rb")
117
+ if !File.exist?(custom_fn)
118
+ example_custom = IO.read(ppath("custom_example.rb"))
119
+ IO.write(custom_fn, example_custom)
120
+ end
121
+
122
+ mkdir_if_not_exists("~/.vimamsa/custom.rb")
123
+
121
124
  $cnf[:theme] = "Twilight_edit"
122
125
  $cnf[:syntax_highlight] = true
123
126
  settings_path = get_dot_path("settings.rb")
@@ -132,6 +135,9 @@ class Editor
132
135
 
133
136
  dotfile = read_file("", "~/.vimamsarc")
134
137
  eval(dotfile) if dotfile
138
+
139
+ custom_script = read_file("", custom_fn)
140
+ eval(custom_script) if custom_script
135
141
 
136
142
  # build_options
137
143
 
@@ -141,6 +147,8 @@ class Editor
141
147
  if File.exist?(fname_)
142
148
  fname = fname_
143
149
  end
150
+ else
151
+ fname = ppath("demo.txt")
144
152
  end
145
153
  fname = ARGV[0] if ARGV.size >= 1 and File.file?(File.expand_path(ARGV[0]))
146
154
  # vma.add_content_search_path(Dir.pwd)
@@ -189,11 +197,10 @@ class Editor
189
197
  def buf()
190
198
  return $buffer
191
199
  end
192
-
200
+
193
201
  def buffers()
194
202
  return $buffers
195
203
  end
196
-
197
204
 
198
205
  def marshal_save(varname, vardata)
199
206
  save_var_to_file(varname, Marshal.dump(vardata))
@@ -256,13 +263,18 @@ class Editor
256
263
  @converters[converter_id].apply(txt)
257
264
  end
258
265
 
266
+ # Used only by ack module at the moment
259
267
  def get_content_search_paths()
260
268
  r = @file_content_search_paths.clone
261
269
  p = find_project_dir_of_cur_buffer()
270
+ if p.nil?
271
+ p = buf.dirname # Search dir of current file by default
272
+ end
262
273
 
263
274
  if p and !@file_content_search_paths.include?(p)
264
275
  r.insert(0, p)
265
276
  end
277
+
266
278
  return r
267
279
  end
268
280
 
@@ -315,7 +327,7 @@ def set_clipboard(s)
315
327
  debug s.inspect
316
328
  debug [s, s.class, s.size]
317
329
  log_error("s.class != String or s.size == 0")
318
- Ripl.start :binding => binding
330
+ # Ripl.start :binding => binding
319
331
  return
320
332
  end
321
333
  $clipboard << s
@@ -370,10 +382,17 @@ end
370
382
 
371
383
  def show_key_bindings()
372
384
  kbd_s = "❙Key bindings❙\n"
373
- kbd_s << "=======================================\n"
385
+ kbd_s << "\n⦁[Mode] keys : action⦁\n"
386
+
387
+ kbd_s << "[B]=Browse, [C]=Command, [I]=Insert, [V]=Visual\n"
388
+ kbd_s << "key!: Press key once, release before pressing any other keys\n"
389
+
390
+ kbd_s << "===============================================\n"
374
391
  kbd_s << $kbd.to_s
375
- kbd_s << "\n=======================================\n"
376
- create_new_file(nil, kbd_s)
392
+ kbd_s << "===============================================\n"
393
+ b = create_new_file(nil, kbd_s)
394
+ gui_set_file_lang(b.id, "hyperplaintext")
395
+ #
377
396
  end
378
397
 
379
398
  def diff_buffer()
@@ -451,6 +470,7 @@ end
451
470
  GUESS_ENCODING_ORDER = [
452
471
  Encoding::US_ASCII,
453
472
  Encoding::UTF_8,
473
+ Encoding::ISO_8859_1,
454
474
  Encoding::Shift_JIS,
455
475
  Encoding::EUC_JP,
456
476
  Encoding::EucJP_ms,
@@ -513,11 +533,23 @@ def load_buffer(fname)
513
533
  #$buffer_history << $buffers.size - 1
514
534
  end
515
535
 
516
- def jump_to_file(filename, linenum = 0)
536
+ def jump_to_file(filename, linenum = nil, charn = nil)
517
537
  open_new_file(filename)
518
- if linenum > 0
519
- $buffer.jump_to_line(linenum)
538
+
539
+ # Link to character position
540
+ if !charn.nil?
541
+ if charn == "c"
542
+ buf.jump_to_pos(linenum)
543
+ center_on_current_line
544
+ return
545
+ end
546
+ end
547
+
548
+ # Link to line
549
+ if !linenum.nil?
550
+ buf.jump_to_line(linenum)
520
551
  center_on_current_line
552
+ return
521
553
  end
522
554
  end
523
555
 
@@ -547,40 +579,11 @@ def scan_word_start_marks(search_str)
547
579
  return wsmarks
548
580
  end
549
581
 
550
- def draw_text(str, x, y)
551
- vma.paint_stack << [4, x, y, str]
552
- end
553
-
554
582
  def hook_draw()
555
583
  # TODO: as hook.register
556
584
  # easy_jump_draw()
557
585
  end
558
586
 
559
- #TODO: delete this
560
- def render_buffer(buffer = 0, reset = 0)
561
- tmpbuf = $buffer.to_s
562
- debug "pos:#{$buffer.pos} L:#{$buffer.lpos} C:#{$buffer.cpos}"
563
- pos = $buffer.pos
564
- selection_start = $buffer.selection_start
565
-
566
- if $buffer.need_redraw?
567
- reset = 1
568
- end
569
- t1 = Time.now
570
- hook_draw()
571
-
572
- if $buffer.need_redraw?
573
- hpt_scan_images() if $debug #experimental
574
- end
575
-
576
- $buffer.highlight
577
- if Time.now - t1 > 1 / 100.0
578
- debug "SLOW render"
579
- debug "Render time: #{Time.now - t1}"
580
- end
581
- $buffer.set_redrawed if reset == 1
582
- end
583
-
584
587
  def get_dot_path(sfx)
585
588
  dot_dir = File.expand_path("~/.vimamsa")
586
589
  Dir.mkdir(dot_dir) unless File.exist?(dot_dir)
@@ -591,10 +594,10 @@ end
591
594
  def get_file_line_pointer(s)
592
595
  #"/code/vimamsa/lib/vimamsa/buffer_select.rb:31:def"
593
596
  # m = s.match(/(~[a-z]*)?\/.*\//)
594
- m = s.match(/((~[a-z]*)?\/.*\/\S+):(\d+)/)
597
+ m = s.match(/((~[a-z]*)?\/.*\/\S+):(c?)(\d+)/)
595
598
  if m != nil
596
599
  if File.exist?(File.expand_path(m[1]))
597
- return [m[1], m[3].to_i]
600
+ return [m[1], m[4].to_i, m[3]]
598
601
  end
599
602
  end
600
603
  return nil
@@ -38,7 +38,7 @@ end
38
38
 
39
39
  def encrypt_cur_buffer()
40
40
  callback = proc{|x|encrypt_cur_buffer_callback(x)}
41
- gui_one_input_action("Encrypt", "Password:", "Encrypt", callback)
41
+ gui_one_input_action("Encrypt", "Password:", "Encrypt", callback,{:hide=>true})
42
42
  end
43
43
 
44
44
  def encrypt_cur_buffer_callback(password,b=nil)
@@ -41,9 +41,7 @@ def recursively_find_files()
41
41
  for d in $search_dirs
42
42
  debug("FIND FILEs IN #{d}")
43
43
  dlist = dlist + Dir.glob("#{d}/**/*").select { |e| File.file?(e) and $find_extensions.include?(File.extname(e)) }
44
- debug("FIND FILEs IN #{d} END")
45
- end
46
- #$dir_list = Dir.glob('./**/*').select { |e| File.file? e }
44
+ debug("FIND FILEs IN #{d} END") end #$dir_list = Dir.glob('./**/*').select { |e| File.file? e }
47
45
  debug("END find files2")
48
46
  $dir_list = dlist
49
47
  debug("END find files")
data/lib/vimamsa/gui.rb CHANGED
@@ -131,32 +131,28 @@ def set_system_clipboard(arg)
131
131
  clipboard.text = arg
132
132
  end
133
133
 
134
- def gui_create_buffer(id)
134
+ def gui_create_buffer(id, bufo)
135
135
  debug "gui_create_buffer(#{id})"
136
136
  buf1 = GtkSource::Buffer.new()
137
- view = VSourceView.new()
138
-
139
- view.set_highlight_current_line(true)
140
- view.set_show_line_numbers(true)
141
- view.set_buffer(buf1)
137
+ view = VSourceView.new(nil, bufo)
142
138
 
143
139
  ssm = GtkSource::StyleSchemeManager.new
144
140
  ssm.set_search_path(ssm.search_path << ppath("styles/"))
145
- # sty = ssm.get_scheme("dark")
146
141
  sty = ssm.get_scheme("molokai_edit")
147
- # debug ssm.scheme_ids
148
142
 
149
- view.buffer.highlight_matching_brackets = true
150
- view.buffer.style_scheme = sty
143
+ buf1.highlight_matching_brackets = true
144
+ buf1.style_scheme = sty
145
+
146
+ view.set_highlight_current_line(true)
147
+ view.set_show_line_numbers(true)
148
+ view.set_buffer(buf1)
151
149
 
152
150
  provider = Gtk::CssProvider.new
153
151
  provider.load(data: "textview { font-family: Monospace; font-size: 11pt; }")
154
- # provider.load(data: "textview { font-family: Arial; font-size: 12pt; }")
155
152
  view.style_context.add_provider(provider)
156
153
  view.wrap_mode = :char
157
154
  view.set_tab_width(conf(:tab_width))
158
155
 
159
-
160
156
  $vmag.buffers[id] = view
161
157
  end
162
158
 
@@ -178,20 +174,13 @@ end
178
174
  def gui_select_window_close(arg = nil)
179
175
  end
180
176
 
181
- # def set_window_title(str)
182
- # unimplemented
183
- # end
184
-
185
177
  def gui_set_buffer_contents(id, txt)
186
- # $vbuf.set_text(txt)
187
178
  debug "gui_set_buffer_contents(#{id}, txt)"
188
-
189
- $vmag.buffers[id].buffer.set_text(txt)
179
+ vma.gui.buffers[id].buffer.set_text(txt)
190
180
  end
191
181
 
192
182
  def gui_set_cursor_pos(id, pos)
193
- $view.set_cursor_pos(pos)
194
- # Ripl.start :binding => binding
183
+ vma.buf.view.set_cursor_pos(pos)
195
184
  end
196
185
 
197
186
  def gui_set_current_buffer(id)
@@ -207,17 +196,9 @@ def gui_set_current_buffer(id)
207
196
  $vmag.sw.add(view)
208
197
 
209
198
  view.grab_focus
210
- #view.set_focus(10)
211
199
  view.set_cursor_visible(true)
212
- #view.move_cursor(1, 1, false)
213
200
  view.place_cursor_onscreen
214
201
 
215
- #TODO:
216
- # itr = view.buffer.get_iter_at(:offset => 0)
217
- # view.buffer.place_cursor(itr)
218
-
219
- # wtitle = ""
220
- # wtitle = buf.fname if !buf.fname.nil?
221
202
  $vmag.sw.show_all
222
203
  end
223
204
 
@@ -227,7 +208,7 @@ def gui_set_window_title(wtitle, subtitle = "")
227
208
  end
228
209
 
229
210
  class VMAgui
230
- attr_accessor :buffers, :sw, :view, :buf1, :window
211
+ attr_accessor :buffers, :sw, :view, :buf1, :window, :delex, :statnfo
231
212
 
232
213
  VERSION = "1.0"
233
214
 
@@ -243,6 +224,22 @@ class VMAgui
243
224
  @buffers = {}
244
225
  @view = nil
245
226
  @buf1 = nil
227
+ @img_resizer_active = false
228
+ imgproc = proc {
229
+ GLib::Idle.add(proc {
230
+ if !buf.images.empty?
231
+ vma.gui.scale_all_images
232
+
233
+ w = Gtk::Window.new(:toplevel)
234
+ w.set_default_size(1, 1)
235
+ w.show_all
236
+ Thread.new { sleep 0.1; w.destroy }
237
+ end
238
+
239
+ false
240
+ })
241
+ }
242
+ @delex = DelayExecutioner.new(1, imgproc)
246
243
  end
247
244
 
248
245
  def run
@@ -251,6 +248,38 @@ class VMAgui
251
248
  Gtk.main
252
249
  end
253
250
 
251
+ def delay_scale()
252
+ if Time.now - @dtime > 2.0
253
+ end
254
+ end
255
+
256
+ def scale_all_images
257
+ # puts "scale all"
258
+ for img in buf.images
259
+ if !img[:obj].destroyed?
260
+ img[:obj].scale_image
261
+ end
262
+ end
263
+ end
264
+
265
+ def handle_image_resize
266
+ return if @img_resizer_active == true
267
+ @dtime = Time.now
268
+
269
+ $gcrw = 0
270
+ vma.gui.window.signal_connect "configure-event" do |widget, cr|
271
+ # Ripl.start :binding => binding
272
+
273
+ if $gcrw != cr.width
274
+ @delex.run
275
+ end
276
+ $gcrw = cr.width
277
+ false
278
+ end
279
+
280
+ @img_resizer_active = true
281
+ end
282
+
254
283
  def start_overlay_draw()
255
284
  @da = Gtk::Fixed.new
256
285
  @overlay.add_overlay(@da)
@@ -267,7 +296,7 @@ class VMAgui
267
296
  # debug "overlay_draw_text #{[x,y]}"
268
297
  (x, y) = @view.pos_to_coord(textpos)
269
298
  # debug "overlay_draw_text #{[x,y]}"
270
- label = Gtk::Label.new("<span background='#00000088' foreground='#ff0000' weight='ultrabold'>#{text}</span>")
299
+ label = Gtk::Label.new("<span background='#000000ff' foreground='#ff0000' weight='ultrabold'>#{text}</span>")
271
300
  label.use_markup = true
272
301
  @da.put(label, x, y)
273
302
  end
@@ -371,7 +400,7 @@ class VMAgui
371
400
  overlay = Gtk::Overlay.new
372
401
  overlay.add(sw)
373
402
  # @vpaned.pack2(overlay, :resize => false)
374
- @vbox.attach(overlay, 0, 2, 1, 1)
403
+ @vbox.attach(overlay, 0, 2, 2, 1)
375
404
  # overlay.set_size_request(-1, 50)
376
405
  # $ovrl = overlay
377
406
  # $ovrl.set_size_request(-1, 30)
@@ -385,7 +414,7 @@ class VMAgui
385
414
  ssm = GtkSource::StyleSchemeManager.new
386
415
  ssm.set_search_path(ssm.search_path << ppath("styles/"))
387
416
  sty = ssm.get_scheme("molokai_edit")
388
- view.buffer.highlight_matching_brackets = false
417
+ view.buffer.highlight_matching_brackets = false #TODO
389
418
  view.buffer.style_scheme = sty
390
419
  provider = Gtk::CssProvider.new
391
420
  # provider.load(data: "textview { font-family: Monospace; font-size: 11pt; }")
@@ -406,7 +435,6 @@ class VMAgui
406
435
  header.title = ""
407
436
  header.has_subtitle = true
408
437
  header.subtitle = ""
409
- # Ripl.start :binding => binding
410
438
 
411
439
  # icon = Gio::ThemedIcon.new("mail-send-receive-symbolic")
412
440
  # icon = Gio::ThemedIcon.new("document-open-symbolic")
@@ -482,32 +510,7 @@ class VMAgui
482
510
 
483
511
  header.pack_start(box)
484
512
  @window.titlebar = header
485
- @window.add(Gtk::TextView.new)
486
- end
487
-
488
- def create_menu_item(label, depth)
489
- menuitem = Gtk::MenuItem.new(:label => label)
490
- menuitem.submenu = create_menu(depth)
491
- @menubar.append(menuitem)
492
- end
493
-
494
- def create_menu(depth)
495
- return nil if depth < 1
496
-
497
- menu = Gtk::Menu.new
498
- last_item = nil
499
- (0..5).each do |i|
500
- j = i + 1
501
- label = "item #{depth} - #{j}"
502
- menu_item = Gtk::RadioMenuItem.new(nil, label)
503
- menu_item.join_group(last_item) if last_item
504
- last_item = menu_item
505
- menu.append(menu_item)
506
- menu_item.sensitive = false if i == 3
507
- menu_item.submenu = create_menu(depth - 1)
508
- end
509
-
510
- menu
513
+ # @window.add(Gtk::TextView.new)
511
514
  end
512
515
 
513
516
  def init_window
@@ -515,10 +518,8 @@ class VMAgui
515
518
  @window.set_default_size(650, 850)
516
519
  @window.title = "Multiple Views"
517
520
  @window.show_all
518
- # vpaned = Gtk::Paned.new(:horizontal)
519
521
  @vpaned = Gtk::Paned.new(:vertical)
520
- #@vpaned = Gtk::Box.new(:vertical, 0)
521
- # @vbox = Gtk::Box.new(:vertical, 0)
522
+
522
523
  @vbox = Gtk::Grid.new()
523
524
  @window.add(@vbox)
524
525
 
@@ -530,20 +531,21 @@ class VMAgui
530
531
  @overlay = Gtk::Overlay.new
531
532
  @overlay.add(@sw)
532
533
 
533
- # @vpaned.pack1(@overlay, :resize => true)
534
- # @vpaned.pack2(@menubar, :resize => false)
535
- # @vbox.add(@menubar, :resize => false)
536
-
537
534
  init_header_bar
538
535
 
539
- # @window.show_all
536
+ @statnfo = Gtk::Label.new
537
+ provider = Gtk::CssProvider.new
538
+ provider.load(data: "textview { background-color:#353535; font-family: Monospace; font-size: 10pt; margin-top:4px;}")
539
+ @statnfo.style_context.add_provider(provider)
540
540
 
541
- # @vbox.pack_start(@menubar, :expand => false, :fill => false, :padding => 0 )
542
- # @vbox.pack_start(@menubar)
543
- # @vbox.pack_start(@overlay, :expand => true, :fill => true, :padding => 0 )
544
- # @vbox.pack_start(@overlay, :expand => true, :fill => true, :padding => 0 )
541
+ # Deprecated, but found no other way to do it. css doesn't work.
542
+ # TODO: should select color automatically from theme
543
+ @statnfo.override_background_color(Gtk::StateFlags::NORMAL, "#353535")
544
+
545
+ # column, row, width height
545
546
  @vbox.attach(@menubar, 0, 0, 1, 1)
546
- @vbox.attach(@overlay, 0, 1, 1, 1)
547
+ @vbox.attach(@statnfo, 1, 0, 1, 1)
548
+ @vbox.attach(@overlay, 0, 1, 2, 1)
547
549
  @overlay.vexpand = true
548
550
  @overlay.hexpand = true
549
551
 
@@ -555,6 +557,7 @@ class VMAgui
555
557
  @window.show_all
556
558
  vma.start
557
559
  Vimamsa::Menu.new(@menubar)
560
+
558
561
  @window.show_all
559
562
  end
560
563
  end
@@ -0,0 +1,43 @@
1
+
2
+ # Following this example:
3
+ # https://gabmus.org/posts/create_an_auto-resizing_image_widget_with_gtk3_and_python/
4
+ class ResizableImage < Gtk::DrawingArea
5
+ attr_accessor :fpath, :pixbuf, :oldimg, :draw_image, :view
6
+
7
+ def initialize(fpath, view)
8
+ @fpath = fpath
9
+ @pixbuf = GdkPixbuf::Pixbuf.new(:file => fpath)
10
+ @oldimg = @pixbuf
11
+ @draw_image = @pixbuf
12
+ @view = view
13
+
14
+ super()
15
+ end
16
+
17
+ # Scale to fit window width
18
+ def scale_image()
19
+ pb = @pixbuf
20
+ view = @view
21
+ imglimit = view.visible_rect.width - 10
22
+
23
+ if @oldimg.width > imglimit or @oldimg.width < imglimit - 10
24
+ nwidth = imglimit
25
+ nwidth = pb.width if pb.width < imglimit
26
+ nheight = (pb.height * (nwidth.to_f / pb.width)).to_i
27
+ pb = pb.scale_simple(nwidth, nheight, GdkPixbuf::InterpType::HYPER)
28
+ else
29
+ pb = @oldimg
30
+ end
31
+ @draw_image = pb
32
+ @oldimg = pb
33
+ self.set_size_request(pb.width, pb.height)
34
+
35
+ end
36
+
37
+ def do_draw(da, cr)
38
+ # puts @fpath
39
+ cr.set_source_pixbuf(@draw_image, 0, 0)
40
+ cr.paint
41
+ end
42
+ end
43
+
@@ -45,7 +45,6 @@ module Vimamsa
45
45
  add_to_menu "Actions.experimental.DisableDebug", { :label => "Disable debug", :action => :disable_debug }
46
46
  add_to_menu "Actions.experimental.ShowImages", { :label => "Show images ⟦img:path⟧", :action => :show_images }
47
47
 
48
-
49
48
  add_to_menu "Actions.EncryptFile", { :label => "Encrypt file", :action => :encrypt_file }
50
49
  add_to_menu "Help.KeyBindings", { :label => "Show key bindings", :action => :show_key_bindings }
51
50
 
@@ -1,6 +1,9 @@
1
1
  def gui_select_update_window(item_list, jump_keys, select_callback, update_callback, opt={})
2
2
  $selup = SelectUpdateWindow.new(nil, item_list, jump_keys, select_callback, update_callback, opt)
3
3
  $selup.run
4
+ # opt fields:
5
+ # :title
6
+ # :desc
4
7
  end
5
8
 
6
9
  class SelectUpdateWindow
@@ -1,11 +1,30 @@
1
1
 
2
+
3
+ # class VSourceView < Gtk::TextView
2
4
  class VSourceView < GtkSource::View
3
- def initialize(title = nil)
5
+ attr_accessor :bufo
6
+ # :highlight_matching_brackets
7
+
8
+ # def set_highlight_current_line(vbool)
9
+ # end
10
+
11
+ # def set_show_line_numbers(vbool)
12
+ # end
13
+
14
+ # def highlight_matching_brackets=(vbool)
15
+ # end
16
+
17
+
18
+ def initialize(title = nil,bufo=nil)
4
19
  # super(:toplevel)
20
+ @highlight_matching_brackets = true
5
21
  super()
22
+ @bufo = bufo #object of Buffer class buffer.rb
6
23
  debug "vsource init"
7
24
  @last_keyval = nil
8
25
  @last_event = [nil, nil]
26
+ self.drag_dest_add_image_targets
27
+ self.drag_dest_add_uri_targets
9
28
 
10
29
  signal_connect "button-press-event" do |_widget, event|
11
30
  if event.button == Gdk::BUTTON_PRIMARY
@@ -19,6 +38,20 @@ class VSourceView < GtkSource::View
19
38
  end
20
39
  end
21
40
 
41
+ signal_connect("drag-data-received") do |widget, event, x, y, data, info, time|
42
+ puts "drag-data-received"
43
+ puts
44
+ if data.uris.size >= 1
45
+ imgpath = CGI.unescape(data.uris[0])
46
+ m = imgpath.match(/^file:\/\/(.*)/)
47
+ if m
48
+ fp = m[1]
49
+ handle_drag_and_drop(fp)
50
+ end
51
+ end
52
+ true
53
+ end
54
+
22
55
  signal_connect("key_press_event") do |widget, event|
23
56
  handle_key_event(event, :key_press_event)
24
57
  true
@@ -141,7 +174,7 @@ class VSourceView < GtkSource::View
141
174
 
142
175
  def handle_deltas()
143
176
  any_change = false
144
- while d = buf.deltas.shift
177
+ while d = @bufo.deltas.shift
145
178
  any_change = true
146
179
  pos = d[0]
147
180
  op = d[1]
@@ -157,7 +190,7 @@ class VSourceView < GtkSource::View
157
190
  end
158
191
  end
159
192
  if any_change
160
- gui_set_cursor_pos($buffer.id, $buffer.pos) #TODO: only when necessary
193
+ gui_set_cursor_pos(@bufo.id, @bufo.pos) #TODO: only when necessary
161
194
  end
162
195
 
163
196
  # sanity_check #TODO
@@ -269,26 +302,20 @@ class VSourceView < GtkSource::View
269
302
 
270
303
  def draw_cursor
271
304
  if is_command_mode
272
- itr = buffer.get_iter_at(:offset => buf.pos)
273
- itr2 = buffer.get_iter_at(:offset => buf.pos + 1)
305
+ itr = buffer.get_iter_at(:offset => @bufo.pos)
306
+ itr2 = buffer.get_iter_at(:offset => @bufo.pos + 1)
274
307
  $view.buffer.select_range(itr, itr2)
275
- elsif buf.visual_mode?
308
+ elsif @bufo.visual_mode?
276
309
  debug "VISUAL MODE"
277
- (_start, _end) = buf.get_visual_mode_range2
310
+ (_start, _end) = @bufo.get_visual_mode_range2
278
311
  debug "#{_start}, #{_end}"
279
312
  itr = buffer.get_iter_at(:offset => _start)
280
313
  itr2 = buffer.get_iter_at(:offset => _end + 1)
281
314
  $view.buffer.select_range(itr, itr2)
282
315
  else # Insert mode
283
- itr = buffer.get_iter_at(:offset => buf.pos)
316
+ itr = buffer.get_iter_at(:offset => @bufo.pos)
284
317
  $view.buffer.select_range(itr, itr)
285
318
  debug "INSERT MODE"
286
319
  end
287
320
  end
288
-
289
- # def quit
290
- # destroy
291
- # true
292
- # end
293
321
  end
294
-