void LoadMaskCommand::onExecute(Context* context) { const ContextReader reader(context); if (context->isUIAvailable()) { FileSelectorFiles selectedFilename; if (!app::show_file_selector( "Load .msk File", m_filename, "msk", FileSelectorType::Open, selectedFilename)) return; m_filename = selectedFilename.front(); } base::UniquePtr<Mask> mask(load_msk_file(m_filename.c_str())); if (!mask) throw base::Exception("Error loading .msk file: %s", static_cast<const char*>(m_filename.c_str())); { ContextWriter writer(reader); Document* document = writer.document(); Transaction transaction(writer.context(), "Mask Load", DoesntModifyDocument); transaction.execute(new cmd::SetMask(document, mask)); transaction.commit(); document->generateMaskBoundaries(); update_screen_for_document(document); } }
void LoadMaskCommand::onExecute(Context* context) { const ContextReader reader(context); base::string filename = m_filename; if (context->isUiAvailable()) { filename = app::show_file_selector("Load .msk File", filename, "msk"); if (filename.empty()) return; m_filename = filename; } base::UniquePtr<Mask> mask(load_msk_file(m_filename.c_str())); if (!mask) throw base::Exception("Error loading .msk file: %s", static_cast<const char*>(m_filename.c_str())); { ContextWriter writer(reader); Document* document = writer.document(); UndoTransaction undo(writer.context(), "Mask Load", undo::DoesntModifyDocument); // Add the mask change into the undo history. if (undo.isEnabled()) undo.pushUndoer(new undoers::SetMask(undo.getObjects(), document)); document->setMask(mask); undo.commit(); document->generateMaskBoundaries(); update_screen_for_document(document); } }
void LoadMaskCommand::onExecute(Context* context) { const ActiveDocumentReader document(context); base::string filename = m_filename; if (context->isUiAvailable()) { filename = ase_file_selector("Load .msk File", filename, "msk"); if (filename.empty()) return; m_filename = filename; } UniquePtr<Mask> mask(load_msk_file(m_filename.c_str())); if (!mask) throw base::Exception("Error loading .msk file: %s", static_cast<const char*>(m_filename.c_str())); { DocumentWriter documentWriter(document); undo::UndoHistory* undo(documentWriter->getUndoHistory()); // Add the mask change into the undo history. if (undo->isEnabled()) { undo->setLabel("Mask Load"); undo->setModification(undo::DoesntModifyDocument); undo->pushUndoer(new undoers::SetMask(undo->getObjects(), documentWriter)); } documentWriter->setMask(mask); documentWriter->generateMaskBoundaries(); } update_screen_for_document(document); }