bool ViewProviderSheet::onDelete(const std::vector<std::string> &) { // If view is closed, delete the object if (view.isNull()) return true; // View is not closed, delete cell contents instead if it is active if (Gui::Application::Instance->activeDocument()) { Gui::MDIView* activeWindow = Gui::getMainWindow()->activeWindow(); SpreadsheetGui::SheetView * sheetView = freecad_dynamic_cast<SpreadsheetGui::SheetView>(activeWindow); if (sheetView) { Sheet * sheet = sheetView->getSheet(); QModelIndexList selection = sheetView->selectedIndexes(); if (selection.size() > 0) { Gui::Command::openCommand("Clear cell(s)"); std::vector<Range> ranges = sheetView->selectedRanges(); std::vector<Range>::const_iterator i = ranges.begin(); for (; i != ranges.end(); ++i) { Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.clear('%s')", sheet->getNameInDocument(), i->rangeString().c_str()); } Gui::Command::commitCommand(); Gui::Command::doCommand(Gui::Command::Doc, "App.ActiveDocument.recompute()"); } } } return false; }
void CmdSpreadsheetSetAlias::activated(int iMsg) { if (getActiveGuiDocument()) { Gui::MDIView* activeWindow = Gui::getMainWindow()->activeWindow(); SpreadsheetGui::SheetView * sheetView = freecad_dynamic_cast<SpreadsheetGui::SheetView>(activeWindow); if (sheetView) { Sheet * sheet = sheetView->getSheet(); QModelIndexList selection = sheetView->selectedIndexes(); if (selection.size() == 1) { std::vector<Range> range; range.push_back(Range(selection[0].row(), selection[0].column(), selection[0].row(), selection[0].column())); std::auto_ptr<PropertiesDialog> dialog(new PropertiesDialog(sheet, range, sheetView)); dialog->selectAlias(); if (dialog->exec() == QDialog::Accepted) dialog->apply(); } } } }
void CmdSpreadsheetStyleUnderline::activated(int iMsg) { Q_UNUSED(iMsg); if (getActiveGuiDocument()) { Gui::MDIView* activeWindow = Gui::getMainWindow()->activeWindow(); SpreadsheetGui::SheetView * sheetView = freecad_dynamic_cast<SpreadsheetGui::SheetView>(activeWindow); if (sheetView) { Sheet * sheet = sheetView->getSheet(); QModelIndexList selection = sheetView->selectedIndexes(); if (selection.size() > 0) { bool allUnderline = true; for (QModelIndexList::const_iterator it = selection.begin(); it != selection.end(); ++it) { const Cell * cell = sheet->getCell(CellAddress((*it).row(), (*it).column())); if (cell) { std::set<std::string> style; cell->getStyle(style); if (style.find("underline") == style.end()) { allUnderline = false; break; } } } std::vector<Range> ranges = sheetView->selectedRanges(); std::vector<Range>::const_iterator i = ranges.begin(); Gui::Command::openCommand("Set underline text"); for (; i != ranges.end(); ++i) { if (!allUnderline) Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setStyle('%s', 'underline', 'add')", sheet->getNameInDocument(), i->rangeString().c_str()); else Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.setStyle('%s', 'underline', 'remove')", sheet->getNameInDocument(), i->rangeString().c_str()); } Gui::Command::commitCommand(); Gui::Command::doCommand(Gui::Command::Doc, "App.ActiveDocument.recompute()"); } } } }
bool CmdSpreadsheetSetAlias::isActive() { if (getActiveGuiDocument()) { Gui::MDIView* activeWindow = Gui::getMainWindow()->activeWindow(); if (activeWindow) { SpreadsheetGui::SheetView * sheetView = freecad_dynamic_cast<SpreadsheetGui::SheetView>(activeWindow); if (sheetView) { QModelIndexList selection = sheetView->selectedIndexes(); if (selection.size() == 1) return true; } } } return false; }