예제 #1
0
/**
 * @brief Slot called when the current tab changes.
 * @param index Index of the new current tab.
 */
void EditorTabs::current_editor_changed(int /* index */) {

  Editor* editor = get_editor();
  if (editor == nullptr) {
    get_undo_group().setActiveStack(nullptr);
    emit can_cut_changed(false);
    emit can_copy_changed(false);
    emit can_paste_changed(false);
  }
  else {
    get_undo_group().setActiveStack(&editor->get_undo_stack());
    connect(editor, &Editor::can_cut_changed, [=](bool can_cut) {
      if (get_editor() == editor) {
        emit can_cut_changed(can_cut);
      }
    });
    connect(editor, &Editor::can_copy_changed, [=](bool can_copy) {
      if (get_editor() == editor) {
        emit can_copy_changed(can_copy);
      }
    });
    connect(editor, &Editor::can_paste_changed, [=](bool can_paste) {
      if (get_editor() == editor) {
        emit can_paste_changed(can_paste);
      }
    });
    emit can_cut_changed(editor->can_cut());
    emit can_copy_changed(editor->can_copy());
    emit can_paste_changed(editor->can_paste());
  }
}
/**
 * @brief Slot called when the user changes the selection in the map.
 */
void MapEditor::map_selection_changed() {

  // Update whether cut/copy are available.
  bool empty_selection = ui.map_view->is_selection_empty();
  can_cut_changed(!empty_selection);
  can_copy_changed(!empty_selection);
}