vimamsa 0.1.8 → 0.1.9

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.
@@ -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
-