void edit_select_rep::selection_cut (string key) { if (inside_active_graphics ()) { if (key != "none") { tree t= as_tree (eval ("(graphics-cut)")); selection_set (key, t); } } else if (selection_active_any ()) { path p1, p2; if (selection_active_table ()) { p1= start_p; p2= end_p; if(key != "none") { tree sel= selection_get (); selection_set (key, sel); } } else { selection_get (p1, p2); go_to (p2); if (p2 == p1) return; if (key != "none") { tree sel= selection_compute (et, p1, p2); selection_set (key, simplify_correct (sel)); } } cut (p1, p2); } }
void edit_select_rep::selection_copy (string key) { if (inside_active_graphics ()) { tree t= as_tree (eval ("(graphics-copy)")); selection_set (key, t); return; } if (selection_active_any ()) { path old_tp= tp; selection sel; selection_get (sel); go_to (sel->end); tree t= selection_get (); go_to (sel->start); selection_set (key, t); go_to (old_tp); } }
path edit_select_rep::selection_get_path () { path start, end; selection_get (start, end); if (end == start && end_p != start_p) return path_up (start); return common (start, end); }
bool edit_select_rep::selection_active_small () { if (!selection_active_normal ()) return false; path p1, p2; selection_get (p1, p2); if (p2 == p1) return false; if (is_multi_paragraph (subtree (et, common (p1, p2)))) return false; return true; }
tree edit_select_rep::selection_get () { if (!selection_active_any ()) return ""; if (selection_active_table ()) { int row1, col1, row2, col2; path fp= selection_get_subtable (row1, col1, row2, col2); return table_get_subtable (fp, row1, col1, row2, col2); } else { path start, end; // cout << "Selecting...\n"; selection_get (start, end); // cout << "Between paths: " << start << " and " << end << "\n"; tree t= selection_compute (et, start, end); // cout << "Selection : " << t << "\n"; return simplify_correct (t); } }
void edit_main_rep::show_selection () { selection sel; selection_get (sel); cout << "physical selection: " << cur_sel << "\n"; cout << "logical selection: " << sel->start << " --- " << sel->end << "\n"; }
tree edit_select_rep::selection_get_cut () { tree t= selection_get (); selection_cut ("none"); return t; }