Start: Remove old WB and replace with new

This commit is contained in:
Chris Hennes
2024-03-27 22:42:50 -05:00
parent 57bc297005
commit 820b16ef6b
137 changed files with 1909 additions and 32996 deletions

View File

@@ -36,6 +36,5 @@ macro(CheckInterModuleDependencies)
REQUIRES_MODS(BUILD_SANDBOX BUILD_PART BUILD_MESH)
REQUIRES_MODS(BUILD_SKETCHER BUILD_PART)
REQUIRES_MODS(BUILD_SPREADSHEET BUILD_DRAFT)
REQUIRES_MODS(BUILD_START BUILD_WEB)
REQUIRES_MODS(BUILD_TECHDRAW BUILD_PART BUILD_SPREADSHEET)
endmacro(CheckInterModuleDependencies)

View File

@@ -132,7 +132,7 @@ macro(InitializeFreeCADBuildOptions)
option(BUILD_TEST "Build the FreeCAD test module" ON)
option(BUILD_TECHDRAW "Build the FreeCAD Technical Drawing module" ON)
option(BUILD_TUX "Build the FreeCAD Tux module" ON)
option(BUILD_WEB "Build the FreeCAD web module" ON)
option(BUILD_WEB "Build the FreeCAD Web module" ON)
option(BUILD_SURFACE "Build the FreeCAD surface module" ON)
option(BUILD_VR "Build the FreeCAD Oculus Rift support (need Oculus SDK 4.x or higher)" OFF)
option(BUILD_CLOUD "Build the FreeCAD cloud module" OFF)

View File

@@ -95,6 +95,7 @@ macro(PrintFinalReport)
value(BUILD_DRAFT)
value(BUILD_DRAWING)
value(BUILD_FEM)
value(BUILD_WEB)
value(BUILD_HELP)
value(BUILD_IDF)
value(BUILD_IMPORT)
@@ -174,8 +175,6 @@ macro(PrintFinalReport)
"not built (BUILD_DESIGNER_PLUGIN is OFF)"
"[${DESIGNER_PLUGIN_LOCATION}/${libFreeCAD_widgets}]"
)
else()
simple(QtWebKitWidgets "not needed")
endif()
conditional(Shiboken Shiboken${SHIBOKEN_MAJOR_VERSION}_FOUND "not found" "${Shiboken_VERSION} [${SHIBOKEN_INCLUDE_DIR}]")
conditional(PySide PySide${PYSIDE_MAJOR_VERSION}_FOUND "not found" "${PySide_VERSION} [${PYSIDE_INCLUDE_DIR}]")

View File

@@ -10,10 +10,6 @@ if(BUILD_ASSEMBLY)
add_subdirectory(Assembly)
endif(BUILD_ASSEMBLY)
if(BUILD_CLEANSTART)
add_subdirectory(CleanStart)
endif(BUILD_CLEANSTART)
if(BUILD_CLOUD)
add_subdirectory(Cloud)
endif(BUILD_CLOUD)
@@ -119,7 +115,7 @@ if(BUILD_SPREADSHEET)
endif(BUILD_SPREADSHEET)
if(BUILD_START)
add_subdirectory(Start)
add_subdirectory(Start)
endif(BUILD_START)
if(BUILD_SURFACE)
@@ -142,5 +138,5 @@ if(BUILD_TUX)
endif(BUILD_TUX)
if(BUILD_WEB)
add_subdirectory(Web)
add_subdirectory(Web)
endif(BUILD_WEB)

View File

@@ -1,60 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#include <Base/Interpreter.h>
#include <Base/Tools.h>
#include <Base/Console.h>
#include <Base/PyObjectBase.h>
#include <3rdParty/GSL/include/gsl/pointers>
namespace CleanStart
{
class Module: public Py::ExtensionModule<Module>
{
public:
Module()
: Py::ExtensionModule<Module>("CleanStart")
{
initialize("This module is the CleanStart module."); // register with Python
}
};
PyObject* initModule()
{
auto newModule = gsl::owner<Module *>(new Module);
return Base::Interpreter().addModule(newModule); // Transfer ownership
}
} // namespace CleanStart
/* Python entry */
PyMOD_INIT_FUNC(CleanStart)
{
PyObject* mod = CleanStart::initModule();
Base::Console().Log("Loading CleanStart module... done\n");
PyMOD_Return(mod);
}

View File

@@ -1,50 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# /****************************************************************************
# * *
# * Copyright (c) 2024 The FreeCAD Project Association AISBL *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD 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 *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************/
include_directories(
${PYTHON_INCLUDE_DIRS}
${QtCore_INCLUDE_DIRS}
)
set(CleanStart_LIBS
FreeCADApp
)
SET(CleanStart_SRCS
AppCleanStart.cpp
DisplayedFilesModel.cpp
DisplayedFilesModel.h
ExamplesModel.cpp
ExamplesModel.h
PreCompiled.cpp
PreCompiled.h
RecentFilesModel.cpp
RecentFilesModel.h)
add_library(CleanStart SHARED ${CleanStart_SRCS})
target_link_libraries(CleanStart ${CleanStart_LIBS})
SET_BIN_DIR(CleanStart CleanStart /Mod/CleanStart)
SET_PYTHON_PREFIX_SUFFIX(CleanStart)
INSTALL(TARGETS CleanStart DESTINATION ${CMAKE_INSTALL_LIBDIR})

View File

@@ -1,25 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"

View File

@@ -1,51 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef CLEANSTART_PRECOMPILED_H
#define CLEANSTART_PRECOMPILED_H
#include <FCConfig.h>
#ifdef _MSC_VER
#pragma warning(disable : 5208)
#endif
#ifdef _PreComp_
// standard
#include <cinttypes>
#include <cmath>
#include <iomanip>
#include <map>
#include <sstream>
#include <string>
#include <vector>
#include <unordered_map>
// Qt (should never include GUI files, only QtCore)
#include <QDir>
#include <QFile>
#include <QFileInfo>
#endif // _PreComp_
#endif // CLEANSTART_PRECOMPILED_H

View File

@@ -1,49 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# /****************************************************************************
# * *
# * Copyright (c) 2024 The FreeCAD Project Association AISBL *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD 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 *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************/
add_subdirectory(App)
set(CleanStart_Scripts
Init.py
)
if (BUILD_GUI)
add_subdirectory(Gui)
list(APPEND CleanStart_Scripts InitGui.py)
endif (BUILD_GUI)
add_custom_target(CleanStartScripts ALL
SOURCES ${CleanStart_Scripts}
)
fc_target_copy_resource(CleanStartScripts
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_BINARY_DIR}/Mod/CleanStart
${CleanStart_Scripts})
INSTALL(
FILES
${CleanStart_Scripts}
DESTINATION
Mod/CleanStart
)

View File

@@ -1,48 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include <FCGlobal.h>
#ifndef LAUNCHER_GLOBAL_H
#define LAUNCHER_GLOBAL_H
// CleanStart
#ifndef CleanStartExport
#ifdef CleanStart_EXPORTS
#define CleanStartExport FREECAD_DECL_EXPORT
#else
#define CleanStartExport FREECAD_DECL_IMPORT
#endif
#endif
// CleanStartGui
#ifndef CleanStartGuiExport
#ifdef CleanStartGui_EXPORTS
#define CleanStartGuiExport FREECAD_DECL_EXPORT
#else
#define CleanStartGuiExport FREECAD_DECL_IMPORT
#endif
#endif
#endif // LAUNCHER_GLOBAL_H

View File

@@ -1,81 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#include <Base/Console.h>
#include <Base/Interpreter.h>
#include <Base/PyObjectBase.h>
#include <Gui/Language/Translator.h>
#include <QString>
#include <3rdParty/GSL/include/gsl/pointers>
#include "Workbench.h"
void loadCleanStartResource()
{
// add resources and reloads the translators
Q_INIT_RESOURCE(CleanStart);
Q_INIT_RESOURCE(CleanStart_translation);
Gui::Translator::instance()->refresh();
}
namespace CleanStartGui
{
extern PyObject* initModule();
}
namespace CleanStartGui
{
class Module: public Py::ExtensionModule<Module>
{
public:
Module()
: Py::ExtensionModule<Module>("CleanStartGui")
{
initialize("This module is the CleanStartGui module."); // register with Python
}
};
PyObject* initModule()
{
auto newModule = gsl::owner<Module*>(new Module);
return Base::Interpreter().addModule(newModule); // Transfer ownership
}
} // namespace CleanStartGui
/* Python entry */
PyMOD_INIT_FUNC(CleanStartGui)
{
Base::Console().Log("Loading GUI of CleanStart module... ");
PyObject* mod = CleanStartGui::initModule();
CleanStartGui::Workbench::init();
loadCleanStartResource();
Base::Console().Log("done\n");
PyMOD_Return(mod);
}

View File

@@ -1,89 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# /****************************************************************************
# * *
# * Copyright (c) 2024 The FreeCAD Project Association AISBL *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD 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 *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************/
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${PYTHON_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIR}
${XercesC_INCLUDE_DIRS}
${QtCore_INCLUDE_DIRS}
${QtWidgets_INCLUDE_DIRS}
${QtSvg_INCLUDE_DIRS}
#${QtNetwork_INCLUDE_DIRS}
${QtUiTools_INCLUDE_DIRS}
#${QtQuick_INCLUDE_DIRS}
#${QtQuickWidgets_INCLUDE_DIRS}
)
set(CleanStartGui_LIBS
CleanStart
FreeCADGui
)
set(CleanStart_TR_QRC ${CMAKE_CURRENT_BINARY_DIR}/Resources/CleanStart_translation.qrc)
qt_find_and_add_translation(QM_SRCS "Resources/translations/*_*.ts"
${CMAKE_CURRENT_BINARY_DIR}/Resources/translations)
qt_create_resource_file(${CleanStart_TR_QRC} ${QM_SRCS})
qt_add_resources(CleanStart_QRC_SRCS Resources/CleanStart.qrc ${CleanStart_TR_QRC})
# qtquick_compiler_add_resources(CleanStart_QRC_SRCS Resources/CleanStart.qrc ${CleanStart_TR_QRC} qml.qrc)
SET(CleanStartGui_SRCS
${CleanStart_QRC_SRCS}
${CleanStartGui_UIC_SRCS}
AppCleanStartGui.cpp
Command.cpp
PreCompiled.cpp
PreCompiled.h
CleanStartView.cpp
CleanStartView.h
FileCardDelegate.cpp
FileCardDelegate.h
FileCardView.cpp
FileCardView.h
Workbench.cpp
Workbench.h
)
SET(CleanStartGuiIcon_SVG
Resources/icons/CleanStartWorkbench.svg
)
# TODO: Evaluate PCH use with Qt6/QtQuick/Qml
if (FREECAD_USE_PCH)
add_definitions(-D_PreComp_)
GET_MSVC_PRECOMPILED_SOURCE("PreCompiled.cpp" PCH_SRCS ${CleanStartGui_SRCS})
ADD_MSVC_PRECOMPILED_HEADER(CleanStartGui PreCompiled.h PreCompiled.cpp PCH_SRCS)
endif (FREECAD_USE_PCH)
add_library(CleanStartGui SHARED ${CleanStartGui_SRCS} ${CleanStartGuiIcon_SVG})
# target_link_libraries(CleanStartGui ${CleanStartGui_LIBS} Qt::Quick Qt::Qml Qt::QuickWidgets)
target_link_libraries(CleanStartGui ${CleanStartGui_LIBS})
SET_BIN_DIR(CleanStartGui CleanStartGui /Mod/CleanStart)
SET_PYTHON_PREFIX_SUFFIX(CleanStartGui)
fc_copy_sources(CleanStartGui "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/CleanStart" ${CleanStartGuiIcon_SVG})
INSTALL(TARGETS CleanStartGui DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES ${CleanStartGuiIcon_SVG} DESTINATION "${CMAKE_INSTALL_DATADIR}/Mod/CleanStart/Resources/icons")

View File

@@ -1,62 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#include <Gui/Application.h>
#include <Gui/Command.h>
#include <3rdParty/GSL/include/gsl/pointers>
#include "Workbench.h"
using namespace std;
DEF_STD_CMD(CmdCleanStart)
CmdCleanStart::CmdCleanStart()
: Command("CleanStart_CleanStart")
{
sAppModule = "CleanStart";
sGroup = QT_TR_NOOP("CleanStart");
sMenuText = QT_TR_NOOP("CleanStart");
sToolTipText = QT_TR_NOOP("Displays the CleanStart in an MDI view");
sWhatsThis = "CleanStart_CleanStart";
sStatusTip = sToolTipText;
sPixmap = "CleanStartWorkbench";
}
void CmdCleanStart::activated(int iMsg)
{
Q_UNUSED(iMsg);
CleanStartGui::Workbench::loadCleanStart();
}
void CreateCleanStartCommands()
{
Gui::CommandManager& rcCmdMgr = Gui::Application::Instance->commandManager();
auto newCommand = gsl::owner<CmdCleanStart*>(new CmdCleanStart);
rcCmdMgr.addCommand(newCommand); // Transfer ownership
}

View File

@@ -1,25 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"

View File

@@ -1,65 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef CLEANSTARTGUI_PRECOMPILED_H
#define CLEANSTARTGUI_PRECOMPILED_H
#include <FCConfig.h>
#ifdef _MSC_VER
#pragma warning(disable : 5208)
#endif
#ifdef _PreComp_
// standard
#include <cinttypes>
#include <cmath>
#include <iomanip>
#include <map>
#include <sstream>
#include <string>
#include <vector>
#include <unordered_map>
// Qt
#include <QCoreApplication>
#include <QFile>
#include <QFileIconProvider>
#include <QGridLayout>
#include <QGuiApplication>
#include <QImageReader>
#include <QLabel>
#include <QListView>
#include <QModelIndex>
#include <QPainter>
#include <QPushButton>
#include <QScrollArea>
#include <QSpacerItem>
#include <QStyleOptionViewItem>
#include <QUrl>
#include <QVBoxLayout>
#include <QWidget>
#endif // _PreComp_
#endif // CLEANSTARTGUI_PRECOMPILED_H

View File

@@ -1,5 +0,0 @@
<RCC>
<qresource prefix="/">
<file>icons/CleanStartWorkbench.svg</file>
</qresource>
</RCC>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,87 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QCoreApplication>
#include <QLayout>
#endif
#include <Base/Console.h>
#include <Base/Exception.h>
#include <Gui/Command.h>
#include <Gui/DockWindowManager.h>
#include <Gui/MDIView.h>
#include <Gui/MainWindow.h>
#include <Gui/ToolBarManager.h>
#include "Workbench.h"
#include "CleanStartView.h"
#include <3rdParty/GSL/include/gsl/pointers>
using namespace CleanStartGui;
TYPESYSTEM_SOURCE(CleanStartGui::Workbench, Gui::StdWorkbench) // NOLINT
void CleanStartGui::Workbench::activated()
{
loadCleanStart();
}
void CleanStartGui::Workbench::loadCleanStart()
{
auto mw = Gui::getMainWindow();
auto doc = Gui::Application::Instance->activeDocument();
auto existingView = mw->findChild<CleanStartView*>(QLatin1String("CleanStartView"));
if (!existingView) {
existingView = gsl::owner<CleanStartView*> (new CleanStartView (doc, mw));
mw->addWindow(existingView); // Transfers ownership
}
Gui::getMainWindow()->setActiveWindow(existingView);
existingView->show();
}
Gui::MenuItem* CleanStartGui::Workbench::setupMenuBar() const
{
return Gui::StdWorkbench::setupMenuBar();
}
Gui::ToolBarItem* CleanStartGui::Workbench::setupToolBars() const
{
return Gui::StdWorkbench::setupToolBars();
}
Gui::ToolBarItem* CleanStartGui::Workbench::setupCommandBars() const
{
return Gui::StdWorkbench::setupCommandBars();
}
Gui::DockWindowItems* CleanStartGui::Workbench::setupDockWindows() const
{
Gui::DockWindowItems* root = Gui::StdWorkbench::setupDockWindows();
root->setVisibility(false); // hide all dock windows by default
root->setVisibility("Std_ComboView", true); // except of the combo view
root->setVisibility("Std_TaskView", true); // and the task view
return root;
}

View File

@@ -1,63 +0,0 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef LAUNCHERGUI_WORKBENCH_H
#define LAUNCHERGUI_WORKBENCH_H
#include <Gui/Workbench.h>
#include <memory>
namespace Gui {
class MDIView;
}
namespace CleanStartGui
{
class Workbench: public Gui::StdWorkbench
{
TYPESYSTEM_HEADER_WITH_OVERRIDE(); // NOLINT
public:
Workbench() = default;
/** Run some actions when the workbench gets activated. */
void activated() override;
static void loadCleanStart();
protected:
/** Defines the standard menus. */
Gui::MenuItem* setupMenuBar() const override;
/** Defines the standard toolbars. */
Gui::ToolBarItem* setupToolBars() const override;
/** Defines the standard command bars. */
Gui::ToolBarItem* setupCommandBars() const override;
/** Returns a DockWindowItems structure of dock windows this workbench. */
Gui::DockWindowItems* setupDockWindows() const override;
}; // class Workbench
} // namespace CleanStartGui
#endif // LAUNCHERGUI_WORKBENCH_H

View File

@@ -1,29 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# /**************************************************************************
# *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
# *
# This file is part of FreeCAD. *
# *
# FreeCAD is free software: you can redistribute it and/or modify it *
# under the terms of the GNU Lesser General Public License as *
# published by the Free Software Foundation, either version 2.1 of the *
# License, or (at your option) any later version. *
# *
# FreeCAD 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 *
# Lesser General Public License for more details. *
# *
# You should have received a copy of the GNU Lesser General Public *
# License along with FreeCAD. If not, see *
# <https://www.gnu.org/licenses/>. *
# *
# **************************************************************************/
# Get the Parameter Group of this module
ParGrp = App.ParamGet("System parameter:Modules").GetGroup("CleanStart")
# Set the needed information
ParGrp.SetString("WorkBenchName", "CleanStart")
ParGrp.SetString("WorkBenchModule", "CleanStart.py")

View File

@@ -1,51 +0,0 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# /**************************************************************************
# *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
# *
# This file is part of FreeCAD. *
# *
# FreeCAD is free software: you can redistribute it and/or modify it *
# under the terms of the GNU Lesser General Public License as *
# published by the Free Software Foundation, either version 2.1 of the *
# License, or (at your option) any later version. *
# *
# FreeCAD 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 *
# Lesser General Public License for more details. *
# *
# You should have received a copy of the GNU Lesser General Public *
# License along with FreeCAD. If not, see *
# <https://www.gnu.org/licenses/>. *
# *
# **************************************************************************/
class CleanStartWorkbench(Workbench):
"CleanStartWorkbench workbench"
def __init__(self):
self.__class__.Icon = (
FreeCAD.getResourceDir() + "Mod/Start/Resources/icons/StartWorkbench.svg"
)
self.__class__.MenuText = "Start (new!)"
self.__class__.ToolTip = "Start workbench"
def Initialize(self):
import CleanStartGui
def Activated(self):
pass
def Deactivated(self):
pass
def ContextMenu(self, recipient):
pass
def GetClassName(self):
return "CleanStartGui::Workbench"
Gui.addWorkbench(CleanStartWorkbench())

View File

@@ -1,31 +1,35 @@
/***************************************************************************
* Copyright (c) 2010 Jürgen Riegel <juergen.riegel@web.de> *
* *
* 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 *
* *
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#include <Base/Console.h>
#include <Base/Interpreter.h>
#include <Base/Tools.h>
#include <Base/Console.h>
#include <Base/PyObjectBase.h>
#include <3rdParty/GSL/include/gsl/pointers>
namespace Start
{
@@ -37,13 +41,12 @@ public:
{
initialize("This module is the Start module."); // register with Python
}
private:
};
PyObject* initModule()
{
return Base::Interpreter().addModule(new Module);
auto newModule = gsl::owner<Module*>(new Module);
return Base::Interpreter().addModule(newModule); // Transfer ownership
}
} // namespace Start

View File

@@ -1,20 +1,45 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
# /****************************************************************************
# * *
# * Copyright (c) 2024 The FreeCAD Project Association AISBL *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD 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 *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************/
include_directories(
${Boost_INCLUDE_DIRS}
${OCC_INCLUDE_DIR}
${ZLIB_INCLUDE_DIR}
${PYTHON_INCLUDE_DIRS}
${PYTHON_INCLUDE_DIRS}
${QtCore_INCLUDE_DIRS}
)
set(Start_LIBS
FreeCADApp
)
FreeCADApp
)
SET(Start_SRCS
AppStart.cpp
PreCompiled.cpp
PreCompiled.h
StartConfiguration.h
)
AppStart.cpp
DisplayedFilesModel.cpp
DisplayedFilesModel.h
ExamplesModel.cpp
ExamplesModel.h
PreCompiled.cpp
PreCompiled.h
RecentFilesModel.cpp
RecentFilesModel.h)
add_library(Start SHARED ${Start_SRCS})
target_link_libraries(Start ${Start_LIBS})

View File

@@ -1,221 +1,223 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QByteArray>
#include <QFile>
#include <QFileInfo>
#endif
#include "DisplayedFilesModel.h"
#include <App/Application.h>
#include <App/ProjectFile.h>
using namespace CleanStart;
namespace
{
std::string humanReadableSize(unsigned int bytes)
{
static const std::vector<std::string> siPrefix {
"b",
"kb",
"Mb",
"Gb",
"Tb",
"Pb",
"Eb" // I think it's safe to stop here (for the time being)...
};
size_t base = 0;
double inUnits = bytes;
constexpr double siFactor {1000.0};
while (inUnits > siFactor && base < siPrefix.size() - 1) {
++base;
inUnits /= siFactor;
}
if (base == 0) {
// Don't include a decimal point for bytes
return fmt::format("{:.0f} {}", inUnits, siPrefix[base]);
}
// For all others, include one digit after the decimal place
return fmt::format("{:.1f} {}", inUnits, siPrefix[base]);
}
FileStats fileInfoFromFreeCADFile(const std::string& path)
{
App::ProjectFile proj(path);
proj.loadDocument();
auto metadata = proj.getMetadata();
FileStats result;
result.insert(std::make_pair(DisplayedFilesModelRoles::author, metadata.createdBy));
result.insert(std::make_pair(DisplayedFilesModelRoles::modifiedTime, metadata.lastModifiedDate));
result.insert(std::make_pair(DisplayedFilesModelRoles::creationTime, metadata.creationDate));
result.insert(std::make_pair(DisplayedFilesModelRoles::company, metadata.company));
result.insert(std::make_pair(DisplayedFilesModelRoles::license, metadata.license));
result.insert(std::make_pair(DisplayedFilesModelRoles::description, metadata.comment));
return result;
}
/// Load the thumbnail image data (if any) that is stored in an FCStd file.
/// \returns The image bytes, or an empty QByteArray (if no thumbnail was stored)
QByteArray loadFCStdThumbnail(const std::string & pathToFCStdFile)
{
App::ProjectFile proj(pathToFCStdFile);
if (proj.loadDocument()) {
try {
std::string thumbnailFile = proj.extractInputFile("thumbnails/Thumbnail.png");
auto inputFile = QFile(QString::fromStdString(thumbnailFile));
inputFile.open(QIODevice::OpenModeFlag::ReadOnly);
return inputFile.readAll();
}
catch (...) {
}
}
return {};
}
FileStats getFileInfo(const std::string& path)
{
FileStats result;
Base::FileInfo file(path);
if (file.hasExtension("FCStd")) {
result = fileInfoFromFreeCADFile(path);
}
else {
file.lastModified();
}
result.insert(std::make_pair(DisplayedFilesModelRoles::path, path));
result.insert(std::make_pair(DisplayedFilesModelRoles::size, humanReadableSize(file.size())));
result.insert(std::make_pair(DisplayedFilesModelRoles::baseName, file.fileName()));
return result;
}
} // namespace
DisplayedFilesModel::DisplayedFilesModel(QObject* parent) : QAbstractListModel(parent)
{
}
int DisplayedFilesModel::rowCount(const QModelIndex& parent) const
{
Q_UNUSED(parent);
return static_cast<int>(_fileInfoCache.size());
}
QVariant DisplayedFilesModel::data(const QModelIndex& index, int roleAsInt) const
{
int row = index.row();
if (row < 0 || row >= static_cast<int>(_fileInfoCache.size())) {
return {};
}
auto mapEntry = _fileInfoCache.at(row);
auto role = static_cast<DisplayedFilesModelRoles>(roleAsInt);
switch (role) {
case DisplayedFilesModelRoles::author: // NOLINT(bugprone-branch-clone)
[[fallthrough]];
case DisplayedFilesModelRoles::baseName:
[[fallthrough]];
case DisplayedFilesModelRoles::company:
[[fallthrough]];
case DisplayedFilesModelRoles::creationTime:
[[fallthrough]];
case DisplayedFilesModelRoles::description:
[[fallthrough]];
case DisplayedFilesModelRoles::license:
[[fallthrough]];
case DisplayedFilesModelRoles::modifiedTime:
[[fallthrough]];
case DisplayedFilesModelRoles::path:
[[fallthrough]];
case DisplayedFilesModelRoles::size:
if (mapEntry.find(role) != mapEntry.end()) {
return QString::fromStdString(mapEntry.at(role));
}
else {
return {};
}
case DisplayedFilesModelRoles::image: {
auto path = QString::fromStdString(mapEntry.at(DisplayedFilesModelRoles::path));
if (_imageCache.contains(path)) {
return _imageCache[path];
}
break;
}
default:
break;
}
switch (roleAsInt) {
case Qt::ItemDataRole::ToolTipRole:
return QString::fromStdString(mapEntry.at(DisplayedFilesModelRoles::path));
}
return {};
}
bool freecadCanOpen (const QString& extension)
{
auto importTypes = App::GetApplication().getImportTypes();
return std::find(importTypes.begin(), importTypes.end(), extension.toStdString()) != importTypes.end();
}
void DisplayedFilesModel::addFile(const QString &filePath)
{
QFileInfo qfi (filePath);
if (!qfi.isReadable()){
return;
}
if (!freecadCanOpen(qfi.suffix())) {
return;
}
_fileInfoCache.emplace_back(getFileInfo(filePath.toStdString()));
if (qfi.completeSuffix() == QLatin1String("FCStd")) {
auto thumbnail = loadFCStdThumbnail(filePath.toStdString());
if (!thumbnail.isEmpty()) {
_imageCache.insert(filePath, thumbnail);
}
}
}
void DisplayedFilesModel::clear()
{
_fileInfoCache.clear();
}
QHash<int, QByteArray> DisplayedFilesModel::roleNames() const
{
static QHash<int, QByteArray> nameMap {
std::make_pair(int(DisplayedFilesModelRoles::author), "author"),
std::make_pair(int(DisplayedFilesModelRoles::baseName), "baseName"),
std::make_pair(int(DisplayedFilesModelRoles::company), "company"),
std::make_pair(int(DisplayedFilesModelRoles::creationTime), "creationTime"),
std::make_pair(int(DisplayedFilesModelRoles::description), "description"),
std::make_pair(int(DisplayedFilesModelRoles::image), "image"),
std::make_pair(int(DisplayedFilesModelRoles::license), "license"),
std::make_pair(int(DisplayedFilesModelRoles::modifiedTime), "modifiedTime"),
std::make_pair(int(DisplayedFilesModelRoles::path), "path"),
std::make_pair(int(DisplayedFilesModelRoles::size), "size"),
};
return nameMap;
}
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QByteArray>
#include <QFile>
#include <QFileInfo>
#endif
#include "DisplayedFilesModel.h"
#include <App/Application.h>
#include <App/ProjectFile.h>
using namespace Start;
namespace
{
std::string humanReadableSize(unsigned int bytes)
{
static const std::vector<std::string> siPrefix {
"b",
"kb",
"Mb",
"Gb",
"Tb",
"Pb",
"Eb" // I think it's safe to stop here (for the time being)...
};
size_t base = 0;
double inUnits = bytes;
constexpr double siFactor {1000.0};
while (inUnits > siFactor && base < siPrefix.size() - 1) {
++base;
inUnits /= siFactor;
}
if (base == 0) {
// Don't include a decimal point for bytes
return fmt::format("{:.0f} {}", inUnits, siPrefix[base]);
}
// For all others, include one digit after the decimal place
return fmt::format("{:.1f} {}", inUnits, siPrefix[base]);
}
FileStats fileInfoFromFreeCADFile(const std::string& path)
{
App::ProjectFile proj(path);
proj.loadDocument();
auto metadata = proj.getMetadata();
FileStats result;
result.insert(std::make_pair(DisplayedFilesModelRoles::author, metadata.createdBy));
result.insert(
std::make_pair(DisplayedFilesModelRoles::modifiedTime, metadata.lastModifiedDate));
result.insert(std::make_pair(DisplayedFilesModelRoles::creationTime, metadata.creationDate));
result.insert(std::make_pair(DisplayedFilesModelRoles::company, metadata.company));
result.insert(std::make_pair(DisplayedFilesModelRoles::license, metadata.license));
result.insert(std::make_pair(DisplayedFilesModelRoles::description, metadata.comment));
return result;
}
/// Load the thumbnail image data (if any) that is stored in an FCStd file.
/// \returns The image bytes, or an empty QByteArray (if no thumbnail was stored)
QByteArray loadFCStdThumbnail(const std::string& pathToFCStdFile)
{
App::ProjectFile proj(pathToFCStdFile);
if (proj.loadDocument()) {
try {
std::string thumbnailFile = proj.extractInputFile("thumbnails/Thumbnail.png");
auto inputFile = QFile(QString::fromStdString(thumbnailFile));
inputFile.open(QIODevice::OpenModeFlag::ReadOnly);
return inputFile.readAll();
}
catch (...) {
}
}
return {};
}
FileStats getFileInfo(const std::string& path)
{
FileStats result;
Base::FileInfo file(path);
if (file.hasExtension("FCStd")) {
result = fileInfoFromFreeCADFile(path);
}
else {
file.lastModified();
}
result.insert(std::make_pair(DisplayedFilesModelRoles::path, path));
result.insert(std::make_pair(DisplayedFilesModelRoles::size, humanReadableSize(file.size())));
result.insert(std::make_pair(DisplayedFilesModelRoles::baseName, file.fileName()));
return result;
}
} // namespace
DisplayedFilesModel::DisplayedFilesModel(QObject* parent)
: QAbstractListModel(parent)
{}
int DisplayedFilesModel::rowCount(const QModelIndex& parent) const
{
Q_UNUSED(parent);
return static_cast<int>(_fileInfoCache.size());
}
QVariant DisplayedFilesModel::data(const QModelIndex& index, int roleAsInt) const
{
int row = index.row();
if (row < 0 || row >= static_cast<int>(_fileInfoCache.size())) {
return {};
}
auto mapEntry = _fileInfoCache.at(row);
auto role = static_cast<DisplayedFilesModelRoles>(roleAsInt);
switch (role) {
case DisplayedFilesModelRoles::author: // NOLINT(bugprone-branch-clone)
[[fallthrough]];
case DisplayedFilesModelRoles::baseName:
[[fallthrough]];
case DisplayedFilesModelRoles::company:
[[fallthrough]];
case DisplayedFilesModelRoles::creationTime:
[[fallthrough]];
case DisplayedFilesModelRoles::description:
[[fallthrough]];
case DisplayedFilesModelRoles::license:
[[fallthrough]];
case DisplayedFilesModelRoles::modifiedTime:
[[fallthrough]];
case DisplayedFilesModelRoles::path:
[[fallthrough]];
case DisplayedFilesModelRoles::size:
if (mapEntry.find(role) != mapEntry.end()) {
return QString::fromStdString(mapEntry.at(role));
}
else {
return {};
}
case DisplayedFilesModelRoles::image: {
auto path = QString::fromStdString(mapEntry.at(DisplayedFilesModelRoles::path));
if (_imageCache.contains(path)) {
return _imageCache[path];
}
break;
}
default:
break;
}
switch (roleAsInt) {
case Qt::ItemDataRole::ToolTipRole:
return QString::fromStdString(mapEntry.at(DisplayedFilesModelRoles::path));
}
return {};
}
bool freecadCanOpen(const QString& extension)
{
auto importTypes = App::GetApplication().getImportTypes();
return std::find(importTypes.begin(), importTypes.end(), extension.toStdString())
!= importTypes.end();
}
void DisplayedFilesModel::addFile(const QString& filePath)
{
QFileInfo qfi(filePath);
if (!qfi.isReadable()) {
return;
}
if (!freecadCanOpen(qfi.suffix())) {
return;
}
_fileInfoCache.emplace_back(getFileInfo(filePath.toStdString()));
if (qfi.completeSuffix() == QLatin1String("FCStd")) {
auto thumbnail = loadFCStdThumbnail(filePath.toStdString());
if (!thumbnail.isEmpty()) {
_imageCache.insert(filePath, thumbnail);
}
}
}
void DisplayedFilesModel::clear()
{
_fileInfoCache.clear();
}
QHash<int, QByteArray> DisplayedFilesModel::roleNames() const
{
static QHash<int, QByteArray> nameMap {
std::make_pair(int(DisplayedFilesModelRoles::author), "author"),
std::make_pair(int(DisplayedFilesModelRoles::baseName), "baseName"),
std::make_pair(int(DisplayedFilesModelRoles::company), "company"),
std::make_pair(int(DisplayedFilesModelRoles::creationTime), "creationTime"),
std::make_pair(int(DisplayedFilesModelRoles::description), "description"),
std::make_pair(int(DisplayedFilesModelRoles::image), "image"),
std::make_pair(int(DisplayedFilesModelRoles::license), "license"),
std::make_pair(int(DisplayedFilesModelRoles::modifiedTime), "modifiedTime"),
std::make_pair(int(DisplayedFilesModelRoles::path), "path"),
std::make_pair(int(DisplayedFilesModelRoles::size), "size"),
};
return nameMap;
}

View File

@@ -1,85 +1,85 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_CLEANSTART_DISPLAYEDFILESMODEL_H
#define FREECAD_CLEANSTART_DISPLAYEDFILESMODEL_H
#include <QAbstractListModel>
#include <Base/Parameter.h>
#include <QtQml/QQmlTypeInfo>
#include "../CleanStartGlobal.h"
namespace CleanStart
{
enum class DisplayedFilesModelRoles
{
baseName = Qt::UserRole + 1,
image,
size,
author,
creationTime,
modifiedTime,
description,
company,
license,
path
};
using FileStats = std::map<DisplayedFilesModelRoles, std::string>;
/// A model for displaying a list of files including a thumbnail or icon, plus various file statistics.
class CleanStartExport DisplayedFilesModel: public QAbstractListModel
{
Q_OBJECT
public:
explicit DisplayedFilesModel(QObject* parent = nullptr);
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
void addFile(const QString &filePath);
void clear();
protected:
/// For communication with QML, define the text version of each role name defined in the
/// DisplayedFilesModelRoles enumeration
QHash<int, QByteArray> roleNames() const override;
/// Destroy and recreate the cache of info about the files. Should be connected to a signal
/// indicating when some piece of information about the files has changed. Does NOT generate
/// a new list of files, only re-caches the existing ones.
void reCacheFileInfo();
private:
std::vector<FileStats> _fileInfoCache;
QMap<QString, QByteArray> _imageCache;
};
} // namespace CleanStart
#endif // FREECAD_CLEANSTART_DISPLAYEDFILESMODEL_H
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_START_DISPLAYEDFILESMODEL_H
#define FREECAD_START_DISPLAYEDFILESMODEL_H
#include <QAbstractListModel>
#include <Base/Parameter.h>
#include <QtQml/QQmlTypeInfo>
#include "../StartGlobal.h"
namespace Start
{
enum class DisplayedFilesModelRoles
{
baseName = Qt::UserRole + 1,
image,
size,
author,
creationTime,
modifiedTime,
description,
company,
license,
path
};
using FileStats = std::map<DisplayedFilesModelRoles, std::string>;
/// A model for displaying a list of files including a thumbnail or icon, plus various file
/// statistics.
class StartExport DisplayedFilesModel: public QAbstractListModel
{
Q_OBJECT
public:
explicit DisplayedFilesModel(QObject* parent = nullptr);
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
void addFile(const QString& filePath);
void clear();
protected:
/// For communication with QML, define the text version of each role name defined in the
/// DisplayedFilesModelRoles enumeration
QHash<int, QByteArray> roleNames() const override;
/// Destroy and recreate the cache of info about the files. Should be connected to a signal
/// indicating when some piece of information about the files has changed. Does NOT generate
/// a new list of files, only re-caches the existing ones.
void reCacheFileInfo();
private:
std::vector<FileStats> _fileInfoCache;
QMap<QString, QByteArray> _imageCache;
};
} // namespace Start
#endif // FREECAD_START_DISPLAYEDFILESMODEL_H

View File

@@ -1,54 +1,57 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QDir>
#endif
#include "ExamplesModel.h"
#include <App/Application.h>
using namespace CleanStart;
FC_LOG_LEVEL_INIT(ExamplesModel)
ExamplesModel::ExamplesModel(QObject* parent) : DisplayedFilesModel(parent)
{
auto examplesPath = QDir(QString::fromStdString(App::Application::getResourceDir()));
_examplesDirectory.setPath (examplesPath.filePath(QLatin1String("examples")));
}
void ExamplesModel::loadExamples()
{
beginResetModel();
clear();
if (!_examplesDirectory.isReadable()) {
Base::Console().Warning("Cannot read %s", _examplesDirectory.absolutePath().toStdString().c_str());
}
auto entries = _examplesDirectory.entryList(QDir::Filter::Files | QDir::Filter::Readable, QDir::SortFlag::Name);
for (const auto & entry : entries) {
addFile(_examplesDirectory.filePath(entry));
}
endResetModel();
}
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QDir>
#endif
#include "ExamplesModel.h"
#include <App/Application.h>
using namespace Start;
FC_LOG_LEVEL_INIT(ExamplesModel)
ExamplesModel::ExamplesModel(QObject* parent)
: DisplayedFilesModel(parent)
{
auto examplesPath = QDir(QString::fromStdString(App::Application::getResourceDir()));
_examplesDirectory.setPath(examplesPath.filePath(QLatin1String("examples")));
}
void ExamplesModel::loadExamples()
{
beginResetModel();
clear();
if (!_examplesDirectory.isReadable()) {
Base::Console().Warning("Cannot read %s",
_examplesDirectory.absolutePath().toStdString().c_str());
}
auto entries = _examplesDirectory.entryList(QDir::Filter::Files | QDir::Filter::Readable,
QDir::SortFlag::Name);
for (const auto& entry : entries) {
addFile(_examplesDirectory.filePath(entry));
}
endResetModel();
}

View File

@@ -1,53 +1,54 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_CLEANSTART_EXAMPLESMODEL_H
#define FREECAD_CLEANSTART_EXAMPLESMODEL_H
#include <QAbstractListModel>
#include <QDir>
#include <Base/Parameter.h>
#include <QtQml/QQmlTypeInfo>
#include "DisplayedFilesModel.h"
#include "../CleanStartGlobal.h"
namespace CleanStart
{
/// A model for displaying a list of files including a thumbnail or icon, plus various file statistics.
class CleanStartExport ExamplesModel: public DisplayedFilesModel
{
Q_OBJECT
public:
explicit ExamplesModel(QObject* parent = nullptr);
void loadExamples();
private:
QDir _examplesDirectory;
};
} // namespace CleanStart
#endif // FREECAD_CLEANSTART_EXAMPLESMODEL_H
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_START_EXAMPLESMODEL_H
#define FREECAD_START_EXAMPLESMODEL_H
#include <QAbstractListModel>
#include <QDir>
#include <Base/Parameter.h>
#include <QtQml/QQmlTypeInfo>
#include "DisplayedFilesModel.h"
#include "../StartGlobal.h"
namespace Start
{
/// A model for displaying a list of files including a thumbnail or icon, plus various file
/// statistics.
class StartExport ExamplesModel: public DisplayedFilesModel
{
Q_OBJECT
public:
explicit ExamplesModel(QObject* parent = nullptr);
void loadExamples();
private:
QDir _examplesDirectory;
};
} // namespace Start
#endif // FREECAD_START_EXAMPLESMODEL_H

View File

@@ -1,23 +1,25 @@
/***************************************************************************
* Copyright (c) 2010 Jürgen Riegel <juergen.riegel@web.de> *
* *
* 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 *
* *
***************************************************************************/
#include "PreCompiled.h"
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"

View File

@@ -1,23 +1,24 @@
/***************************************************************************
* Copyright (c) 2008 Jürgen Riegel <juergen.riegel@web.de> *
* *
* 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 *
* *
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef START_PRECOMPILED_H
@@ -25,4 +26,26 @@
#include <FCConfig.h>
#ifdef _MSC_VER
#pragma warning(disable : 5208)
#endif
#ifdef _PreComp_
// standard
#include <cinttypes>
#include <cmath>
#include <iomanip>
#include <map>
#include <sstream>
#include <string>
#include <vector>
#include <unordered_map>
// Qt (should never include GUI files, only QtCore)
#include <QDir>
#include <QFile>
#include <QFileInfo>
#endif // _PreComp_
#endif // START_PRECOMPILED_H

View File

@@ -1,51 +1,52 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#endif
#include "RecentFilesModel.h"
#include <App/Application.h>
#include <App/ProjectFile.h>
using namespace CleanStart;
RecentFilesModel::RecentFilesModel(QObject* parent) : DisplayedFilesModel(parent)
{
_parameterGroup = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/RecentFiles");
}
void RecentFilesModel::loadRecentFiles()
{
beginResetModel();
clear();
auto numRows {_parameterGroup->GetInt("RecentFiles", 0)};
for (int i = 0; i < numRows; ++i) {
auto entry = fmt::format("MRU{}", i);
auto path = _parameterGroup->GetASCII(entry.c_str(), "");
addFile(QString::fromStdString(path));
}
endResetModel();
}
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#endif
#include "RecentFilesModel.h"
#include <App/Application.h>
#include <App/ProjectFile.h>
using namespace Start;
RecentFilesModel::RecentFilesModel(QObject* parent)
: DisplayedFilesModel(parent)
{
_parameterGroup = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/RecentFiles");
}
void RecentFilesModel::loadRecentFiles()
{
beginResetModel();
clear();
auto numRows {_parameterGroup->GetInt("RecentFiles", 0)};
for (int i = 0; i < numRows; ++i) {
auto entry = fmt::format("MRU{}", i);
auto path = _parameterGroup->GetASCII(entry.c_str(), "");
addFile(QString::fromStdString(path));
}
endResetModel();
}

View File

@@ -1,52 +1,53 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_CLEANSTART_RECENTFILESMODEL_H
#define FREECAD_CLEANSTART_RECENTFILESMODEL_H
#include <QAbstractListModel>
#include <Base/Parameter.h>
#include <QtQml/QQmlTypeInfo>
#include "DisplayedFilesModel.h"
#include "../CleanStartGlobal.h"
namespace CleanStart
{
/// A model for displaying a list of files including a thumbnail or icon, plus various file statistics.
class CleanStartExport RecentFilesModel: public DisplayedFilesModel
{
Q_OBJECT
public:
explicit RecentFilesModel(QObject* parent = nullptr);
void loadRecentFiles();
private:
Base::Reference<ParameterGrp> _parameterGroup;
};
} // namespace CleanStart
#endif // FREECAD_CLEANSTART_RECENTFILESMODEL_H
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_START_RECENTFILESMODEL_H
#define FREECAD_START_RECENTFILESMODEL_H
#include <QAbstractListModel>
#include <Base/Parameter.h>
#include <QtQml/QQmlTypeInfo>
#include "DisplayedFilesModel.h"
#include "../StartGlobal.h"
namespace Start
{
/// A model for displaying a list of files including a thumbnail or icon, plus various file
/// statistics.
class StartExport RecentFilesModel: public DisplayedFilesModel
{
Q_OBJECT
public:
explicit RecentFilesModel(QObject* parent = nullptr);
void loadRecentFiles();
private:
Base::Reference<ParameterGrp> _parameterGroup;
};
} // namespace Start
#endif // FREECAD_START_RECENTFILESMODEL_H

View File

@@ -1,38 +0,0 @@
/***************************************************************************
* Copyright (c) 2008 Jürgen Riegel <juergen.riegel@web.de> *
* *
* 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 *
* *
***************************************************************************/
#ifndef START_CONFIGURATION_H
#define START_CONFIGURATION_H
#include <FCConfig.h>
// Exporting of App classes
#ifdef FC_OS_WIN32
#define START_SHOW_SKETCHER
#define START_USE_DRAFTING
#else // for Linux
#define START_USE_DRAFTING
#endif
#endif

View File

@@ -1,51 +1,49 @@
add_subdirectory(App)
set(Start_Scripts
Init.py
TestStartGui.py
)
if(BUILD_GUI)
list(APPEND Start_Scripts InitGui.py)
add_subdirectory(Gui)
add_subdirectory(StartPage)
endif(BUILD_GUI)
set(Start_Tests
TestStart/__init__.py
TestStart/TestStartPage.py)
set(Start_Test_Files
${Start_Tests}
${Start_Scripts})
add_custom_target(StartScripts ALL
SOURCES ${Start_Scripts}
)
add_custom_target(StartTests ALL
SOURCES ${Start_Test_Files}
)
fc_target_copy_resource(StartScripts
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_BINARY_DIR}/Mod/Start
${Start_Scripts})
fc_copy_sources(StartTests "${CMAKE_BINARY_DIR}/Mod/Start" ${Start_Test_Files})
INSTALL(
FILES
${Start_Scripts}
DESTINATION
Mod/Start
)
INSTALL(
FILES
${Start_Tests}
DESTINATION
Mod/Start/TestStart
)
# SPDX-License-Identifier: LGPL-2.1-or-later
# /****************************************************************************
# * *
# * Copyright (c) 2024 The FreeCAD Project Association AISBL *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD 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 *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************/
add_subdirectory(App)
set(Start_Scripts
Init.py
)
if (BUILD_GUI)
add_subdirectory(Gui)
list(APPEND Start_Scripts InitGui.py)
endif (BUILD_GUI)
add_custom_target(StartScripts ALL
SOURCES ${Start_Scripts}
)
fc_target_copy_resource(StartScripts
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_BINARY_DIR}/Mod/Start
${Start_Scripts})
INSTALL(
FILES
${Start_Scripts}
DESTINATION
Mod/Start
)

View File

@@ -1,23 +1,24 @@
/***************************************************************************
* Copyright (c) 2008 Jürgen Riegel <juergen.riegel@web.de> *
* *
* 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 *
* *
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
@@ -25,17 +26,14 @@
#include <Base/Console.h>
#include <Base/Interpreter.h>
#include <Base/PyObjectBase.h>
#include <Gui/Application.h>
#include <Gui/Language/Translator.h>
#include <Gui/WidgetFactory.h>
#include "DlgStartPreferencesImp.h"
#include <QString>
#include <3rdParty/GSL/include/gsl/pointers>
#include "Workbench.h"
// use a different name to CreateCommand()
void CreateStartCommands();
void loadStartResource()
{
// add resources and reloads the translators
@@ -44,6 +42,12 @@ void loadStartResource()
Gui::Translator::instance()->refresh();
}
namespace StartGui
{
extern PyObject* initModule();
}
namespace StartGui
{
class Module: public Py::ExtensionModule<Module>
@@ -54,62 +58,24 @@ public:
{
initialize("This module is the StartGui module."); // register with Python
}
private:
};
PyObject* initModule()
{
return Base::Interpreter().addModule(new Module);
auto newModule = gsl::owner<Module*>(new Module);
return Base::Interpreter().addModule(newModule); // Transfer ownership
}
} // namespace StartGui
/* Python entry */
PyMOD_INIT_FUNC(StartGui)
{
if (!Gui::Application::Instance) {
PyErr_SetString(PyExc_ImportError, "Cannot load Gui module in console application.");
PyMOD_Return(nullptr);
}
// load dependent module
try {
Base::Interpreter().runString("import WebGui");
}
catch (const Base::Exception& e) {
PyErr_SetString(PyExc_ImportError, e.what());
PyMOD_Return(nullptr);
}
catch (Py::Exception& e) {
Py::Object o = Py::type(e);
if (o.isString()) {
Py::String s(o);
Base::Console().Error("%s\n", s.as_std_string("utf-8").c_str());
}
else {
Py::String s(o.repr());
Base::Console().Error("%s\n", s.as_std_string("utf-8").c_str());
}
// Prints message to console window if we are in interactive mode
PyErr_Print();
}
Base::Console().Log("Loading GUI of Start module... ");
PyObject* mod = StartGui::initModule();
Base::Console().Log("Loading GUI of Start module... done\n");
// clang-format off
// register preferences pages
new Gui::PrefPageProducer<StartGui::DlgStartPreferencesImp> (QT_TRANSLATE_NOOP("QObject", "Start"));
new Gui::PrefPageProducer<StartGui::DlgStartPreferencesAdvancedImp> (QT_TRANSLATE_NOOP("QObject", "Start"));
// clang-format on
// instantiating the commands
CreateStartCommands();
StartGui::Workbench::init();
// add resources and reloads the translators
loadStartResource();
Base::Console().Log("done\n");
PyMOD_Return(mod);
}

View File

@@ -1,60 +1,89 @@
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${Boost_INCLUDE_DIRS}
${COIN3D_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIR}
${PYTHON_INCLUDE_DIRS}
${XercesC_INCLUDE_DIRS}
)
set(StartGui_LIBS
Start
FreeCADGui
)
set(StartGui_UIC_SRCS
DlgStartPreferences.ui
DlgStartPreferencesAdvanced.ui
)
set (Start_TR_QRC ${CMAKE_CURRENT_BINARY_DIR}/Resources/Start_translation.qrc)
qt_find_and_add_translation(QM_SRCS "Resources/translations/*_*.ts"
${CMAKE_CURRENT_BINARY_DIR}/Resources/translations)
qt_create_resource_file(${Start_TR_QRC} ${QM_SRCS})
qt_add_resources(Start_QRC_SRCS Resources/Start.qrc ${Start_TR_QRC})
SET(StartGui_SRCS
${Start_QRC_SRCS}
${StartGui_UIC_SRCS}
DlgStartPreferences.ui
DlgStartPreferencesAdvanced.ui
DlgStartPreferencesImp.cpp
DlgStartPreferencesImp.h
AppStartGui.cpp
Command.cpp
PreCompiled.cpp
PreCompiled.h
Workbench.cpp
Workbench.h
)
SET(StartGuiIcon_SVG
Resources/icons/StartWorkbench.svg
)
if(FREECAD_USE_PCH)
add_definitions(-D_PreComp_)
GET_MSVC_PRECOMPILED_SOURCE("PreCompiled.cpp" PCH_SRCS ${StartGui_SRCS})
ADD_MSVC_PRECOMPILED_HEADER(StartGui PreCompiled.h PreCompiled.cpp PCH_SRCS)
endif(FREECAD_USE_PCH)
add_library(StartGui SHARED ${StartGui_SRCS} ${StartGuiIcon_SVG})
target_link_libraries(StartGui ${StartGui_LIBS})
SET_BIN_DIR(StartGui StartGui /Mod/Start)
SET_PYTHON_PREFIX_SUFFIX(StartGui)
fc_copy_sources(StartGui "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/Start" ${StartGuiIcon_SVG})
INSTALL(TARGETS StartGui DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES ${StartGuiIcon_SVG} DESTINATION "${CMAKE_INSTALL_DATADIR}/Mod/Start/Resources/icons")
# SPDX-License-Identifier: LGPL-2.1-or-later
# /****************************************************************************
# * *
# * Copyright (c) 2024 The FreeCAD Project Association AISBL *
# * *
# * This file is part of FreeCAD. *
# * *
# * FreeCAD is free software: you can redistribute it and/or modify it *
# * under the terms of the GNU Lesser General Public License as *
# * published by the Free Software Foundation, either version 2.1 of the *
# * License, or (at your option) any later version. *
# * *
# * FreeCAD 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 *
# * Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Lesser General Public *
# * License along with FreeCAD. If not, see *
# * <https://www.gnu.org/licenses/>. *
# * *
# ***************************************************************************/
include_directories(
${CMAKE_CURRENT_BINARY_DIR}
${PYTHON_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIR}
${XercesC_INCLUDE_DIRS}
${QtCore_INCLUDE_DIRS}
${QtWidgets_INCLUDE_DIRS}
${QtSvg_INCLUDE_DIRS}
#${QtNetwork_INCLUDE_DIRS}
${QtUiTools_INCLUDE_DIRS}
#${QtQuick_INCLUDE_DIRS}
#${QtQuickWidgets_INCLUDE_DIRS}
)
set(StartGui_LIBS
Start
FreeCADGui
)
set(Start_TR_QRC ${CMAKE_CURRENT_BINARY_DIR}/Resources/Start_translation.qrc)
qt_find_and_add_translation(QM_SRCS "Resources/translations/*_*.ts"
${CMAKE_CURRENT_BINARY_DIR}/Resources/translations)
qt_create_resource_file(${Start_TR_QRC} ${QM_SRCS})
qt_add_resources(Start_QRC_SRCS Resources/Start.qrc ${Start_TR_QRC})
# qtquick_compiler_add_resources(Start_QRC_SRCS Resources/Start.qrc ${Start_TR_QRC} qml.qrc)
SET(StartGui_SRCS
${Start_QRC_SRCS}
${StartGui_UIC_SRCS}
AppStartGui.cpp
Command.cpp
PreCompiled.cpp
PreCompiled.h
StartView.cpp
StartView.h
FileCardDelegate.cpp
FileCardDelegate.h
FileCardView.cpp
FileCardView.h
Workbench.cpp
Workbench.h
)
SET(StartGuiIcon_SVG
Resources/icons/StartWorkbench.svg
)
# TODO: Evaluate PCH use with Qt6/QtQuick/Qml
if (FREECAD_USE_PCH)
add_definitions(-D_PreComp_)
GET_MSVC_PRECOMPILED_SOURCE("PreCompiled.cpp" PCH_SRCS ${StartGui_SRCS})
ADD_MSVC_PRECOMPILED_HEADER(StartGui PreCompiled.h PreCompiled.cpp PCH_SRCS)
endif (FREECAD_USE_PCH)
add_library(StartGui SHARED ${StartGui_SRCS} ${StartGuiIcon_SVG})
# target_link_libraries(StartGui ${StartGui_LIBS} Qt::Quick Qt::Qml Qt::QuickWidgets)
target_link_libraries(StartGui ${StartGui_LIBS})
SET_BIN_DIR(StartGui StartGui /Mod/Start)
SET_PYTHON_PREFIX_SUFFIX(StartGui)
fc_copy_sources(StartGui "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/Start" ${StartGuiIcon_SVG})
INSTALL(TARGETS StartGui DESTINATION ${CMAKE_INSTALL_LIBDIR})
INSTALL(FILES ${StartGuiIcon_SVG} DESTINATION "${CMAKE_INSTALL_DATADIR}/Mod/Start/Resources/icons")

View File

@@ -1,23 +1,24 @@
/***************************************************************************
* Copyright (c) 2010 Jürgen Riegel <juergen.riegel@web.de> *
* *
* 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 *
* *
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
@@ -25,35 +26,37 @@
#include <Gui/Application.h>
#include <Gui/Command.h>
#include <3rdParty/GSL/include/gsl/pointers>
#include "Workbench.h"
using namespace std;
DEF_STD_CMD(CmdStartPage)
DEF_STD_CMD(CmdStart)
CmdStartPage::CmdStartPage()
: Command("Start_StartPage")
CmdStart::CmdStart()
: Command("Start_Start")
{
sAppModule = "Start";
sGroup = QT_TR_NOOP("Start");
sMenuText = QT_TR_NOOP("Start Page");
sToolTipText = QT_TR_NOOP("Displays the start page in a browser view");
sWhatsThis = "Start_StartPage";
sMenuText = QT_TR_NOOP("Start");
sToolTipText = QT_TR_NOOP("Displays the Start in an MDI view");
sWhatsThis = "Start_Start";
sStatusTip = sToolTipText;
sPixmap = "StartWorkbench";
}
void CmdStartPage::activated(int iMsg)
void CmdStart::activated(int iMsg)
{
Q_UNUSED(iMsg);
StartGui::Workbench::loadStartPage();
StartGui::Workbench::loadStart();
}
void CreateStartCommands()
{
Gui::CommandManager& rcCmdMgr = Gui::Application::Instance->commandManager();
rcCmdMgr.addCommand(new CmdStartPage());
auto newCommand = gsl::owner<CmdStart*>(new CmdStart);
rcCmdMgr.addCommand(newCommand); // Transfer ownership
}

View File

@@ -1,777 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DlgStartPreferences</class>
<widget class="QWidget" name="DlgStartPreferences">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>548</width>
<height>894</height>
</rect>
</property>
<property name="windowTitle">
<string>General</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Options</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QLabel" name="autoModuleLabel">
<property name="text">
<string>Switch workbench after loading</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="AutoloadModuleCombo">
<property name="toolTip">
<string>Workbench to switch to after loading a file from the Start page, only used if Start is the start up workbench</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Close start page after loading</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Gui::PrefCheckBox" name="closeStartCheckBox">
<property name="toolTip">
<string>If checked, will automatically close the Start page when FreeCAD launches</string>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
<property name="prefEntry" stdset="0">
<cstring>closeStart</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Close and switch on opening file</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="Gui::PrefCheckBox" name="closeAndSwitchCheckBox">
<property name="toolTip">
<string>If application is started by opening a file, apply the two settings above</string>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
<property name="prefEntry" stdset="0">
<cstring>DoNotShowOnOpen</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Contents</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="8" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="Gui::PrefSpinBox" name="fileThumbnailIconSizeSpinBox">
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>The size of file thumbnail icons in recent files and examples sections</string>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
<property name="suffix">
<string>px</string>
</property>
<property name="minimum">
<number>32</number>
</property>
<property name="maximum">
<number>128</number>
</property>
<property name="value">
<number>128</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>FileThumbnailIconsSize</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item row="6" column="1">
<widget class="Gui::PrefCheckBox" name="showFileThumbnailIconsCheckBox">
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowFileThumbnailIcons</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="Gui::PrefCheckBox" name="showExamplesCheckBox">
<property name="toolTip">
<string>If you want the examples to show on the first page</string>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowExamples</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="Gui::PrefCheckBox" name="showTipsCheckBox">
<property name="toolTip">
<string>Displays help tips in the Start workbench Documents tab</string>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowTips</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
<string>Show tips</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Show forum</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Show notepad</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="Gui::PrefCheckBox" name="showForumCheckBox">
<property name="toolTip">
<string>If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</string>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowForum</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_21">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>File thumbnail size</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Show examples folder contents</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Gui::PrefCheckBox" name="showNotepadCheckBox">
<property name="toolTip">
<string>Shows a notepad next to the file thumbnails, where you can keep notes across sessions</string>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowNotes</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Show file thumbnails</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="Gui::PrefFileChooser" name="showAdditionalFolderFileChooser" native="true">
<property name="mode">
<enum>Gui::FileChooser::Directory</enum>
</property>
<property name="toolTip">
<string>An optional custom folder to be displayed at the bottom of the first page.
By using &quot;;;&quot; to separate paths, you can add several folders here</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>ShowCustomFolder</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Show additional folder</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Fonts and colors</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="9" column="1" alignment="Qt::AlignRight">
<widget class="Gui::PrefColorButton" name="boxBackgroundColorButton">
<property name="maximumSize">
<size>
<width>60</width>
<height>60</height>
</size>
</property>
<property name="toolTip">
<string>The background color of the boxes inside the pages</string>
</property>
<property name="color" stdset="0">
<color>
<red>221</red>
<green>221</green>
<blue>221</blue>
</color>
</property>
<property name="prefEntry" stdset="0">
<cstring>BoxColor</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Page text color</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Page background color</string>
</property>
</widget>
</item>
<item row="7" column="1" alignment="Qt::AlignRight">
<widget class="Gui::PrefColorButton" name="pageBackgroundColorButton">
<property name="maximumSize">
<size>
<width>60</width>
<height>60</height>
</size>
</property>
<property name="toolTip">
<string>The background of the main start page area</string>
</property>
<property name="color" stdset="0">
<color>
<red>255</red>
<green>255</green>
<blue>255</blue>
</color>
</property>
<property name="prefEntry" stdset="0">
<cstring>PageColor</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="12" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="Gui::PrefRadioButton" name="radioButton_2">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>in FreeCAD</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="prefEntry" stdset="0">
<cstring>InBrowser</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefRadioButton" name="radioButton_1">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>In external browser</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>InWeb</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item row="11" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Font family</string>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="label_7">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Open links</string>
</property>
</widget>
</item>
<item row="2" column="1" alignment="Qt::AlignRight">
<widget class="Gui::PrefColorButton" name="backgroundColorButton">
<property name="maximumSize">
<size>
<width>60</width>
<height>60</height>
</size>
</property>
<property name="toolTip">
<string>The background color behind the panels</string>
</property>
<property name="color" stdset="0">
<color>
<red>79</red>
<green>88</green>
<blue>116</blue>
</color>
</property>
<property name="prefEntry" stdset="0">
<cstring>BackgroundColor1</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Use FreeCAD style sheet</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_12">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Background color down gradient</string>
</property>
</widget>
</item>
<item row="3" column="1" alignment="Qt::AlignRight">
<widget class="Gui::PrefColorButton" name="colorButton_7">
<property name="enabled">
<bool>false</bool>
</property>
<property name="maximumSize">
<size>
<width>60</width>
<height>60</height>
</size>
</property>
<property name="toolTip">
<string>The down gradient for the background color (currently unsupported)</string>
</property>
<property name="color" stdset="0">
<color>
<red>127</red>
<green>158</green>
<blue>181</blue>
</color>
</property>
<property name="prefEntry" stdset="0">
<cstring>BackgroundColor2</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Box background color</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Background color</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Background text color</string>
</property>
</widget>
</item>
<item row="11" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="Gui::PrefLineEdit" name="fontLineEdit">
<property name="toolTip">
<string>The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</string>
</property>
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>Arial,Helvetica,sans</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>FontFamily</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item>
<widget class="Gui::PrefSpinBox" name="fontSizeSpinBox">
<property name="toolTip">
<string>The base font size to use for all texts of the Start page</string>
</property>
<property name="suffix">
<string>px</string>
</property>
<property name="value">
<number>13</number>
</property>
<property name="prefEntry" stdset="0">
<cstring>FontSize</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
</layout>
</item>
<item row="10" column="1" alignment="Qt::AlignRight">
<widget class="Gui::PrefColorButton" name="linkColorButton">
<property name="maximumSize">
<size>
<width>60</width>
<height>60</height>
</size>
</property>
<property name="toolTip">
<string>The color of the links</string>
</property>
<property name="color" stdset="0">
<color>
<red>0</red>
<green>0</green>
<blue>255</blue>
</color>
</property>
<property name="prefEntry" stdset="0">
<cstring>LinkColor</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Link color</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="Gui::PrefCheckBox" name="useStyleSheetCheckBox">
<property name="toolTip">
<string>If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</string>
</property>
<property name="layoutDirection">
<enum>Qt::RightToLeft</enum>
</property>
<property name="text">
<string/>
</property>
<property name="prefEntry" stdset="0">
<cstring>UseStyleSheet</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="6" column="1" alignment="Qt::AlignRight">
<widget class="Gui::PrefColorButton" name="backgroundTextColorButton">
<property name="maximumSize">
<size>
<width>60</width>
<height>60</height>
</size>
</property>
<property name="toolTip">
<string>The color of the version text</string>
</property>
<property name="color" stdset="0">
<color>
<red>95</red>
<green>95</green>
<blue>95</blue>
</color>
</property>
<property name="prefEntry" stdset="0">
<cstring>BackgroundTextColor</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="8" column="1" alignment="Qt::AlignRight">
<widget class="Gui::PrefColorButton" name="pageTextColorButton">
<property name="maximumSize">
<size>
<width>60</width>
<height>60</height>
</size>
</property>
<property name="toolTip">
<string>The color of the text on the main pages</string>
</property>
<property name="color" stdset="0">
<color>
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</property>
<property name="prefEntry" stdset="0">
<cstring>PageTextColor</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="Gui::PrefFileChooser" name="backgroundImageFileChooser" native="true">
<property name="toolTip">
<string>An optional image to display as background</string>
</property>
<property name="prefEntry" stdset="0">
<cstring>BackgroundImage</cstring>
</property>
<property name="prefPath" stdset="0">
<cstring>Mod/Start</cstring>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Background image</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>Gui::FileChooser</class>
<extends>QWidget</extends>
<header>Gui/FileDialog.h</header>
</customwidget>
<customwidget>
<class>Gui::ColorButton</class>
<extends>QPushButton</extends>
<header>Gui/Widgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefFileChooser</class>
<extends>Gui::FileChooser</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefSpinBox</class>
<extends>QSpinBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefColorButton</class>
<extends>Gui::ColorButton</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefRadioButton</class>
<extends>QRadioButton</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefCheckBox</class>
<extends>QCheckBox</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
<customwidget>
<class>Gui::PrefLineEdit</class>
<extends>QLineEdit</extends>
<header>Gui/PrefWidgets.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

File diff suppressed because one or more lines are too long

View File

@@ -1,204 +0,0 @@
/***************************************************************************
* Copyright (c) 2018 Yorik van Havre <yorik@uncreated.net> *
* *
* 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 *
* *
***************************************************************************/
#include "PreCompiled.h"
#include <Gui/Application.h>
#include "DlgStartPreferencesImp.h"
#include "ui_DlgStartPreferences.h"
#include "ui_DlgStartPreferencesAdvanced.h"
using namespace StartGui;
/**
* Constructs a DlgStartPreferencesImp which is a child of 'parent'
*/
DlgStartPreferencesImp::DlgStartPreferencesImp(QWidget* parent)
: PreferencePage(parent)
, ui(new Ui_DlgStartPreferences)
{
ui->setupUi(this);
// Hide currently unused controls
ui->label_12->hide();
ui->label_7->hide();
ui->colorButton_7->hide();
ui->radioButton_1->hide();
ui->radioButton_2->hide();
// fills the combo box with all available workbenches
// sorted by their menu text
QStringList work = Gui::Application::Instance->workbenches();
QMap<QString, QString> menuText;
for (const auto& it : work) {
QString text = Gui::Application::Instance->workbenchMenuText(it);
menuText[text] = it;
}
// add special workbench to selection
QPixmap px = Gui::Application::Instance->workbenchIcon(QString::fromLatin1("NoneWorkbench"));
QString key = QString::fromLatin1("<last>");
QString value = QString::fromLatin1("$LastModule");
if (px.isNull()) {
ui->AutoloadModuleCombo->addItem(key, QVariant(value));
}
else {
ui->AutoloadModuleCombo->addItem(px, key, QVariant(value));
}
for (QMap<QString, QString>::Iterator it = menuText.begin(); it != menuText.end(); ++it) {
QPixmap px = Gui::Application::Instance->workbenchIcon(it.value());
if (px.isNull()) {
ui->AutoloadModuleCombo->addItem(it.key(), QVariant(it.value()));
}
else {
ui->AutoloadModuleCombo->addItem(px, it.key(), QVariant(it.value()));
}
}
}
/**
* Destroys the object and frees any allocated resources
*/
DlgStartPreferencesImp::~DlgStartPreferencesImp() = default;
void DlgStartPreferencesImp::saveSettings()
{
int index = ui->AutoloadModuleCombo->currentIndex();
QVariant data = ui->AutoloadModuleCombo->itemData(index);
QString startWbName = data.toString();
App::GetApplication()
.GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Start")
->SetASCII("AutoloadModule", startWbName.toLatin1());
ui->backgroundColorButton->onSave();
ui->backgroundTextColorButton->onSave();
ui->pageBackgroundColorButton->onSave();
ui->pageTextColorButton->onSave();
ui->boxBackgroundColorButton->onSave();
ui->linkColorButton->onSave();
ui->colorButton_7->onSave();
ui->backgroundImageFileChooser->onSave();
ui->showAdditionalFolderFileChooser->onSave();
ui->radioButton_1->onSave();
ui->radioButton_2->onSave();
ui->showNotepadCheckBox->onSave();
ui->showExamplesCheckBox->onSave();
ui->closeStartCheckBox->onSave();
ui->closeAndSwitchCheckBox->onSave();
ui->showForumCheckBox->onSave();
ui->useStyleSheetCheckBox->onSave();
ui->showTipsCheckBox->onSave();
ui->fontLineEdit->onSave();
ui->fontSizeSpinBox->onSave();
ui->showFileThumbnailIconsCheckBox->onSave();
ui->fileThumbnailIconSizeSpinBox->onSave();
}
void DlgStartPreferencesImp::loadSettings()
{
std::string start = App::Application::Config()["StartWorkbench"];
start = App::GetApplication()
.GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Start")
->GetASCII("AutoloadModule", start.c_str());
QString startWbName = QLatin1String(start.c_str());
ui->AutoloadModuleCombo->setCurrentIndex(ui->AutoloadModuleCombo->findData(startWbName));
ui->backgroundColorButton->onRestore();
ui->backgroundTextColorButton->onRestore();
ui->pageBackgroundColorButton->onRestore();
ui->pageTextColorButton->onRestore();
ui->boxBackgroundColorButton->onRestore();
ui->linkColorButton->onRestore();
ui->colorButton_7->onRestore();
ui->backgroundImageFileChooser->onRestore();
ui->showAdditionalFolderFileChooser->onRestore();
ui->radioButton_1->onRestore();
ui->radioButton_2->onRestore();
ui->showNotepadCheckBox->onRestore();
ui->showExamplesCheckBox->onRestore();
ui->closeStartCheckBox->onRestore();
ui->closeAndSwitchCheckBox->onRestore();
ui->showForumCheckBox->onRestore();
ui->useStyleSheetCheckBox->onRestore();
ui->showTipsCheckBox->onRestore();
ui->fontLineEdit->onRestore();
ui->fontSizeSpinBox->onRestore();
ui->showFileThumbnailIconsCheckBox->onRestore();
ui->fileThumbnailIconSizeSpinBox->onRestore();
}
/**
* Sets the strings of the subwidgets using the current language.
*/
void DlgStartPreferencesImp::changeEvent(QEvent* ev)
{
if (ev->type() == QEvent::LanguageChange) {
ui->retranslateUi(this);
}
else {
Gui::Dialog::PreferencePage::changeEvent(ev);
}
}
/**
* Constructs a DlgStartPreferencesAdvancedImp which is a child of 'parent'
*/
DlgStartPreferencesAdvancedImp::DlgStartPreferencesAdvancedImp(QWidget* parent)
: PreferencePage(parent)
, ui(new Ui_DlgStartPreferencesAdvanced)
{
ui->setupUi(this);
}
/**
* Destroys the object and frees any allocated resources
*/
DlgStartPreferencesAdvancedImp::~DlgStartPreferencesAdvancedImp() = default;
void DlgStartPreferencesAdvancedImp::saveSettings()
{
ui->templateFileChooser->onSave();
ui->customCSSTextEdit->onSave();
}
void DlgStartPreferencesAdvancedImp::loadSettings()
{
ui->templateFileChooser->onRestore();
ui->customCSSTextEdit->onRestore();
}
/**
* Sets the strings of the subwidgets using the current language.
*/
void DlgStartPreferencesAdvancedImp::changeEvent(QEvent* ev)
{
if (ev->type() == QEvent::LanguageChange) {
ui->retranslateUi(this);
}
else {
Gui::Dialog::PreferencePage::changeEvent(ev);
}
}
#include "moc_DlgStartPreferencesImp.cpp"

View File

@@ -1,70 +0,0 @@
/***************************************************************************
* Copyright (c) 2018 Yorik van Havre <yorik@uncreated.net> *
* *
* 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 *
* *
***************************************************************************/
#ifndef STARTGUI_DLGSTARTPREFERENCESIMP_H
#define STARTGUI_DLGSTARTPREFERENCESIMP_H
#include <Gui/PropertyPage.h>
#include <memory>
class Ui_DlgStartPreferences;
class Ui_DlgStartPreferencesAdvanced;
namespace StartGui
{
class DlgStartPreferencesImp: public Gui::Dialog::PreferencePage
{
Q_OBJECT
public:
explicit DlgStartPreferencesImp(QWidget* parent = nullptr);
~DlgStartPreferencesImp() override;
protected:
void saveSettings() override;
void loadSettings() override;
void changeEvent(QEvent* e) override;
private:
std::unique_ptr<Ui_DlgStartPreferences> ui;
};
class DlgStartPreferencesAdvancedImp: public Gui::Dialog::PreferencePage
{
Q_OBJECT
public:
explicit DlgStartPreferencesAdvancedImp(QWidget* parent = nullptr);
~DlgStartPreferencesAdvancedImp() override;
protected:
void saveSettings() override;
void loadSettings() override;
void changeEvent(QEvent* e) override;
private:
std::unique_ptr<Ui_DlgStartPreferencesAdvanced> ui;
};
} // namespace StartGui
#endif // STARTGUI_DLGSTARTPREFERENCESIMP_H

View File

@@ -1,148 +1,158 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QFile>
#include <QFileIconProvider>
#include <QImageReader>
#include <QPainter>
#include <QStyleOptionViewItem>
#include <QLabel>
#include <QModelIndex>
#include <QVBoxLayout>
#include <QGuiApplication>
#endif
#include "FileCardDelegate.h"
#include "../App/DisplayedFilesModel.h"
#include "App/Application.h"
#include <3rdParty/GSL/include/gsl/pointers>
using namespace CleanStart;
FileCardDelegate::FileCardDelegate(QObject *parent)
: QAbstractItemDelegate(parent) {
_parameterGroup = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
}
void FileCardDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index) const {
auto thumbnailSize =
static_cast<int>(_parameterGroup->GetInt("FileThumbnailIconsSize", 64)); // NOLINT
auto cardWidth = thumbnailSize;
auto baseName = index.data(static_cast<int>(DisplayedFilesModelRoles::baseName)).toString();
auto size = index.data(static_cast<int>(DisplayedFilesModelRoles::size)).toString();
auto image = index.data(static_cast<int>(DisplayedFilesModelRoles::image)).toByteArray();
auto path = index.data(static_cast<int>(DisplayedFilesModelRoles::path)).toString();
painter->save();
auto widget = gsl::owner<QWidget *>(new QWidget());
auto layout = gsl::owner<QVBoxLayout *>(new QVBoxLayout());
widget->setLayout(layout);
auto thumbnail = gsl::owner<QLabel *>(new QLabel());
auto pixmap = gsl::owner<QPixmap *>(new QPixmap());
if (!image.isEmpty()) {
pixmap->loadFromData(image);
auto scaled = pixmap->scaled(QSize(thumbnailSize, thumbnailSize),
Qt::AspectRatioMode::KeepAspectRatio,
Qt::TransformationMode::SmoothTransformation);
thumbnail->setPixmap(scaled);
} else {
thumbnail->setPixmap(generateThumbnail(path));
}
thumbnail->setFixedSize(thumbnailSize, thumbnailSize);
thumbnail->setSizePolicy(QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Fixed);
auto elided =
painter->fontMetrics().elidedText(baseName, Qt::TextElideMode::ElideRight, cardWidth);
auto name = gsl::owner<QLabel *>(new QLabel(elided));
layout->addWidget(thumbnail);
layout->addWidget(name);
auto sizeLabel = gsl::owner<QLabel *>(new QLabel(size));
layout->addWidget(sizeLabel);
layout->addStretch();
layout->setSpacing(0);
widget->resize(option.rect.size());
painter->translate(option.rect.topLeft());
widget->render(painter, QPoint(), QRegion(), QWidget::DrawChildren);
painter->restore();
delete pixmap;
}
QSize FileCardDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const {
Q_UNUSED(option)
Q_UNUSED(index)
auto thumbnailSize = _parameterGroup->GetInt("FileThumbnailIconsSize", 128); // NOLINT
auto cardSpacing = _parameterGroup->GetInt("FileCardSpacing", 20); // NOLINT
auto cardWidth = thumbnailSize + cardSpacing;
auto font = QGuiApplication::font();
auto qfm = QFontMetrics(font);
auto textHeight = 2 * qfm.lineSpacing();
auto cardHeight = thumbnailSize + textHeight + cardSpacing;
return {static_cast<int>(cardWidth), static_cast<int>(cardHeight)};
}
namespace {
QPixmap pixmapToSizedQImage(const QImage &pixmap, int size) {
return QPixmap::fromImage(pixmap).scaled(size, size,
Qt::AspectRatioMode::KeepAspectRatio,
Qt::TransformationMode::SmoothTransformation);
}
}
QPixmap FileCardDelegate::generateThumbnail(const QString &path) const {
auto thumbnailSize =
static_cast<int>(_parameterGroup->GetInt("FileThumbnailIconsSize", 64)); // NOLINT
if (path.endsWith(QLatin1String(".fcstd"), Qt::CaseSensitivity::CaseInsensitive)) {
QImageReader reader(QLatin1String(":/icons/freecad-doc.svg"));;
reader.setScaledSize({thumbnailSize, thumbnailSize});
return QPixmap::fromImage(reader.read());
}
if (path.endsWith(QLatin1String(".fcmacro"), Qt::CaseSensitivity::CaseInsensitive)) {
QImageReader reader(QLatin1String(":/icons/MacroEditor.svg"));;
reader.setScaledSize({thumbnailSize, thumbnailSize});
return QPixmap::fromImage(reader.read());
}
if (!QImageReader::imageFormat(path).isEmpty()) {
// It is an image: it can be its own thumbnail
QImageReader reader(path);
auto image = reader.read();
return pixmapToSizedQImage(image, thumbnailSize);
}
QIcon icon = QFileIconProvider().icon(QFileInfo(path));
if (!icon.isNull()) {
QPixmap pixmap = icon.pixmap(thumbnailSize);
if (!pixmap.isNull()) {
return pixmap;
}
}
QPixmap pixmap = QPixmap(thumbnailSize, thumbnailSize);
pixmap.fill();
return pixmap;
}
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QFile>
#include <QFileIconProvider>
#include <QImageReader>
#include <QPainter>
#include <QStyleOptionViewItem>
#include <QLabel>
#include <QModelIndex>
#include <QVBoxLayout>
#include <QGuiApplication>
#endif
#include "FileCardDelegate.h"
#include "../App/DisplayedFilesModel.h"
#include "App/Application.h"
#include <3rdParty/GSL/include/gsl/pointers>
using namespace Start;
FileCardDelegate::FileCardDelegate(QObject* parent)
: QAbstractItemDelegate(parent)
{
_parameterGroup = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
}
void FileCardDelegate::paint(QPainter* painter,
const QStyleOptionViewItem& option,
const QModelIndex& index) const
{
auto thumbnailSize =
static_cast<int>(_parameterGroup->GetInt("FileThumbnailIconsSize", 64)); // NOLINT
auto cardWidth = thumbnailSize;
auto baseName = index.data(static_cast<int>(DisplayedFilesModelRoles::baseName)).toString();
auto size = index.data(static_cast<int>(DisplayedFilesModelRoles::size)).toString();
auto image = index.data(static_cast<int>(DisplayedFilesModelRoles::image)).toByteArray();
auto path = index.data(static_cast<int>(DisplayedFilesModelRoles::path)).toString();
painter->save();
auto widget = gsl::owner<QWidget*>(new QWidget());
auto layout = gsl::owner<QVBoxLayout*>(new QVBoxLayout());
widget->setLayout(layout);
auto thumbnail = gsl::owner<QLabel*>(new QLabel());
auto pixmap = gsl::owner<QPixmap*>(new QPixmap());
if (!image.isEmpty()) {
pixmap->loadFromData(image);
auto scaled = pixmap->scaled(QSize(thumbnailSize, thumbnailSize),
Qt::AspectRatioMode::KeepAspectRatio,
Qt::TransformationMode::SmoothTransformation);
thumbnail->setPixmap(scaled);
}
else {
thumbnail->setPixmap(generateThumbnail(path));
}
thumbnail->setFixedSize(thumbnailSize, thumbnailSize);
thumbnail->setSizePolicy(QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Fixed);
auto elided =
painter->fontMetrics().elidedText(baseName, Qt::TextElideMode::ElideRight, cardWidth);
auto name = gsl::owner<QLabel*>(new QLabel(elided));
layout->addWidget(thumbnail);
layout->addWidget(name);
auto sizeLabel = gsl::owner<QLabel*>(new QLabel(size));
layout->addWidget(sizeLabel);
layout->addStretch();
layout->setSpacing(0);
widget->resize(option.rect.size());
painter->translate(option.rect.topLeft());
widget->render(painter, QPoint(), QRegion(), QWidget::DrawChildren);
painter->restore();
delete pixmap;
}
QSize FileCardDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const
{
Q_UNUSED(option)
Q_UNUSED(index)
auto thumbnailSize = _parameterGroup->GetInt("FileThumbnailIconsSize", 128); // NOLINT
auto cardSpacing = _parameterGroup->GetInt("FileCardSpacing", 20); // NOLINT
auto cardWidth = thumbnailSize + cardSpacing;
auto font = QGuiApplication::font();
auto qfm = QFontMetrics(font);
auto textHeight = 2 * qfm.lineSpacing();
auto cardHeight = thumbnailSize + textHeight + cardSpacing;
return {static_cast<int>(cardWidth), static_cast<int>(cardHeight)};
}
namespace
{
QPixmap pixmapToSizedQImage(const QImage& pixmap, int size)
{
return QPixmap::fromImage(pixmap).scaled(size,
size,
Qt::AspectRatioMode::KeepAspectRatio,
Qt::TransformationMode::SmoothTransformation);
}
} // namespace
QPixmap FileCardDelegate::generateThumbnail(const QString& path) const
{
auto thumbnailSize =
static_cast<int>(_parameterGroup->GetInt("FileThumbnailIconsSize", 64)); // NOLINT
if (path.endsWith(QLatin1String(".fcstd"), Qt::CaseSensitivity::CaseInsensitive)) {
QImageReader reader(QLatin1String(":/icons/freecad-doc.svg"));
;
reader.setScaledSize({thumbnailSize, thumbnailSize});
return QPixmap::fromImage(reader.read());
}
if (path.endsWith(QLatin1String(".fcmacro"), Qt::CaseSensitivity::CaseInsensitive)) {
QImageReader reader(QLatin1String(":/icons/MacroEditor.svg"));
;
reader.setScaledSize({thumbnailSize, thumbnailSize});
return QPixmap::fromImage(reader.read());
}
if (!QImageReader::imageFormat(path).isEmpty()) {
// It is an image: it can be its own thumbnail
QImageReader reader(path);
auto image = reader.read();
return pixmapToSizedQImage(image, thumbnailSize);
}
QIcon icon = QFileIconProvider().icon(QFileInfo(path));
if (!icon.isNull()) {
QPixmap pixmap = icon.pixmap(thumbnailSize);
if (!pixmap.isNull()) {
return pixmap;
}
}
QPixmap pixmap = QPixmap(thumbnailSize, thumbnailSize);
pixmap.fill();
return pixmap;
}

View File

@@ -1,52 +1,52 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_CLEANSTART_FILECARDDELEGATE_H
#define FREECAD_CLEANSTART_FILECARDDELEGATE_H
#include <Base/Parameter.h>
#include <QImage>
#include <QAbstractItemDelegate>
class FileCardDelegate : public QAbstractItemDelegate {
public:
explicit FileCardDelegate(QObject *parent = nullptr);
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
protected:
QPixmap generateThumbnail(const QString &path) const;
private:
Base::Reference<ParameterGrp> _parameterGroup;
};
#endif //FREECAD_CLEANSTART_FILECARDDELEGATE_H
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_START_FILECARDDELEGATE_H
#define FREECAD_START_FILECARDDELEGATE_H
#include <Base/Parameter.h>
#include <QImage>
#include <QAbstractItemDelegate>
class FileCardDelegate: public QAbstractItemDelegate
{
public:
explicit FileCardDelegate(QObject* parent = nullptr);
void paint(QPainter* painter,
const QStyleOptionViewItem& option,
const QModelIndex& index) const override;
QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override;
protected:
QPixmap generateThumbnail(const QString& path) const;
private:
Base::Reference<ParameterGrp> _parameterGroup;
};
#endif // FREECAD_START_FILECARDDELEGATE_H

View File

@@ -1,84 +1,87 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#include "FileCardView.h"
#include <App/Application.h>
#include "../App/DisplayedFilesModel.h"
namespace CleanStartGui
{
FileCardView::FileCardView(QWidget *parent) : QListView(parent)
{
QSizePolicy sizePolicy(QSizePolicy::Policy::MinimumExpanding,
QSizePolicy::Policy::MinimumExpanding);
sizePolicy.setHeightForWidth(true);
setSizePolicy(sizePolicy);
setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
setViewMode(QListView::ViewMode::IconMode);
setFlow(QListView::Flow::LeftToRight);
setResizeMode(QListView::ResizeMode::Adjust);
setUniformItemSizes(true);
}
int FileCardView::heightForWidth(int width) const
{
auto model = this->model();
auto delegate = this->itemDelegate();
if (!model || !delegate) {
return 0;
}
int numCards = model->rowCount();
auto cardSize = delegate->sizeHint(QStyleOptionViewItem(), model->index(0, 0));
int cardsPerRow = static_cast<int>(width / cardSize.width());
int numRows = static_cast<int> (ceil(static_cast<double>(numCards) / static_cast<double>(cardsPerRow)));
int neededHeight = numRows * cardSize.height();
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
int cardSpacing = static_cast<int>(hGrp->GetInt("FileCardSpacing", 20)); // NOLINT
return neededHeight + cardSpacing*(numRows-1) + 2*cardSpacing;
}
QSize FileCardView::sizeHint() const
{
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
int cardSpacing = static_cast<int>(hGrp->GetInt("FileCardSpacing", 20)); // NOLINT
auto model = this->model();
auto delegate = this->itemDelegate();
if (!model || !delegate) {
// The model and/or delegate have not been set yet, this was an early startup call
return {cardSpacing, cardSpacing};
}
int numCards = model->rowCount();
auto cardSize = delegate->sizeHint(QStyleOptionViewItem(), model->index(0, 0));
return {(cardSize.width()+cardSpacing) * numCards + cardSpacing, cardSize.height() + 2* cardSpacing};
}
} // namespace CleanStart
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#include "FileCardView.h"
#include <App/Application.h>
#include "../App/DisplayedFilesModel.h"
namespace StartGui
{
FileCardView::FileCardView(QWidget* parent)
: QListView(parent)
{
QSizePolicy sizePolicy(QSizePolicy::Policy::MinimumExpanding,
QSizePolicy::Policy::MinimumExpanding);
sizePolicy.setHeightForWidth(true);
setSizePolicy(sizePolicy);
setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
setViewMode(QListView::ViewMode::IconMode);
setFlow(QListView::Flow::LeftToRight);
setResizeMode(QListView::ResizeMode::Adjust);
setUniformItemSizes(true);
}
int FileCardView::heightForWidth(int width) const
{
auto model = this->model();
auto delegate = this->itemDelegate();
if (!model || !delegate) {
return 0;
}
int numCards = model->rowCount();
auto cardSize = delegate->sizeHint(QStyleOptionViewItem(), model->index(0, 0));
int cardsPerRow = static_cast<int>(width / cardSize.width());
int numRows =
static_cast<int>(ceil(static_cast<double>(numCards) / static_cast<double>(cardsPerRow)));
int neededHeight = numRows * cardSize.height();
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
int cardSpacing = static_cast<int>(hGrp->GetInt("FileCardSpacing", 20)); // NOLINT
return neededHeight + cardSpacing * (numRows - 1) + 2 * cardSpacing;
}
QSize FileCardView::sizeHint() const
{
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
int cardSpacing = static_cast<int>(hGrp->GetInt("FileCardSpacing", 20)); // NOLINT
auto model = this->model();
auto delegate = this->itemDelegate();
if (!model || !delegate) {
// The model and/or delegate have not been set yet, this was an early startup call
return {cardSpacing, cardSpacing};
}
int numCards = model->rowCount();
auto cardSize = delegate->sizeHint(QStyleOptionViewItem(), model->index(0, 0));
return {(cardSize.width() + cardSpacing) * numCards + cardSpacing,
cardSize.height() + 2 * cardSpacing};
}
} // namespace StartGui

View File

@@ -1,47 +1,46 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_CLEANSTART_FILECARDVIEW_H
#define FREECAD_CLEANSTART_FILECARDVIEW_H
#include <QListView>
namespace CleanStartGui
{
class FileCardView : public QListView
{
Q_OBJECT
public:
explicit FileCardView(QWidget *parent = nullptr);
int heightForWidth(int width) const override;
QSize sizeHint() const override;
};
} // namespace CleanStart
#endif // FREECAD_CLEANSTART_FILECARDVIEW_H
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_START_FILECARDVIEW_H
#define FREECAD_START_FILECARDVIEW_H
#include <QListView>
namespace StartGui
{
class FileCardView: public QListView
{
Q_OBJECT
public:
explicit FileCardView(QWidget* parent = nullptr);
int heightForWidth(int width) const override;
QSize sizeHint() const override;
};
} // namespace StartGui
#endif // FREECAD_START_FILECARDVIEW_H

View File

@@ -1,23 +1,25 @@
/***************************************************************************
* Copyright (c) 2008 Jürgen Riegel <juergen.riegel@web.de> *
* *
* 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 *
* *
***************************************************************************/
#include "PreCompiled.h"
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"

View File

@@ -1,23 +1,24 @@
/***************************************************************************
* Copyright (c) 2008 Jürgen Riegel <juergen.riegel@web.de> *
* *
* 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 *
* *
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef STARTGUI_PRECOMPILED_H
@@ -25,11 +26,40 @@
#include <FCConfig.h>
#ifdef _MSC_VER
#pragma warning(disable : 5208)
#endif
#ifdef _PreComp_
// Qt Toolkit
// standard
#include <cinttypes>
#include <cmath>
#include <iomanip>
#include <map>
#include <sstream>
#include <string>
#include <vector>
#include <unordered_map>
// Qt
#include <QCoreApplication>
#include <QFile>
#include <QFileIconProvider>
#include <QGridLayout>
#include <QGuiApplication>
#include <QImageReader>
#include <QLabel>
#include <QListView>
#include <QModelIndex>
#include <QPainter>
#include <QPushButton>
#include <QScrollArea>
#include <QSpacerItem>
#include <QStyleOptionViewItem>
#include <QUrl>
#include <QVBoxLayout>
#include <QWidget>
#endif //_PreComp_
#endif // _PreComp_
#endif // STARTGUI_PRECOMPILED_H

View File

@@ -1,6 +1,5 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>icons/StartWorkbench.svg</file>
<file>icons/preferences-start.svg</file>
</qresource>
</RCC>
<RCC>
<qresource prefix="/">
<file>icons/StartWorkbench.svg</file>
</qresource>
</RCC>

View File

@@ -1,2 +0,0 @@
python ..\..\..\..\Tools\dir2qrc.py -v -o Start.qrc
@pause

View File

@@ -1,182 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64px"
height="64px"
id="svg3037"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
sodipodi:docname="StartWorkbench.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
version="1.1">
<defs
id="defs3039">
<linearGradient
id="linearGradient3794">
<stop
id="stop3796"
offset="0"
style="stop-color:#729fcf;stop-opacity:1" />
<stop
id="stop3798"
offset="1"
style="stop-color:#204a87;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient3841">
<stop
style="stop-color:#0619c0;stop-opacity:1;"
offset="0"
id="stop3843" />
<stop
style="stop-color:#379cfb;stop-opacity:1;"
offset="1"
id="stop3845" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3841"
id="linearGradient3847"
x1="3709.3296"
y1="1286.7291"
x2="3935.5251"
y2="1076.6174"
gradientUnits="userSpaceOnUse" />
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 32 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="64 : 32 : 1"
inkscape:persp3d-origin="32 : 21.333333 : 1"
id="perspective3045" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3794"
id="linearGradient2991"
gradientUnits="userSpaceOnUse"
x1="3718.145"
y1="1190.5608"
x2="3940.3335"
y2="1143.1339"
gradientTransform="matrix(0,0.1731146,-0.1731146,0,232.90021,-635.22046)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3841-6"
id="linearGradient2991-3"
gradientUnits="userSpaceOnUse"
x1="3709.3296"
y1="1286.7291"
x2="3935.5251"
y2="1076.6174"
gradientTransform="matrix(0,0.1731146,-0.1731146,0,232.90021,-635.22046)" />
<linearGradient
id="linearGradient3841-6">
<stop
style="stop-color:#0619c0;stop-opacity:1;"
offset="0"
id="stop3843-7" />
<stop
style="stop-color:#379cfb;stop-opacity:1;"
offset="1"
id="stop3845-5" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.598799"
inkscape:cx="-13.439241"
inkscape:cy="44.491229"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:document-units="px"
inkscape:grid-bbox="true"
inkscape:window-width="800"
inkscape:window-height="836"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:snap-global="false">
<inkscape:grid
type="xygrid"
id="grid2990"
empspacing="2"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<metadata
id="metadata3042">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:creator>
<cc:Agent>
<dc:title>[triplus]</dc:title>
</cc:Agent>
</dc:creator>
<dc:title>StartWorkbench</dc:title>
<dc:date>2016-02-26</dc:date>
<dc:relation>https://www.freecad.org/wiki/index.php?title=Artwork</dc:relation>
<dc:publisher>
<cc:Agent>
<dc:title>FreeCAD</dc:title>
</cc:Agent>
</dc:publisher>
<dc:identifier>FreeCAD/src/Mod/Start/Gui/Resources/icons/StartWorkbench.svg</dc:identifier>
<dc:rights>
<cc:Agent>
<dc:title>FreeCAD LGPL2+</dc:title>
</cc:Agent>
</dc:rights>
<cc:license>https://www.gnu.org/copyleft/lesser.html</cc:license>
<dc:contributor>
<cc:Agent>
<dc:title>[agryson] Alexander Gryson</dc:title>
</cc:Agent>
</dc:contributor>
<dc:subject>
<rdf:Bag>
<rdf:li>arrow</rdf:li>
<rdf:li>right</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>Arrow pointing towards the right</dc:description>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<path
inkscape:connector-curvature="0"
style="fill:url(#linearGradient2991);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 61,31 31,5 l 0,14 -24,0 0,24 24,0 0,14 z"
id="rect3066"
sodipodi:nodetypes="cccccccc" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#729fcf;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 58,31 33.012263,9.3801382 33,21 9,21 l 0,20 24,0 0,11.600864 z"
id="rect3066-3"
sodipodi:nodetypes="cccccccc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 6.0 KiB

File diff suppressed because one or more lines are too long

View File

@@ -1,498 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="af" sourcelanguage="en">
<context>
<name>StartPage</name>
<message>
<location filename="TranslationTexts.py" line="42"/>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="43"/>
<source>Documents</source>
<translation type="unfinished">Documents</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="44"/>
<source>Help</source>
<translation>Hulp</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="45"/>
<source>Activity</source>
<translation type="unfinished">Activity</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="46"/>
<source>Recent files</source>
<translation>Onlangse lêers</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="47"/>
<source>Tip</source>
<translation type="unfinished">Tip</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="48"/>
<source>Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</source>
<translation type="unfinished">Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="49"/>
<source>Examples</source>
<translation type="unfinished">Examples</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="50"/>
<source>General documentation</source>
<translation type="unfinished">General documentation</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="51"/>
<source>User hub</source>
<translation type="unfinished">User hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="52"/>
<source>This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</source>
<translation type="unfinished">This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="53"/>
<source>Power users hub</source>
<translation type="unfinished">Power users hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="54"/>
<source>This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</source>
<translation type="unfinished">This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="55"/>
<source>Developers hub</source>
<translation type="unfinished">Developers hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="56"/>
<source>This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</source>
<translation type="unfinished">This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="57"/>
<source>Manual</source>
<translation type="unfinished">Manual</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="58"/>
<source>The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</source>
<translation type="unfinished">The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="59"/>
<source>Workbenches documentation</source>
<translation type="unfinished">Workbenches documentation</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="60"/>
<source>These are the help pages of all the workbenches currently installed on this computer.</source>
<translation type="unfinished">These are the help pages of all the workbenches currently installed on this computer.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="61"/>
<source>Getting help from the community</source>
<translation type="unfinished">Getting help from the community</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="62"/>
<source>The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</source>
<translation type="unfinished">The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="63"/>
<source>If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</source>
<translation type="unfinished">If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="64"/>
<source>FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</source>
<translation type="unfinished">FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="65"/>
<source>Available addons</source>
<translation type="unfinished">Available addons</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="66"/>
<source>Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</source>
<translation type="unfinished">Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="67"/>
<source>If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</source>
<translation type="unfinished">If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="68"/>
<source>Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</source>
<translation type="unfinished">Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="69"/>
<source>Recent commits</source>
<translation type="unfinished">Recent commits</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="70"/>
<source>Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</source>
<translation type="unfinished">Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="71"/>
<source>See all commits on github</source>
<translation type="unfinished">See all commits on github</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="72"/>
<source>You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</source>
<translation type="unfinished">You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="73"/>
<source>version</source>
<translation type="unfinished">version</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="74"/>
<source>build</source>
<translation type="unfinished">build</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="75"/>
<source>Create new...</source>
<translation type="unfinished">Create new...</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="76"/>
<source>Unknown</source>
<translation type="unfinished">Unknown</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="77"/>
<source>Forum</source>
<translation>Forum</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="78"/>
<source>The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</source>
<translation type="unfinished">The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="79"/>
<source>To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</source>
<translation type="unfinished">To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="80"/>
<source>Creation date</source>
<translation type="unfinished">Creation date</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="81"/>
<source>Last modification</source>
<translation type="unfinished">Last modification</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="82"/>
<source>Notes</source>
<translation type="unfinished">Notes</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="83"/>
<source>Open start page preferences</source>
<translation type="unfinished">Open start page preferences</translation>
</message>
</context>
<context>
<name>Workbench</name>
<message>
<location filename="../../Workbench.cpp" line="75"/>
<source>Start page</source>
<translation type="unfinished">Start page</translation>
</message>
</context>
<context>
<name>CmdStartPage</name>
<message>
<location filename="../../Command.cpp" line="45"/>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<location filename="../../Command.cpp" line="46"/>
<source>Start Page</source>
<translation type="unfinished">Start Page</translation>
</message>
<message>
<location filename="../../Command.cpp" line="47"/>
<source>Displays the start page in a browser view</source>
<translation type="unfinished">Displays the start page in a browser view</translation>
</message>
</context>
<context>
<name>DlgStartPreferences</name>
<message>
<location filename="../../DlgStartPreferences.ui" line="14"/>
<source>Start page options</source>
<translation type="unfinished">Start page options</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="20"/>
<source>Start page template</source>
<translation type="unfinished">Start page template</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="26"/>
<source>An optional HTML template that will be used instead of the default start page.</source>
<translation type="unfinished">An optional HTML template that will be used instead of the default start page.</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="42"/>
<source>Contents</source>
<translation type="unfinished">Contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="48"/>
<source>Show forum</source>
<translation type="unfinished">Show forum</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="55"/>
<source>Show examples folder contents</source>
<translation type="unfinished">Show examples folder contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="62"/>
<source>Show additional folder</source>
<translation type="unfinished">Show additional folder</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="69"/>
<source>If you want the examples to show on the first page</source>
<translation type="unfinished">If you want the examples to show on the first page</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="91"/>
<source>If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</source>
<translation type="unfinished">If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="110"/>
<source>An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</source>
<translation type="unfinished">An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="127"/>
<source>Show notepad</source>
<translation type="unfinished">Show notepad</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="134"/>
<source>Shows a notepad next to the file thumbnails, where you can keep notes across sessions</source>
<translation type="unfinished">Shows a notepad next to the file thumbnails, where you can keep notes across sessions</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="153"/>
<source>Show tips</source>
<translation type="unfinished">Show tips</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="163"/>
<source>Displays help tips in the Start workbench Documents tab</source>
<translation type="unfinished">Displays help tips in the Start workbench Documents tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="185"/>
<source>Fonts and colors</source>
<translation type="unfinished">Fonts and colors</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="197"/>
<source>The background of the main start page area</source>
<translation type="unfinished">The background of the main start page area</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="217"/>
<source>Background color</source>
<translation>Agtergrond kleur</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="229"/>
<source>in FreeCAD</source>
<translation type="unfinished">in FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="248"/>
<source>In external browser</source>
<translation type="unfinished">In external browser</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="266"/>
<source>Background color down gradient</source>
<translation type="unfinished">Background color down gradient</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="279"/>
<source>The color of the version text</source>
<translation type="unfinished">The color of the version text</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="299"/>
<source>Link color</source>
<translation type="unfinished">Link color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="306"/>
<source>An optional image to display as background</source>
<translation type="unfinished">An optional image to display as background</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="319"/>
<source>If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</source>
<translation type="unfinished">If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="338"/>
<source>Page background color</source>
<translation type="unfinished">Page background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="351"/>
<source>The color of the text on the main pages</source>
<translation type="unfinished">The color of the text on the main pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="371"/>
<source>Background image</source>
<translation type="unfinished">Background image</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="378"/>
<source>Page text color</source>
<translation type="unfinished">Page text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="391"/>
<source>The color of the links</source>
<translation type="unfinished">The color of the links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="417"/>
<source>The background color of the boxes inside the pages</source>
<translation type="unfinished">The background color of the boxes inside the pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="437"/>
<source>Box background color</source>
<translation type="unfinished">Box background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="450"/>
<source>The background color behind the panels</source>
<translation type="unfinished">The background color behind the panels</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="479"/>
<source>The down gradient for the background color (currently unsupported)</source>
<translation type="unfinished">The down gradient for the background color (currently unsupported)</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="502"/>
<source>Open links</source>
<translation type="unfinished">Open links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="509"/>
<source>Background text color</source>
<translation type="unfinished">Background text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="516"/>
<source>Use FreeCAD style sheet</source>
<translation type="unfinished">Use FreeCAD style sheet</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="523"/>
<source>Font family</source>
<translation type="unfinished">Font family</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="532"/>
<source>The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</source>
<translation type="unfinished">The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="538"/>
<source>Arial,Helvetica,sans</source>
<translation type="unfinished">Arial,Helvetica,sans</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="551"/>
<source>The base font size to use for all texts of the Start page</source>
<translation type="unfinished">The base font size to use for all texts of the Start page</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="554"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="572"/>
<source>Use gradient for New File icon</source>
<translation type="unfinished">Use gradient for New File icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="579"/>
<source>If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</source>
<translation type="unfinished">If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="601"/>
<source>Options</source>
<translation>Opsies</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="607"/>
<source>Choose which workbench to switch to after the program launches</source>
<translation type="unfinished">Choose which workbench to switch to after the program launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="614"/>
<source>If checked, will automatically close the Start page when FreeCAD launches</source>
<translation type="unfinished">If checked, will automatically close the Start page when FreeCAD launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="633"/>
<source>Switch workbench after loading</source>
<translation type="unfinished">Switch workbench after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="640"/>
<source>Close start page after loading</source>
<translation type="unfinished">Close start page after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="647"/>
<source>Close and switch on opening file</source>
<translation type="unfinished">Close and switch on opening file</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="654"/>
<source>If application is started by opening a file, apply the two settings above</source>
<translation type="unfinished">If application is started by opening a file, apply the two settings above</translation>
</message>
</context>
</TS>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,498 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="bg" sourcelanguage="en">
<context>
<name>StartPage</name>
<message>
<location filename="TranslationTexts.py" line="42"/>
<source>Start</source>
<translation>Старт</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="43"/>
<source>Documents</source>
<translation>Документи</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="44"/>
<source>Help</source>
<translation>Помощ</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="45"/>
<source>Activity</source>
<translation>Дейност</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="46"/>
<source>Recent files</source>
<translation>Скорошни файлове</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="47"/>
<source>Tip</source>
<translation>Съвет</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="48"/>
<source>Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</source>
<translation type="unfinished">Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="49"/>
<source>Examples</source>
<translation>Примери</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="50"/>
<source>General documentation</source>
<translation>Обща документация</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="51"/>
<source>User hub</source>
<translation>Потребителски център</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="52"/>
<source>This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</source>
<translation type="unfinished">This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="53"/>
<source>Power users hub</source>
<translation>Център за напреднали потребители</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="54"/>
<source>This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</source>
<translation type="unfinished">This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="55"/>
<source>Developers hub</source>
<translation>Център за разработчици</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="56"/>
<source>This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</source>
<translation type="unfinished">This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="57"/>
<source>Manual</source>
<translation>Наръчник</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="58"/>
<source>The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</source>
<translation type="unfinished">The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="59"/>
<source>Workbenches documentation</source>
<translation>Документация на набора инструменти</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="60"/>
<source>These are the help pages of all the workbenches currently installed on this computer.</source>
<translation type="unfinished">These are the help pages of all the workbenches currently installed on this computer.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="61"/>
<source>Getting help from the community</source>
<translation>Получаване на помощ от обществото</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="62"/>
<source>The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</source>
<translation type="unfinished">The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="63"/>
<source>If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</source>
<translation type="unfinished">If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="64"/>
<source>FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</source>
<translation type="unfinished">FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="65"/>
<source>Available addons</source>
<translation>Налични добавки</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="66"/>
<source>Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</source>
<translation type="unfinished">Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="67"/>
<source>If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</source>
<translation type="unfinished">If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="68"/>
<source>Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</source>
<translation type="unfinished">Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="69"/>
<source>Recent commits</source>
<translation type="unfinished">Recent commits</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="70"/>
<source>Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</source>
<translation type="unfinished">Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="71"/>
<source>See all commits on github</source>
<translation type="unfinished">See all commits on github</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="72"/>
<source>You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</source>
<translation type="unfinished">You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="73"/>
<source>version</source>
<translation>версия</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="74"/>
<source>build</source>
<translation>изграждане</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="75"/>
<source>Create new...</source>
<translation>Създаване на ново...</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="76"/>
<source>Unknown</source>
<translation>Неизвестно</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="77"/>
<source>Forum</source>
<translation>Форум</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="78"/>
<source>The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</source>
<translation type="unfinished">The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="79"/>
<source>To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</source>
<translation type="unfinished">To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="80"/>
<source>Creation date</source>
<translation>Дата на създаване</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="81"/>
<source>Last modification</source>
<translation>Последна модификация</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="82"/>
<source>Notes</source>
<translation>Бележки</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="83"/>
<source>Open start page preferences</source>
<translation type="unfinished">Open start page preferences</translation>
</message>
</context>
<context>
<name>Workbench</name>
<message>
<location filename="../../Workbench.cpp" line="75"/>
<source>Start page</source>
<translation>Начална страница</translation>
</message>
</context>
<context>
<name>CmdStartPage</name>
<message>
<location filename="../../Command.cpp" line="45"/>
<source>Start</source>
<translation>Старт</translation>
</message>
<message>
<location filename="../../Command.cpp" line="46"/>
<source>Start Page</source>
<translation>Начална страница</translation>
</message>
<message>
<location filename="../../Command.cpp" line="47"/>
<source>Displays the start page in a browser view</source>
<translation>Показва началната страница в изглед на браузъра</translation>
</message>
</context>
<context>
<name>DlgStartPreferences</name>
<message>
<location filename="../../DlgStartPreferences.ui" line="14"/>
<source>Start page options</source>
<translation>Опции за началната страница</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="20"/>
<source>Start page template</source>
<translation>Шаблон за началната страница</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="26"/>
<source>An optional HTML template that will be used instead of the default start page.</source>
<translation type="unfinished">An optional HTML template that will be used instead of the default start page.</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="42"/>
<source>Contents</source>
<translation>Съдържание</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="48"/>
<source>Show forum</source>
<translation>Показване на форума</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="55"/>
<source>Show examples folder contents</source>
<translation type="unfinished">Show examples folder contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="62"/>
<source>Show additional folder</source>
<translation>Показване на допълнителна папка</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="69"/>
<source>If you want the examples to show on the first page</source>
<translation>Ако искате примери да се показват на първата страница</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="91"/>
<source>If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</source>
<translation>Ако това е отбелязано, то последните публикации от форума на FreeCAD ще бъдат показвани в раздела дейност</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="110"/>
<source>An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</source>
<translation type="unfinished">An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="127"/>
<source>Show notepad</source>
<translation type="unfinished">Show notepad</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="134"/>
<source>Shows a notepad next to the file thumbnails, where you can keep notes across sessions</source>
<translation type="unfinished">Shows a notepad next to the file thumbnails, where you can keep notes across sessions</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="153"/>
<source>Show tips</source>
<translation type="unfinished">Show tips</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="163"/>
<source>Displays help tips in the Start workbench Documents tab</source>
<translation type="unfinished">Displays help tips in the Start workbench Documents tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="185"/>
<source>Fonts and colors</source>
<translation>Шрифтове и цветове</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="197"/>
<source>The background of the main start page area</source>
<translation type="unfinished">The background of the main start page area</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="217"/>
<source>Background color</source>
<translation>Цвят на фона </translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="229"/>
<source>in FreeCAD</source>
<translation>във FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="248"/>
<source>In external browser</source>
<translation>Във външен браузър</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="266"/>
<source>Background color down gradient</source>
<translation type="unfinished">Background color down gradient</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="279"/>
<source>The color of the version text</source>
<translation>Цветът на текста на версията</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="299"/>
<source>Link color</source>
<translation>Цвят на препратка</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="306"/>
<source>An optional image to display as background</source>
<translation type="unfinished">An optional image to display as background</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="319"/>
<source>If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</source>
<translation type="unfinished">If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="338"/>
<source>Page background color</source>
<translation>Цветът на фона на страницата</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="351"/>
<source>The color of the text on the main pages</source>
<translation>Цветът на текста в главните страници</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="371"/>
<source>Background image</source>
<translation>Фоново изображение</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="378"/>
<source>Page text color</source>
<translation>Цветът на текста в страницата</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="391"/>
<source>The color of the links</source>
<translation>Цветът на препратките</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="417"/>
<source>The background color of the boxes inside the pages</source>
<translation type="unfinished">The background color of the boxes inside the pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="437"/>
<source>Box background color</source>
<translation type="unfinished">Box background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="450"/>
<source>The background color behind the panels</source>
<translation type="unfinished">The background color behind the panels</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="479"/>
<source>The down gradient for the background color (currently unsupported)</source>
<translation type="unfinished">The down gradient for the background color (currently unsupported)</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="502"/>
<source>Open links</source>
<translation type="unfinished">Open links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="509"/>
<source>Background text color</source>
<translation>Фонов цвят на текста</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="516"/>
<source>Use FreeCAD style sheet</source>
<translation>Употреба на стила на FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="523"/>
<source>Font family</source>
<translation>Семейство шрифтове</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="532"/>
<source>The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</source>
<translation>Семейството шрифтове в употреба в началната страница. Може да бъде името на шрифта или поредица разделена със запетая от резервни шрифтове</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="538"/>
<source>Arial,Helvetica,sans</source>
<translation>Arial,Helvetica,sans</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="551"/>
<source>The base font size to use for all texts of the Start page</source>
<translation>Базова големина на шрифта за употреба за всички текстове на началната страница</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="554"/>
<source>px</source>
<translation>px</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="572"/>
<source>Use gradient for New File icon</source>
<translation type="unfinished">Use gradient for New File icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="579"/>
<source>If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</source>
<translation type="unfinished">If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="601"/>
<source>Options</source>
<translation>Опции</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="607"/>
<source>Choose which workbench to switch to after the program launches</source>
<translation type="unfinished">Choose which workbench to switch to after the program launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="614"/>
<source>If checked, will automatically close the Start page when FreeCAD launches</source>
<translation type="unfinished">If checked, will automatically close the Start page when FreeCAD launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="633"/>
<source>Switch workbench after loading</source>
<translation type="unfinished">Switch workbench after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="640"/>
<source>Close start page after loading</source>
<translation>Затваряне на началната страница след зареждане</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="647"/>
<source>Close and switch on opening file</source>
<translation type="unfinished">Close and switch on opening file</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="654"/>
<source>If application is started by opening a file, apply the two settings above</source>
<translation type="unfinished">If application is started by opening a file, apply the two settings above</translation>
</message>
</context>
</TS>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,498 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="fil" sourcelanguage="en">
<context>
<name>StartPage</name>
<message>
<location filename="TranslationTexts.py" line="42"/>
<source>Start</source>
<translation>Simula</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="43"/>
<source>Documents</source>
<translation>Mga Dokumento</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="44"/>
<source>Help</source>
<translation>Tulong</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="45"/>
<source>Activity</source>
<translation>Aktibidad</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="46"/>
<source>Recent files</source>
<translation>Kamakailang mga file</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="47"/>
<source>Tip</source>
<translation>Tip</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="48"/>
<source>Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</source>
<translation>Ayusin ang bilang ng mga kamakailang mga file na maipakita dito sa menu Edit -&gt; Kagustuhan -&gt; Pangkalahatan -&gt; Sukat ng kamakailang listahan ng file</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="49"/>
<source>Examples</source>
<translation>Mga Halimbawa</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="50"/>
<source>General documentation</source>
<translation>Pangkalahatang dokumento</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="51"/>
<source>User hub</source>
<translation>User hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="52"/>
<source>This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</source>
<translation>Ang seksyon na ito ay naglalaman ng dokumentasyon na kapaki-pakinabang para sa mga gumagamit ng FreeCAD sa pangkalahatan: isang listahan ng lahat ng mga workbenches, detalyadong mga tagubilin sa kung paano i-install at gamitin ang application ng FreeCAD, mga tutorial, at lahat ng kailangan mo upang makapagsimula.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="53"/>
<source>Power users hub</source>
<translation>Power users hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="54"/>
<source>This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</source>
<translation type="unfinished">This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="55"/>
<source>Developers hub</source>
<translation type="unfinished">Developers hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="56"/>
<source>This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</source>
<translation type="unfinished">This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="57"/>
<source>Manual</source>
<translation type="unfinished">Manual</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="58"/>
<source>The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</source>
<translation type="unfinished">The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="59"/>
<source>Workbenches documentation</source>
<translation type="unfinished">Workbenches documentation</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="60"/>
<source>These are the help pages of all the workbenches currently installed on this computer.</source>
<translation type="unfinished">These are the help pages of all the workbenches currently installed on this computer.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="61"/>
<source>Getting help from the community</source>
<translation type="unfinished">Getting help from the community</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="62"/>
<source>The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</source>
<translation type="unfinished">The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="63"/>
<source>If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</source>
<translation type="unfinished">If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="64"/>
<source>FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</source>
<translation type="unfinished">FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="65"/>
<source>Available addons</source>
<translation type="unfinished">Available addons</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="66"/>
<source>Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</source>
<translation type="unfinished">Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="67"/>
<source>If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</source>
<translation type="unfinished">If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="68"/>
<source>Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</source>
<translation type="unfinished">Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="69"/>
<source>Recent commits</source>
<translation type="unfinished">Recent commits</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="70"/>
<source>Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</source>
<translation type="unfinished">Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="71"/>
<source>See all commits on github</source>
<translation type="unfinished">See all commits on github</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="72"/>
<source>You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</source>
<translation type="unfinished">You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="73"/>
<source>version</source>
<translation type="unfinished">version</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="74"/>
<source>build</source>
<translation type="unfinished">build</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="75"/>
<source>Create new...</source>
<translation type="unfinished">Create new...</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="76"/>
<source>Unknown</source>
<translation type="unfinished">Unknown</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="77"/>
<source>Forum</source>
<translation>Forum</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="78"/>
<source>The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</source>
<translation type="unfinished">The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="79"/>
<source>To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</source>
<translation type="unfinished">To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="80"/>
<source>Creation date</source>
<translation type="unfinished">Creation date</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="81"/>
<source>Last modification</source>
<translation type="unfinished">Last modification</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="82"/>
<source>Notes</source>
<translation type="unfinished">Notes</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="83"/>
<source>Open start page preferences</source>
<translation type="unfinished">Open start page preferences</translation>
</message>
</context>
<context>
<name>Workbench</name>
<message>
<location filename="../../Workbench.cpp" line="75"/>
<source>Start page</source>
<translation type="unfinished">Start page</translation>
</message>
</context>
<context>
<name>CmdStartPage</name>
<message>
<location filename="../../Command.cpp" line="45"/>
<source>Start</source>
<translation>Simula</translation>
</message>
<message>
<location filename="../../Command.cpp" line="46"/>
<source>Start Page</source>
<translation type="unfinished">Start Page</translation>
</message>
<message>
<location filename="../../Command.cpp" line="47"/>
<source>Displays the start page in a browser view</source>
<translation type="unfinished">Displays the start page in a browser view</translation>
</message>
</context>
<context>
<name>DlgStartPreferences</name>
<message>
<location filename="../../DlgStartPreferences.ui" line="14"/>
<source>Start page options</source>
<translation type="unfinished">Start page options</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="20"/>
<source>Start page template</source>
<translation type="unfinished">Start page template</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="26"/>
<source>An optional HTML template that will be used instead of the default start page.</source>
<translation type="unfinished">An optional HTML template that will be used instead of the default start page.</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="42"/>
<source>Contents</source>
<translation type="unfinished">Contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="48"/>
<source>Show forum</source>
<translation type="unfinished">Show forum</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="55"/>
<source>Show examples folder contents</source>
<translation type="unfinished">Show examples folder contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="62"/>
<source>Show additional folder</source>
<translation type="unfinished">Show additional folder</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="69"/>
<source>If you want the examples to show on the first page</source>
<translation type="unfinished">If you want the examples to show on the first page</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="91"/>
<source>If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</source>
<translation type="unfinished">If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="110"/>
<source>An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</source>
<translation type="unfinished">An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="127"/>
<source>Show notepad</source>
<translation type="unfinished">Show notepad</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="134"/>
<source>Shows a notepad next to the file thumbnails, where you can keep notes across sessions</source>
<translation type="unfinished">Shows a notepad next to the file thumbnails, where you can keep notes across sessions</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="153"/>
<source>Show tips</source>
<translation type="unfinished">Show tips</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="163"/>
<source>Displays help tips in the Start workbench Documents tab</source>
<translation type="unfinished">Displays help tips in the Start workbench Documents tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="185"/>
<source>Fonts and colors</source>
<translation type="unfinished">Fonts and colors</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="197"/>
<source>The background of the main start page area</source>
<translation type="unfinished">The background of the main start page area</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="217"/>
<source>Background color</source>
<translation>Kulay ng Background</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="229"/>
<source>in FreeCAD</source>
<translation type="unfinished">in FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="248"/>
<source>In external browser</source>
<translation type="unfinished">In external browser</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="266"/>
<source>Background color down gradient</source>
<translation type="unfinished">Background color down gradient</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="279"/>
<source>The color of the version text</source>
<translation type="unfinished">The color of the version text</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="299"/>
<source>Link color</source>
<translation type="unfinished">Link color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="306"/>
<source>An optional image to display as background</source>
<translation type="unfinished">An optional image to display as background</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="319"/>
<source>If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</source>
<translation type="unfinished">If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="338"/>
<source>Page background color</source>
<translation type="unfinished">Page background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="351"/>
<source>The color of the text on the main pages</source>
<translation type="unfinished">The color of the text on the main pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="371"/>
<source>Background image</source>
<translation type="unfinished">Background image</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="378"/>
<source>Page text color</source>
<translation type="unfinished">Page text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="391"/>
<source>The color of the links</source>
<translation type="unfinished">The color of the links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="417"/>
<source>The background color of the boxes inside the pages</source>
<translation type="unfinished">The background color of the boxes inside the pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="437"/>
<source>Box background color</source>
<translation type="unfinished">Box background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="450"/>
<source>The background color behind the panels</source>
<translation type="unfinished">The background color behind the panels</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="479"/>
<source>The down gradient for the background color (currently unsupported)</source>
<translation type="unfinished">The down gradient for the background color (currently unsupported)</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="502"/>
<source>Open links</source>
<translation type="unfinished">Open links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="509"/>
<source>Background text color</source>
<translation type="unfinished">Background text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="516"/>
<source>Use FreeCAD style sheet</source>
<translation type="unfinished">Use FreeCAD style sheet</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="523"/>
<source>Font family</source>
<translation>Harapan ng pamilya</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="532"/>
<source>The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</source>
<translation type="unfinished">The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="538"/>
<source>Arial,Helvetica,sans</source>
<translation type="unfinished">Arial,Helvetica,sans</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="551"/>
<source>The base font size to use for all texts of the Start page</source>
<translation type="unfinished">The base font size to use for all texts of the Start page</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="554"/>
<source>px</source>
<translation>px</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="572"/>
<source>Use gradient for New File icon</source>
<translation type="unfinished">Use gradient for New File icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="579"/>
<source>If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</source>
<translation type="unfinished">If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="601"/>
<source>Options</source>
<translation>Mga Pagpipilian</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="607"/>
<source>Choose which workbench to switch to after the program launches</source>
<translation type="unfinished">Choose which workbench to switch to after the program launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="614"/>
<source>If checked, will automatically close the Start page when FreeCAD launches</source>
<translation type="unfinished">If checked, will automatically close the Start page when FreeCAD launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="633"/>
<source>Switch workbench after loading</source>
<translation type="unfinished">Switch workbench after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="640"/>
<source>Close start page after loading</source>
<translation type="unfinished">Close start page after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="647"/>
<source>Close and switch on opening file</source>
<translation type="unfinished">Close and switch on opening file</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="654"/>
<source>If application is started by opening a file, apply the two settings above</source>
<translation type="unfinished">If application is started by opening a file, apply the two settings above</translation>
</message>
</context>
</TS>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,498 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="kab" sourcelanguage="en">
<context>
<name>StartPage</name>
<message>
<location filename="TranslationTexts.py" line="42"/>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="43"/>
<source>Documents</source>
<translation type="unfinished">Documents</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="44"/>
<source>Help</source>
<translation type="unfinished">Help</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="45"/>
<source>Activity</source>
<translation type="unfinished">Activity</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="46"/>
<source>Recent files</source>
<translation>Fichiers récents</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="47"/>
<source>Tip</source>
<translation type="unfinished">Tip</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="48"/>
<source>Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</source>
<translation type="unfinished">Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="49"/>
<source>Examples</source>
<translation type="unfinished">Examples</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="50"/>
<source>General documentation</source>
<translation type="unfinished">General documentation</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="51"/>
<source>User hub</source>
<translation type="unfinished">User hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="52"/>
<source>This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</source>
<translation type="unfinished">This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="53"/>
<source>Power users hub</source>
<translation type="unfinished">Power users hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="54"/>
<source>This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</source>
<translation type="unfinished">This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="55"/>
<source>Developers hub</source>
<translation type="unfinished">Developers hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="56"/>
<source>This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</source>
<translation type="unfinished">This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="57"/>
<source>Manual</source>
<translation type="unfinished">Manual</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="58"/>
<source>The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</source>
<translation type="unfinished">The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="59"/>
<source>Workbenches documentation</source>
<translation type="unfinished">Workbenches documentation</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="60"/>
<source>These are the help pages of all the workbenches currently installed on this computer.</source>
<translation type="unfinished">These are the help pages of all the workbenches currently installed on this computer.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="61"/>
<source>Getting help from the community</source>
<translation type="unfinished">Getting help from the community</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="62"/>
<source>The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</source>
<translation type="unfinished">The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="63"/>
<source>If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</source>
<translation type="unfinished">If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="64"/>
<source>FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</source>
<translation type="unfinished">FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="65"/>
<source>Available addons</source>
<translation type="unfinished">Available addons</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="66"/>
<source>Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</source>
<translation type="unfinished">Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="67"/>
<source>If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</source>
<translation type="unfinished">If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="68"/>
<source>Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</source>
<translation type="unfinished">Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="69"/>
<source>Recent commits</source>
<translation type="unfinished">Recent commits</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="70"/>
<source>Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</source>
<translation type="unfinished">Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="71"/>
<source>See all commits on github</source>
<translation type="unfinished">See all commits on github</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="72"/>
<source>You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</source>
<translation type="unfinished">You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="73"/>
<source>version</source>
<translation type="unfinished">version</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="74"/>
<source>build</source>
<translation type="unfinished">build</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="75"/>
<source>Create new...</source>
<translation type="unfinished">Create new...</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="76"/>
<source>Unknown</source>
<translation type="unfinished">Unknown</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="77"/>
<source>Forum</source>
<translation>Anmager</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="78"/>
<source>The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</source>
<translation type="unfinished">The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="79"/>
<source>To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</source>
<translation type="unfinished">To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="80"/>
<source>Creation date</source>
<translation type="unfinished">Creation date</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="81"/>
<source>Last modification</source>
<translation type="unfinished">Last modification</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="82"/>
<source>Notes</source>
<translation type="unfinished">Notes</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="83"/>
<source>Open start page preferences</source>
<translation type="unfinished">Open start page preferences</translation>
</message>
</context>
<context>
<name>Workbench</name>
<message>
<location filename="../../Workbench.cpp" line="75"/>
<source>Start page</source>
<translation type="unfinished">Start page</translation>
</message>
</context>
<context>
<name>CmdStartPage</name>
<message>
<location filename="../../Command.cpp" line="45"/>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<location filename="../../Command.cpp" line="46"/>
<source>Start Page</source>
<translation type="unfinished">Start Page</translation>
</message>
<message>
<location filename="../../Command.cpp" line="47"/>
<source>Displays the start page in a browser view</source>
<translation type="unfinished">Displays the start page in a browser view</translation>
</message>
</context>
<context>
<name>DlgStartPreferences</name>
<message>
<location filename="../../DlgStartPreferences.ui" line="14"/>
<source>Start page options</source>
<translation type="unfinished">Start page options</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="20"/>
<source>Start page template</source>
<translation type="unfinished">Start page template</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="26"/>
<source>An optional HTML template that will be used instead of the default start page.</source>
<translation type="unfinished">An optional HTML template that will be used instead of the default start page.</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="42"/>
<source>Contents</source>
<translation type="unfinished">Contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="48"/>
<source>Show forum</source>
<translation type="unfinished">Show forum</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="55"/>
<source>Show examples folder contents</source>
<translation type="unfinished">Show examples folder contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="62"/>
<source>Show additional folder</source>
<translation type="unfinished">Show additional folder</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="69"/>
<source>If you want the examples to show on the first page</source>
<translation type="unfinished">If you want the examples to show on the first page</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="91"/>
<source>If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</source>
<translation type="unfinished">If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="110"/>
<source>An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</source>
<translation type="unfinished">An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="127"/>
<source>Show notepad</source>
<translation type="unfinished">Show notepad</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="134"/>
<source>Shows a notepad next to the file thumbnails, where you can keep notes across sessions</source>
<translation type="unfinished">Shows a notepad next to the file thumbnails, where you can keep notes across sessions</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="153"/>
<source>Show tips</source>
<translation type="unfinished">Show tips</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="163"/>
<source>Displays help tips in the Start workbench Documents tab</source>
<translation type="unfinished">Displays help tips in the Start workbench Documents tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="185"/>
<source>Fonts and colors</source>
<translation type="unfinished">Fonts and colors</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="197"/>
<source>The background of the main start page area</source>
<translation type="unfinished">The background of the main start page area</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="217"/>
<source>Background color</source>
<translation>Couleur d'arrière-plan</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="229"/>
<source>in FreeCAD</source>
<translation type="unfinished">in FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="248"/>
<source>In external browser</source>
<translation type="unfinished">In external browser</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="266"/>
<source>Background color down gradient</source>
<translation type="unfinished">Background color down gradient</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="279"/>
<source>The color of the version text</source>
<translation type="unfinished">The color of the version text</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="299"/>
<source>Link color</source>
<translation type="unfinished">Link color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="306"/>
<source>An optional image to display as background</source>
<translation type="unfinished">An optional image to display as background</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="319"/>
<source>If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</source>
<translation type="unfinished">If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="338"/>
<source>Page background color</source>
<translation type="unfinished">Page background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="351"/>
<source>The color of the text on the main pages</source>
<translation type="unfinished">The color of the text on the main pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="371"/>
<source>Background image</source>
<translation type="unfinished">Background image</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="378"/>
<source>Page text color</source>
<translation type="unfinished">Page text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="391"/>
<source>The color of the links</source>
<translation type="unfinished">The color of the links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="417"/>
<source>The background color of the boxes inside the pages</source>
<translation type="unfinished">The background color of the boxes inside the pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="437"/>
<source>Box background color</source>
<translation type="unfinished">Box background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="450"/>
<source>The background color behind the panels</source>
<translation type="unfinished">The background color behind the panels</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="479"/>
<source>The down gradient for the background color (currently unsupported)</source>
<translation type="unfinished">The down gradient for the background color (currently unsupported)</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="502"/>
<source>Open links</source>
<translation type="unfinished">Open links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="509"/>
<source>Background text color</source>
<translation type="unfinished">Background text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="516"/>
<source>Use FreeCAD style sheet</source>
<translation type="unfinished">Use FreeCAD style sheet</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="523"/>
<source>Font family</source>
<translation>Famille de polices</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="532"/>
<source>The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</source>
<translation type="unfinished">The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="538"/>
<source>Arial,Helvetica,sans</source>
<translation type="unfinished">Arial,Helvetica,sans</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="551"/>
<source>The base font size to use for all texts of the Start page</source>
<translation type="unfinished">The base font size to use for all texts of the Start page</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="554"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="572"/>
<source>Use gradient for New File icon</source>
<translation type="unfinished">Use gradient for New File icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="579"/>
<source>If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</source>
<translation type="unfinished">If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="601"/>
<source>Options</source>
<translation>Iɣewwaṛen</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="607"/>
<source>Choose which workbench to switch to after the program launches</source>
<translation type="unfinished">Choose which workbench to switch to after the program launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="614"/>
<source>If checked, will automatically close the Start page when FreeCAD launches</source>
<translation type="unfinished">If checked, will automatically close the Start page when FreeCAD launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="633"/>
<source>Switch workbench after loading</source>
<translation type="unfinished">Switch workbench after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="640"/>
<source>Close start page after loading</source>
<translation type="unfinished">Close start page after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="647"/>
<source>Close and switch on opening file</source>
<translation type="unfinished">Close and switch on opening file</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="654"/>
<source>If application is started by opening a file, apply the two settings above</source>
<translation type="unfinished">If application is started by opening a file, apply the two settings above</translation>
</message>
</context>
</TS>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,498 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="no" sourcelanguage="en">
<context>
<name>StartPage</name>
<message>
<location filename="TranslationTexts.py" line="42"/>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="43"/>
<source>Documents</source>
<translation type="unfinished">Documents</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="44"/>
<source>Help</source>
<translation>Hjelp</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="45"/>
<source>Activity</source>
<translation type="unfinished">Activity</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="46"/>
<source>Recent files</source>
<translation>Nylig brukte filer</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="47"/>
<source>Tip</source>
<translation type="unfinished">Tip</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="48"/>
<source>Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</source>
<translation type="unfinished">Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="49"/>
<source>Examples</source>
<translation type="unfinished">Examples</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="50"/>
<source>General documentation</source>
<translation type="unfinished">General documentation</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="51"/>
<source>User hub</source>
<translation type="unfinished">User hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="52"/>
<source>This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</source>
<translation type="unfinished">This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="53"/>
<source>Power users hub</source>
<translation type="unfinished">Power users hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="54"/>
<source>This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</source>
<translation type="unfinished">This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="55"/>
<source>Developers hub</source>
<translation type="unfinished">Developers hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="56"/>
<source>This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</source>
<translation type="unfinished">This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="57"/>
<source>Manual</source>
<translation type="unfinished">Manual</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="58"/>
<source>The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</source>
<translation type="unfinished">The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="59"/>
<source>Workbenches documentation</source>
<translation type="unfinished">Workbenches documentation</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="60"/>
<source>These are the help pages of all the workbenches currently installed on this computer.</source>
<translation type="unfinished">These are the help pages of all the workbenches currently installed on this computer.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="61"/>
<source>Getting help from the community</source>
<translation type="unfinished">Getting help from the community</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="62"/>
<source>The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</source>
<translation type="unfinished">The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="63"/>
<source>If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</source>
<translation type="unfinished">If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="64"/>
<source>FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</source>
<translation type="unfinished">FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="65"/>
<source>Available addons</source>
<translation type="unfinished">Available addons</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="66"/>
<source>Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</source>
<translation type="unfinished">Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="67"/>
<source>If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</source>
<translation type="unfinished">If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="68"/>
<source>Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</source>
<translation type="unfinished">Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="69"/>
<source>Recent commits</source>
<translation type="unfinished">Recent commits</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="70"/>
<source>Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</source>
<translation type="unfinished">Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="71"/>
<source>See all commits on github</source>
<translation type="unfinished">See all commits on github</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="72"/>
<source>You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</source>
<translation type="unfinished">You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="73"/>
<source>version</source>
<translation type="unfinished">version</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="74"/>
<source>build</source>
<translation type="unfinished">build</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="75"/>
<source>Create new...</source>
<translation type="unfinished">Create new...</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="76"/>
<source>Unknown</source>
<translation type="unfinished">Unknown</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="77"/>
<source>Forum</source>
<translation>Forum</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="78"/>
<source>The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</source>
<translation type="unfinished">The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="79"/>
<source>To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</source>
<translation type="unfinished">To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="80"/>
<source>Creation date</source>
<translation type="unfinished">Creation date</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="81"/>
<source>Last modification</source>
<translation type="unfinished">Last modification</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="82"/>
<source>Notes</source>
<translation type="unfinished">Notes</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="83"/>
<source>Open start page preferences</source>
<translation type="unfinished">Open start page preferences</translation>
</message>
</context>
<context>
<name>Workbench</name>
<message>
<location filename="../../Workbench.cpp" line="75"/>
<source>Start page</source>
<translation type="unfinished">Start page</translation>
</message>
</context>
<context>
<name>CmdStartPage</name>
<message>
<location filename="../../Command.cpp" line="45"/>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<location filename="../../Command.cpp" line="46"/>
<source>Start Page</source>
<translation type="unfinished">Start Page</translation>
</message>
<message>
<location filename="../../Command.cpp" line="47"/>
<source>Displays the start page in a browser view</source>
<translation type="unfinished">Displays the start page in a browser view</translation>
</message>
</context>
<context>
<name>DlgStartPreferences</name>
<message>
<location filename="../../DlgStartPreferences.ui" line="14"/>
<source>Start page options</source>
<translation type="unfinished">Start page options</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="20"/>
<source>Start page template</source>
<translation type="unfinished">Start page template</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="26"/>
<source>An optional HTML template that will be used instead of the default start page.</source>
<translation type="unfinished">An optional HTML template that will be used instead of the default start page.</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="42"/>
<source>Contents</source>
<translation type="unfinished">Contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="48"/>
<source>Show forum</source>
<translation type="unfinished">Show forum</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="55"/>
<source>Show examples folder contents</source>
<translation type="unfinished">Show examples folder contents</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="62"/>
<source>Show additional folder</source>
<translation type="unfinished">Show additional folder</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="69"/>
<source>If you want the examples to show on the first page</source>
<translation type="unfinished">If you want the examples to show on the first page</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="91"/>
<source>If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</source>
<translation type="unfinished">If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="110"/>
<source>An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</source>
<translation type="unfinished">An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="127"/>
<source>Show notepad</source>
<translation type="unfinished">Show notepad</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="134"/>
<source>Shows a notepad next to the file thumbnails, where you can keep notes across sessions</source>
<translation type="unfinished">Shows a notepad next to the file thumbnails, where you can keep notes across sessions</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="153"/>
<source>Show tips</source>
<translation type="unfinished">Show tips</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="163"/>
<source>Displays help tips in the Start workbench Documents tab</source>
<translation type="unfinished">Displays help tips in the Start workbench Documents tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="185"/>
<source>Fonts and colors</source>
<translation type="unfinished">Fonts and colors</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="197"/>
<source>The background of the main start page area</source>
<translation type="unfinished">The background of the main start page area</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="217"/>
<source>Background color</source>
<translation>Bakgrunnsfarge</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="229"/>
<source>in FreeCAD</source>
<translation type="unfinished">in FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="248"/>
<source>In external browser</source>
<translation type="unfinished">In external browser</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="266"/>
<source>Background color down gradient</source>
<translation type="unfinished">Background color down gradient</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="279"/>
<source>The color of the version text</source>
<translation type="unfinished">The color of the version text</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="299"/>
<source>Link color</source>
<translation type="unfinished">Link color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="306"/>
<source>An optional image to display as background</source>
<translation type="unfinished">An optional image to display as background</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="319"/>
<source>If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</source>
<translation type="unfinished">If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="338"/>
<source>Page background color</source>
<translation type="unfinished">Page background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="351"/>
<source>The color of the text on the main pages</source>
<translation type="unfinished">The color of the text on the main pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="371"/>
<source>Background image</source>
<translation type="unfinished">Background image</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="378"/>
<source>Page text color</source>
<translation type="unfinished">Page text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="391"/>
<source>The color of the links</source>
<translation type="unfinished">The color of the links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="417"/>
<source>The background color of the boxes inside the pages</source>
<translation type="unfinished">The background color of the boxes inside the pages</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="437"/>
<source>Box background color</source>
<translation type="unfinished">Box background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="450"/>
<source>The background color behind the panels</source>
<translation type="unfinished">The background color behind the panels</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="479"/>
<source>The down gradient for the background color (currently unsupported)</source>
<translation type="unfinished">The down gradient for the background color (currently unsupported)</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="502"/>
<source>Open links</source>
<translation type="unfinished">Open links</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="509"/>
<source>Background text color</source>
<translation type="unfinished">Background text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="516"/>
<source>Use FreeCAD style sheet</source>
<translation type="unfinished">Use FreeCAD style sheet</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="523"/>
<source>Font family</source>
<translation>Skrift familie</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="532"/>
<source>The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</source>
<translation type="unfinished">The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="538"/>
<source>Arial,Helvetica,sans</source>
<translation type="unfinished">Arial,Helvetica,sans</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="551"/>
<source>The base font size to use for all texts of the Start page</source>
<translation type="unfinished">The base font size to use for all texts of the Start page</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="554"/>
<source>px</source>
<translation type="unfinished">px</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="572"/>
<source>Use gradient for New File icon</source>
<translation type="unfinished">Use gradient for New File icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="579"/>
<source>If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</source>
<translation type="unfinished">If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="601"/>
<source>Options</source>
<translation>Alternativer</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="607"/>
<source>Choose which workbench to switch to after the program launches</source>
<translation type="unfinished">Choose which workbench to switch to after the program launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="614"/>
<source>If checked, will automatically close the Start page when FreeCAD launches</source>
<translation type="unfinished">If checked, will automatically close the Start page when FreeCAD launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="633"/>
<source>Switch workbench after loading</source>
<translation type="unfinished">Switch workbench after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="640"/>
<source>Close start page after loading</source>
<translation type="unfinished">Close start page after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="647"/>
<source>Close and switch on opening file</source>
<translation type="unfinished">Close and switch on opening file</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="654"/>
<source>If application is started by opening a file, apply the two settings above</source>
<translation type="unfinished">If application is started by opening a file, apply the two settings above</translation>
</message>
</context>
</TS>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,498 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="sk" sourcelanguage="en">
<context>
<name>StartPage</name>
<message>
<location filename="TranslationTexts.py" line="42"/>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="43"/>
<source>Documents</source>
<translation>Dokumenty</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="44"/>
<source>Help</source>
<translation>Pomocník</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="45"/>
<source>Activity</source>
<translation>Činnosť</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="46"/>
<source>Recent files</source>
<translation>Nedávne súbory</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="47"/>
<source>Tip</source>
<translation>Tip</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="48"/>
<source>Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</source>
<translation>Upravte počet nedávnych súborov zobrazovaných tu pomocou ponuky Upraviť -&gt; Predvoľby -&gt; Všeobecné -&gt; Veľkosť zoznamu nedávnych súborov</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="49"/>
<source>Examples</source>
<translation>Príklady</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="50"/>
<source>General documentation</source>
<translation>Všeobecná dokumentácia</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="51"/>
<source>User hub</source>
<translation>Používateľský uzol</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="52"/>
<source>This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</source>
<translation>Táto časť obsahuje dokumentáciu užitočnú pre používateľov FreeCADu: zoznam všetkých pracovných stolov, podrobné pokyny na inštaláciu a používanie aplikácie FreeCAD, návody a všetko, čo potrebujete, aby ste mohli začať.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="53"/>
<source>Power users hub</source>
<translation>Uzol pokročilých používateľov</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="54"/>
<source>This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</source>
<translation>Táto časť zhromažďuje dokumentáciu pre pokročilých používateľov a ľudí zaujímajúcich sa o písanie Python skriptov. Nájdete tu tiež úložisko makier, pokyny na ich inštaláciu a používanie a ďalšie informácie o prispôsobení FreeCADu vašim konkrétnym potrebám.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="55"/>
<source>Developers hub</source>
<translation>Uzol vývojárov</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="56"/>
<source>This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</source>
<translation>Táto časť obsahuje materiál pre vývojárov: Ako skompilovať FreeCAD, ako je štruktúrovaný zdrojový kód FreeCAD + ako sa v ňom navigovať, ako vytvárať nové pracovné stoly a/alebo vkladať FreeCAD do vašej vlastnej aplikácie.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="57"/>
<source>Manual</source>
<translation>Príručka</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="58"/>
<source>The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</source>
<translation>Príručka FreeCADu je ďalším, priamejším spôsobom, ako prezentovať informácie obsiahnuté na tejto wiki. Bol napísaný vo forme knihy a postupne vám predstaví mnoho ďalších stránok vo vyššie spomínaných uzloch. K dispozícii aj &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt; &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;verzie elektronických kníh &lt;/a&gt;.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="59"/>
<source>Workbenches documentation</source>
<translation>Dokumentácia k pracovným stolom</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="60"/>
<source>These are the help pages of all the workbenches currently installed on this computer.</source>
<translation>Tu nájdete stránky pomocníka pre všetky pracovné stoly, ktoré momentálne nainštalované v tomto počítači.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="61"/>
<source>Getting help from the community</source>
<translation>Získanie pomoci od komunity</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="62"/>
<source>The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</source>
<translation>&lt;a href="https://forum.freecadweb.org"&gt;Diskusné fórum FreeCADu&lt;/a&gt; je výborným miestom na získanie pomoci od iných užívateľov FreeCADu a jeho vývojárov. Fórum obsahuje veľa sekcií pre diskusie o rozličných témach a problémoch. Ak neviete, kam kliknúť, napíšte do všeobecnejšej sekcie &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Pomoc s používaním FreeCADu&lt;/a&gt;.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="63"/>
<source>If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</source>
<translation>Ak pridávate príspevok na fórum po prvýkrát, najskôr si prečítajte &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;pravidlá prispievania&lt;/a&gt;!</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="64"/>
<source>FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</source>
<translation>FreeCAD tiež udržiava verejný &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt;, na ktorom môže ktokoľvek ohlásiť chybu alebo navrhnúť novú funkcionalitu. Aby ste zabránili duplicitám a mali čo najväčšiu šancu, že bude vaša chyba odstránená, pred vložením príspevku si prečítajte &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;príručku ohlasovania chýb&lt;/a&gt;.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="65"/>
<source>Available addons</source>
<translation>Dostupné doplnky</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="66"/>
<source>Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</source>
<translation>Nižšie je zoznam dostupných dodatočných pracovných stolov, ktoré môžete pridať do svojej inštalácie FreeCADu. Prehliadať a inštalovať ich môžete z menu Nástroje -&gt; Správca doplnkov. Viac sa o každom dozviete po kliknutí na odkazy nižšie.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="67"/>
<source>If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</source>
<translation>Ak nie je balík s dokumentáciou aplikácie FreeCAD zahrnutý vo vašej verzii aplikácie, nainštalujte ho a získate tak uzly dokumentácie, pomocníka pre pracovné stoly a dokumentáciu k jednotlivým príkazom dostupnú bez pripojenia k internetu.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="68"/>
<source>Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</source>
<translation>Nedajú sa získať informácie z platformy GitHub. &lt;a href="EnableDownload.py"&gt;Povoľte aplikácii FreeCAD prístup k internetu&lt;/a&gt; a znovu načítajte úvodnú stránku.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="69"/>
<source>Recent commits</source>
<translation>Nedávne začlenenia</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="70"/>
<source>Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</source>
<translation>Nižšie sú uvedené najnovšie zmeny vykonané v &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;zdrojovom kóde aplikácie FreeCAD&lt;/a&gt;. Tieto zmeny nemusia byť zatiaľ premietnuté vo verzii aplikácie FreeCAD, ktorú práve používate. Skontrolujte &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;dostupné možnosti&lt;/a&gt;, ak si želáte získať verziu vo vývoji.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="71"/>
<source>See all commits on github</source>
<translation>Prezrite všetky začlenenia na platforme github</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="72"/>
<source>You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</source>
<translation>Môžete nastaviť vlastný priečinok, ktorý tu byť zobrazený, pomocou ponuky Upraviť -&gt; Predvoľby -&gt; Úvod -&gt; Zobraziť dodatočný priečinok</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="73"/>
<source>version</source>
<translation>verzia</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="74"/>
<source>build</source>
<translation>zostava</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="75"/>
<source>Create new...</source>
<translation>Vytvoriť nový...</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="76"/>
<source>Unknown</source>
<translation>Neznáma</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="77"/>
<source>Forum</source>
<translation>Fórum</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="78"/>
<source>The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</source>
<translation>Najnovšie príspevky na &lt;a href="https://forum.freecadweb.org"&gt;diskusnom fóre aplikácie FreeCAD&lt;/a&gt;:</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="79"/>
<source>To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</source>
<translation>Na otvorenie ktoréhokoľvek vyššie uvedeného odkazu vo vašom prehliadači kliknite pravým tlačidlom -&gt; Otvoriť v externom prehliadači</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="80"/>
<source>Creation date</source>
<translation>Dátum vytvorenia</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="81"/>
<source>Last modification</source>
<translation>Posledná úprava</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="82"/>
<source>Notes</source>
<translation>Poznámky</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="83"/>
<source>Open start page preferences</source>
<translation>Otvoriť predvoľby úvodnej stránky</translation>
</message>
</context>
<context>
<name>Workbench</name>
<message>
<location filename="../../Workbench.cpp" line="75"/>
<source>Start page</source>
<translation>Úvodná stránka</translation>
</message>
</context>
<context>
<name>CmdStartPage</name>
<message>
<location filename="../../Command.cpp" line="45"/>
<source>Start</source>
<translation type="unfinished">Start</translation>
</message>
<message>
<location filename="../../Command.cpp" line="46"/>
<source>Start Page</source>
<translation>Úvodná stránka</translation>
</message>
<message>
<location filename="../../Command.cpp" line="47"/>
<source>Displays the start page in a browser view</source>
<translation>Zobrazí úvodnú obrazovku v zobrazení prehliadača</translation>
</message>
</context>
<context>
<name>DlgStartPreferences</name>
<message>
<location filename="../../DlgStartPreferences.ui" line="14"/>
<source>Start page options</source>
<translation>Voľby úvodnej stránky</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="20"/>
<source>Start page template</source>
<translation>Šablóna úvodnej stránky</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="26"/>
<source>An optional HTML template that will be used instead of the default start page.</source>
<translation>Voliteľná šablóna HTML, ktorá sa použije namiesto predvolenej úvodnej stránky.</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="42"/>
<source>Contents</source>
<translation>Obsah</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="48"/>
<source>Show forum</source>
<translation>Zobraziť fórum</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="55"/>
<source>Show examples folder contents</source>
<translation>Zobraziť obsah priečinku s príkladmi</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="62"/>
<source>Show additional folder</source>
<translation>Zobraziť dodatočný priečinok</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="69"/>
<source>If you want the examples to show on the first page</source>
<translation>Ak chcete zobraziť príklady na prvej stránke</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="91"/>
<source>If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</source>
<translation>Ak je táto voľba zaškrtnutá, v karte Činnosť budú zobrazené najnovšie príspevky z fóra aplikácie FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="110"/>
<source>An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</source>
<translation>Voliteľný vlastný priečinok, ktorý sa zobraziť na spodku prvej strany.
Použitím ";;" na oddelenie ciest môžete pridať viac priečinkov</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="127"/>
<source>Show notepad</source>
<translation>Zobraziť poznámkový blok</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="134"/>
<source>Shows a notepad next to the file thumbnails, where you can keep notes across sessions</source>
<translation>Pri náhľadoch súborov zobrazí poznámkový blok, v ktorom si môžete viesť poznámky medzi jednotlivými sedeniami</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="153"/>
<source>Show tips</source>
<translation>Zobraziť tipy</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="163"/>
<source>Displays help tips in the Start workbench Documents tab</source>
<translation>Zobrazí pomocné tipy v záložke Dokumenty na pracovnom stole Úvod</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="185"/>
<source>Fonts and colors</source>
<translation>Písma a farby</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="197"/>
<source>The background of the main start page area</source>
<translation>Pozadie hlavnej oblasti úvodnej stránky</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="217"/>
<source>Background color</source>
<translation>Farba pozadia</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="229"/>
<source>in FreeCAD</source>
<translation>v aplikácii FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="248"/>
<source>In external browser</source>
<translation>V externom prehliadači</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="266"/>
<source>Background color down gradient</source>
<translation>Spodný prechod farby pozadia</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="279"/>
<source>The color of the version text</source>
<translation>Farba textu verzie</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="299"/>
<source>Link color</source>
<translation>Farba odkazu</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="306"/>
<source>An optional image to display as background</source>
<translation>Voliteľný obrázok zobrazený na pozadí</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="319"/>
<source>If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</source>
<translation>Ak je táto voľba zaškrtnutá a je zvolený hárok štýlu vo všeobecných predvoľbách, bude použitý a nahradí farby uvedené nižšie</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="338"/>
<source>Page background color</source>
<translation>Farba pozadia stránky</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="351"/>
<source>The color of the text on the main pages</source>
<translation>Farba textu na hlavných stránkach</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="371"/>
<source>Background image</source>
<translation>Obrázok pozadia</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="378"/>
<source>Page text color</source>
<translation>Farba textu stránky</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="391"/>
<source>The color of the links</source>
<translation>Farba odkazov</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="417"/>
<source>The background color of the boxes inside the pages</source>
<translation>Farba pozadia rámcov na stránkach</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="437"/>
<source>Box background color</source>
<translation>Farba pozadia rámcov</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="450"/>
<source>The background color behind the panels</source>
<translation>Farba pozadia za panelmi</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="479"/>
<source>The down gradient for the background color (currently unsupported)</source>
<translation>Dolný prechod pre farbu pozadia (momentálne nepodporovaný)</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="502"/>
<source>Open links</source>
<translation>Otvoriť odkazy</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="509"/>
<source>Background text color</source>
<translation>Farba pozadia textu</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="516"/>
<source>Use FreeCAD style sheet</source>
<translation>Použiť hárok štýlu aplikácie FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="523"/>
<source>Font family</source>
<translation type="unfinished">Font family</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="532"/>
<source>The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</source>
<translation>Rez písma, ktorý sa použiť pre úvodnú stránku. Môže to byť názov písma, alebo záložné písma oddelené čiarkou</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="538"/>
<source>Arial,Helvetica,sans</source>
<translation>Arial,Helvetica,sans</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="551"/>
<source>The base font size to use for all texts of the Start page</source>
<translation>Základná veľkosť písma, ktorá sa použije pre všetky texty úvodnej stránky</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="554"/>
<source>px</source>
<translation>px</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="572"/>
<source>Use gradient for New File icon</source>
<translation>Použiť prechod v ikone nového súboru</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="579"/>
<source>If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</source>
<translation>Ak je toto zvolené, ikona "Nový súbor" zobrazí namiesto normálnej ikony ikonu s prechodom</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="601"/>
<source>Options</source>
<translation>Voľby</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="607"/>
<source>Choose which workbench to switch to after the program launches</source>
<translation>Zvoľte si, ktorý pracovný stôl chcete otvoriť hneď po štarte programu</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="614"/>
<source>If checked, will automatically close the Start page when FreeCAD launches</source>
<translation>Ak je toto zvolené, úvodná stranka sa pri spustení FreeCADu automaticky zavrie</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="633"/>
<source>Switch workbench after loading</source>
<translation>Prepnúť pracovný stôl po spustení</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="640"/>
<source>Close start page after loading</source>
<translation>Zavrieť úvodnú obrazovku po spustení</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="647"/>
<source>Close and switch on opening file</source>
<translation>Zavrieť a prepnúť na otváranie súboru</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="654"/>
<source>If application is started by opening a file, apply the two settings above</source>
<translation>Ak je aplikácia spustená otvorením súboru, aplikovať dve nastavenia uvedené vyššie</translation>
</message>
</context>
</TS>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,498 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1" language="vi" sourcelanguage="en">
<context>
<name>StartPage</name>
<message>
<location filename="TranslationTexts.py" line="42"/>
<source>Start</source>
<translation>Bắt đu</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="43"/>
<source>Documents</source>
<translation>Tài liệu</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="44"/>
<source>Help</source>
<translation>Trợ giúp</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="45"/>
<source>Activity</source>
<translation>Hoạt đng</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="46"/>
<source>Recent files</source>
<translation>Tập tin mới dùng</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="47"/>
<source>Tip</source>
<translation>Mẹo</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="48"/>
<source>Adjust the number of recent files to be shown here in menu Edit -&gt; Preferences -&gt; General -&gt; Size of recent file list</source>
<translation>𝐍1𝐊7𝐁𝐍𝐕𝐏3𝐘𝐏6𝐇𝐑</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="49"/>
<source>Examples</source>
<translation> dụ</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="50"/>
<source>General documentation</source>
<translation>Tài liệu chung</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="51"/>
<source>User hub</source>
<translation type="unfinished">User hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="52"/>
<source>This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</source>
<translation type="unfinished">This section contains documentation useful for FreeCAD users in general: a list of all the workbenches, detailed instructions on how to install and use the FreeCAD application, tutorials, and all you need to get started.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="53"/>
<source>Power users hub</source>
<translation type="unfinished">Power users hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="54"/>
<source>This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</source>
<translation type="unfinished">This section gathers documentation for advanced users and people interested in writing python scripts. You will also find there a repository of macros, instructions on how to install and use them, and more information about customizing FreeCAD to your specific needs.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="55"/>
<source>Developers hub</source>
<translation type="unfinished">Developers hub</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="56"/>
<source>This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</source>
<translation type="unfinished">This section contains material for developers: How to compile FreeCAD yourself, how the FreeCAD source code is structured + how to navigate in it, how to develop new workbenches and/or embed FreeCAD in your own application.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="57"/>
<source>Manual</source>
<translation>Hướng dẫn sử dụng</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="58"/>
<source>The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</source>
<translation type="unfinished">The FreeCAD manual is another, more linear way to present the information contained in this wiki. It is made to be read like a book, and will gently introduce you to many other pages from the hubs above. &lt;a href="https://www.gitbook.com/book/yorikvanhavre/a-freecad-manual/details"&gt;e-book versions&lt;/a&gt; are also available.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="59"/>
<source>Workbenches documentation</source>
<translation type="unfinished">Workbenches documentation</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="60"/>
<source>These are the help pages of all the workbenches currently installed on this computer.</source>
<translation type="unfinished">These are the help pages of all the workbenches currently installed on this computer.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="61"/>
<source>Getting help from the community</source>
<translation>Tìm trợ giúp từ cộng đng</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="62"/>
<source>The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</source>
<translation type="unfinished">The &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt; is a great place to get help from other FreeCAD users and developers. The forum has many sections for different types of issues and discussion subjects. If in doubt, post in the more general &lt;a href="https://forum.freecadweb.org/viewforum.php?f=3"&gt;Help on using FreeCAD&lt;/a&gt; section.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="63"/>
<source>If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</source>
<translation type="unfinished">If it is the first time you are posting on the forum, be sure to &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=2264"&gt;read the guidelines&lt;/a&gt; first!</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="64"/>
<source>FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</source>
<translation type="unfinished">FreeCAD also maintains a public &lt;a href="https://www.freecadweb.org/tracker"&gt;bug tracker&lt;/a&gt; where anybody can submit bugs and propose new features. To avoid causing extra work and give the best chances to see your bug solved, make sure you read the &lt;a href="https://forum.freecadweb.org/viewtopic.php?f=3&amp;t=5236"&gt;bug submission guide&lt;/a&gt; before posting.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="65"/>
<source>Available addons</source>
<translation type="unfinished">Available addons</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="66"/>
<source>Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</source>
<translation type="unfinished">Below is a list of available extra workbenches that can be added to your FreeCAD installation. Browse and install them from menu Tools -&gt; Addons manager. You can learn more about any of them by clicking the links below.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="67"/>
<source>If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</source>
<translation type="unfinished">If not bundled with your FreeCAD version, install the FreeCAD documentation package to get documentation hubs, workbench help and individual command documentation without an internet connection.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="68"/>
<source>Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</source>
<translation type="unfinished">Cannot fetch information from GitHub. &lt;a href="EnableDownload.py"&gt;Authorize FreeCAD to access the internet&lt;/a&gt; and reload the Start page.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="69"/>
<source>Recent commits</source>
<translation type="unfinished">Recent commits</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="70"/>
<source>Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</source>
<translation type="unfinished">Below are the latest changes added to the &lt;a href="http://github.com/FreeCAD/FreeCAD/"&gt;FreeCAD source code&lt;/a&gt;. These changes might not reflect yet in the FreeCAD version that you are currently running. Check the &lt;a href="https://www.freecadweb.org/wiki/Downloads"&gt;available options&lt;/a&gt; if you wish to obtain a development version.</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="71"/>
<source>See all commits on github</source>
<translation>Xem mọi lần chuyển giao nguồn trên github</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="72"/>
<source>You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</source>
<translation type="unfinished">You can configure a custom folder to display here in menu Edit -&gt; Preferences -&gt; Start -&gt; Show additional folder</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="73"/>
<source>version</source>
<translation type="unfinished">version</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="74"/>
<source>build</source>
<translation type="unfinished">build</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="75"/>
<source>Create new...</source>
<translation>Tạo mới...</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="76"/>
<source>Unknown</source>
<translation>Không </translation>
</message>
<message>
<location filename="TranslationTexts.py" line="77"/>
<source>Forum</source>
<translation>Diễn đàn</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="78"/>
<source>The latest posts on the &lt;a href="https://forum.freecadweb.org"&gt;FreeCAD forum&lt;/a&gt;:</source>
<translation>Bài gửi mới nhất trên &lt;a href="https://forum.freecadweb.org"&gt;diễn đàn FreeCAD&lt;/a&gt;:</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="79"/>
<source>To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</source>
<translation type="unfinished">To open any of the links above in your desktop browser, Right-click -&gt; Open in external browser</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="80"/>
<source>Creation date</source>
<translation>Ngày tạo</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="81"/>
<source>Last modification</source>
<translation>Chỉnh sửa lần cuối</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="82"/>
<source>Notes</source>
<translation>Ghi chú</translation>
</message>
<message>
<location filename="TranslationTexts.py" line="83"/>
<source>Open start page preferences</source>
<translation type="unfinished">Open start page preferences</translation>
</message>
</context>
<context>
<name>Workbench</name>
<message>
<location filename="../../Workbench.cpp" line="75"/>
<source>Start page</source>
<translation>Trang bắt đu</translation>
</message>
</context>
<context>
<name>CmdStartPage</name>
<message>
<location filename="../../Command.cpp" line="45"/>
<source>Start</source>
<translation>Bắt đu</translation>
</message>
<message>
<location filename="../../Command.cpp" line="46"/>
<source>Start Page</source>
<translation>Trang bắt đu</translation>
</message>
<message>
<location filename="../../Command.cpp" line="47"/>
<source>Displays the start page in a browser view</source>
<translation>Mở trang bắt đu trong bộ xem trình duyệt</translation>
</message>
</context>
<context>
<name>DlgStartPreferences</name>
<message>
<location filename="../../DlgStartPreferences.ui" line="14"/>
<source>Start page options</source>
<translation>Tùy chọn trang bắt đu</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="20"/>
<source>Start page template</source>
<translation>Mẫu trang bắt đu</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="26"/>
<source>An optional HTML template that will be used instead of the default start page.</source>
<translation type="unfinished">An optional HTML template that will be used instead of the default start page.</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="42"/>
<source>Contents</source>
<translation>Nội dung</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="48"/>
<source>Show forum</source>
<translation>Hiển thị diễn đàn</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="55"/>
<source>Show examples folder contents</source>
<translation>Hiển thị nội dung thư mục chứa dụ</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="62"/>
<source>Show additional folder</source>
<translation>Hiển thị thêm các thư mục khác</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="69"/>
<source>If you want the examples to show on the first page</source>
<translation>Nếu bạn muốn các dụ hiển thị trang bắt đu</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="91"/>
<source>If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</source>
<translation type="unfinished">If this is checked, the latest posts from the FreeCAD forum will be displayed on the Activity tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="110"/>
<source>An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</source>
<translation type="unfinished">An optional custom folder to be displayed at the bottom of the first page.
By using ";;" to separate paths, you can add several folders here</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="127"/>
<source>Show notepad</source>
<translation type="unfinished">Show notepad</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="134"/>
<source>Shows a notepad next to the file thumbnails, where you can keep notes across sessions</source>
<translation type="unfinished">Shows a notepad next to the file thumbnails, where you can keep notes across sessions</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="153"/>
<source>Show tips</source>
<translation type="unfinished">Show tips</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="163"/>
<source>Displays help tips in the Start workbench Documents tab</source>
<translation type="unfinished">Displays help tips in the Start workbench Documents tab</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="185"/>
<source>Fonts and colors</source>
<translation>Phông chữ màu sắc</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="197"/>
<source>The background of the main start page area</source>
<translation type="unfinished">The background of the main start page area</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="217"/>
<source>Background color</source>
<translation>Màu nền</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="229"/>
<source>in FreeCAD</source>
<translation>trong FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="248"/>
<source>In external browser</source>
<translation>Dùng trình duyệt ngoài</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="266"/>
<source>Background color down gradient</source>
<translation type="unfinished">Background color down gradient</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="279"/>
<source>The color of the version text</source>
<translation type="unfinished">The color of the version text</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="299"/>
<source>Link color</source>
<translation type="unfinished">Link color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="306"/>
<source>An optional image to display as background</source>
<translation type="unfinished">An optional image to display as background</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="319"/>
<source>If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</source>
<translation type="unfinished">If this is checked and a style sheet is specified in General preferences, it will be used and override the colors below</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="338"/>
<source>Page background color</source>
<translation type="unfinished">Page background color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="351"/>
<source>The color of the text on the main pages</source>
<translation>Màu của chữ trong trang chính</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="371"/>
<source>Background image</source>
<translation>Hình nh nền</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="378"/>
<source>Page text color</source>
<translation type="unfinished">Page text color</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="391"/>
<source>The color of the links</source>
<translation>Màu sắc của liên kết</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="417"/>
<source>The background color of the boxes inside the pages</source>
<translation>Màu nền của hộp bên trong các trang</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="437"/>
<source>Box background color</source>
<translation>Màu nền hộp</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="450"/>
<source>The background color behind the panels</source>
<translation>Màu nền đng sau bảng điều khiển</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="479"/>
<source>The down gradient for the background color (currently unsupported)</source>
<translation type="unfinished">The down gradient for the background color (currently unsupported)</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="502"/>
<source>Open links</source>
<translation>Mở liên kết</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="509"/>
<source>Background text color</source>
<translation>Màu nền chữ</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="516"/>
<source>Use FreeCAD style sheet</source>
<translation>Dùng kiểu dáng FreeCAD</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="523"/>
<source>Font family</source>
<translation>Họ phông chữ</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="532"/>
<source>The font family to use on the start page. Can be a font name or a comma-separated series of fallback fonts</source>
<translation>Họ phông chữ đưc dùng trong trang bắt đu. thể một tên phông chữ hoặc một danh sách ngăn cách bằng dấu phẩy các phông chữ</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="538"/>
<source>Arial,Helvetica,sans</source>
<translation type="unfinished">Arial,Helvetica,sans</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="551"/>
<source>The base font size to use for all texts of the Start page</source>
<translation>Cỡ phông chữ sở dùng cho mọi chữ trong trang Bắt đu</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="554"/>
<source>px</source>
<translation>điểm nh</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="572"/>
<source>Use gradient for New File icon</source>
<translation type="unfinished">Use gradient for New File icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="579"/>
<source>If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</source>
<translation type="unfinished">If this is selected, the 'New File' icon shows a gradient icon instead of the normal icon</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="601"/>
<source>Options</source>
<translation>Tùy chọn</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="607"/>
<source>Choose which workbench to switch to after the program launches</source>
<translation type="unfinished">Choose which workbench to switch to after the program launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="614"/>
<source>If checked, will automatically close the Start page when FreeCAD launches</source>
<translation type="unfinished">If checked, will automatically close the Start page when FreeCAD launches</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="633"/>
<source>Switch workbench after loading</source>
<translation type="unfinished">Switch workbench after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="640"/>
<source>Close start page after loading</source>
<translation type="unfinished">Close start page after loading</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="647"/>
<source>Close and switch on opening file</source>
<translation type="unfinished">Close and switch on opening file</translation>
</message>
<message>
<location filename="../../DlgStartPreferences.ui" line="654"/>
<source>If application is started by opening a file, apply the two settings above</source>
<translation type="unfinished">If application is started by opening a file, apply the two settings above</translation>
</message>
</context>
</TS>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,298 +1,313 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QCoreApplication>
#include <QGridLayout>
#include <QLabel>
#include <QListView>
#include <QPushButton>
#include <QScrollArea>
#include <QWidget>
#endif
#include "CleanStartView.h"
#include "FileCardDelegate.h"
#include "FileCardView.h"
#include "Gui/Workbench.h"
#include <Gui/Document.h>
#include <App/DocumentObject.h>
#include <App/Application.h>
#include <Base/Interpreter.h>
#include <Gui/Application.h>
#include <Gui/Command.h>
#include <3rdParty/GSL/include/gsl/pointers>
using namespace CleanStartGui;
TYPESYSTEM_SOURCE_ABSTRACT(CleanStartGui::CleanStartView, Gui::MDIView) // NOLINT
namespace {
struct NewButton
{
QString heading;
QString description;
QString iconPath;
};
gsl::owner<QPushButton*> createNewButton(const NewButton& newButton)
{
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
const auto cardSpacing = static_cast<int>(hGrp->GetInt("FileCardSpacing", 20)); // NOLINT
const auto newFileIconSize = static_cast<int>(hGrp->GetInt("NewFileIconSize", 48)); // NOLINT
auto button = gsl::owner<QPushButton*>(new QPushButton());
auto mainLayout = gsl::owner<QHBoxLayout*>(new QHBoxLayout(button));
auto iconLabel = gsl::owner<QLabel*>(new QLabel(button));
mainLayout->addWidget(iconLabel);
QIcon baseIcon(newButton.iconPath);
iconLabel->setPixmap(baseIcon.pixmap(newFileIconSize, newFileIconSize));
auto textLayout = gsl::owner<QVBoxLayout*>(new QVBoxLayout);
auto textLabelLine1 = gsl::owner<QLabel*>(new QLabel(button));
textLabelLine1->setText(QLatin1String("<b>") + newButton.heading + QLatin1String("</b>"));
auto textLabelLine2 = gsl::owner<QLabel*>(new QLabel(button));
textLabelLine2->setText(newButton.description);
textLabelLine2->setWordWrap(true);
textLayout->addWidget(textLabelLine1);
textLayout->addWidget(textLabelLine2);
textLayout->setSpacing(0);
mainLayout->addItem(textLayout);
mainLayout->addStretch();
button->setMinimumHeight(newFileIconSize + cardSpacing);
return button;
}
}
CleanStartView::CleanStartView(Gui::Document* pcDocument, QWidget* parent)
: Gui::MDIView(pcDocument, parent)
, _contents(new QScrollArea(parent))
{
setObjectName(QLatin1String("CleanStartView"));
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
auto cardSpacing = hGrp->GetInt("FileCardSpacing", 20); // NOLINT
auto scrolledWidget = gsl::owner<QWidget*>(new QWidget(this));
_contents->setWidget(scrolledWidget);
_contents->setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
_contents->setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
_contents->setWidgetResizable(true);
auto layout = gsl::owner<QVBoxLayout*>(new QVBoxLayout(scrolledWidget));
layout->setSizeConstraint(QLayout::SizeConstraint::SetMinAndMaxSize);
auto newFileLabel = gsl::owner<QLabel*>(new QLabel(tr("New File")));
layout->addWidget(newFileLabel);
auto gridLayout = gsl::owner<QGridLayout*>(new QGridLayout);
layout->addLayout(gridLayout);
configureNewFileButtons(gridLayout);
auto recentFilesLabel = gsl::owner<QLabel*>(new QLabel(tr("Recent Files")));
layout->addWidget(recentFilesLabel);
auto recentFilesListWidget = gsl::owner<FileCardView*>(new FileCardView(_contents));
connect(recentFilesListWidget, &QListView::clicked, this, &CleanStartView::fileCardSelected);
layout->addWidget(recentFilesListWidget);
auto examplesLabel = gsl::owner<QLabel*>(new QLabel(tr("Examples")));
layout->addWidget(examplesLabel);
auto examplesListWidget = gsl::owner<FileCardView*>(new FileCardView(_contents));
connect(examplesListWidget, &QListView::clicked, this, &CleanStartView::fileCardSelected);
layout->addWidget(examplesListWidget);
layout->setSpacing(static_cast<int>(cardSpacing));
layout->addStretch();
setCentralWidget(_contents);
QString title = QCoreApplication::translate("Workbench", "Start");
setWindowTitle(title);
configureExamplesListWidget(examplesListWidget);
configureRecentFilesListWidget(recentFilesListWidget);
}
void CleanStartView::configureNewFileButtons(QGridLayout* layout) const
{
auto newEmptyFile = createNewButton({tr("Empty file"),
tr("Create a new empty FreeCAD file"),
QLatin1String(":/icons/document-new.svg")});
auto openFile = createNewButton({tr("Open File"),
tr("Open an existing CAD file or 3D model"),
QLatin1String(":/icons/document-open.svg")});
auto partDesign = createNewButton({tr("Parametric Part"),
tr("Create a part with the Part Design workbench"),
QLatin1String(":/icons/PartDesignWorkbench.svg")});
auto assembly = createNewButton({tr("Assembly"),
tr("Create an assembly project"),
QLatin1String(":/icons/AssemblyWorkbench.svg")});
auto draft = createNewButton({tr("2D Draft"),
tr("Create a 2D Draft with the Draft workbench"),
QLatin1String(":/icons/DraftWorkbench.svg")});
auto arch = createNewButton({tr("BIM/Architecture"),
tr("Create an architectural project"),
QLatin1String(":/icons/ArchWorkbench.svg")});
layout->addWidget(partDesign, 0, 0);
layout->addWidget(assembly, 0, 1);
layout->addWidget(draft, 0, 2);
layout->addWidget(arch, 1, 0);
layout->addWidget(newEmptyFile, 1, 1);
layout->addWidget(openFile, 1, 2);
connect(newEmptyFile, &QPushButton::clicked, this, &CleanStartView::newEmptyFile);
connect(openFile, &QPushButton::clicked, this, &CleanStartView::openExistingFile);
connect(partDesign, &QPushButton::clicked, this, &CleanStartView::newPartDesignFile);
connect(assembly, &QPushButton::clicked, this, &CleanStartView::newAssemblyFile);
connect(draft, &QPushButton::clicked, this, &CleanStartView::newDraftFile);
connect(arch, &QPushButton::clicked, this, &CleanStartView::newArchFile);
}
void CleanStartView::configureFileCardWidget(QListView* fileCardWidget)
{
auto delegate = gsl::owner<FileCardDelegate*>(new FileCardDelegate);
fileCardWidget->setItemDelegate(delegate);
fileCardWidget->setMinimumWidth(fileCardWidget->parentWidget()->width());
fileCardWidget->setGridSize(
fileCardWidget->itemDelegate()->sizeHint(QStyleOptionViewItem(),
fileCardWidget->model()->index(0, 0)));
}
void CleanStartView::configureRecentFilesListWidget(QListView* recentFilesListWidget)
{
_recentFilesModel.loadRecentFiles();
recentFilesListWidget->setModel(&_recentFilesModel);
configureFileCardWidget(recentFilesListWidget);
}
void CleanStartView::configureExamplesListWidget(QListView* examplesListWidget)
{
_examplesModel.loadExamples();
examplesListWidget->setModel(&_examplesModel);
configureFileCardWidget(examplesListWidget);
}
void CleanStartView::newEmptyFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
postStart(PostStartBehavior::switchWorkbench);
}
void CleanStartView::newPartDesignFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
Gui::Application::Instance->activateWorkbench("PartDesignWorkbench");
Gui::Application::Instance->commandManager().runCommandByName("PartDesign_Body");
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
void CleanStartView::openExistingFile() const
{
auto originalDocument = Gui::Application::Instance->activeDocument();
Gui::Application::Instance->commandManager().runCommandByName("Std_Open");
if (Gui::Application::Instance->activeDocument() != originalDocument) {
// Only run this if the user chose a new document to open (that is, they didn't cancel the
// open file dialog)
postStart(PostStartBehavior::switchWorkbench);
}
}
void CleanStartView::newAssemblyFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
Gui::Application::Instance->activateWorkbench("AssemblyWorkbench");
Gui::Application::Instance->commandManager().runCommandByName("Assembly_CreateAssembly");
Gui::Application::Instance->commandManager().runCommandByName("Std_Refresh");
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
void CleanStartView::newDraftFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
Gui::Application::Instance->activateWorkbench("DraftWorkbench");
Gui::Application::Instance->commandManager().runCommandByName("Std_ViewTop");
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
void CleanStartView::newArchFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
try {
Gui::Application::Instance->activateWorkbench("BIMWorkbench");
}
catch (...) {
Gui::Application::Instance->activateWorkbench("ArchWorkbench");
}
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
void CleanStartView::postStart(PostStartBehavior behavior) const
{
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
if (behavior == PostStartBehavior::switchWorkbench) {
auto wb = hGrp->GetASCII("AutoloadModule", "");
if (wb == "$LastModule") {
wb = App::GetApplication()
.GetParameterGroupByPath("User parameter:BaseApp/Preferences/General")
->GetASCII("LastModule", "");
}
if (!wb.empty()) {
Gui::Application::Instance->activateWorkbench(wb.c_str());
}
}
auto closeStart = hGrp->GetBool("closeStart", false);
if (closeStart) {
this->window()->close();
}
}
void CleanStartView::fileCardSelected(const QModelIndex& index)
{
auto file = index.data(static_cast<int>(CleanStart::DisplayedFilesModelRoles::path)).toString();
auto command = std::string("FreeCAD.loadFile('") + file.toStdString() + "')";
try {
Base::Interpreter().runString(command.c_str());
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
catch (Base::PyException& e) {
Base::Console().Error(e.getMessage().c_str());
}
catch (Base::Exception &e) {
Base::Console().Error(e.getMessage().c_str());
}
catch (...) {
Base::Console().Error("An unknown error occurred");
}
}
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QCoreApplication>
#include <QGridLayout>
#include <QLabel>
#include <QListView>
#include <QPushButton>
#include <QScrollArea>
#include <QWidget>
#endif
#include "StartView.h"
#include "FileCardDelegate.h"
#include "FileCardView.h"
#include "Gui/Workbench.h"
#include <Gui/Document.h>
#include <App/DocumentObject.h>
#include <App/Application.h>
#include <Base/Interpreter.h>
#include <Gui/Application.h>
#include <Gui/Command.h>
#include <3rdParty/GSL/include/gsl/pointers>
using namespace StartGui;
TYPESYSTEM_SOURCE_ABSTRACT(StartGui::StartView, Gui::MDIView) // NOLINT
namespace
{
struct NewButton
{
QString heading;
QString description;
QString iconPath;
};
gsl::owner<QPushButton*> createNewButton(const NewButton& newButton)
{
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
const auto cardSpacing = static_cast<int>(hGrp->GetInt("FileCardSpacing", 20)); // NOLINT
const auto newFileIconSize = static_cast<int>(hGrp->GetInt("NewFileIconSize", 48)); // NOLINT
auto button = gsl::owner<QPushButton*>(new QPushButton());
auto mainLayout = gsl::owner<QHBoxLayout*>(new QHBoxLayout(button));
auto iconLabel = gsl::owner<QLabel*>(new QLabel(button));
mainLayout->addWidget(iconLabel);
QIcon baseIcon(newButton.iconPath);
iconLabel->setPixmap(baseIcon.pixmap(newFileIconSize, newFileIconSize));
auto textLayout = gsl::owner<QVBoxLayout*>(new QVBoxLayout);
auto textLabelLine1 = gsl::owner<QLabel*>(new QLabel(button));
textLabelLine1->setText(QLatin1String("<b>") + newButton.heading + QLatin1String("</b>"));
auto textLabelLine2 = gsl::owner<QLabel*>(new QLabel(button));
textLabelLine2->setText(newButton.description);
textLabelLine2->setWordWrap(true);
textLayout->addWidget(textLabelLine1);
textLayout->addWidget(textLabelLine2);
textLayout->setSpacing(0);
mainLayout->addItem(textLayout);
mainLayout->addStretch();
button->setMinimumHeight(newFileIconSize + cardSpacing);
return button;
}
} // namespace
StartView::StartView(Gui::Document* pcDocument, QWidget* parent)
: Gui::MDIView(pcDocument, parent)
, _contents(new QScrollArea(parent))
{
setObjectName(QLatin1String("StartView"));
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
auto cardSpacing = hGrp->GetInt("FileCardSpacing", 20); // NOLINT
auto scrolledWidget = gsl::owner<QWidget*>(new QWidget(this));
_contents->setWidget(scrolledWidget);
_contents->setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff);
_contents->setVerticalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAsNeeded);
_contents->setWidgetResizable(true);
auto layout = gsl::owner<QVBoxLayout*>(new QVBoxLayout(scrolledWidget));
layout->setSizeConstraint(QLayout::SizeConstraint::SetMinAndMaxSize);
// New WB notice: temporary to explain why all your setting disappeared
auto newStartWBNotice = gsl::owner<QLabel*>(
new QLabel(tr("NOTE: The Start Workbench has been completely rewritten to remove all "
"network access, and to remove "
"its dependency on Chromium. This is still a work-in-progress, and not all "
"settings from the previous "
"version of Start have been migrated yet.")));
newStartWBNotice->setWordWrap(true);
layout->addWidget(newStartWBNotice);
const QLatin1String h1Start("<h1>");
const QLatin1String h1End("</h1>");
auto newFileLabel = gsl::owner<QLabel*>(new QLabel(h1Start + tr("New File") + h1End));
layout->addWidget(newFileLabel);
auto gridLayout = gsl::owner<QGridLayout*>(new QGridLayout);
layout->addLayout(gridLayout);
configureNewFileButtons(gridLayout);
auto recentFilesLabel = gsl::owner<QLabel*>(new QLabel(h1Start + tr("Recent Files") + h1End));
layout->addWidget(recentFilesLabel);
auto recentFilesListWidget = gsl::owner<FileCardView*>(new FileCardView(_contents));
connect(recentFilesListWidget, &QListView::clicked, this, &StartView::fileCardSelected);
layout->addWidget(recentFilesListWidget);
auto examplesLabel = gsl::owner<QLabel*>(new QLabel(h1Start + tr("Examples") + h1End));
layout->addWidget(examplesLabel);
auto examplesListWidget = gsl::owner<FileCardView*>(new FileCardView(_contents));
connect(examplesListWidget, &QListView::clicked, this, &StartView::fileCardSelected);
layout->addWidget(examplesListWidget);
layout->setSpacing(static_cast<int>(cardSpacing));
layout->addStretch();
setCentralWidget(_contents);
QString title = QCoreApplication::translate("Workbench", "Start");
setWindowTitle(title);
configureExamplesListWidget(examplesListWidget);
configureRecentFilesListWidget(recentFilesListWidget);
}
void StartView::configureNewFileButtons(QGridLayout* layout) const
{
auto newEmptyFile = createNewButton({tr("Empty file"),
tr("Create a new empty FreeCAD file"),
QLatin1String(":/icons/document-new.svg")});
auto openFile = createNewButton({tr("Open File"),
tr("Open an existing CAD file or 3D model"),
QLatin1String(":/icons/document-open.svg")});
auto partDesign = createNewButton({tr("Parametric Part"),
tr("Create a part with the Part Design workbench"),
QLatin1String(":/icons/PartDesignWorkbench.svg")});
auto assembly = createNewButton({tr("Assembly"),
tr("Create an assembly project"),
QLatin1String(":/icons/AssemblyWorkbench.svg")});
auto draft = createNewButton({tr("2D Draft"),
tr("Create a 2D Draft with the Draft workbench"),
QLatin1String(":/icons/DraftWorkbench.svg")});
auto arch = createNewButton({tr("BIM/Architecture"),
tr("Create an architectural project"),
QLatin1String(":/icons/ArchWorkbench.svg")});
layout->addWidget(partDesign, 0, 0);
layout->addWidget(assembly, 0, 1);
layout->addWidget(draft, 0, 2);
layout->addWidget(arch, 1, 0);
layout->addWidget(newEmptyFile, 1, 1);
layout->addWidget(openFile, 1, 2);
connect(newEmptyFile, &QPushButton::clicked, this, &StartView::newEmptyFile);
connect(openFile, &QPushButton::clicked, this, &StartView::openExistingFile);
connect(partDesign, &QPushButton::clicked, this, &StartView::newPartDesignFile);
connect(assembly, &QPushButton::clicked, this, &StartView::newAssemblyFile);
connect(draft, &QPushButton::clicked, this, &StartView::newDraftFile);
connect(arch, &QPushButton::clicked, this, &StartView::newArchFile);
}
void StartView::configureFileCardWidget(QListView* fileCardWidget)
{
auto delegate = gsl::owner<FileCardDelegate*>(new FileCardDelegate);
fileCardWidget->setItemDelegate(delegate);
fileCardWidget->setMinimumWidth(fileCardWidget->parentWidget()->width());
fileCardWidget->setGridSize(
fileCardWidget->itemDelegate()->sizeHint(QStyleOptionViewItem(),
fileCardWidget->model()->index(0, 0)));
}
void StartView::configureRecentFilesListWidget(QListView* recentFilesListWidget)
{
_recentFilesModel.loadRecentFiles();
recentFilesListWidget->setModel(&_recentFilesModel);
configureFileCardWidget(recentFilesListWidget);
}
void StartView::configureExamplesListWidget(QListView* examplesListWidget)
{
_examplesModel.loadExamples();
examplesListWidget->setModel(&_examplesModel);
configureFileCardWidget(examplesListWidget);
}
void StartView::newEmptyFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
postStart(PostStartBehavior::switchWorkbench);
}
void StartView::newPartDesignFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
Gui::Application::Instance->activateWorkbench("PartDesignWorkbench");
Gui::Application::Instance->commandManager().runCommandByName("PartDesign_Body");
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
void StartView::openExistingFile() const
{
auto originalDocument = Gui::Application::Instance->activeDocument();
Gui::Application::Instance->commandManager().runCommandByName("Std_Open");
if (Gui::Application::Instance->activeDocument() != originalDocument) {
// Only run this if the user chose a new document to open (that is, they didn't cancel the
// open file dialog)
postStart(PostStartBehavior::switchWorkbench);
}
}
void StartView::newAssemblyFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
Gui::Application::Instance->activateWorkbench("AssemblyWorkbench");
Gui::Application::Instance->commandManager().runCommandByName("Assembly_CreateAssembly");
Gui::Application::Instance->commandManager().runCommandByName("Std_Refresh");
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
void StartView::newDraftFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
Gui::Application::Instance->activateWorkbench("DraftWorkbench");
Gui::Application::Instance->commandManager().runCommandByName("Std_ViewTop");
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
void StartView::newArchFile() const
{
Gui::Application::Instance->commandManager().runCommandByName("Std_New");
try {
Gui::Application::Instance->activateWorkbench("BIMWorkbench");
}
catch (...) {
Gui::Application::Instance->activateWorkbench("ArchWorkbench");
}
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
void StartView::postStart(PostStartBehavior behavior) const
{
auto hGrp = App::GetApplication().GetParameterGroupByPath(
"User parameter:BaseApp/Preferences/Mod/Start");
if (behavior == PostStartBehavior::switchWorkbench) {
auto wb = hGrp->GetASCII("AutoloadModule", "");
if (wb == "$LastModule") {
wb = App::GetApplication()
.GetParameterGroupByPath("User parameter:BaseApp/Preferences/General")
->GetASCII("LastModule", "");
}
if (!wb.empty()) {
Gui::Application::Instance->activateWorkbench(wb.c_str());
}
}
auto closeStart = hGrp->GetBool("closeStart", false);
if (closeStart) {
this->window()->close();
}
}
void StartView::fileCardSelected(const QModelIndex& index)
{
auto file = index.data(static_cast<int>(Start::DisplayedFilesModelRoles::path)).toString();
auto command = std::string("FreeCAD.loadFile('") + file.toStdString() + "')";
try {
Base::Interpreter().runString(command.c_str());
postStart(PostStartBehavior::doNotSwitchWorkbench);
}
catch (Base::PyException& e) {
Base::Console().Error(e.getMessage().c_str());
}
catch (Base::Exception& e) {
Base::Console().Error(e.getMessage().c_str());
}
catch (...) {
Base::Console().Error("An unknown error occurred");
}
}

View File

@@ -1,96 +1,96 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_CLEANSTARTVIEW_H
#define FREECAD_CLEANSTARTVIEW_H
#include <Mod/CleanStart/CleanStartGlobal.h>
#include <Base/Type.h>
#include <Gui/MDIView.h>
#include "../App/DisplayedFilesModel.h"
#include "../App/RecentFilesModel.h"
#include "../App/ExamplesModel.h"
class QListView;
class QGridLayout;
class QScrollArea;
namespace Gui
{
class Document;
}
namespace CleanStartGui
{
class CleanStartGuiExport CleanStartView: public Gui::MDIView
{
Q_OBJECT
TYPESYSTEM_HEADER_WITH_OVERRIDE(); // NOLINT
public:
CleanStartView(Gui::Document* pcDocument, QWidget* parent);
const char* getName() const override
{
return "CleanStartView";
}
void newEmptyFile() const;
void newPartDesignFile() const;
void openExistingFile() const;
void newAssemblyFile() const;
void newDraftFile() const;
void newArchFile() const;
public:
enum class PostStartBehavior {
switchWorkbench,
doNotSwitchWorkbench
};
protected:
void configureNewFileButtons(QGridLayout *layout) const;
static void configureFileCardWidget(QListView *fileCardWidget);
void configureRecentFilesListWidget(QListView *recentFilesListWidget);
void configureExamplesListWidget(QListView *examplesListWidget);
void postStart(PostStartBehavior behavior) const;
void fileCardSelected(const QModelIndex &index);
private:
QScrollArea* _contents = nullptr;
CleanStart::RecentFilesModel _recentFilesModel;
CleanStart::ExamplesModel _examplesModel;
}; // namespace CleanStartGui
} // namespace CleanStartGui
#endif // FREECAD_CLEANSTARTVIEW_H
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef FREECAD_STARTVIEW_H
#define FREECAD_STARTVIEW_H
#include <Mod/Start/StartGlobal.h>
#include <Base/Type.h>
#include <Gui/MDIView.h>
#include "../App/DisplayedFilesModel.h"
#include "../App/RecentFilesModel.h"
#include "../App/ExamplesModel.h"
class QListView;
class QGridLayout;
class QScrollArea;
namespace Gui
{
class Document;
}
namespace StartGui
{
class StartGuiExport StartView: public Gui::MDIView
{
Q_OBJECT
TYPESYSTEM_HEADER_WITH_OVERRIDE(); // NOLINT
public:
StartView(Gui::Document* pcDocument, QWidget* parent);
const char* getName() const override
{
return "StartView";
}
void newEmptyFile() const;
void newPartDesignFile() const;
void openExistingFile() const;
void newAssemblyFile() const;
void newDraftFile() const;
void newArchFile() const;
public:
enum class PostStartBehavior
{
switchWorkbench,
doNotSwitchWorkbench
};
protected:
void configureNewFileButtons(QGridLayout* layout) const;
static void configureFileCardWidget(QListView* fileCardWidget);
void configureRecentFilesListWidget(QListView* recentFilesListWidget);
void configureExamplesListWidget(QListView* examplesListWidget);
void postStart(PostStartBehavior behavior) const;
void fileCardSelected(const QModelIndex& index);
private:
QScrollArea* _contents = nullptr;
Start::RecentFilesModel _recentFilesModel;
Start::ExamplesModel _examplesModel;
}; // namespace StartGui
} // namespace StartGui
#endif // FREECAD_STARTVIEW_H

View File

@@ -1,34 +1,34 @@
/***************************************************************************
* Copyright (c) 2008 Werner Mayer <wmayer[at]users.sourceforge.net> *
* *
* 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 *
* *
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include "PreCompiled.h"
#ifndef _PreComp_
#include <QCoreApplication>
#include <QLayout>
#endif
#include <Base/Console.h>
#include <Base/Exception.h>
#include <Base/Interpreter.h>
#include <Base/Tools.h>
#include <Gui/Command.h>
#include <Gui/DockWindowManager.h>
#include <Gui/MDIView.h>
@@ -36,105 +36,30 @@
#include <Gui/ToolBarManager.h>
#include "Workbench.h"
#include "StartView.h"
#include <3rdParty/GSL/include/gsl/pointers>
using namespace StartGui;
TYPESYSTEM_SOURCE(StartGui::Workbench, Gui::StdWorkbench)
StartGui::Workbench::Workbench() = default;
StartGui::Workbench::~Workbench() = default;
TYPESYSTEM_SOURCE(StartGui::Workbench, Gui::StdWorkbench) // NOLINT
void StartGui::Workbench::activated()
{
// Automatically display the StartPage only the very first time
static bool first = true;
if (first) {
loadStartPage();
first = false;
}
loadStart();
}
void StartGui::Workbench::loadStartPage()
void StartGui::Workbench::loadStart()
{
// Ensure that we don't open the Start page multiple times
QString title = QCoreApplication::translate("Workbench", "Start page");
QList<QWidget*> ch = Gui::getMainWindow()->windows();
for (auto c : ch) {
if (c->windowTitle() == title) {
Gui::MDIView* mdi = qobject_cast<Gui::MDIView*>(c);
if (mdi) {
Gui::getMainWindow()->setActiveWindow(mdi);
}
return;
}
auto mw = Gui::getMainWindow();
auto doc = Gui::Application::Instance->activeDocument();
auto existingView = mw->findChild<StartView*>(QLatin1String("StartView"));
if (!existingView) {
existingView = gsl::owner<StartView*>(new StartView(doc, mw));
mw->addWindow(existingView); // Transfers ownership
}
try {
QByteArray utf8Title = title.toUtf8();
std::string escapedstr = Base::Tools::escapedUnicodeFromUtf8(utf8Title);
std::stringstream str;
str << "import WebGui,sys,Start\n"
<< "from PySide import QtCore, QtGui\n"
<< "from StartPage import StartPage\n\n"
<< "class WebPage(object):\n"
<< " def __init__(self):\n"
<< " self.browser=WebGui.openBrowserWindow(u\"" << escapedstr.c_str() << "\")\n"
#if defined(FC_OS_WIN32)
<< " self.browser.setHtml(StartPage.handle(), App.getResourceDir() + "
"'Mod/Start/StartPage/')\n"
#else
<< " self.browser.setHtml(StartPage.handle(), 'file://' + App.getResourceDir() "
"+ 'Mod/Start/StartPage/')\n"
#endif
<< " def onChange(self, par, reason):\n"
<< " try:\n"
<< " if reason in ('RecentFiles','Language'):\n"
<< " QtCore.QTimer.singleShot(100, self.reload)\n"
<< " except RuntimeError as e:\n"
<< " pass\n"
<< " def reload(self):\n"
<< " startOpen = False\n"
<< " title = QtGui.QApplication.translate('Workbench', 'Start page')\n"
<< " mw = FreeCADGui.getMainWindow()\n"
<< " if mw:\n"
<< " mdi = mw.findChild(QtGui.QMdiArea)\n"
<< " if mdi:\n"
<< " for mdichild in mdi.children():\n"
<< " for subw in mdichild.findChildren(QtGui.QMdiSubWindow):\n"
<< " if subw.windowTitle() == title:\n"
<< " startOpen = True\n"
<< " if startOpen:\n" // if the user has closeStart set to True a Runtime Error
// is raised if a simple Preferences change is made
#if defined(FC_OS_WIN32)
<< " self.browser.setHtml(StartPage.handle(), App.getResourceDir() + "
"'Mod/Start/StartPage/')\n\n"
#else
<< " self.browser.setHtml(StartPage.handle(), 'file://' + "
"App.getResourceDir() + 'Mod/Start/StartPage/')\n\n"
#endif
<< "class WebView(object):\n"
<< " def __init__(self):\n"
<< " self.pargrp = FreeCAD.ParamGet('User "
"parameter:BaseApp/Preferences/RecentFiles')\n"
<< " self.webPage = WebPage()\n"
<< " self.pargrp.Attach(self.webPage)\n"
<< " def __del__(self):\n"
<< " self.pargrp.Detach(self.webPage)\n\n"
<< "webView = WebView()\n"
<< "StartPage.checkPostOpenStartPage()\n";
Base::Interpreter().runString(str.str().c_str());
}
catch (const Base::Exception& e) {
Base::Console().Error("%s\n", e.what());
}
}
void StartGui::Workbench::setupContextMenu(const char* recipient, Gui::MenuItem* item) const
{
Gui::StdWorkbench::setupContextMenu(recipient, item);
Gui::getMainWindow()->setActiveWindow(existingView);
existingView->show();
}
Gui::MenuItem* StartGui::Workbench::setupMenuBar() const
@@ -144,31 +69,12 @@ Gui::MenuItem* StartGui::Workbench::setupMenuBar() const
Gui::ToolBarItem* StartGui::Workbench::setupToolBars() const
{
Gui::ToolBarItem* root = StdWorkbench::setupToolBars();
// web navigation toolbar
Gui::ToolBarItem* navigation = new Gui::ToolBarItem(root);
navigation->setCommand("Navigation");
*navigation << "Web_BrowserSetURL"
<< "Separator"
<< "Web_OpenWebsite"
<< "Start_StartPage"
<< "Separator"
<< "Web_BrowserBack"
<< "Web_BrowserNext"
<< "Web_BrowserRefresh"
<< "Web_BrowserStop"
<< "Separator"
<< "Web_BrowserZoomIn"
<< "Web_BrowserZoomOut";
return root;
return Gui::StdWorkbench::setupToolBars();
}
Gui::ToolBarItem* StartGui::Workbench::setupCommandBars() const
{
Gui::ToolBarItem* root = new Gui::ToolBarItem;
return root;
return Gui::StdWorkbench::setupCommandBars();
}
Gui::DockWindowItems* StartGui::Workbench::setupDockWindows() const

View File

@@ -1,51 +1,52 @@
/***************************************************************************
* Copyright (c) 2008 Werner Mayer <wmayer[at]users.sourceforge.net> *
* *
* 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 *
* *
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#ifndef STARTGUI_WORKBENCH_H
#define STARTGUI_WORKBENCH_H
#ifndef LAUNCHERGUI_WORKBENCH_H
#define LAUNCHERGUI_WORKBENCH_H
#include <Gui/Workbench.h>
#include <memory>
namespace Gui
{
class MDIView;
}
namespace StartGui
{
/**
* @author Werner Mayer
*/
class Workbench: public Gui::StdWorkbench
{
TYPESYSTEM_HEADER_WITH_OVERRIDE();
TYPESYSTEM_HEADER_WITH_OVERRIDE(); // NOLINT
public:
Workbench();
~Workbench() override;
Workbench() = default;
/** Defines the standard context menu. */
void setupContextMenu(const char* recipient, Gui::MenuItem*) const override;
/** Run some actions when the workbench gets activated. */
void activated() override;
static void loadStartPage();
static void loadStart();
protected:
/** Defines the standard menus. */
@@ -57,7 +58,7 @@ protected:
/** Returns a DockWindowItems structure of dock windows this workbench. */
Gui::DockWindowItems* setupDockWindows() const override;
}; // namespace StartGui
}; // class Workbench
} // namespace StartGui
#endif // START_WORKBENCH_H
#endif // LAUNCHERGUI_WORKBENCH_H

View File

@@ -1,24 +1,29 @@
# ***************************************************************************
# * Copyright (c) 2001,2002 Juergen Riegel <juergen.riegel@web.de> *
# * *
# * This file is part of the FreeCAD CAx development system. *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU Lesser General Public License (LGPL) *
# * as published by the Free Software Foundation; either version 2 of *
# * the License, or (at your option) any later version. *
# * for detail see the LICENCE text file. *
# * *
# * FreeCAD 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 Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Library General Public *
# * License along with FreeCAD; if not, write to the Free Software *
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# * USA *
# * *
# ***************************************************************************/
# SPDX-License-Identifier: LGPL-2.1-or-later
# /**************************************************************************
# *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
# *
# This file is part of FreeCAD. *
# *
# FreeCAD is free software: you can redistribute it and/or modify it *
# under the terms of the GNU Lesser General Public License as *
# published by the Free Software Foundation, either version 2.1 of the *
# License, or (at your option) any later version. *
# *
# FreeCAD 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 *
# Lesser General Public License for more details. *
# *
# You should have received a copy of the GNU Lesser General Public *
# License along with FreeCAD. If not, see *
# <https://www.gnu.org/licenses/>. *
# *
# **************************************************************************/
# FreeCAD init script of the Start module
# Get the Parameter Group of this module
ParGrp = App.ParamGet("System parameter:Modules").GetGroup("Start")
# Set the needed information
ParGrp.SetString("WorkBenchName", "Start")
ParGrp.SetString("WorkBenchModule", "Start.py")

View File

@@ -1,35 +1,29 @@
# ***************************************************************************
# * Copyright (c) 2002,2003 Juergen Riegel <juergen.riegel@web.de> *
# * *
# * This file is part of the FreeCAD CAx development system. *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU Lesser General Public License (LGPL) *
# * as published by the Free Software Foundation; either version 2 of *
# * the License, or (at your option) any later version. *
# * for detail see the LICENCE text file. *
# * *
# * FreeCAD 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 Lesser General Public License for more details. *
# * *
# * You should have received a copy of the GNU Library General Public *
# * License along with FreeCAD; if not, write to the Free Software *
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# * USA *
# * *
# ***************************************************************************/
# Start gui init module
#
# Gathering all the information to start FreeCAD
# This is the second one of three init scripts, the third one
# runs when the gui is up
# SPDX-License-Identifier: LGPL-2.1-or-later
# /**************************************************************************
# *
# Copyright (c) 2024 The FreeCAD Project Association AISBL *
# *
# This file is part of FreeCAD. *
# *
# FreeCAD is free software: you can redistribute it and/or modify it *
# under the terms of the GNU Lesser General Public License as *
# published by the Free Software Foundation, either version 2.1 of the *
# License, or (at your option) any later version. *
# *
# FreeCAD 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 *
# Lesser General Public License for more details. *
# *
# You should have received a copy of the GNU Lesser General Public *
# License along with FreeCAD. If not, see *
# <https://www.gnu.org/licenses/>. *
# *
# **************************************************************************/
class StartWorkbench(Workbench):
"Start workbench object"
"StartWorkbench workbench"
def __init__(self):
self.__class__.Icon = (
@@ -39,14 +33,19 @@ class StartWorkbench(Workbench):
self.__class__.ToolTip = "Start workbench"
def Initialize(self):
# load the module
import StartGui
import Start
def Activated(self):
pass
def Deactivated(self):
pass
def ContextMenu(self, recipient):
pass
def GetClassName(self):
return "StartGui::Workbench"
Gui.addWorkbench(StartWorkbench())
FreeCAD.__unit_test__ += ["TestStartGui"]

View File

@@ -1,53 +1,53 @@
## CleanStart Workbench
This Workbench is intended to eventually replace (and be renamed to) Start. Its main reason for existing is to
eliminate FreeCAD's dependency on QtWebEngine by redesigning Start to eliminate the HTML component.
The long-term plan for this workbench is to migrate from Qt Widgets to QtQuick/QML with a C++ backend providing access
to things like FreeCAD's Recent Files list. This switch will happen sometime after we no longer have to support building
on Ubuntu 20.04 LTS, which still uses Qt 5.12. The cMake integration of QML and C++ together in a single project is
greatly improved in Qt 5.15 and later.
In the meantime the workbench is written in C++ so that the models can be re-used later, and only the UI itself will
have to change.
### Structure
The main UI file for the Start screen is in `Gui/CleanStartView.cpp` -- that class is a `QScrollArea` that gets embedded
into a new FreeCAD `MDIView`. Inside the scroll area are three regions:
1. **New File**. A set of `QPushButtons` with embedded `QLayouts` displaying an image and two lines of text. Currently
laid out manually in a `QGridLayout`, but eventually it would be nice to dynamically calculate that layout to allow the
buttons to exist on a single line when there is enough space for them.
2. **Recent Files**. One of two "File Card" regions, this shows a list of recent files. It uses the
Model-View-Controller architecture for flexibility and re-usability. In that architecture, the data being displayed is
called the "model", and the actual mechanism for doing the display is called the "view". Qt further differentiates
between the overall view and the display of the individual items in the view. The items are rendered by a "delegate"
when they are too complex to be displayed by the simple view (e.g. if you want images and text in a particular layout).
* The "model" in this case is `RecentFilesModel`, a simple read-only interface to
FreeCAD's preferences system, where it gets the list of recent files. That class is in`App/RecentFilesModel.*`. It is
implemented using a set of User Roles, one for each piece of data about a file. Not all data is available for all files.
For example, when given `const QModelIndex &index`, you can call `index.data(DisplayedFilesModelRoles::author)` to get
the "author" metadata item of an `FCStd` file. See the `DisplayedFilesModelRoles` enumeration for possible values. These
roles are also exposed to QML via their names.
* The View is a class derived from `QListView`, `Gui/FileCardView.*`, whose only function beyond the standard
`QListView` is to implement the "height for width" functionality, so the widget can properly resize based on the number
of file cards and the screen width, laying them out in a grid.
* The file cards are rendered using the `FileCardDelegate` class in `Gui/FileCardDelegate.*`. That class uses
a simple `QVBoxLayout` to paint the icon, filename, and file size.
3. **Examples**. Another "File Card" widget, using the same classes as Recent Files, but with a different model. In this
case the model is `ExamplesModel` in `App/ExamplesModel.*`. It fetches a read-only list of files from the FreeCAD
`resources/examples` directory and displays them.
### UI Design
This Workbench does the minimum amount of design customization, preferring to allow Stylesheet authors control over the
display via the normal QSS mechanisms in Qt. There are three FreeCAD Parameters that control the spacing between the
widgets and the size of the icons, all in the `BaseApp/Preferences/Mod/Start/` preferences group:
* `FileCardSpacing` (default: 20). The space between and around the individual File Cards.
* `FileThumbnailIconsSize` (default: 128). The size of the file thumbnail on the File Cards.
* `NewFileIconSize` (default: 48). The size of the icons on each of the "new file" buttons.
At present none of these are directly exposed to the user, and the new Start workbench does not have a preferences
panel. The parameters are intended to be used by Preference Pack authors to assist in customization of FreeCAD themes.
It is likely that this will be expanded once feedback from theme designers is received.
## Start Workbench
This Workbench is intended to eventually replace (and be renamed to) Start. Its main reason for existing is to
eliminate FreeCAD's dependency on QtWebEngine by redesigning Start to eliminate the HTML component.
The long-term plan for this workbench is to migrate from Qt Widgets to QtQuick/QML with a C++ backend providing access
to things like FreeCAD's Recent Files list. This switch will happen sometime after we no longer have to support building
on Ubuntu 20.04 LTS, which still uses Qt 5.12. The cMake integration of QML and C++ together in a single project is
greatly improved in Qt 5.15 and later.
In the meantime the workbench is written in C++ so that the models can be re-used later, and only the UI itself will
have to change.
### Structure
The main UI file for the Start screen is in `Gui/StartView.cpp` -- that class is a `QScrollArea` that gets embedded
into a new FreeCAD `MDIView`. Inside the scroll area are three regions:
1. **New File**. A set of `QPushButtons` with embedded `QLayouts` displaying an image and two lines of text. Currently
laid out manually in a `QGridLayout`, but eventually it would be nice to dynamically calculate that layout to allow the
buttons to exist on a single line when there is enough space for them.
2. **Recent Files**. One of two "File Card" regions, this shows a list of recent files. It uses the
Model-View-Controller architecture for flexibility and re-usability. In that architecture, the data being displayed is
called the "model", and the actual mechanism for doing the display is called the "view". Qt further differentiates
between the overall view and the display of the individual items in the view. The items are rendered by a "delegate"
when they are too complex to be displayed by the simple view (e.g. if you want images and text in a particular layout).
* The "model" in this case is `RecentFilesModel`, a simple read-only interface to
FreeCAD's preferences system, where it gets the list of recent files. That class is in`App/RecentFilesModel.*`. It is
implemented using a set of User Roles, one for each piece of data about a file. Not all data is available for all files.
For example, when given `const QModelIndex &index`, you can call `index.data(DisplayedFilesModelRoles::author)` to get
the "author" metadata item of an `FCStd` file. See the `DisplayedFilesModelRoles` enumeration for possible values. These
roles are also exposed to QML via their names.
* The View is a class derived from `QListView`, `Gui/FileCardView.*`, whose only function beyond the standard
`QListView` is to implement the "height for width" functionality, so the widget can properly resize based on the number
of file cards and the screen width, laying them out in a grid.
* The file cards are rendered using the `FileCardDelegate` class in `Gui/FileCardDelegate.*`. That class uses
a simple `QVBoxLayout` to paint the icon, filename, and file size.
3. **Examples**. Another "File Card" widget, using the same classes as Recent Files, but with a different model. In this
case the model is `ExamplesModel` in `App/ExamplesModel.*`. It fetches a read-only list of files from the FreeCAD
`resources/examples` directory and displays them.
### UI Design
This Workbench does the minimum amount of design customization, preferring to allow Stylesheet authors control over the
display via the normal QSS mechanisms in Qt. There are three FreeCAD Parameters that control the spacing between the
widgets and the size of the icons, all in the `BaseApp/Preferences/Mod/Start/` preferences group:
* `FileCardSpacing` (default: 20). The space between and around the individual File Cards.
* `FileThumbnailIconsSize` (default: 128). The size of the file thumbnail on the File Cards.
* `NewFileIconSize` (default: 48). The size of the icons on each of the "new file" buttons.
At present none of these are directly exposed to the user, and the new Start workbench does not have a preferences
panel. The parameters are intended to be used by Preference Pack authors to assist in customization of FreeCAD themes.
It is likely that this will be expanded once feedback from theme designers is received.

View File

@@ -1,29 +1,30 @@
/***************************************************************************
* Copyright (c) 2021 Werner Mayer <wmayer[at]users.sourceforge.net> *
* *
* 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 *
* *
// SPDX-License-Identifier: LGPL-2.1-or-later
/****************************************************************************
* *
* Copyright (c) 2024 The FreeCAD Project Association AISBL *
* *
* This file is part of FreeCAD. *
* *
* FreeCAD is free software: you can redistribute it and/or modify it *
* under the terms of the GNU Lesser General Public License as *
* published by the Free Software Foundation, either version 2.1 of the *
* License, or (at your option) any later version. *
* *
* FreeCAD 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 *
* Lesser General Public License for more details. *
* *
* You should have received a copy of the GNU Lesser General Public *
* License along with FreeCAD. If not, see *
* <https://www.gnu.org/licenses/>. *
* *
***************************************************************************/
#include <FCGlobal.h>
#ifndef START_GLOBAL_H
#define START_GLOBAL_H
#ifndef LAUNCHER_GLOBAL_H
#define LAUNCHER_GLOBAL_H
// Start
@@ -44,4 +45,4 @@
#endif
#endif
#endif // START_GLOBAL_H
#endif // LAUNCHER_GLOBAL_H

Some files were not shown because too many files have changed in this diff Show More