FreeCAD
1/***************************************************************************
2* Copyright (c) 2004 Jürgen Riegel <juergen.riegel@web.de> *
3* *
4* This file is part of the FreeCAD CAx development system. *
5* *
6* This library is free software; you can redistribute it and/or *
7* modify it under the terms of the GNU Library General Public *
8* License as published by the Free Software Foundation; either *
9* version 2 of the License, or (at your option) any later version. *
10* *
11* This library is distributed in the hope that it will be useful, *
12* but WITHOUT ANY WARRANTY; without even the implied warranty of *
13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14* GNU Library General Public License for more details. *
15* *
16* You should have received a copy of the GNU Library General Public *
17* License along with this library; see the file COPYING.LIB. If not, *
18* write to the Free Software Foundation, Inc., 59 Temple Place, *
19* Suite 330, Boston, MA 02111-1307, USA *
20* *
21***************************************************************************/
22
23
24#include "PreCompiled.h"25
26#include <boost/algorithm/string.hpp>27#include <qglobal.h>28
29#include <App/Application.h>30
31#include "Window.h"32
33
34using namespace Gui;35
36//**************************************************************************
37//**************************************************************************
38// WindowParameter
39//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
40
41
42//**************************************************************************
43// Construction/Destruction
44
45WindowParameter::WindowParameter(const char *name)46{
47// not allowed to use a Window without a name, see the constructor48// of a DockWindow or a other QT Widget49assert(name);50
51// if string is empty do not create group52if ( strcmp(name, "") != 0 )53_handle = getDefaultParameter()->GetGroup( name );54}
55
56WindowParameter::~WindowParameter()57{
58connParamChanged.disconnect();59}
60
61/** Sets the group of the window to \a name */
62bool WindowParameter::setGroupName(const char* name)63{
64// cannot change parameter group65if (_handle.isValid()) {66return false;67}68
69assert(name);70
71std::string prefGroup = name;72const auto& list = App::GetApplication().GetParameterSetList();73
74auto found = std::find_if(list.begin(), list.end(), [prefGroup](auto item) {75return boost::starts_with(prefGroup, item.first);76});77
78if (found != list.end()) {79_handle = App::GetApplication().GetParameterGroupByPath(name);80}81else {82_handle = getDefaultParameter()->GetGroup(name);83}84
85return true;86}
87
88void WindowParameter::OnChange(Base::Subject<const char*> &rCaller, const char * sReason)89{
90Q_UNUSED(rCaller);91Q_UNUSED(sReason);92}
93
94ParameterGrp::handle WindowParameter::getWindowParameter()95{
96return _handle;97}
98
99/**
100* Returns a handle to the parameter group to the user parameter
101* under BaseApp/Preferences.
102*/
103ParameterGrp::handle WindowParameter::getDefaultParameter()104{
105return App::GetApplication().GetUserParameter().GetGroup("BaseApp")->GetGroup("Preferences");106}
107