- Timestamp:
- 03/12/11 12:28:00 (6 months ago)
- Location:
- branches/e4fix
- Files:
-
- 18 modified
-
EDIT4/ED4_ProteinViewer.cxx (modified) (1 diff)
-
EDIT4/ED4_base.cxx (modified) (3 diffs)
-
EDIT4/ED4_block.cxx (modified) (3 diffs)
-
EDIT4/ED4_cursor.cxx (modified) (14 diffs)
-
EDIT4/ED4_dots.cxx (modified) (2 diffs)
-
EDIT4/ED4_edit_string.cxx (modified) (1 diff)
-
EDIT4/ED4_main.cxx (modified) (4 diffs)
-
EDIT4/ED4_manager.cxx (modified) (1 diff)
-
EDIT4/ED4_nds.cxx (modified) (1 diff)
-
EDIT4/ED4_no_class.cxx (modified) (17 diffs)
-
EDIT4/ED4_root.cxx (modified) (19 diffs)
-
EDIT4/ED4_search.cxx (modified) (3 diffs)
-
EDIT4/ED4_window.cxx (modified) (6 diffs)
-
EDIT4/EDB_root_bact.cxx (modified) (2 diffs)
-
EDIT4/Makefile (modified) (1 diff)
-
EDIT4/ed4_class.hxx (modified) (12 diffs)
-
WINDOW/AW_status.cxx (modified) (1 diff)
-
WINDOW/aw_status.hxx (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/e4fix/EDIT4/ED4_ProteinViewer.cxx
r8193 r8275 399 399 } 400 400 // Refresh all windows 401 ED4_refresh_window(0, 0, 0); 402 ED4_ROOT->refresh_all_windows(0); 401 ED4_ROOT->refresh_all_windows(0); 403 402 } 404 403 -
branches/e4fix/EDIT4/ED4_base.cxx
r8274 r8275 110 110 #endif // DEBUG 111 111 } 112 ED4_ROOT->main_manager->Show(); 112 113 ED4_ROOT->refresh_all_windows(0); 113 114 } 114 115 … … 326 327 // ----------------- 327 328 328 bool ED4_base::is_visible( AW_pos x, AW_pos y, ED4_direction direction) {329 // indicates whether x, y are in the visible scrolling area330 // x, y are calculated by calc_world_coords329 bool ED4_base::is_visible(ED4_window *in_ed4w, AW_pos x, AW_pos y, ED4_direction direction) { 330 // return true if position (world coordinates) is visible in_ed4w 331 // (tests only into direction) 331 332 bool visible = true; 332 ED4_coords& coords = current_ed4w()->coords;333 ED4_coords& coords = in_ed4w->coords; 333 334 334 335 switch (direction) … … 377 378 } 378 379 379 bool ED4_base::is_visible(AW_pos x1, AW_pos y1, AW_pos x2, AW_pos y2, ED4_direction IF_ASSERTION_USED(direction)) 380 // optimized case of function above (to avoid the need to call it 4 times) 381 { 380 bool ED4_base::is_visible(ED4_window *in_ed4w, AW_pos x1, AW_pos y1, AW_pos x2, AW_pos y2, ED4_direction IF_ASSERTION_USED(direction)) { 381 // return true if rectangle x1/y1/x2/y2 overlaps with clipped screen 382 382 e4_assert(direction == ED4_D_ALL_DIRECTION); 383 383 e4_assert(x1 <= x2); 384 384 e4_assert(y1 <= y2); 385 385 386 ED4_coords& coords = current_ed4w()->coords;386 ED4_coords& coords = in_ed4w->coords; 387 387 388 388 bool visible = (ranges_overlap(x1, x2, coords.window_left_clip_point, coords.window_right_clip_point) && -
branches/e4fix/EDIT4/ED4_block.cxx
r8274 r8275 13 13 #include <climits> 14 14 #include <cctype> 15 #include <map> 16 17 using namespace std; 15 18 16 19 // -------------------------------------------------------------------------------- … … 163 166 } 164 167 165 166 167 168 void ED4_with_whole_block(ED4_blockoperation block_operation, int repeat) { 168 GB_ERROR error = GB_begin_transaction(GLOBAL_gb_main); 169 ED4_cursor *cursor = ¤t_cursor(); 170 int base_pos = (cursor && cursor->owner_of_cursor != 0) ? cursor->get_base_position() : -1; 169 GB_ERROR error = GB_begin_transaction(GLOBAL_gb_main); 170 171 typedef map<ED4_window*, int> CursorPositions; 172 CursorPositions at_base; 173 174 for (ED4_window *win = ED4_ROOT->first_window; win; win = win->next) { 175 ED4_cursor& cursor = win->cursor; 176 if (cursor.owner_of_cursor) at_base[win] = cursor.get_base_position(); 177 } 178 171 179 172 180 switch (blocktype) { … … 200 208 GB_end_transaction_show_error(GLOBAL_gb_main, error, aw_message); 201 209 202 if (!error && base_pos != -1) { 203 cursor->jump_base_pos(current_aww(), base_pos, ED4_JUMP_KEEP_VISIBLE); // restore cursor at same base 210 if (!error) { 211 for (CursorPositions::iterator ab = at_base.begin(); ab != at_base.end(); ++ab) { 212 ED4_window *win = ab->first; 213 win->cursor.jump_base_pos(win->aww, ab->second, ED4_JUMP_KEEP_VISIBLE); // restore cursor at same base 214 215 #if defined(DEBUG) 216 ED4_cursor& cursor = win->cursor; 217 if (cursor.owner_of_cursor) { 218 int bp_now = cursor.get_base_position(); 219 e4_assert(bp_now == ab->second); 220 } 221 #endif 222 } 204 223 } 205 224 } -
branches/e4fix/EDIT4/ED4_cursor.cxx
r8274 r8275 299 299 } 300 300 x = del_mark; 301 window()->world_to_win_coords(&x, &y); 301 302 ED4_window *win = window(); 303 win->world_to_win_coords(&x, &y); 302 304 303 305 // refresh own terminal + terminal above + terminal below … … 344 346 // clear rectangle where cursor is displayed 345 347 346 AW_device *dev = current_device();348 AW_device *dev = win->get_device(); 347 349 dev->push_clip_scale(); 348 350 … … 393 395 } 394 396 395 ED4_window *ED4_cursor::window() const 396 { 397 ED4_window *ED4_cursor::window() const { 397 398 ED4_window *win; 398 399 399 for (win=ED4_ROOT->first_window; win; win=win->next) { 400 400 if (&win->cursor==this) { … … 467 467 ED4_species_name_terminal *name_term = ED4_find_species_name_terminal(name); 468 468 if (name_term) { 469 ED4_MostRecentWinContext context; // use the last used window for selection 470 469 471 // lookup current name term 470 472 ED4_species_name_terminal *cursor_name_term = 0; … … 522 524 } 523 525 } 524 ignore_selected_SAI_changes_cb = false;525 526 ED4_update_global_cursor_awars_allowed = true; 526 527 } … … 537 538 #endif 538 539 select_named_sequence_terminal(name); 539 free(name);540 }540 } 541 free(name); 541 542 } 542 543 else { … … 545 546 #endif 546 547 } 547 ignore_selected_species_changes_cb = false;548 548 ED4_update_global_cursor_awars_allowed = true; 549 549 } 550 550 551 void ED4_jump_to_current_species(AW_window * /* aw */, AW_CL)552 { 551 void ED4_jump_to_current_species(AW_window *aww, AW_CL) { 552 ED4_LocalWinContext uses(aww); 553 553 char *name = GBT_read_string(GLOBAL_gb_main, AWAR_SPECIES_NAME); 554 554 if (name && name[0]) { … … 676 676 } 677 677 678 void ED4_get_and_jump_to_actual(AW_window * , AW_CL)679 { 678 void ED4_get_and_jump_to_actual(AW_window *aww, AW_CL) { // @@@ fix name 679 ED4_LocalWinContext uses(aww); 680 680 char *name = GBT_read_string(GLOBAL_gb_main, AWAR_SPECIES_NAME); 681 681 if (name && name[0]) { … … 996 996 } 997 997 998 ED4_LocalWinContext uses(aww); 998 999 ED4_coords *coords = ¤t_ed4w()->coords; 999 1000 … … 1235 1236 1236 1237 switch (owner_of_cursor->get_area_level(0)) { 1237 case ED4_A_TOP_AREA: 1238 visible = 1239 owner_of_cursor->is_visible(x1, 0, ED4_D_HORIZONTAL) || 1240 owner_of_cursor->is_visible(x2, 0, ED4_D_HORIZONTAL); 1238 case ED4_A_TOP_AREA: { 1239 ED4_window *win = window(); 1240 visible = 1241 owner_of_cursor->is_visible(win, x1, 0, ED4_D_HORIZONTAL) || 1242 owner_of_cursor->is_visible(win, x2, 0, ED4_D_HORIZONTAL); 1241 1243 break; 1244 } 1242 1245 case ED4_A_MIDDLE_AREA: 1243 visible = owner_of_cursor->is_visible( x1, y1, x2, y2, ED4_D_ALL_DIRECTION);1246 visible = owner_of_cursor->is_visible(window(), x1, y1, x2, y2, ED4_D_ALL_DIRECTION); 1244 1247 break; 1245 1248 default: … … 1251 1254 1252 1255 void ED4_terminal::scroll_into_view(AW_window *aww) { // scroll y-position only 1256 ED4_LocalWinContext uses(aww); 1257 1253 1258 AW_pos termw_x, termw_y; 1254 1259 calc_world_coords(&termw_x, &termw_y); … … 1590 1595 CursorPos *CursorPos::head = 0; 1591 1596 1592 void ED4_store_curpos(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) 1593 { 1594 GB_transaction dummy(GLOBAL_gb_main);1595 ED4_ ROOT->use_window(aww);1596 ED4_cursor *cursor = ¤t_cursor();1597 void ED4_store_curpos(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) { 1598 GB_transaction dummy(GLOBAL_gb_main); 1599 ED4_LocalWinContext uses(aww); 1600 ED4_cursor *cursor = ¤t_cursor(); 1601 1597 1602 if (!cursor->owner_of_cursor) { 1598 1603 aw_message("First you have to place the cursor."); 1599 return; 1600 } 1601 1602 new CursorPos(cursor->owner_of_cursor->to_terminal(), cursor->get_sequence_pos()); 1603 } 1604 1605 void ED4_restore_curpos(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) 1606 { 1607 GB_transaction dummy(GLOBAL_gb_main); 1608 ED4_ROOT->use_window(aww); 1609 ED4_cursor *cursor = ¤t_cursor(); 1604 } 1605 else { 1606 new CursorPos(cursor->owner_of_cursor->to_terminal(), cursor->get_sequence_pos()); 1607 } 1608 } 1609 1610 void ED4_restore_curpos(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) { 1611 GB_transaction dummy(GLOBAL_gb_main); 1612 ED4_LocalWinContext uses(aww); 1613 ED4_cursor *cursor = ¤t_cursor(); 1610 1614 1611 1615 CursorPos *pos = CursorPos::get_head(); … … 1628 1632 -------------------------------------------------------------------------------- */ 1629 1633 1630 void ED4_helix_jump_opposite(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) 1631 { 1632 GB_transaction dummy(GLOBAL_gb_main); 1633 ED4_ROOT->use_window(aww); 1634 ED4_cursor *cursor = ¤t_cursor(); 1634 void ED4_helix_jump_opposite(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) { 1635 GB_transaction dummy(GLOBAL_gb_main); 1636 ED4_LocalWinContext uses(aww); 1637 ED4_cursor *cursor = ¤t_cursor(); 1635 1638 1636 1639 if (!cursor->owner_of_cursor) { … … 1652 1655 } 1653 1656 1654 void ED4_change_cursor(AW_window * /* aww */, AW_CL /* cd1 */, AW_CL /* cd2 */) { 1655 ED4_cursor *cursor = ¤t_cursor(); 1656 ED4_CursorType typ = cursor->getType(); 1657 void ED4_change_cursor(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) { 1658 ED4_LocalWinContext uses(aww); 1659 ED4_cursor *cursor = ¤t_cursor(); 1660 ED4_CursorType typ = cursor->getType(); 1657 1661 1658 1662 cursor->changeType((ED4_CursorType)((typ+1)%ED4_CURSOR_TYPES)); -
branches/e4fix/EDIT4/ED4_dots.cxx
r8193 r8275 99 99 100 100 static void dot_missing_bases(AW_window *aww) { 101 ED4_window *ed4w = current_ed4w(); 102 ED4_cursor *cursor = &ed4w->cursor; 101 ED4_MostRecentWinContext context; 102 103 ED4_cursor *cursor = ¤t_cursor(); 103 104 ED4_base *selected = cursor->owner_of_cursor; 104 105 … … 233 234 static AW_window_simple *aws = 0; 234 235 235 ED4_ ROOT->use_window(editor_window);236 ED4_LocalWinContext uses(editor_window); 236 237 237 238 if (!aws) { -
branches/e4fix/EDIT4/ED4_edit_string.cxx
r8193 r8275 772 772 } 773 773 case 'L': { // CTRL-L = Refresh 774 ED4_refresh_window( 0, 0, 0);774 ED4_refresh_window(current_aww()); 775 775 cursor_jump = ED4_JUMP_CENTERED; 776 776 break; -
branches/e4fix/EDIT4/ED4_main.cxx
r8274 r8275 321 321 } 322 322 323 void ED4_with_all_edit_windows(void (*cb)(ED4_window *)) { 324 for (ED4_window *win = ED4_ROOT->first_window; win; win = win->next) { 325 ED4_LocalWinContext uses(win); 326 cb(win); 327 } 328 } 329 330 static void redraw_cursor(ED4_window *win) { win->cursor.redraw(); } 323 331 static void ED4_edit_direction_changed(AW_root * /* awr */) { 324 current_cursor().redraw();332 ED4_with_all_edit_windows(redraw_cursor); 325 333 } 326 334 … … 554 562 555 563 ED4_ROOT->st_ml = STAT_create_ST_ML(GLOBAL_gb_main); 556 ED4_ROOT->sequence_colors = new AWT_seq_colors(AW_ROOT_DEFAULT, ED4_G_SEQUENCES, ED4_refresh_window, 0, 0);564 ED4_ROOT->sequence_colors = new AWT_seq_colors(AW_ROOT_DEFAULT, ED4_G_SEQUENCES, (AW_CB)ED4_refresh_window, 0, 0); 557 565 558 566 ED4_ROOT->edk = new ed_key; … … 589 597 { 590 598 int found_config = 0; 599 ED4_LocalWinContext uses(ED4_ROOT->first_window); 591 600 592 601 if (config_name) … … 648 657 AWT_install_postcb_cb(ED4_postcbcb); 649 658 AWT_install_cb_guards(); 659 e4_assert(ED4_WinContext::dont_have_global_context()); // context shall be local 650 660 ED4_ROOT->aw_root->main_loop(); // enter main-loop 651 661 -
branches/e4fix/EDIT4/ED4_manager.cxx
r8274 r8275 905 905 } 906 906 907 static void update_scrolled_rectangles(ED4_window *win) { win->update_scrolled_rectangle(); } 907 908 ED4_returncode ED4_main_manager::resize_requested_by_parent() { 908 909 if (update_info.resize) { 909 910 ED4_manager::resize_requested_by_parent(); 910 current_ed4w()->update_scrolled_rectangle();911 ED4_with_all_edit_windows(update_scrolled_rectangles); 911 912 } 912 913 return ED4_R_OK; -
branches/e4fix/EDIT4/ED4_nds.cxx
r8193 r8275 59 59 aw_message_if(error); 60 60 } 61 ED4_gc_is_modified (current_aww(), 0, 0);61 ED4_gc_is_modified_cb(current_aww(), 0, 0); 62 62 } 63 63 } -
branches/e4fix/EDIT4/ED4_no_class.cxx
r8274 r8275 128 128 static bool dummy = 0; 129 129 130 ED4_ ROOT->use_window(aww);130 ED4_LocalWinContext uses(aww); 131 131 132 132 GB_push_transaction(GLOBAL_gb_main); … … 148 148 149 149 void ED4_resize_cb(AW_window *aww, AW_CL /*cd1*/, AW_CL /*cd2*/) { 150 ED4_ ROOT->use_window(aww);150 ED4_LocalWinContext uses(aww); 151 151 152 152 GB_push_transaction(GLOBAL_gb_main); … … 367 367 static int repeatCount; 368 368 369 ED4_ ROOT->use_window(aww);369 ED4_LocalWinContext uses(aww); 370 370 371 371 aww->get_event(&event); … … 487 487 488 488 void ED4_vertical_change_cb(AW_window *aww, AW_CL /*cd1*/, AW_CL /*cd2*/) { 489 ED4_ ROOT->use_window(aww);489 ED4_LocalWinContext uses(aww); 490 490 491 491 GB_push_transaction(GLOBAL_gb_main); … … 514 514 515 515 void ED4_horizontal_change_cb(AW_window *aww, AW_CL /*cd1*/, AW_CL /*cd2*/) { 516 ED4_ ROOT->use_window(aww);516 ED4_LocalWinContext uses(aww); 517 517 518 518 GB_push_transaction(GLOBAL_gb_main); … … 541 541 542 542 void ED4_scrollbar_change_cb(AW_window *aww, AW_CL /*cd1*/, AW_CL /*cd2*/) { 543 ED4_ ROOT->use_window(aww);543 ED4_LocalWinContext uses(aww); 544 544 545 545 GB_push_transaction(GLOBAL_gb_main); … … 583 583 AW_event event; 584 584 585 ED4_ ROOT->use_window(aww);585 ED4_LocalWinContext uses(aww); 586 586 587 587 aww->get_event(&event); … … 663 663 664 664 void ED4_jump_to_cursor_position(AW_window *aww, AW_CL cl_awar_name, AW_CL cl_pos_type) { 665 const char *awar_name = (const char *)cl_awar_name; 666 PositionType posType = (PositionType)cl_pos_type; 667 ED4_ROOT->use_window(aww); 668 669 ED4_cursor *cursor = ¤t_cursor(); 670 GB_ERROR error = 0; 665 const char *awar_name = (const char *)cl_awar_name; 666 PositionType posType = (PositionType)cl_pos_type; 667 ED4_LocalWinContext uses(aww); 668 ED4_cursor *cursor = ¤t_cursor(); 669 GB_ERROR error = 0; 671 670 672 671 long pos = aww->get_root()->awar(awar_name)->read_int(); … … 796 795 } 797 796 798 void ED4_gc_is_modified(AW_window *aww, AW_CL cd1, AW_CL cd2) // callback if gc is modified 799 { 800 ED4_ROOT->use_window(aww); 797 void ED4_gc_is_modified_cb(AW_window *aww, AW_CL cd1, AW_CL cd2) { 798 ED4_LocalWinContext uses(aww); 801 799 802 800 ED4_resize_cb(aww, cd1, cd2); … … 831 829 832 830 void ED4_quit_editor(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) { 833 ED4_ ROOT->use_window(aww);831 ED4_LocalWinContext uses(aww); 834 832 835 833 if (ED4_ROOT->first_window == current_ed4w()) { // quit button has been pressed in first window … … 839 837 current_aww()->hide(); 840 838 current_ed4w()->is_hidden = true; 841 }842 843 void ED4_load_data(AW_window *aww, AW_CL /*cd1*/, AW_CL /*cd2*/) {844 ED4_ROOT->use_window(aww);845 }846 847 void ED4_save_data(AW_window *aww, AW_CL /*cd1*/, AW_CL /*cd2*/) {848 ED4_ROOT->use_window(aww);849 839 } 850 840 … … 862 852 } 863 853 864 void ED4_refresh_window(AW_window *aww, AW_CL cd_called_from_menu, AW_CL /* cd2 */) 865 { 866 GB_transaction dummy(GLOBAL_gb_main); 867 868 if (int(cd_called_from_menu)) { 869 ED4_ROOT->use_window(aww); 870 } 854 void ED4_refresh_window(AW_window *aww) { 855 GB_transaction dummy(GLOBAL_gb_main); // @@@ move down ? 856 ED4_LocalWinContext uses(aww); // @@@ move down ? 871 857 872 858 ED4_main_manager *mainman = ED4_ROOT->main_manager; … … 881 867 } 882 868 883 void ED4_set_reference_species(AW_window *aww, AW_CL disable, AW_CL cd2) { 869 void ED4_set_reference_species(AW_window *aww, AW_CL disable, AW_CL ) { 870 ED4_LocalWinContext uses(aww); 884 871 GB_transaction dummy(GLOBAL_gb_main); 885 872 … … 922 909 } 923 910 924 ED4_refresh_window(aww , 0, cd2);911 ED4_refresh_window(aww); 925 912 } 926 913 … … 964 951 } 965 952 966 void ED4_toggle_detailed_column_stats(AW_window *aww, AW_CL, AW_CL) 967 { 953 void ED4_toggle_detailed_column_stats(AW_window *aww, AW_CL, AW_CL) { 968 954 while (!ED4_columnStat_terminal::threshold_is_set()) { 969 955 ED4_set_col_stat_threshold(aww, 0, 0); 970 956 } 971 957 958 ED4_LocalWinContext uses(aww); 972 959 ED4_cursor *cursor = ¤t_cursor(); 973 960 if (!cursor->owner_of_cursor) { … … 1160 1147 GB_push_transaction(GLOBAL_gb_main); 1161 1148 1162 ED4_ ROOT->use_window(use_as_main_window);1149 ED4_LocalWinContext uses(use_as_main_window); 1163 1150 1164 1151 if (!use_field) { … … 1405 1392 } 1406 1393 1407 void ED4_new_editor_window(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) 1408 { 1409 ED4_ROOT->use_window(aww); 1394 void ED4_new_editor_window(AW_window *aww, AW_CL /* cd1 */, AW_CL /* cd2 */) { 1395 ED4_LocalWinContext uses(aww); 1410 1396 1411 1397 AW_device *device; 1412 1398 ED4_window *new_window = 0; 1413 1399 1414 if (ED4_ROOT->generate_window(&device, &new_window) == ED4_R_BREAK) // don't open more than five windows 1415 return; 1416 1417 ED4_ROOT->use_window(new_window); 1418 1419 new_window->set_scrolled_rectangle(ED4_ROOT->scroll_links.link_for_hor_slider, 1420 ED4_ROOT->scroll_links.link_for_ver_slider, 1421 ED4_ROOT->scroll_links.link_for_hor_slider, 1422 ED4_ROOT->scroll_links.link_for_ver_slider); 1423 1424 new_window->aww->show(); 1425 new_window->update_scrolled_rectangle(); 1426 1427 ED4_ROOT->use_window(aww); 1400 if (ED4_ROOT->generate_window(&device, &new_window) != ED4_R_BREAK) { 1401 ED4_LocalWinContext now_uses(new_window); 1402 1403 new_window->set_scrolled_rectangle(ED4_ROOT->scroll_links.link_for_hor_slider, 1404 ED4_ROOT->scroll_links.link_for_ver_slider, 1405 ED4_ROOT->scroll_links.link_for_hor_slider, 1406 ED4_ROOT->scroll_links.link_for_ver_slider); 1407 1408 new_window->aww->show(); 1409 new_window->update_scrolled_rectangle(); 1410 } 1428 1411 } 1429 1412 -
branches/e4fix/EDIT4/ED4_root.cxx
r8238 r8275 36 36 #include <aw_root.hxx> 37 37 #include <aw_advice.hxx> 38 #include "../WINDOW/aw_status.hxx" // @@@ hack - obsolete when EDIT4 status works like elsewhere 38 39 #include <arb_version.h> 39 40 #include <arb_file.h> … … 43 44 44 45 AW_window *AWTC_create_island_hopping_window(AW_root *root, AW_CL); 46 47 ED4_WinContext ED4_WinContext::current_context; 45 48 46 49 ED4_returncode ED4_root::refresh_window_simple(int redraw) … … 73 76 } 74 77 75 ED4_returncode ED4_root::refresh_all_windows(int redraw) 76 { 77 ED4_window *old_window = curr_ed4w(); 78 78 ED4_returncode ED4_root::refresh_all_windows(int redraw) { 79 79 last_window_reached = 0; 80 80 … … 93 93 while (window) { 94 94 if (!window->next) last_window_reached = 1; 95 use_window(window);95 ED4_LocalWinContext uses(window); 96 96 refresh_window_simple(redraw); 97 97 window = window->next; 98 98 } 99 100 use_window(old_window);101 99 102 100 return (ED4_R_OK); … … 335 333 } 336 334 335 void ED4_window::announce_deletion(ED4_base *object) { 336 if (cursor.owner_of_cursor == object) { // about to delete owner_of_cursor 337 cursor.HideCursor(); 338 e4_assert(!cursor.owner_of_cursor); 339 } 340 } 337 341 void ED4_root::announce_deletion(ED4_base *object) { 338 342 // remove any links which might point to the object 339 340 ED4_cursor& cursor = curr_ed4w()->cursor; 341 if (cursor.owner_of_cursor == object) { // about to delete owner_of_cursor 342 cursor.HideCursor(); 343 e4_assert(cursor.owner_of_cursor != object); 343 // @@@ not triggered by kill_object() 344 for (ED4_window *win = first_window; win; win = win->next) { 345 ED4_LocalWinContext uses(win); 346 win->announce_deletion(object); 344 347 } 345 348 } … … 527 530 font_group.unregisterAll(); 528 531 for (int f=ED4_G_FIRST_FONT; f<=ED4_G_LAST_FONT; f++) { 529 font_group.registerFont(curr_device(), f); 532 ED4_MostRecentWinContext context; 533 font_group.registerFont(current_device(), f); 530 534 } 531 535 } … … 743 747 new_window->aww->show(); 744 748 new_window->update_scrolled_rectangle(); 745 ED4_refresh_window(new_window->aww , 0, 0);749 ED4_refresh_window(new_window->aww); 746 750 new_window = new_window->next; 747 751 } … … 757 761 // returns win-coordinates of area (defined by folding lines) which contains position x/y 758 762 int x1, x2, y1, y2; 759 const AW_screen_area& area_rect = curr _device()->get_area_size();763 const AW_screen_area& area_rect = current_device()->get_area_size(); 760 764 761 765 x1 = area_rect.l; 762 for (const ED4_folding_line *flv=curr _ed4w()->get_vertical_folding(); ; flv = flv->get_next()) {766 for (const ED4_folding_line *flv=current_ed4w()->get_vertical_folding(); ; flv = flv->get_next()) { 763 767 if (flv) { 764 768 x2 = int(flv->get_pos()); // @@@ use AW_INT ? … … 772 776 773 777 y1 = area_rect.t; 774 for (const ED4_folding_line *flh=curr _ed4w()->get_horizontal_folding(); ; flh = flh->get_next()) {778 for (const ED4_folding_line *flh=current_ed4w()->get_horizontal_folding(); ; flh = flh->get_next()) { 775 779 if (flh) { 776 780 y2 = int(flh->get_pos()); // @@@ use AW_INT ? … … 807 811 808 812 809 void ED4_reload_helix_cb(AW_window *aww , AW_CL cd1, AW_CL cd2) {813 void ED4_reload_helix_cb(AW_window *aww) { 810 814 const char *err = ED4_ROOT->helix->init(GLOBAL_gb_main); 811 815 if (err) aw_message(err); 812 ED4_refresh_window(aww, cd1, cd2); 813 } 814 815 816 void ED4_reload_ecoli_cb(AW_window *aww, AW_CL cd1, AW_CL cd2) 817 { 816 ED4_refresh_window(aww); 817 } 818 819 820 void ED4_reload_ecoli_cb(AW_window *aww) { 818 821 const char *err = ED4_ROOT->ecoli_ref->init(GLOBAL_gb_main); 819 822 if (err) aw_message(err); 820 ED4_refresh_window(aww , cd1, cd2);823 ED4_refresh_window(aww); 821 824 } 822 825 … … 1070 1073 } 1071 1074 1072 void ED4_undo_redo(AW_window *, AW_CL undo_type)1073 { 1075 void ED4_undo_redo(AW_window *aww, AW_CL undo_type) { 1076 ED4_LocalWinContext uses(aww); 1074 1077 GB_ERROR error = GB_undo(GLOBAL_gb_main, (GB_UNDO_TYPE)undo_type); 1075 1078 … … 1090 1093 } 1091 1094 1092 void aw_clear_message_cb(AW_window *aww); 1093 1094 void ED4_clear_errors(AW_window*, AW_CL) 1095 { 1096 aw_clear_message_cb(current_aww()); 1095 void ED4_clear_errors(AW_window *aww, AW_CL) { 1096 aw_clear_message_cb(aww); 1097 1097 } 1098 1098 … … 1158 1158 } 1159 1159 1160 void ED4_set_protection(AW_window * /* aww */, AW_CL cd1, AW_CL /* cd2 */) { 1160 void ED4_set_protection(AW_window *aww, AW_CL cd1, AW_CL /* cd2 */) { 1161 ED4_LocalWinContext uses(aww); 1161 1162 ED4_cursor *cursor = ¤t_cursor(); 1162 1163 GB_ERROR error = 0; … … 1272 1273 } 1273 1274 1274 ED4_refresh_window(aww , 1, 0);1275 } 1276 1277 void ED4_menu_perform_block_operation(AW_window *, AW_CL type, AW_CL) {1275 ED4_refresh_window(aww); 1276 } 1277 1278 void ED4_menu_perform_block_operation(AW_window */*aww*/, AW_CL type, AW_CL) { 1278 1279 ED4_perform_block_operation(ED4_blockoperation_type(type)); 1279 1280 } … … 1386 1387 } 1387 1388 1389 ED4_LocalWinContext uses(*new_window); 1390 1388 1391 // each window has its own gc-manager 1389 1392 aw_gc_manager = AW_manage_GC(awmm, // window … … 1467 1470 1468 1471 awmm->create_menu("Edit", "E", AWM_ALL); 1469 awmm->insert_menu_topic("refresh", "Refresh [Ctrl-L]", "f", 0, AWM_ALL, ED4_refresh_window, 1, 0);1472 awmm->insert_menu_topic("refresh", "Refresh [Ctrl-L]", "f", 0, AWM_ALL, (AW_CB)ED4_refresh_window, 0, 0); 1470 1473 awmm->insert_menu_topic("load_actual", "Load current species [GET]", "G", 0, AWM_ALL, ED4_get_and_jump_to_actual_from_menu, 0, 0); 1471 1474 awmm->insert_menu_topic("load_marked", "Load marked species", "m", 0, AWM_ALL, ED4_get_marked_from_menu, 0, 0); 1472 1475 SEP________________________SEP; 1473 awmm->insert_menu_topic("refresh_ecoli", "Reload Ecoli sequence", "E", "ecoliref.hlp", AWM_ALL, ED4_reload_ecoli_cb,0, 0);1474 awmm->insert_menu_topic("refresh_helix", "Reload Helix", "H", "helix.hlp", AWM_ALL, ED4_reload_helix_cb,0, 0);1475 awmm->insert_menu_topic("helix_jump_opposite", "Jump helix opposite [Ctrl-J]", "J", 0, AWM_ALL, ED4_helix_jump_opposite, 0, 0);1476 awmm->insert_menu_topic("refresh_ecoli", "Reload Ecoli sequence", "E", "ecoliref.hlp", AWM_ALL, (AW_CB)ED4_reload_ecoli_cb, 0, 0); 1477 awmm->insert_menu_topic("refresh_helix", "Reload Helix", "H", "helix.hlp", AWM_ALL, (AW_CB)ED4_reload_helix_cb, 0, 0); 1478 awmm->insert_menu_topic("helix_jump_opposite", "Jump helix opposite [Ctrl-J]", "J", 0, AWM_ALL, ED4_helix_jump_opposite, 0, 0); 1476 1479 SEP________________________SEP; 1477 1480 … … 1721 1724 1722 1725 awmm->at("pos"); 1723 awmm->callback((AW_CB)ED4_jump_to_cursor_position, (AW_CL) curr _ed4w()->awar_path_for_cursor, AW_CL(ED4_POS_SEQUENCE));1724 awmm->create_input_field(curr _ed4w()->awar_path_for_cursor, 7);1726 awmm->callback((AW_CB)ED4_jump_to_cursor_position, (AW_CL) current_ed4w()->awar_path_for_cursor, AW_CL(ED4_POS_SEQUENCE)); 1727 awmm->create_input_field(current_ed4w()->awar_path_for_cursor, 7); 1725 1728 1726 1729 awmm->at("ecoli"); 1727 awmm->callback((AW_CB)ED4_jump_to_cursor_position, (AW_CL) curr _ed4w()->awar_path_for_Ecoli, AW_CL(ED4_POS_ECOLI));1728 awmm->create_input_field(curr _ed4w()->awar_path_for_Ecoli, 6);1730 awmm->callback((AW_CB)ED4_jump_to_cursor_position, (AW_CL) current_ed4w()->awar_path_for_Ecoli, AW_CL(ED4_POS_ECOLI)); 1731 awmm->create_input_field(current_ed4w()->awar_path_for_Ecoli, 6); 1729 1732 1730 1733 awmm->at("base"); 1731 awmm->callback((AW_CB)ED4_jump_to_cursor_position, (AW_CL) curr _ed4w()->awar_path_for_basePos, AW_CL(ED4_POS_BASE));1732 awmm->create_input_field(curr _ed4w()->awar_path_for_basePos, 6);1734 awmm->callback((AW_CB)ED4_jump_to_cursor_position, (AW_CL) current_ed4w()->awar_path_for_basePos, AW_CL(ED4_POS_BASE)); 1735 awmm->create_input_field(current_ed4w()->awar_path_for_basePos, 6); 1733 1736 1734 1737 awmm->at("iupac"); 1735 awmm->callback((AW_CB)ED4_set_iupac, (AW_CL) curr _ed4w()->awar_path_for_IUPAC, AW_CL(0));1736 awmm->create_input_field(curr _ed4w()->awar_path_for_IUPAC, 4);1738 awmm->callback((AW_CB)ED4_set_iupac, (AW_CL) current_ed4w()->awar_path_for_IUPAC, AW_CL(0)); 1739 awmm->create_input_field(current_ed4w()->awar_path_for_IUPAC, 4); 1737 1740 1738 1741 awmm->at("helixnr"); 1739 awmm->callback((AW_CB)ED4_set_helixnr, (AW_CL) curr _ed4w()->awar_path_for_helixNr, AW_CL(0));1740 awmm->create_input_field(curr _ed4w()->awar_path_for_helixNr, 5);1742 awmm->callback((AW_CB)ED4_set_helixnr, (AW_CL) current_ed4w()->awar_path_for_helixNr, AW_CL(0)); 1743 awmm->create_input_field(current_ed4w()->awar_path_for_helixNr, 5); 1741 1744 1742 1745 // --------------------------- … … 1908 1911 // Buttons at left window border 1909 1912 1910 awmm->create_mode("edit/arrow.bitmap", "normal.hlp", AWM_ALL, (AW_CB)modes_cb, (AW_CL) 0, (AW_CL)0);1911 awmm->create_mode("edit/kill.bitmap", "kill.hlp", AWM_ALL, (AW_CB)modes_cb, (AW_CL) 1, (AW_CL)0);1912 awmm->create_mode("edit/mark.bitmap", "mark.hlp", AWM_ALL, (AW_CB)modes_cb, (AW_CL) 2, (AW_CL)0);1913 awmm->create_mode("edit/arrow.bitmap", "normal.hlp", AWM_ALL, (AW_CB)modes_cb, (AW_CL)ED4_SM_MOVE, (AW_CL)0); 1914 awmm->create_mode("edit/kill.bitmap", "kill.hlp", AWM_ALL, (AW_CB)modes_cb, (AW_CL)ED4_SM_KILL, (AW_CL)0); 1915 awmm->create_mode("edit/mark.bitmap", "mark.hlp", AWM_ALL, (AW_CB)modes_cb, (AW_CL)ED4_SM_MARK, (AW_CL)0); 1913 1916 1914 1917 FastAligner_create_variables(awmm->get_root(), props_db); … … 1924 1927 generate_window(&device, &new_window); 1925 1928 1929 ED4_LocalWinContext uses(new_window); 1930 1926 1931 ED4_calc_terminal_extentions(); 1927 1932 -
branches/e4fix/EDIT4/ED4_search.cxx
r8197 r8275 727 727 728 728 if (settings[type]->get_autoJump() && (action & DO_AUTO_JUMP)) { // auto jump 729 ED4_MostRecentWinContext context; 729 730 ED4_cursor *cursor = ¤t_cursor(); 730 bool jumped = false;731 bool jumped = false; 731 732 732 733 if (cursor->owner_of_cursor && cursor->owner_of_cursor->is_sequence_terminal()) { … … 772 773 bool old_update = ED4_update_global_cursor_awars_allowed; 773 774 ED4_update_global_cursor_awars_allowed = false; 774 ED4_ refresh_window(current_aww(), 0,0);775 ED4_ROOT->refresh_all_windows(0); 775 776 ED4_update_global_cursor_awars_allowed = old_update; 776 777 } … … 1341 1342 } 1342 1343 1343 void ED4_search(AW_window * /* aww */, AW_CL searchDescriptor)1344 { 1345 int direction; 1344 void ED4_search(AW_window *aww , AW_CL searchDescriptor) { 1345 ED4_MostRecentWinContext context; 1346 int direction; // @@@ fix locals 1346 1347 ED4_SearchPositionType pattern; 1347 1348 int searchOnlyForShownPatterns; -
branches/e4fix/EDIT4/ED4_window.cxx
r8237 r8275 106 106 107 107 ED4_window *ED4_window::get_matching_ed4w(AW_window *aw) { 108 e4_assert(aw); 109 108 110 ED4_window *window = ED4_ROOT->first_window; 109 while (window && window->aww != aw) window = window->next; 111 while (window && window->aww != aw) { 112 window = window->next; 113 } 114 115 e4_assert(window); // aw is not an edit-window 110 116 return window; 111 117 } … … 336 342 337 343 338 void ED4_window::delete_window(ED4_window *window) // delete from window list339 { 344 void ED4_window::delete_window(ED4_window *window) { 345 // delete from window list 340 346 ED4_window *temp, *temp2; 341 347 … … 343 349 temp = ED4_ROOT->first_window; // delete temp afterwards 344 350 ED4_ROOT->first_window = ED4_ROOT->first_window->next; 345 346 if (no_of_windows > 1) {347 ED4_ROOT->use_first_window();348 }349 351 } 350 352 else { … … 357 359 358 360 temp2->next = temp->next; 359 360 ED4_ROOT->use_window(temp2);361 361 } 362 362 … … 370 370 371 371 372 ED4_window *ED4_window::insert_window(AW_window *new_aww) 373 { 372 ED4_window *ED4_window::insert_window(AW_window *new_aww) { 374 373 ED4_window *last, *temp; 375 374 … … 399 398 new_aww->set_vertical_change_callback (ED4_vertical_change_cb, 0, 0); 400 399 401 ED4_ROOT->use_window(temp);402 400 ED4_ROOT->temp_gc = ED4_G_STANDARD; 403 401 -
branches/e4fix/EDIT4/EDB_root_bact.cxx
r8160 r8275 168 168 char namebuffer[NAME_BUFFERSIZE]; 169 169 170 device = ED4_ROOT->first_window-> aww->get_device(AW_MIDDLE_AREA);170 device = ED4_ROOT->first_window->get_device(); 171 171 172 172 if (alignment_flag == ED4_A_DEFAULT) { … … 577 577 sequence_manager->children->append_member(sequence_info_terminal); 578 578 579 device = ED4_ROOT->first_window-> aww->get_device(AW_MIDDLE_AREA);579 device = ED4_ROOT->first_window->get_device(); 580 580 pixel_length = device->get_string_size(ED4_G_SEQUENCES, CONSENSUS, 0); 581 581 -
branches/e4fix/EDIT4/Makefile
r8227 r8275 689 689 ED4_ProteinViewer.o: $(ARBHOME)/INCLUDE/Translate.hxx 690 690 691 ED4_root.o: ../WINDOW/aw_status.hxx 691 692 ED4_root.o: ed4_awars.hxx 692 693 ED4_root.o: ed4_block.hxx -
branches/e4fix/EDIT4/ed4_class.hxx
r8274 r8275 689 689 ED4_window *get_matching_ed4w(AW_window *aww); 690 690 691 void announce_deletion(ED4_base *object); 692 691 693 // functions concerned the scrolled area 692 694 ED4_returncode update_scrolled_rectangle(); … … 696 698 697 699 void update_window_coords(); 700 701 AW_device *get_device() const { return aww->get_device(AW_MIDDLE_AREA); } 698 702 699 703 ED4_window(AW_window *window); … … 1028 1032 1029 1033 ED4_returncode clear_whole_background(); // clear AW_MIDDLE_AREA 1030 bool is_visible( AW_pos x, AW_pos y, ED4_direction direction);1031 bool is_visible( AW_pos x1, AW_pos y1, AW_pos x2, AW_pos y2, ED4_direction direction);1034 bool is_visible(ED4_window *in_ed4w, AW_pos x, AW_pos y, ED4_direction direction); 1035 bool is_visible(ED4_window *in_ed4w, AW_pos x1, AW_pos y1, AW_pos x2, AW_pos y2, ED4_direction direction); 1032 1036 1033 1037 // functions concerned with links in the hierarchy … … 1381 1385 e4_assert(ew); 1382 1386 ed4w = ew; 1383 device = ed4w-> aww->get_device(AW_MIDDLE_AREA);1384 } 1385 1386 p ublic:1387 device = ed4w->get_device(); 1388 } 1389 1390 protected: 1387 1391 ED4_WinContext() : ed4w(0), device(0) {} 1388 1392 static ED4_WinContext current_context; 1393 1394 public: 1389 1395 inline ED4_WinContext(AW_window *aww_); 1390 1396 ED4_WinContext(ED4_window *ed4w_) { init(ed4w_); } … … 1392 1398 AW_device *get_device() const { e4_assert(have_context()); return device; } 1393 1399 ED4_window *get_ed4w() const { e4_assert(have_context()); return ed4w; } 1394 }; 1400 1401 static const ED4_WinContext& get_current_context() { return current_context; } 1402 static bool dont_have_global_context() { return !current_context.have_context(); } 1403 }; 1404 1405 1406 inline AW_device *current_device() { return ED4_WinContext::get_current_context().get_device(); } 1407 inline ED4_window *current_ed4w() { return ED4_WinContext::get_current_context().get_ed4w(); } 1408 inline AW_window *current_aww() { return current_ed4w()->aww; } 1409 inline ED4_cursor& current_cursor() { return current_ed4w()->cursor; } 1395 1410 1396 1411 class ED4_root : virtual Noncopyable { … … 1399 1414 ED4_returncode refresh_window_simple(int redraw); 1400 1415 1401 ED4_WinContext context; 1402 ED4_window *most_recently_used_window; 1416 ED4_window *most_recently_used_window; 1403 1417 1404 1418 public: … … 1441 1455 AW_font_group font_group; 1442 1456 1443 void use_window(AW_window *aww) { context = ED4_WinContext(aww); }1444 void use_window(ED4_window *ed4w) { context = ED4_WinContext(ed4w); }1445 void use_first_window() { use_window(first_window); }1446 1447 AW_device *curr_device() const { return context.get_device(); }1448 ED4_window *curr_ed4w() const { return context.get_ed4w(); }1449 AW_window *curr_aww() const { return context.get_ed4w()->aww; }1450 1451 1457 void announce_useraction_in(AW_window *aww); 1452 1458 ED4_window *get_most_recently_used_window() const { return most_recently_used_window; } … … 1485 1491 }; 1486 1492 1487 inline AW_window *current_aww() { return ED4_ROOT->curr_aww(); } 1488 inline AW_device *current_device() { return ED4_ROOT->curr_device(); } 1489 inline ED4_window *current_ed4w() { return ED4_ROOT->curr_ed4w(); } 1490 inline ED4_cursor& current_cursor() { return current_ed4w()->cursor; } 1491 1492 ED4_WinContext::ED4_WinContext(AW_window *aww_) { 1493 init(ED4_ROOT->first_window->get_matching_ed4w(aww_)); 1494 } 1493 ED4_WinContext::ED4_WinContext(AW_window *aww_) { init(ED4_ROOT->first_window->get_matching_ed4w(aww_)); } 1494 1495 class ED4_LocalWinContext : private ED4_WinContext { 1496 public: 1497 ED4_LocalWinContext(AW_window *aww) : ED4_WinContext(current_context) { current_context = ED4_WinContext(aww); } 1498 ED4_LocalWinContext(ED4_window *ew) : ED4_WinContext(current_context) { current_context = ED4_WinContext(ew); } 1499 ~ED4_LocalWinContext() { current_context = *this; } 1500 }; 1501 1502 class ED4_MostRecentWinContext : virtual Noncopyable { 1503 ED4_LocalWinContext *most_recent; 1504 public: 1505 ED4_MostRecentWinContext() : most_recent(0) { 1506 if (ED4_WinContext::dont_have_global_context()) { 1507 most_recent = new ED4_LocalWinContext(ED4_ROOT->get_most_recently_used_window()); 1508 } 1509 } 1510 ~ED4_MostRecentWinContext() { 1511 delete most_recent; 1512 } 1513 }; 1514 1495 1515 1496 1516 // ------------------------ … … 2076 2096 extern ST_ML *st_ml; 2077 2097 2098 void ED4_with_all_edit_windows(void (*cb)(ED4_window *)); 2099 2078 2100 void ED4_expose_cb(AW_window *aww, AW_CL cd1, AW_CL cd2); 2079 2101 void ED4_expose_all_windows(); … … 2086 2108 void ED4_remote_event(AW_event *faked_event); 2087 2109 2088 void ED4_gc_is_modified (AW_window *aww, AW_CL cd1, AW_CL cd2);2089 void ED4_quit (AW_window *aww, AW_CL cd1, AW_CL cd2);2110 void ED4_gc_is_modified_cb(AW_window *aww, AW_CL cd1, AW_CL cd2); 2111 void ED4_quit(AW_window *aww, AW_CL cd1, AW_CL cd2); 2090 2112 2091 2113 void ED4_motion_cb (AW_window *aww, AW_CL cd1, AW_CL cd2); … … 2120 2142 2121 2143 void ED4_quit_editor (AW_window *aww, AW_CL cd1, AW_CL cd2); // Be Careful: Is this the last window? 2122 void ED4_load_data (AW_window *aww, AW_CL cd1, AW_CL cd2); 2123 void ED4_save_data (AW_window *aww, AW_CL cd1, AW_CL cd2); 2124 void ED4_refresh_window (AW_window *aww, AW_CL cd1, AW_CL cd2); 2144 void ED4_refresh_window (AW_window *aww); 2125 2145 2126 2146 void ED4_store_curpos (AW_window *aww, AW_CL cd1, AW_CL cd2); … … 2185 2205 2186 2206 2207 -
branches/e4fix/WINDOW/AW_status.cxx
r8036 r8275 746 746 } 747 747 748 void aw_clear_message_cb(AW_window *aww) 749 { 750 int i; 748 void aw_clear_message_cb(AW_window *aww) { 751 749 AW_root *awr = aww->get_root(); 752 for (i = 0; i< AW_MESSAGE_LINES; i++) freenull(aw_stg.lines[i]);750 for (int i = 0; i< AW_MESSAGE_LINES; i++) freenull(aw_stg.lines[i]); 753 751 awr->awar(AWAR_ERROR_MESSAGES)->write_string(""); 754 752 } -
branches/e4fix/WINDOW/aw_status.hxx
r7186 r8275 25 25 void aw_closestatus(); // hide status 26 26 27 // special for EDIT4 (obsolete - nobody listens to EDIT4-errors) 28 void aw_clear_message_cb(AW_window *aww); 29 27 30 #else 28 31 #error aw_status.hxx included twice
