Initial commit.
This commit is contained in:
82
vim/autoload/railmoon/widget/canvas.vim
Executable file
82
vim/autoload/railmoon/widget/canvas.vim
Executable file
@@ -0,0 +1,82 @@
|
||||
" Author: Mykola Golubyev ( Nickolay Golubev )
|
||||
" Email: golubev.nikolay@gmail.com
|
||||
" Site: www.railmoon.com
|
||||
" Module: railmoon#widget#canvas
|
||||
" Purpose: widget for drawing inside it
|
||||
|
||||
" -
|
||||
" [ internal usage ]
|
||||
" Name: callback_object
|
||||
" Purpose: handler for base back calls
|
||||
" -
|
||||
let s:callback_object = {}
|
||||
|
||||
" -
|
||||
" [ public library function ]
|
||||
" Name: railmoon#widget#canvas#create
|
||||
" Purpose: create "canvas" widget
|
||||
" [ parameters ]
|
||||
" name name of new vim window that will represent widget
|
||||
" callback_object call back object with following methods
|
||||
" on_draw() draw what inside canvas
|
||||
" -
|
||||
function! railmoon#widget#canvas#create(name, callback_object)
|
||||
let new_object = railmoon#widget#base#create(a:name, s:canvas, [a:callback_object, s:callback_object])
|
||||
|
||||
call s:auto_command_setup()
|
||||
|
||||
return new_object
|
||||
endfunction
|
||||
|
||||
" -
|
||||
" [ internal usage ]
|
||||
" Name: auto_command_setup
|
||||
" Purpose: setup handlers for window triggers
|
||||
" -
|
||||
function! s:auto_command_setup()
|
||||
" autocmd CursorMoved <buffer> call s:on_cursor_moved()
|
||||
endfunction
|
||||
|
||||
function! s:callback_object.on_setup()
|
||||
endfunction
|
||||
|
||||
" -
|
||||
" [ internal usage ]
|
||||
" Name: canvas
|
||||
" Purpose: widget object "canvas"
|
||||
" -
|
||||
let s:canvas = {}
|
||||
|
||||
" -
|
||||
" [ object method ]
|
||||
" Object: canvas
|
||||
" Name: draw
|
||||
" Purpose: prepare_canvas for drawing and call user defined on_draw method
|
||||
" -
|
||||
function! s:canvas.draw()
|
||||
call railmoon#trace#push('canvas.draw')
|
||||
try
|
||||
|
||||
let selected = railmoon#widget#window#save_selected()
|
||||
let is_selected = railmoon#widget#window#select(self.id)
|
||||
|
||||
if ! is_selected
|
||||
throw 'widget:selection_window:draw:window_not_found'
|
||||
endif
|
||||
|
||||
setlocal modifiable
|
||||
|
||||
0,$delete _
|
||||
call railmoon#draw#prepare_canvas(winwidth('%'), winheight('%'))
|
||||
call railmoon#widget#base#call_back(self, 'on_draw()')
|
||||
|
||||
setlocal nomodifiable
|
||||
|
||||
call railmoon#widget#window#load_selected(selected)
|
||||
|
||||
finally
|
||||
call railmoon#trace#debug('...')
|
||||
call railmoon#trace#pop()
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
Reference in New Issue
Block a user