/[eiffelstudio]/branches/Eiffel_57_docking/Src/Eiffel/interface/new_graphical/windows/eb_development_window.e
ViewVC logotype

Diff of /branches/Eiffel_57_docking/Src/Eiffel/interface/new_graphical/windows/eb_development_window.e

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

revision 28280 by xavier, Fri Oct 19 02:34:01 2001 UTC revision 28303 by xavier, Sat Oct 20 04:52:29 2001 UTC
# Line 82  inherit Line 82  inherit
82          TEXT_OBSERVER          TEXT_OBSERVER
83                  redefine                  redefine
84                          on_text_reset, on_text_edited,                          on_text_reset, on_text_edited,
                         on_selection_begun, on_selection_finished,  
85                          on_text_back_to_its_last_saved_state,                          on_text_back_to_its_last_saved_state,
86                          on_text_fully_loaded,                          on_text_fully_loaded
                         on_text_loaded  
                 end  
   
                 -- To warn editor commands to refresh their state when the current editor changes.  
         TEXT_OBSERVER_MANAGER  
                 rename  
                         changed as text_changed,  
                         remove_observer as text_remove_observer,  
                         make as text_make  
                 undefine  
                         on_block_removed,  
                         on_text_block_loaded,  
                         on_line_inserted, on_line_modified, on_line_removed  
                 redefine  
                         on_selection_begun, on_selection_finished,  
                         on_text_back_to_its_last_saved_state,  
                         on_text_edited, on_text_fully_loaded, on_text_loaded, on_text_reset,  
                         recycle  
87                  end                  end
88    
89          EB_FORMATTER_DATA          EB_FORMATTER_DATA
# Line 144  feature {NONE} -- Initialization Line 125  feature {NONE} -- Initialization
125          make is          make is
126                          -- Create a new development window.                          -- Create a new development window.
127                  do                  do
                         text_make  
128                          unified_stone := context_unified_stone                          unified_stone := context_unified_stone
129                                  -- Build the history manager, the address manager, ...                                  -- Build the history manager, the address manager, ...
130                          create history_manager.make (Current)                          create history_manager.make (Current)
# Line 159  feature {NONE} -- Initialization Line 139  feature {NONE} -- Initialization
139                          Precursor                          Precursor
140    
141                          initialized := False -- Reset the flag since initialization is not yet complete.                          initialized := False -- Reset the flag since initialization is not yet complete.
142                            set_up_accelerators
143    
144                                  -- Update widgets visibilities                                  -- Update widgets visibilities
145                          update                          update
# Line 167  feature {NONE} -- Initialization Line 148  feature {NONE} -- Initialization
148                          end_build_formatters                          end_build_formatters
149                                                    
150                          address_manager.disable_formatters                          address_manager.disable_formatters
151                            if Eiffel_project.manager.is_project_loaded then
152                                    on_project_loaded
153                            else
154                                    on_project_unloaded
155                            end
156    
157                          initialized := True                          initialized := True
158                          is_destroying := False                          is_destroying := False
# Line 237  feature {NONE} -- Initialization Line 223  feature {NONE} -- Initialization
223                          if has_profiler then                          if has_profiler then
224                                  create show_profiler                                  create show_profiler
225                          end                          end
                         if Eiffel_project.manager.is_project_loaded then  
                                 if has_dll_generation then  
                                         show_dynamic_lib_tool.enable_sensitive  
                                 end  
                                 if has_profiler then  
                                         show_profiler.enable_sensitive  
                                 end  
                         else  
                                 if has_dll_generation then  
                                         show_dynamic_lib_tool.disable_sensitive  
                                 end  
                                 if has_profiler then  
                                         show_profiler.disable_sensitive  
                                 end  
                         end  
226    
227                                  -- Undo/redo, cut, copy, paste.                                  -- Undo/redo, cut, copy, paste.
228                          create undo_cmd.make (Current)                          create undo_cmd.make (Current)
# Line 260  feature {NONE} -- Initialization Line 231  feature {NONE} -- Initialization
231                          create redo_cmd.make (Current)                          create redo_cmd.make (Current)
232                          toolbarable_commands.extend (redo_cmd)                          toolbarable_commands.extend (redo_cmd)
233    
                         create editor_cut_cmd.make (Current)  
                         toolbarable_commands.extend (editor_cut_cmd)  
   
                         create editor_copy_cmd.make (Current)  
                         toolbarable_commands.extend (editor_copy_cmd)  
   
234                          create editor_paste_cmd.make (Current)                          create editor_paste_cmd.make (Current)
235                          toolbarable_commands.extend (editor_paste_cmd)                          toolbarable_commands.extend (editor_paste_cmd)
236    
# Line 309  feature {NONE} -- Initialization Line 274  feature {NONE} -- Initialization
274                          create show_tool_commands.make (7)                          create show_tool_commands.make (7)
275                          create show_toolbar_commands.make (3)                          create show_toolbar_commands.make (3)
276    
277                            window.focus_in_actions.extend(~on_focus)
278    
279                            new_feature_cmd.disable_sensitive
280    
281                            create editors.make (5)
282                    end
283    
284            set_up_accelerators is
285                            -- Fill the accelerator of `window' with the accelerators of the `toolbarable_commands'.
286                    do
287                          from                          from
288                                  toolbarable_commands.start                                  toolbarable_commands.start
289                          until                          until
# Line 332  feature {NONE} -- Initialization Line 307  feature {NONE} -- Initialization
307                                  end                                  end
308                                  debugger_manager.toolbarable_commands.forth                                  debugger_manager.toolbarable_commands.forth
309                          end                          end
   
                                 -- This command conflicts with the project toolbar one for accelerators.  
                         toolbarable_commands.extend (Run_project_cmd)  
   
                         window.focus_in_actions.extend(~on_focus)  
   
                         new_feature_cmd.disable_sensitive  
   
                                 -- Disable commands if no project is loaded  
                         if not Eiffel_project.manager.is_project_loaded then  
                                 disable_commands_on_project_unloaded  
                         elseif not Eiffel_project.manager.initialized then  
                         else  
                                 enable_commands_on_project_loaded  
                         end  
   
                         create editors.make (5)  
310                  end                  end
311    
312          build_formatters is          build_formatters is
# Line 1139  feature -- Menu Building Line 1097  feature -- Menu Building
1097                          editor: EB_SMART_EDITOR                          editor: EB_SMART_EDITOR
1098                  do                  do
1099                          editor := editor_tool.text_area                          editor := editor_tool.text_area
1100                          create editor_commands.make (10)                          create command_controller.make
                         create selection_commands.make (10)  
1101    
1102                          create edit_menu.make_with_text (Interface_names.m_Edit)                          create edit_menu.make_with_text (Interface_names.m_Edit)
1103    
# Line 1158  feature -- Menu Building Line 1115  feature -- Menu Building
1115                          edit_menu.extend (create {EV_MENU_SEPARATOR})                          edit_menu.extend (create {EV_MENU_SEPARATOR})
1116    
1117                                  -- Cut                                  -- Cut
1118                          command_menu_item := editor_cut_cmd.new_menu_item                          create os_cmd.make (Current)
1119                            os_cmd.set_menu_name (Interface_names.M_cut)
1120                            os_cmd.set_pixmaps (pixmaps.icon_cut)
1121                            os_cmd.set_name ("Editor_cut")
1122                            os_cmd.set_tooltip (interface_names.f_cut)
1123                            os_cmd.add_agent (~cut_selection)
1124                            toolbarable_commands.extend (os_cmd)
1125                            os_cmd.set_needs_editable (True)
1126                            command_controller.add_selection_command (os_cmd)
1127                            command_menu_item := os_cmd.new_menu_item
1128                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1129                          edit_menu.extend (command_menu_item)                          edit_menu.extend (command_menu_item)
1130    
1131                                  -- Copy                                  -- Copy
1132                          command_menu_item := editor_copy_cmd.new_menu_item                          create os_cmd.make (Current)
1133                            os_cmd.set_menu_name (Interface_names.M_copy)
1134                            os_cmd.set_pixmaps (pixmaps.icon_copy)
1135                            os_cmd.set_name ("Editor_copy")
1136                            os_cmd.set_tooltip (interface_names.f_copy)
1137                            os_cmd.add_agent (~copy_selection)
1138                            toolbarable_commands.extend (os_cmd)
1139                            os_cmd.set_needs_editable (False)
1140                            command_controller.add_selection_command (os_cmd)
1141                            command_menu_item := os_cmd.new_menu_item
1142                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1143                          edit_menu.extend (command_menu_item)                          edit_menu.extend (command_menu_item)
1144    
# Line 1180  feature -- Menu Building Line 1155  feature -- Menu Building
1155                          cmd.set_menu_name (Interface_names.m_select_all)                          cmd.set_menu_name (Interface_names.m_select_all)
1156                          cmd.add_agent (~select_all)                          cmd.add_agent (~select_all)
1157                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1158                          add_edition_observer (cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1159                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1160                          edit_menu.extend (command_menu_item)                          edit_menu.extend (command_menu_item)
1161    
# Line 1193  feature -- Menu Building Line 1167  feature -- Menu Building
1167                          cmd.set_menu_name (Interface_names.m_Search + "%T" + Editor_preferences.shorcut_name_for_action (3))                          cmd.set_menu_name (Interface_names.m_Search + "%T" + Editor_preferences.shorcut_name_for_action (3))
1168                          cmd.add_agent (editor~search)                          cmd.add_agent (editor~search)
1169                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1170                          add_edition_observer (cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1171                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1172                          edit_menu.extend (command_menu_item)                          edit_menu.extend (command_menu_item)
1173    
# Line 1204  feature -- Menu Building Line 1177  feature -- Menu Building
1177                          cmd.add_agent (editor~replace)                          cmd.add_agent (editor~replace)
1178                          cmd.set_needs_editable (True)                          cmd.set_needs_editable (True)
1179                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1180                          add_edition_observer (cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1181                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1182                          edit_menu.extend (command_menu_item)                          edit_menu.extend (command_menu_item)
1183    
# Line 1218  feature -- Menu Building Line 1190  feature -- Menu Building
1190                          cmd.set_menu_name (Interface_names.m_Find_next + "%T" + Editor_preferences.shorcut_name_for_action (6))                          cmd.set_menu_name (Interface_names.m_Find_next + "%T" + Editor_preferences.shorcut_name_for_action (6))
1191                          cmd.add_agent (~find_next)                          cmd.add_agent (~find_next)
1192                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1193                          add_edition_observer (cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1194                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1195                          sub_menu.extend (command_menu_item)                          sub_menu.extend (command_menu_item)
1196    
# Line 1228  feature -- Menu Building Line 1199  feature -- Menu Building
1199                          cmd.set_menu_name (Interface_names.m_Find_previous + "%T" + Editor_preferences.shorcut_name_for_action (7))                          cmd.set_menu_name (Interface_names.m_Find_previous + "%T" + Editor_preferences.shorcut_name_for_action (7))
1200                          cmd.add_agent (~find_previous)                          cmd.add_agent (~find_previous)
1201                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1202                          add_edition_observer(cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1203                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1204                          sub_menu.extend (command_menu_item)                          sub_menu.extend (command_menu_item)
1205    
# Line 1238  feature -- Menu Building Line 1208  feature -- Menu Building
1208                          os_cmd.set_menu_name (Interface_names.m_Find_selection + "%T" + Editor_preferences.shorcut_name_for_action (5))                          os_cmd.set_menu_name (Interface_names.m_Find_selection + "%T" + Editor_preferences.shorcut_name_for_action (5))
1209                          os_cmd.add_agent (~find_selection)                          os_cmd.add_agent (~find_selection)
1210                          command_menu_item := os_cmd.new_menu_item                          command_menu_item := os_cmd.new_menu_item
1211                          add_selection_observer(os_cmd)                          command_controller.add_selection_command (os_cmd)
                         selection_commands.extend (os_cmd)  
1212                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1213                          sub_menu.extend (command_menu_item)                          sub_menu.extend (command_menu_item)
1214    
# Line 1253  feature -- Menu Building Line 1222  feature -- Menu Building
1222    
1223                          create os_cmd.make (Current)                          create os_cmd.make (Current)
1224                          os_cmd.set_needs_editable (True)                          os_cmd.set_needs_editable (True)
1225                          add_selection_observer (os_cmd)                          command_controller.add_selection_command (os_cmd)
                         selection_commands.extend (os_cmd)  
1226                          os_cmd.set_menu_name (Interface_names.m_Indent)                          os_cmd.set_menu_name (Interface_names.m_Indent)
1227                          os_cmd.add_agent (editor~indent_selection)                          os_cmd.add_agent (editor~indent_selection)
1228                          command_menu_item := os_cmd.new_menu_item                          command_menu_item := os_cmd.new_menu_item
# Line 1263  feature -- Menu Building Line 1231  feature -- Menu Building
1231    
1232                          create os_cmd.make (Current)                          create os_cmd.make (Current)
1233                          os_cmd.set_needs_editable (True)                          os_cmd.set_needs_editable (True)
1234                          add_selection_observer (os_cmd)                          command_controller.add_selection_command (os_cmd)
                         selection_commands.extend (os_cmd)  
1235                          os_cmd.set_menu_name (Interface_names.m_Unindent)                          os_cmd.set_menu_name (Interface_names.m_Unindent)
1236                          os_cmd.add_agent (editor~unindent_selection)                          os_cmd.add_agent (editor~unindent_selection)
1237                          command_menu_item := os_cmd.new_menu_item                          command_menu_item := os_cmd.new_menu_item
# Line 1273  feature -- Menu Building Line 1240  feature -- Menu Building
1240    
1241                          create os_cmd.make (Current)                          create os_cmd.make (Current)
1242                          os_cmd.set_needs_editable (True)                          os_cmd.set_needs_editable (True)
1243                          add_selection_observer(os_cmd)                          command_controller.add_selection_command (os_cmd)
                         selection_commands.extend (os_cmd)  
1244                          os_cmd.set_menu_name (Interface_names.m_To_lower)                          os_cmd.set_menu_name (Interface_names.m_To_lower)
1245                          os_cmd.add_agent (editor~set_selection_case (True))                          os_cmd.add_agent (editor~set_selection_case (True))
1246                          command_menu_item := os_cmd.new_menu_item                          command_menu_item := os_cmd.new_menu_item
# Line 1283  feature -- Menu Building Line 1249  feature -- Menu Building
1249    
1250                          create os_cmd.make (Current)                          create os_cmd.make (Current)
1251                          os_cmd.set_needs_editable (True)                          os_cmd.set_needs_editable (True)
1252                          add_selection_observer(os_cmd)                          command_controller.add_selection_command (os_cmd)
                         selection_commands.extend (os_cmd)  
1253                          os_cmd.set_menu_name (Interface_names.m_To_upper)                          os_cmd.set_menu_name (Interface_names.m_To_upper)
1254                          os_cmd.add_agent (editor~set_selection_case (False))                          os_cmd.add_agent (editor~set_selection_case (False))
1255                          command_menu_item := os_cmd.new_menu_item                          command_menu_item := os_cmd.new_menu_item
# Line 1296  feature -- Menu Building Line 1261  feature -- Menu Building
1261                          cmd.set_menu_name (Interface_names.m_Comment)                          cmd.set_menu_name (Interface_names.m_Comment)
1262                          cmd.add_agent (editor~comment_selection)                          cmd.add_agent (editor~comment_selection)
1263                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1264                          add_edition_observer(cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1265                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1266                          sub_menu.extend (command_menu_item)                          sub_menu.extend (command_menu_item)
1267    
# Line 1306  feature -- Menu Building Line 1270  feature -- Menu Building
1270                          cmd.set_menu_name (Interface_names.m_Uncomment)                          cmd.set_menu_name (Interface_names.m_Uncomment)
1271                          cmd.add_agent (editor~uncomment_selection)                          cmd.add_agent (editor~uncomment_selection)
1272                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1273                          add_edition_observer(cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1274                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1275                          sub_menu.extend (command_menu_item)                          sub_menu.extend (command_menu_item)
1276    
# Line 1320  feature -- Menu Building Line 1283  feature -- Menu Building
1283                          cmd.set_menu_name (Interface_names.m_If_block)                          cmd.set_menu_name (Interface_names.m_If_block)
1284                          cmd.add_agent (editor~embed_in_block("if  then", 3))                          cmd.add_agent (editor~embed_in_block("if  then", 3))
1285                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1286                          add_edition_observer(cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1287                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1288                          sub_menu.extend (command_menu_item)                          sub_menu.extend (command_menu_item)
1289    
# Line 1331  feature -- Menu Building Line 1293  feature -- Menu Building
1293                          cmd.set_menu_name (Interface_names.m_debug_block)                          cmd.set_menu_name (Interface_names.m_debug_block)
1294                          cmd.add_agent (editor~embed_in_block("debug", 5))                          cmd.add_agent (editor~embed_in_block("debug", 5))
1295                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1296                          add_edition_observer(cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1297                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
1298                          sub_menu.extend (command_menu_item)                          sub_menu.extend (command_menu_item)
1299    
# Line 1345  feature -- Menu Building Line 1306  feature -- Menu Building
1306                          cmd.set_needs_editable (True)                          cmd.set_needs_editable (True)
1307                          cmd.set_menu_name (Interface_names.m_Complete_word + "%T" + Editor_preferences.shorcut_name_for_action (1))                          cmd.set_menu_name (Interface_names.m_Complete_word + "%T" + Editor_preferences.shorcut_name_for_action (1))
1308                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1309                          add_edition_observer(cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1310                          cmd.add_agent (editor~complete_feature_name)                          cmd.add_agent (editor~complete_feature_name)
1311    
1312                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
# Line 1357  feature -- Menu Building Line 1317  feature -- Menu Building
1317                          cmd.set_needs_editable (True)                          cmd.set_needs_editable (True)
1318                          cmd.set_menu_name (Interface_names.m_Complete_class_name + "%T" + Editor_preferences.shorcut_name_for_action (2))                          cmd.set_menu_name (Interface_names.m_Complete_class_name + "%T" + Editor_preferences.shorcut_name_for_action (2))
1319                          command_menu_item := cmd.new_menu_item                          command_menu_item := cmd.new_menu_item
1320                          add_edition_observer(cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1321                          cmd.add_agent (editor~complete_class_name)                          cmd.add_agent (editor~complete_class_name)
1322    
1323                          add_recyclable (command_menu_item)                          add_recyclable (command_menu_item)
# Line 1374  feature -- Menu Building Line 1333  feature -- Menu Building
1333                                  cmd.set_menu_name (Interface_names.m_Show_formatting_marks)                                  cmd.set_menu_name (Interface_names.m_Show_formatting_marks)
1334                          end                          end
1335                          formatting_marks_command_menu_item := cmd.new_menu_item                          formatting_marks_command_menu_item := cmd.new_menu_item
1336                          add_edition_observer(cmd)                          command_controller.add_edition_command (cmd)
                         editor_commands.extend (cmd)  
1337                          cmd.add_agent (~toggle_formatting_marks)                          cmd.add_agent (~toggle_formatting_marks)
1338    
1339                          add_recyclable (formatting_marks_command_menu_item)                          add_recyclable (formatting_marks_command_menu_item)
# Line 1871  feature -- Resource Update Line 1829  feature -- Resource Update
1829                          enable_commands_on_project_created                          enable_commands_on_project_created
1830                          address_manager.on_project_created                          address_manager.on_project_created
1831                          context_tool.on_project_created                          context_tool.on_project_created
1832                            if has_dll_generation then
1833                                    show_dynamic_lib_tool.enable_sensitive
1834                            end
1835                            if has_profiler then
1836                                    show_profiler.enable_sensitive
1837                            end
1838                  end                  end
1839    
1840          on_project_loaded is          on_project_loaded is
# Line 1891  feature -- Resource Update Line 1855  feature -- Resource Update
1855                          context_tool.on_project_unloaded                          context_tool.on_project_unloaded
1856                          address_manager.on_project_unloaded                          address_manager.on_project_unloaded
1857                          build_menu_bar                          build_menu_bar
1858                            if has_dll_generation then
1859                                    show_dynamic_lib_tool.disable_sensitive
1860                            end
1861                            if has_profiler then
1862                                    show_profiler.disable_sensitive
1863                            end
1864                  end                  end
1865    
1866          save_before_compiling is          save_before_compiling is
# Line 2074  feature -- Multiple editor management Line 2044  feature -- Multiple editor management
2044                                  editors.valid_index (new_index) and                                  editors.valid_index (new_index) and
2045                                  old_index /= new_index                                  old_index /= new_index
2046                          then                          then
                                 current_editor.remove_observer (Current)  
2047                                  current_editor_index := new_index                                  current_editor_index := new_index
                                 current_editor.add_edition_observer (Current)  
                                 current_editor.add_selection_observer (Current)  
2048                                  from                                  from
2049                                          editors.start                                          editors.start
2050                                  until                                  until
# Line 2089  feature -- Multiple editor management Line 2056  feature -- Multiple editor management
2056                                          editors.forth                                          editors.forth
2057                                  end                                  end
2058                                  update_paste_cmd                                  update_paste_cmd
                                         -- Since the current editor has changed,  
                                         -- it may be in a different state than the current state,  
                                         -- and we have to update the state and send events accordingly....*sigh*  
                                 if text_state = 0 then  
                                         if current_editor.text_is_fully_loaded then  
                                                 on_text_loaded  
                                                 on_text_fully_loaded  
                                         end  
                                 elseif text_state = 1 then  
                                         if current_editor.text_is_fully_loaded then  
                                                 on_text_fully_loaded  
                                         elseif current_editor.is_empty then  
                                                 on_text_reset  
                                         end  
                                 else  
                                                 -- State was fully loaded.  
                                         if current_editor.is_empty then  
                                                 on_text_reset  
                                         end  
                                 end  
                                 if selection_state = 0 then  
                                         if current_editor.has_selection then  
                                                 on_selection_begun  
                                         end  
                                 else  
                                                 -- Selection state is there is a selection.  
                                         if not current_editor.has_selection then  
                                                 on_selection_finished  
                                         end  
                                 end  
                                 if edition_state = 0 then  
                                         if current_editor.changed then  
                                                         --| True is safer for the diagram.  
                                                 on_text_edited (True)  
                                         end  
                                 else  
                                         if not current_editor.changed then  
                                                 on_text_back_to_its_last_saved_state  
                                         end  
                                 end  
                                   
                                         -- Now for the "editability" of the editor...  
                                 if current_editor.is_editable then  
                                         from  
                                                 editor_commands.start  
                                         until  
                                                 editor_commands.after  
                                         loop  
                                                 editor_commands.item.on_editable  
                                                 editor_commands.forth  
                                         end  
                                         from  
                                                 selection_commands.start  
                                         until  
                                                 selection_commands.after  
                                         loop  
                                                 selection_commands.item.on_editable  
                                                 selection_commands.forth  
                                         end  
                                 else  
                                         from  
                                                 editor_commands.start  
                                         until  
                                                 editor_commands.after  
                                         loop  
                                                 editor_commands.item.on_not_editable  
                                                 editor_commands.forth  
                                         end  
                                         from  
                                                 selection_commands.start  
                                         until  
                                                 selection_commands.after  
                                         loop  
                                                 selection_commands.item.on_not_editable  
                                                 selection_commands.forth  
                                         end  
                                 end  
   
2059                                          -- Last thing, update the menu entry for the formatting marks.                                          -- Last thing, update the menu entry for the formatting marks.
2060                                  if current_editor.view_invisible_symbols then                                  if current_editor.view_invisible_symbols then
2061                                          formatting_marks_command_menu_item.set_text (Interface_names.m_Hide_formatting_marks)                                          formatting_marks_command_menu_item.set_text (Interface_names.m_Hide_formatting_marks)
2062                                  else                                  else
2063                                          formatting_marks_command_menu_item.set_text(Interface_names.m_Show_formatting_marks)                                          formatting_marks_command_menu_item.set_text(Interface_names.m_Show_formatting_marks)
2064                                  end                                  end
2065                                    command_controller.set_current_editor (an_editor)
2066                          end                          end
2067                  end                  end
2068    
# Line 2194  feature -- Multiple editor management Line 2084  feature -- Multiple editor management
2084                          end                          end
2085                  end                  end
2086                                                                    
 feature {NONE} -- Implementation (Multiple editors)  
   
         text_state: INTEGER  
                         -- Can be 0 if the current editor is empty, 1 if loaded, 2 if fully loaded.  
   
         edition_state: INTEGER  
                         -- Can be 0 if the text has not been edited, 1 if it has been.  
   
         selection_state: INTEGER  
                         -- Can be 0 if there is no selection,  
                         -- 1 if selection began,  
                         -- 2 if selection ended.  
   
         on_selection_begun is  
                         -- Update `editor_copy_cmd' and `editor_cut_command'  
                         -- (to be performed when selection starts in one of the editors)  
                 do  
                                 -- FIXME XR: Some day we'll have to merge clipboard commands with other editor commands.  
                         editor_copy_cmd.enable_sensitive  
                         if current_editor.is_editable then  
                                 editor_cut_cmd.enable_sensitive  
                         end  
                         Precursor {TEXT_OBSERVER_MANAGER}  
                         selection_state := 1  
                 end  
           
         on_selection_finished is  
                         -- Update `editor_copy_cmd' and `editor_cut_command'  
                         -- (to be performed when selection stops in one fo the editors)  
                 do  
                         if not current_editor.has_selection then  
                                 editor_copy_cmd.disable_sensitive  
                                 editor_cut_cmd.disable_sensitive  
                         end  
                         Precursor {TEXT_OBSERVER_MANAGER}  
                         if current_editor.has_selection then  
                                 selection_state := 2  
                         else  
                                 selection_state := 0  
                         end  
                 end  
   
2087  feature {NONE} -- Multiple editor management  feature {NONE} -- Multiple editor management
2088    
2089          editors: ARRAYED_LIST [EB_EDITOR]          editors: ARRAYED_LIST [EB_EDITOR]
2090                          -- editor contained in `Current'                          -- editor contained in `Current'
2091    
2092          current_editor_index: INTEGER          current_editor_index: INTEGER
2093                            -- Index in `editors' of the editor that has the focus.
2094    
2095  feature {EB_WINDOW_MANAGER} -- Window management / Implementation  feature {EB_WINDOW_MANAGER} -- Window management / Implementation
2096    
# Line 2408  feature {NONE} -- Implementation Line 2256  feature {NONE} -- Implementation
2256                                          end                                          end
2257    
2258                                          conv_classc ?= new_class_stone                                          conv_classc ?= new_class_stone
2259                                          if conv_classc = Void or else feature_stone /= Void and not feature_stone_already_processed then                                          if conv_classc = Void or else feature_stone /= Void and not feature_stone_already_processed and not (same_class and context_tool.sending_stone) then
2260                                                          -- If a classi_stone or a feature_stone has been dropped,                                                          -- If a classi_stone or a feature_stone has been dropped,
2261                                                          -- display the basic text formatter.                                                          -- display the basic text formatter.
2262                                                  if class_text_exists then                                                  if class_text_exists then
# Line 2489  feature {NONE} -- Implementation Line 2337  feature {NONE} -- Implementation
2337  --| END FIXME  --| END FIXME
2338                                          end                                          end
2339                                  end                                  end
2340                                  if feature_stone /= Void and class_text_exists and not feature_stone_already_processed then                                  if feature_stone /= Void and class_text_exists and not feature_stone_already_processed and not (same_class and context_tool.sending_stone) then
2341                                          conv_ferrst ?= feature_stone                                          conv_ferrst ?= feature_stone
2342                                          if conv_ferrst /= Void then                                          if conv_ferrst /= Void then
2343                                                          -- Scroll to the line of the error.                                                          -- Scroll to the line of the error.
# Line 2622  feature {NONE} -- Implementation Line 2470  feature {NONE} -- Implementation
2470                                  end                                  end
2471                          else                          else
2472                                  address_manager.disable_formatters                                  address_manager.disable_formatters
2473                          end                                  cist ?= stone
2474                          cist ?= stone                                  if cist /= Void then
2475                          if cist /= Void then                                          managed_main_formatters.first.execute
2476                                  managed_main_formatters.first.execute                                  end
2477                          end                          end
2478                  end                  end
2479    
# Line 2641  feature {NONE} -- Implementation Line 2489  feature {NONE} -- Implementation
2489                                  set_title (str)                                  set_title (str)
2490                          end                          end
2491                          address_manager.disable_formatters                          address_manager.disable_formatters
                         update_paste_cmd  
                         Precursor {TEXT_OBSERVER_MANAGER}  
                         text_state := 0  
2492                  end                  end
2493    
         on_text_loaded is  
                         -- Update editor commands.  
                 do  
                         Precursor {TEXT_OBSERVER_MANAGER}  
                         text_state := 1  
                 end  
                                           
2494          on_text_fully_loaded is          on_text_fully_loaded is
2495                          -- The main editor has just been reloaded.                          -- The main editor has just been reloaded.
2496                  do                  do
2497                          update_paste_cmd                          update_paste_cmd
                         Precursor {TEXT_OBSERVER_MANAGER}  
                         text_state := 2  
                         if current_editor.is_editable then  
                                 from  
                                         editor_commands.start  
                                 until  
                                         editor_commands.after  
                                 loop  
                                         editor_commands.item.on_editable  
                                         editor_commands.forth  
                                 end  
                                 from  
                                         selection_commands.start  
                                 until  
                                         selection_commands.after  
                                 loop  
                                         selection_commands.item.on_editable  
                                         selection_commands.forth  
                                 end  
                         else  
                                 from  
                                         editor_commands.start  
                                 until  
                                         editor_commands.after  
                                 loop  
                                         editor_commands.item.on_not_editable  
                                         editor_commands.forth  
                                 end  
                                 from  
                                         selection_commands.start  
                                 until  
                                         selection_commands.after  
                                 loop  
                                         selection_commands.item.on_not_editable  
                                         selection_commands.forth  
                                 end  
                         end  
2498                          update_formatters                          update_formatters
2499                  end                  end
2500    
# Line 2707  feature {NONE} -- Implementation Line 2508  feature {NONE} -- Implementation
2508                                  set_title (str)                                  set_title (str)
2509                          end                          end
2510                          update_formatters                          update_formatters
                         Precursor {TEXT_OBSERVER_MANAGER}  
                         edition_state := 0  
2511                  end                                      end                    
2512                                    
2513    
# Line 2724  feature {NONE} -- Implementation Line 2523  feature {NONE} -- Implementation
2523                                  set_title (str)                                  set_title (str)
2524                          end                          end
2525                          address_manager.disable_formatters                          address_manager.disable_formatters
                         Precursor {TEXT_OBSERVER_MANAGER} (unused)  
                         edition_state := 1  
2526                  end                  end
2527    
2528          on_back is          on_back is
# Line 2859  feature {NONE} -- Implementation Line 2656  feature {NONE} -- Implementation
2656                          -- Call the precursors.                          -- Call the precursors.
2657                  do                  do
2658                          {EB_TOOL_MANAGER} Precursor                          {EB_TOOL_MANAGER} Precursor
2659                          {TEXT_OBSERVER_MANAGER} Precursor                          command_controller.recycle
2660                  end                  end
2661    
2662  feature {NONE} -- Implementation: Editor commands  feature {NONE} -- Implementation: Editor commands
# Line 2911  feature {NONE} -- Implementation: Editor Line 2708  feature {NONE} -- Implementation: Editor
2708                          end                          end
2709                  end                  end
2710    
2711            cut_selection is
2712                            -- Cut the selection in the current editor.
2713                    do
2714                            current_editor.cut_selection
2715                    end
2716    
2717            copy_selection is
2718                            -- Cut the selection in the current editor.
2719                    do
2720                            current_editor.copy_selection
2721                    end
2722    
2723          toggle_formatting_marks is          toggle_formatting_marks is
2724                          -- Show/Hide formatting marks in the editor and update related menu item.                          -- Show/Hide formatting marks in the editor and update related menu item.
2725                  do                  do
# Line 2959  feature {EB_TOOL} -- Implementation / Co Line 2768  feature {EB_TOOL} -- Implementation / Co
2768          redo_cmd: EB_REDO_COMMAND          redo_cmd: EB_REDO_COMMAND
2769                          -- Command to redo in the editor.                          -- Command to redo in the editor.
2770    
2771          editor_cut_cmd: EB_EDITOR_CUT_COMMAND          editor_cut_cmd: EB_ON_SELECTION_COMMAND
2772                          -- Command to cut text in the editor.                          -- Command to cut text in the editor.
2773                    
2774          editor_copy_cmd: EB_EDITOR_COPY_COMMAND          editor_copy_cmd: EB_ON_SELECTION_COMMAND
2775                          -- Command to copy text in the editor.                          -- Command to copy text in the editor.
2776                    
2777          editor_paste_cmd: EB_EDITOR_PASTE_COMMAND          editor_paste_cmd: EB_EDITOR_PASTE_COMMAND
# Line 3005  feature {EB_TOOL} -- Implementation / Co Line 2814  feature {EB_TOOL} -- Implementation / Co
2814          toolbarable_commands: ARRAYED_LIST [EB_TOOLBARABLE_COMMAND]          toolbarable_commands: ARRAYED_LIST [EB_TOOLBARABLE_COMMAND]
2815                          -- All commands that can be put in a toolbar.                          -- All commands that can be put in a toolbar.
2816                    
2817          editor_commands: ARRAYED_LIST [EB_EDITOR_COMMAND]          command_controller: EB_EDITOR_COMMAND_CONTROLLER
2818                          -- Commands relative to the main editor.                          -- Object that takes care of updating the sensitivity of all editor commands.
           
         selection_commands: ARRAYED_LIST [EB_ON_SELECTION_COMMAND]  
                         -- Commands relative to the main editor.  
2819                    
2820          save_as_cmd: EB_SAVE_FILE_AS_COMMAND          save_as_cmd: EB_SAVE_FILE_AS_COMMAND
2821                          -- Command to save a class with a different file name.                          -- Command to save a class with a different file name.

Legend:
Removed from v.28280  
changed lines
  Added in v.28303

  ViewVC Help
Powered by ViewVC 1.1.23