Develop and Download Open Source Software

Browse Subversion Repository

Diff of /window.rb

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 38 by bluedwarf, Wed Apr 18 11:20:22 2007 UTC revision 40 by bluedwarf, Thu Apr 19 17:54:27 2007 UTC
# Line 43  module Edmaru Line 43  module Edmaru
43        @cursor = Cursor.new(0, 0) # logical cursor        @cursor = Cursor.new(0, 0) # logical cursor
44        @modeline = Edmaru::SYSTEM_MODELINE.new(self)        @modeline = Edmaru::SYSTEM_MODELINE.new(self)
45        @start_line = 0        @start_line = 0
46          @focused = false
47    
48        init_ui        init_ui
49      end      end
# Line 106  module Edmaru Line 107  module Edmaru
107      #_move_cursor_ :: _true_ to cause the cursor move to the end of the      #_move_cursor_ :: _true_ to cause the cursor move to the end of the
108      #inserted string.      #inserted string.
109      def insert_at_cursor(str, move_cursor = true)      def insert_at_cursor(str, move_cursor = true)
110          @view.hide_alert
111    
112        #Insert to the buffer.        #Insert to the buffer.
113        begin        begin
114          @buffer.insert(@cursor.row, @cursor.column, str)          @buffer.insert(@cursor.row, @cursor.column, str)
# Line 113  module Edmaru Line 116  module Edmaru
116          #Move the cursor to the end of inserted string.          #Move the cursor to the end of inserted string.
117          cursor_forward(str.size) if move_cursor          cursor_forward(str.size) if move_cursor
118        rescue ReadOnlyException => e        rescue ReadOnlyException => e
119          @view.mini_window.show_alert(e.to_s)          @view.show_alert(e.to_s)
         @view.beep  
120        end        end
121      end      end
122    
# Line 126  module Edmaru Line 128  module Edmaru
128      #=== Warning      #=== Warning
129      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
130      def cursor_forward(n = 1)      def cursor_forward(n = 1)
131          @view.hide_alert
132    
133        n.times{        n.times{
134          if @cursor.column >= @buffer.lines[@cursor.row].size &&          if @cursor.column >= @buffer.lines[@cursor.row].size &&
135              @cursor.row == (@buffer.lines.size - 1)              @cursor.row == (@buffer.lines.size - 1)
136            refresh_cursor            refresh_cursor
137            @view.mini_window.show_alert("End of buffer")            @view.show_alert("End of buffer")
           @view.beep  
138            return            return
139          elsif @cursor.column >= @buffer.lines[@cursor.row].size          elsif @cursor.column >= @buffer.lines[@cursor.row].size
140            #Go to the begin of the next line            #Go to the begin of the next line
# Line 153  module Edmaru Line 156  module Edmaru
156      #=== Warning      #=== Warning
157      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
158      def cursor_backward(n = 1)      def cursor_backward(n = 1)
159          @view.hide_alert
160    
161        n.times{        n.times{
162          if @cursor.column == 0 && @cursor.row == 0          if @cursor.column == 0 && @cursor.row == 0
163            refresh_cursor            refresh_cursor
164            @view.mini_window.show_alert("Beginning of buffer")            @view.show_alert("Beginning of buffer")
           @view.beep  
165            return            return
166          elsif @cursor.column == 0          elsif @cursor.column == 0
167            @cursor.row -= 1            @cursor.row -= 1
# Line 175  module Edmaru Line 179  module Edmaru
179      #=== Warning      #=== Warning
180      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
181      def cursor_goto_line_head      def cursor_goto_line_head
182          @view.hide_alert
183    
184        @cursor.column = 0        @cursor.column = 0
185        refresh_cursor        refresh_cursor
186      end      end
# Line 184  module Edmaru Line 190  module Edmaru
190      #=== Warning      #=== Warning
191      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
192      def cursor_goto_line_tail      def cursor_goto_line_tail
193          @view.hide_alert
194    
195        @cursor.column = buffer.lines[@cursor.row].size        @cursor.column = buffer.lines[@cursor.row].size
196        refresh_cursor        refresh_cursor
197      end      end
# Line 193  module Edmaru Line 201  module Edmaru
201      #=== Warning      #=== Warning
202      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
203      def cursor_goto_next_line      def cursor_goto_next_line
204          @view.hide_alert
205    
206        if @cursor.row == (@buffer.lines.size - 1)        if @cursor.row == (@buffer.lines.size - 1)
207          @view.mini_window.show_alert("The last line")                  @view.show_alert("The last line")        
         @view.beep  
208        else        else
209          @cursor.row += 1          @cursor.row += 1
210          if @buffer.lines[@cursor.row].size < @cursor.column          if @buffer.lines[@cursor.row].size < @cursor.column
# Line 211  module Edmaru Line 220  module Edmaru
220      #=== Warning      #=== Warning
221      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
222      def cursor_goto_previous_line      def cursor_goto_previous_line
223          @view.hide_alert
224    
225        if @cursor.row == 0        if @cursor.row == 0
226          @view.mini_window.show_alert("The first line")          @view.show_alert("The first line")
         @view.beep  
227        else        else
228          @cursor.row -= 1          @cursor.row -= 1
229          if @buffer.lines[@cursor.row].size < @cursor.column          if @buffer.lines[@cursor.row].size < @cursor.column
# Line 230  module Edmaru Line 240  module Edmaru
240      #=== Warning      #=== Warning
241      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
242      def backspace      def backspace
243          @view.hide_alert
244    
245        pre_cursor = @cursor.clone        pre_cursor = @cursor.clone
246    
247        begin        begin
248          if @cursor.column == 0 && @cursor.row == 0          if @cursor.column == 0 && @cursor.row == 0
249            #ToDo: Alert that the cursor is at the begin of the current buffer.            #ToDo: Alert that the cursor is at the begin of the current buffer.
250            @view.mini_window.show_alert("Beginning of buffer")            @view.show_alert("Beginning of buffer")
           @view.beep  
251          elsif @cursor.column == 0 # && @cursor.row != 0          elsif @cursor.column == 0 # && @cursor.row != 0
252            #Concatenate the current lien into the previous line.            #Concatenate the current lien into the previous line.
253            @buffer.delete_at(@cursor.row -= 1,            @buffer.delete_at(@cursor.row -= 1,
# Line 248  module Edmaru Line 259  module Edmaru
259          end          end
260        rescue ReadOnlyException => e        rescue ReadOnlyException => e
261          @cursor = pre_cursor          @cursor = pre_cursor
262          @view.mini_window.show_alert(e.to_s)          @view.show_alert(e.to_s)
         @view.beep  
263        end        end
264      end      end
265    
# Line 258  module Edmaru Line 268  module Edmaru
268      #=== Warning      #=== Warning
269      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
270      def delete_at_cursor      def delete_at_cursor
271          @view.hide_alert
272    
273        begin        begin
274          @buffer.delete_at(@cursor.row, @cursor.column)          @buffer.delete_at(@cursor.row, @cursor.column)
275        rescue EndOfBufferException => e        rescue EndOfBufferException => e
276          @view.mini_window.show_alert(e.to_s)          @view.show_alert(e.to_s)
         @view.beep  
277        rescue ReadOnlyException => e        rescue ReadOnlyException => e
278          @view.mini_window.show_alert(e.to_s)          @view.show_alert(e.to_s)
         @view.beep  
279        end        end
280      end      end
281    
# Line 275  module Edmaru Line 285  module Edmaru
285      #=== Warning      #=== Warning
286      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
287      def kill_line      def kill_line
288          @view.hide_alert
289    
290        begin        begin
291          @view.push_to_kill_ring(@buffer.delete_line(@cursor.row, @cursor.column))          @view.push_to_kill_ring(@buffer.delete_line(@cursor.row, @cursor.column))
292        rescue EdmaruException => e        rescue EdmaruException => e
293          @view.mini_window.show_alert(e.to_s)          @view.show_alert(e.to_s)
         @view.beep  
294        end        end
295      end      end
296    
# Line 288  module Edmaru Line 299  module Edmaru
299      #=== Warning      #=== Warning
300      #This method *MUST* *NOT* be overrided in derived classes.      #This method *MUST* *NOT* be overrided in derived classes.
301      def yank      def yank
302          @view.hide_alert
303        insert_at_cursor(@view.yank_from_kill_ring)        insert_at_cursor(@view.yank_from_kill_ring)
304      end      end
305    
# Line 312  module Edmaru Line 324  module Edmaru
324      def refresh      def refresh
325      end      end
326    
327        #Focus on this window.
328        #
329        #=== Warning
330        #This method *SHOULD* *NOT* be overrided in derived classes.
331        def focus_in
332          @focused = true
333    
334          refresh_cursor
335        end
336    
337        #Focus out from this window.
338        #
339        #=== Warning
340        #This method *SHOULD* *NOT* be overrided in derived classes.
341        def focus_out
342          @focused = false
343    
344          refresh_cursor
345        end
346    
347      #Terminate this view instance.      #Terminate this view instance.
348      #      #
349      #=== Warning      #=== Warning

Legend:
Removed from v.38  
changed lines
  Added in v.40

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26