Develop and Download Open Source Software

Browse Subversion Repository

Contents of /action_manager.rb

Parent Directory Parent Directory | Revision Log Revision Log


Revision 52 - (show annotations) (download)
Sun Apr 22 19:56:11 2007 UTC (16 years, 11 months ago) by bluedwarf
File size: 6187 byte(s)
New function to save buffer.

1 # action_manager.rb: the class definition of Edmaru::ActionManager
2 #
3 # Copyright (C) 2007 Takashi Nakamoto
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License version 2 as
7 # published by the Free Software Foundation.
8 #
9 # This program is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17 # 02110-1301 USA.
18 #
19
20 require "action.rb"
21 require "buffer.rb"
22 require "mini_buffer.rb"
23
24 module Edmaru
25
26 #The controller to manage actions.
27 class ActionManager
28
29 #Create an action manager.
30 #
31 #=== Return
32 #An initilized manager.
33 def initialize
34 @view = nil
35 @buffer_manager = nil
36 @event_manager = nil
37 end
38
39 #Set a view of Edmaru.
40 #
41 #=== Argument
42 #_new_view_ :: The new view to be linked with this action manager.
43 def view=(new_view)
44 @view = new_view
45 end
46
47 #Set a buffer manager of Edmaru.
48 #
49 #=== Argument
50 #_new_buffer_manager_ :: The new buffer manager to be linked with
51 #this action manager.
52 def buffer_manager=(new_buffer_manager)
53 @buffer_manager = new_buffer_manager
54 end
55
56 #Set an event manager of Edmaru.
57 #
58 #=== Argument
59 #_new_event_manager_ :: The new event manager to be linked with
60 #this action manager.
61 def event_manager=(new_event_manager)
62 @event_manager = new_event_manager
63 end
64
65 #Do something according to the specified _action_.
66 #
67 #=== Argument
68 #_action_ :: An instance of Edmaru::Action.
69 def action(action)
70 case action.name
71 when "beep"
72 @view.beep
73 when "quit"
74 @view.exit_main_loop
75 when "insert"
76 @view.focused_window.insert_at_cursor(action.arguments[0])
77 when "delete"
78 @view.focused_window.delete_at_cursor
79 when "backspace"
80 @view.focused_window.backspace
81 when "kill-line"
82 @view.focused_window.kill_line
83 when "yank"
84 @view.focused_window.yank
85 when "cursor-backward"
86 @view.focused_window.cursor_backward
87 when "cursor-forward"
88 @view.focused_window.cursor_forward
89 when "cursor-goto-line-head"
90 @view.focused_window.cursor_goto_line_head
91 when "cursor-goto-line-tail"
92 @view.focused_window.cursor_goto_line_tail
93 when "cursor-goto-next-line"
94 @view.focused_window.cursor_goto_next_line
95 when "cursor-goto-previous-line"
96 @view.focused_window.cursor_goto_previous_line
97 when "cursor-goto-beginning"
98 @view.focused_window.cursor_goto_beginning
99 when "cursor-goto-end"
100 @view.focused_window.cursor_goto_end
101 when "scroll-down"
102 @view.focused_window.scroll_down
103 when "scroll-up"
104 @view.focused_window.scroll_up
105 @event_manager.set_current_handler(FundamentalEventHandler.new(self))
106 when "meta-command"
107 @event_manager.set_current_handler(MetaCommandHandler.new(self))
108
109 mini_buffer = @buffer_manager.get("*mini buffer*", MiniBuffer)
110 mini_buffer.clear
111 mini_buffer.append("M-")
112 @view.mini_window.buffer = mini_buffer
113 when "meta-command-quit"
114 @event_manager.set_current_handler(FundamentalEventHandler.new(self))
115
116 mini_buffer = @buffer_manager.get("*mini buffer*", MiniBuffer)
117 mini_buffer.clear
118 when "extra-command"
119 @event_manager.set_current_handler(ExtraCommandHandler.new(self))
120
121 mini_buffer = @buffer_manager.get("*mini buffer*", MiniBuffer)
122 mini_buffer.clear
123 mini_buffer.insert(0, 0, "C-x-")
124 @view.mini_window.buffer = mini_buffer
125 when "extra-command-quit"
126 @event_manager.set_current_handler(FundamentalEventHandler.new(self))
127
128 mini_buffer = @buffer_manager.get("*mini buffer*", MiniBuffer)
129 mini_buffer.clear
130
131 @view.show_alert("Quit")
132 when "extra-command-unknown"
133 @event_manager.set_current_handler(FundamentalEventHandler.new(self))
134 @view.show_alert("Unknown command: #{action.arguments[0]}")
135 when "find-file"
136 buffer = @buffer_manager.get("*find file*", MiniBuffer)
137 buffer.prefix = "Find file: "
138
139 buffer.clear
140 buffer.append("#{Dir.pwd}")
141 @view.mini_window.buffer = buffer
142 @view.mini_window.cursor_goto_line_tail
143
144 @event_manager.set_current_handler(FindFileHandler.new(self))
145 @view.focused_window = @view.mini_window
146 when "find-file-open"
147 @event_manager.set_current_handler(FundamentalEventHandler.new(self))
148
149 #ToDo: implement completely
150 filename = @view.mini_window.buffer.text_without_prefix
151
152 mini_buffer = @buffer_manager.get("*mini buffer*", MiniBuffer)
153 mini_buffer.clear
154 @view.mini_window.buffer = mini_buffer
155
156 new_buffer = @buffer_manager.open_file(filename)
157 if new_buffer != nil
158 @view.main_window.buffer = new_buffer
159 else
160 @view.show_alert("Cannot open #{filename}")
161 end
162
163 @view.focused_window = @view.main_window
164 when "mini-buffer-quit"
165 @event_manager.set_current_handler(FundamentalEventHandler.new(self))
166
167 mini_buffer = @buffer_manager.get("*mini buffer*", MiniBuffer)
168 mini_buffer.clear
169 @view.mini_window.buffer = mini_buffer
170
171 @view.show_alert("Quit")
172
173 @view.focused_window = @view.main_window
174 when "save-buffer"
175 @event_manager.set_current_handler(FundamentalEventHandler.new(self))
176
177 begin
178 @view.main_window.buffer.save
179 @view.show_alert("Wrote #{@view.main_window.buffer.filename}", false)
180 rescue
181 @view.show_alert("Failed to wrote #{@view.main_window.buffer.filename}")
182 end
183 else
184 raise "Unknow action: #{action.name}"
185 end
186 end
187 end
188 end
189

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