Download src/Mod/Spreadsheet/Gui/Workbench.cpp from AbdulElahGwaith/FreeCAD: direct link, hf CLI and curl.
- Browser
- Download file 11 kB
-
https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/Spreadsheet/Gui/Workbench.cpp
- Command line
-
hf download hf://AbdulElahGwaith/FreeCAD/src/Mod/Spreadsheet/Gui/Workbench.cpp
-
curl -L -o Workbench.cpp https://huggingface.co/AbdulElahGwaith/FreeCAD/resolve/main/src/Mod/Spreadsheet/Gui/Workbench.cpp
11 kB
| // SPDX-License-Identifier: LGPL-2.1-or-later | |
| /*************************************************************************** | |
| * Copyright (c) 2005 Werner Mayer <wmayer[at]users.sourceforge.net> * | |
| * Copyright (c) 2015 Eivind Kvedalen (eivind@kvedalen.name) * | |
| * * | |
| * This file is part of the FreeCAD CAx development system. * | |
| * * | |
| * This library is free software; you can redistribute it and/or * | |
| * modify it under the terms of the GNU Library General Public * | |
| * License as published by the Free Software Foundation; either * | |
| * version 2 of the License, or (at your option) any later version. * | |
| * * | |
| * This library is distributed in the hope that it will be useful, * | |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of * | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * | |
| * GNU Library General Public License for more details. * | |
| * * | |
| * You should have received a copy of the GNU Library General Public * | |
| * License along with this library; see the file COPYING.LIB. If not, * | |
| * write to the Free Software Foundation, Inc., 59 Temple Place, * | |
| * Suite 330, Boston, MA 02111-1307, USA * | |
| * * | |
| ***************************************************************************/ | |
| using namespace Base; | |
| using namespace App; | |
| using namespace SpreadsheetGui; | |
| using namespace Spreadsheet; | |
| qApp->translate("Workbench", "Spreadsheet"); | |
| qApp->translate("Workbench", "&Spreadsheet"); | |
| qApp->translate("Workbench", "&Alignment"); | |
| qApp->translate("Workbench", "&Styles"); | |
| /// @namespace ImageGui @class Workbench | |
| TYPESYSTEM_SOURCE(SpreadsheetGui::Workbench, Gui::StdWorkbench) | |
| Workbench::Workbench() | |
| : Gui::StdWorkbench() | |
| , initialized(false) | |
| , workbenchHelper(new WorkbenchHelper) | |
| {} | |
| Workbench::~Workbench() = default; | |
| void Workbench::activated() | |
| { | |
| if (!initialized) { | |
| QList<QToolBar*> bars = Gui::getMainWindow()->findChildren<QToolBar*>( | |
| QStringLiteral("Spreadsheet") | |
| ); | |
| if (bars.size() == 1) { | |
| QToolBar* bar = bars[0]; | |
| QtColorPicker* foregroundColor; | |
| QtColorPicker* backgroundColor; | |
| QPalette palette = Gui::getMainWindow()->palette(); | |
| QList<QtColorPicker*> fgList = Gui::getMainWindow()->findChildren<QtColorPicker*>( | |
| QStringLiteral("Spreadsheet_ForegroundColor") | |
| ); | |
| if (!fgList.empty()) { | |
| foregroundColor = fgList[0]; | |
| } | |
| else { | |
| foregroundColor = new QtColorPicker(bar); | |
| foregroundColor->setObjectName(QStringLiteral("Spreadsheet_ForegroundColor")); | |
| foregroundColor->setStandardColors(); | |
| foregroundColor->setCurrentColor(palette.color(QPalette::WindowText)); | |
| QObject::connect( | |
| foregroundColor, | |
| &QtColorPicker::colorSet, | |
| workbenchHelper.get(), | |
| &WorkbenchHelper::setForegroundColor | |
| ); | |
| } | |
| foregroundColor->setToolTip(QObject::tr("Sets the text color of cells")); | |
| foregroundColor->setWhatsThis(QObject::tr("Sets the text color of spreadsheet cells")); | |
| foregroundColor->setStatusTip(QObject::tr("Sets the text color of spreadsheet cells")); | |
| bar->addWidget(foregroundColor); | |
| QList<QtColorPicker*> bgList = Gui::getMainWindow()->findChildren<QtColorPicker*>( | |
| QStringLiteral("Spreadsheet_BackgroundColor") | |
| ); | |
| if (!bgList.empty()) { | |
| backgroundColor = bgList[0]; | |
| } | |
| else { | |
| backgroundColor = new QtColorPicker(bar); | |
| backgroundColor->setObjectName(QStringLiteral("Spreadsheet_BackgroundColor")); | |
| backgroundColor->setStandardColors(); | |
| backgroundColor->setCurrentColor(palette.color(QPalette::Base)); | |
| QObject::connect( | |
| backgroundColor, | |
| &QtColorPicker::colorSet, | |
| workbenchHelper.get(), | |
| &WorkbenchHelper::setBackgroundColor | |
| ); | |
| } | |
| backgroundColor->setToolTip(QObject::tr("Sets the background color of cells")); | |
| backgroundColor->setWhatsThis(QObject::tr("Sets the spreadsheet cells background color")); | |
| backgroundColor->setStatusTip(QObject::tr("Sets the background color of cells")); | |
| bar->addWidget(backgroundColor); | |
| initialized = false; | |
| } | |
| } | |
| } | |
| void WorkbenchHelper::setForegroundColor(const QColor& color) | |
| { | |
| Gui::Document* doc = Gui::Application::Instance->activeDocument(); | |
| if (doc) { | |
| Gui::MDIView* activeWindow = Gui::getMainWindow()->activeWindow(); | |
| SpreadsheetGui::SheetView* sheetView = freecad_cast<SpreadsheetGui::SheetView*>(activeWindow); | |
| if (sheetView) { | |
| Sheet* sheet = sheetView->getSheet(); | |
| std::vector<Range> ranges = sheetView->selectedRanges(); | |
| // Execute mergeCells commands | |
| if (!ranges.empty()) { | |
| std::vector<Range>::const_iterator i = ranges.begin(); | |
| Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set text color")); | |
| for (; i != ranges.end(); ++i) { | |
| Gui::Command::doCommand( | |
| Gui::Command::Doc, | |
| "App.ActiveDocument.%s.setForeground('%s', (%f,%f,%f))", | |
| sheet->getNameInDocument(), | |
| i->rangeString().c_str(), | |
| color.redF(), | |
| color.greenF(), | |
| color.blueF() | |
| ); | |
| } | |
| Gui::Command::commitCommand(); | |
| Gui::Command::doCommand(Gui::Command::Doc, "App.ActiveDocument.recompute()"); | |
| } | |
| } | |
| } | |
| } | |
| void WorkbenchHelper::setBackgroundColor(const QColor& color) | |
| { | |
| Gui::Document* doc = Gui::Application::Instance->activeDocument(); | |
| if (doc) { | |
| Gui::MDIView* activeWindow = Gui::getMainWindow()->activeWindow(); | |
| SpreadsheetGui::SheetView* sheetView = freecad_cast<SpreadsheetGui::SheetView*>(activeWindow); | |
| if (sheetView) { | |
| Sheet* sheet = sheetView->getSheet(); | |
| std::vector<Range> ranges = sheetView->selectedRanges(); | |
| // Execute mergeCells commands | |
| if (!ranges.empty()) { | |
| std::vector<Range>::const_iterator i = ranges.begin(); | |
| Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Set background color")); | |
| for (; i != ranges.end(); ++i) { | |
| Gui::Command::doCommand( | |
| Gui::Command::Doc, | |
| "App.ActiveDocument.%s.setBackground('%s', (%f,%f,%f))", | |
| sheet->getNameInDocument(), | |
| i->rangeString().c_str(), | |
| color.redF(), | |
| color.greenF(), | |
| color.blueF() | |
| ); | |
| } | |
| Gui::Command::commitCommand(); | |
| Gui::Command::doCommand(Gui::Command::Doc, "App.ActiveDocument.recompute()"); | |
| } | |
| } | |
| } | |
| } | |
| Gui::MenuItem* Workbench::setupMenuBar() const | |
| { | |
| Gui::MenuItem* root = StdWorkbench::setupMenuBar(); | |
| Gui::MenuItem* item = root->findItem("&Windows"); | |
| Gui::MenuItem* spreadsheet = new Gui::MenuItem; | |
| root->insertItem(item, spreadsheet); | |
| // utilities | |
| Gui::MenuItem* alignments = new Gui::MenuItem; | |
| alignments->setCommand("&Alignment"); | |
| *alignments << "Spreadsheet_AlignLeft" | |
| << "Spreadsheet_AlignCenter" | |
| << "Spreadsheet_AlignRight" | |
| << "Spreadsheet_AlignTop" | |
| << "Spreadsheet_AlignVCenter" | |
| << "Spreadsheet_AlignBottom"; | |
| Gui::MenuItem* styles = new Gui::MenuItem; | |
| styles->setCommand("&Styles"); | |
| *styles << "Spreadsheet_StyleBold" | |
| << "Spreadsheet_StyleItalic" | |
| << "Spreadsheet_StyleUnderline"; | |
| spreadsheet->setCommand("&Spreadsheet"); | |
| *spreadsheet << "Spreadsheet_CreateSheet" | |
| << "Separator" | |
| << "Spreadsheet_Import" | |
| << "Spreadsheet_Export" | |
| << "Separator" | |
| << "Spreadsheet_MergeCells" | |
| << "Spreadsheet_SplitCell" | |
| << "Separator" << alignments << styles; | |
| return root; | |
| } | |
| Gui::ToolBarItem* Workbench::setupToolBars() const | |
| { | |
| Gui::ToolBarItem* root = StdWorkbench::setupToolBars(); | |
| Gui::ToolBarItem* part = new Gui::ToolBarItem(root); | |
| part->setCommand("Spreadsheet"); | |
| *part << "Spreadsheet_CreateSheet" | |
| << "Separator" | |
| << "Spreadsheet_Import" | |
| << "Spreadsheet_Export" | |
| << "Separator" | |
| << "Spreadsheet_MergeCells" | |
| << "Spreadsheet_SplitCell" | |
| << "Separator" | |
| << "Spreadsheet_AlignLeft" | |
| << "Spreadsheet_AlignCenter" | |
| << "Spreadsheet_AlignRight" | |
| << "Spreadsheet_AlignTop" | |
| << "Spreadsheet_AlignVCenter" | |
| << "Spreadsheet_AlignBottom" | |
| << "Separator" | |
| << "Spreadsheet_StyleBold" | |
| << "Spreadsheet_StyleItalic" | |
| << "Spreadsheet_StyleUnderline" | |
| << "Separator" | |
| << "Spreadsheet_SetAlias" | |
| << "Separator"; | |
| return root; | |
| } | |
| Gui::ToolBarItem* Workbench::setupCommandBars() const | |
| { | |
| Gui::ToolBarItem* root = new Gui::ToolBarItem; | |
| Gui::ToolBarItem* ss = new Gui::ToolBarItem(root); | |
| ss->setCommand("Spreadsheet"); | |
| *ss << "Spreadsheet_Open"; | |
| return root; | |
| } | |