Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /view.rb

Parent Directory Parent Directory | Revision Log Revision Log


Revision 40 - (hide annotations) (download)
Thu Apr 19 17:54:27 2007 UTC (16 years, 11 months ago) by bluedwarf
File size: 5428 byte(s)
Improvement on Gtk mode.

1 bluedwarf 12 # view.rb: the module definition of Edmaru::View.
2 bluedwarf 10 #
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 bluedwarf 1
20 bluedwarf 4 require "event_manager.rb"
21     require "window.rb"
22    
23 bluedwarf 1 module Edmaru
24    
25     #Abstract class to implement system specific view.
26     module View
27    
28 bluedwarf 6 #Construct a view instance.
29 bluedwarf 1 #
30     #=== Warning
31     #This method *MUST* *NOT* be overrided in derived classes.
32     #
33 bluedwarf 2 #=== Argument
34 bluedwarf 20 #_config_ :: An instance of Edmaru::ConfigurationManager.
35     #_event_manager_ :: An instance of Edmaru::EventManager to handle all events raised from this view.
36     #_buffer_manager_ :: An instance of Edmaru::BufferManager.
37 bluedwarf 2 #
38 bluedwarf 1 #=== Return
39     #An initialized instance of View.
40 bluedwarf 20 def initialize(config, event_manager, buffer_manager)
41     @config = config
42 bluedwarf 2 @event_manager = event_manager
43 bluedwarf 9 @buffer_manager = buffer_manager
44 bluedwarf 32 @kill_ring = ""
45 bluedwarf 40 @alerting = false
46 bluedwarf 6
47     init_ui
48    
49 bluedwarf 4 @windows = Array.new
50 bluedwarf 20 @windows.push(Edmaru::SYSTEM_WINDOW.new(self, @config))
51 bluedwarf 18 @focused_window = @windows[0]
52 bluedwarf 40
53 bluedwarf 20 @mini_window = Edmaru::SYSTEM_MINI_WINDOW.new(self, @config)
54 bluedwarf 15
55     init_windows
56 bluedwarf 40 @focused_window.focus_in
57 bluedwarf 15
58 bluedwarf 38 element = ModeLineElement.new("buffer-name", -1, 1, 1, "")
59 bluedwarf 18 @windows[0].modeline.add_element(element)
60     @windows[0].modeline.show_element("buffer-name")
61 bluedwarf 31
62 bluedwarf 38 element = ModeLineElement.new("cursor-position", -1, 1, 1, "(*,*)")
63 bluedwarf 31 @windows[0].modeline.add_element(element)
64 bluedwarf 39 @windows[0].modeline.set_element_text("cursor-position",
65     "(0,0)")
66 bluedwarf 31 @windows[0].modeline.show_element("cursor-position")
67 bluedwarf 1 end
68    
69     #The system specific initialization for this view.
70     #
71     #=== Warning
72 bluedwarf 5 #This method *SHOULD* be overrided in derived classes.
73 bluedwarf 3 def init_ui
74 bluedwarf 1 end
75    
76 bluedwarf 15 #The system specific initialization for windows that belongs to this view.
77     #
78     #=== Warning
79     #This method *SHOULD* be overrided in derived classes.
80     def init_windows
81     end
82    
83 bluedwarf 7 #The event manager linked to this view.
84     #
85     #=== Warning
86     #This method *MUST* *NOT* be overrided in derived classes.
87     def event_manager
88     @event_manager
89     end
90    
91 bluedwarf 18 #The mini window displayed in the bottom of the screen.
92 bluedwarf 6 #
93     #=== Warning
94 bluedwarf 18 #This method *MUST* *NOT* be overrided in derived classes.
95     def mini_window
96     @mini_window
97 bluedwarf 6 end
98    
99 bluedwarf 31 #The main wnidow
100     #
101     #=== Warning
102     #This method *MUST* *NOT* be overrided in derived classes.
103     def main_window
104     @windows[0]
105     end
106    
107 bluedwarf 18 #The focused window.
108 bluedwarf 6 #
109     #=== Warning
110 bluedwarf 4 #This method *MUST* *NOT* be overrided in derived classes.
111 bluedwarf 18 def focused_window
112     @focused_window
113 bluedwarf 4 end
114    
115 bluedwarf 18
116     #Cause the specfieid window have focus.
117 bluedwarf 4 #
118     #=== Warning
119     #This method *MUST* *NOT* be overrided in derived classes.
120 bluedwarf 18 def focused_window=(window)
121 bluedwarf 27 prev_focused_window = @focused_window
122 bluedwarf 18 @focused_window = window
123 bluedwarf 27
124 bluedwarf 40 prev_focused_window.focus_out
125     @focused_window.focus_in
126 bluedwarf 4 end
127    
128 bluedwarf 26 #Push the specified string to the kill ring.
129     #
130     #ToDo: This implementation is incomplete. Kill ring doesn't store multiple
131     # strings.
132     def push_to_kill_ring(str)
133     @kill_ring = str
134     end
135    
136     #Get a string from kill ring.
137     #
138     #ToDo: This implementation is incomplete. Kill ring doesn't store multiple
139     # strings.
140     def yank_from_kill_ring
141     @kill_ring
142     end
143    
144 bluedwarf 1 #Main loop to catch all events.
145     #
146     #=== Warning
147     #This method *SHOULD* be overrided in derived classes.
148     def main_loop
149     end
150    
151 bluedwarf 3 #Exit the running main loop.
152     #
153     #=== Warning
154     #This method *SHOULD* be overrided in derived classes.
155     #
156     #=== Note
157     #Some UI systems (such as Ncurses) don't exit the main loop as
158     #soon as this method is called.
159     def exit_main_loop
160     end
161    
162 bluedwarf 1 #Beep once.
163     #
164     #=== Warning
165     #This method *SHOULD* be overrided in derived classes.
166     def beep
167     false
168     end
169    
170     #Terminate this view instance.
171     #
172     #=== Warning
173 bluedwarf 7 #This method *MUST* *NOT* be overrided in derived classes.
174 bluedwarf 1 def terminate
175 bluedwarf 7 @windows.each{ |window|
176     window.terminate
177     }
178     @mini_window.terminate
179    
180     terminate_ui
181 bluedwarf 1 end
182 bluedwarf 7
183 bluedwarf 40 #Show alert for this view.
184     #
185     #=== Warning
186     #This method *MUST* *NOT* be overrided in derived classes.
187     def show_alert(message)
188     @alerting = true
189    
190     @mini_window.show_alert(message)
191     beep
192     end
193    
194     #Hide displayed alert.
195     #
196     #=== Warning
197     #This method *MUST* *NOT* be overrided in derived classes.
198     def hide_alert
199     return if !@alerting
200     @alerting = false
201    
202     @mini_window.hide_alert
203     end
204    
205 bluedwarf 7 #Free system specifiec resources.
206     #
207     #=== Warning
208     #This method *SHOULD* be overrided in derived classes.
209     def terminate_ui
210     end
211 bluedwarf 1 end
212     end

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