Skip to content

Commit

Permalink
split code
Browse files Browse the repository at this point in the history
  • Loading branch information
Nelson-numerical-software committed Jul 28, 2024
1 parent 3982ecb commit 234dbae
Show file tree
Hide file tree
Showing 10 changed files with 1,300 additions and 510 deletions.
5 changes: 5 additions & 0 deletions modules/graphics/src/c/nlsGraphics.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,11 @@
<ClCompile Include="..\cpp\GOToolBarProperty.cpp" />
<ClCompile Include="..\cpp\GOTopBottomProperty.cpp" />
<ClCompile Include="..\cpp\GOUIControl.cpp" />
<ClCompile Include="..\cpp\GOUIControlEvents.cpp" />
<ClCompile Include="..\cpp\GOUIControlHelpers.cpp" />
<ClCompile Include="..\cpp\GOUIControlProperties.cpp" />
<ClCompile Include="..\cpp\GOUIControlRendering.cpp" />
<ClCompile Include="..\cpp\GOUIControlWidgets.cpp" />
<ClCompile Include="..\cpp\GOUnitsProperty.cpp" />
<ClCompile Include="..\cpp\GOVectorFourDoubleProperty.cpp" />
<ClCompile Include="..\cpp\GOVectorProperty.cpp" />
Expand Down
15 changes: 15 additions & 0 deletions modules/graphics/src/c/nlsGraphics.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,21 @@
<ClCompile Include="..\cpp\GOControlStyleProperty.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\cpp\GOUIControlProperties.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\cpp\GOUIControlWidgets.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\cpp\GOUIControlEvents.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\cpp\GOUIControlRendering.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\cpp\GOUIControlHelpers.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\cpp\GOUIControl.h">
Expand Down
535 changes: 25 additions & 510 deletions modules/graphics/src/cpp/GOUIControl.cpp

Large diffs are not rendered by default.

140 changes: 140 additions & 0 deletions modules/graphics/src/cpp/GOUIControl.h
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,146 @@ class NLSGRAPHICS_IMPEXP GOUIControl : public QObject, public GraphicsObject
void
deleteWidget();
//=============================================================================
void
toggleButtonClicked();
//=============================================================================
void
sliderClicked();
//=============================================================================
void
radioButtonClicked();
//=============================================================================
void
checkboxClicked();
//=============================================================================
void
editClicked();
//=============================================================================
void
listboxClicked();
//=============================================================================
void
popupmenuClicked();
//=============================================================================
bool
onStylePropertyChanged();
//=============================================================================
void
createPushButton();
//=============================================================================
void
createToggleButton();
//=============================================================================
void
createRadioButton();
//=============================================================================
void
createCheckBox();
//=============================================================================
void
createSlider();
//=============================================================================
void
createText();
//=============================================================================
void
createEdit();
//=============================================================================
void
createListBox();
//=============================================================================
void
createPopupMenu();
//=============================================================================
void
onStringPropertyChanged(bool newWidget);
//=============================================================================
void
onStringChangedPushButton();
//=============================================================================
void
onStringChangedToggleButton();
//=============================================================================
void
onStringChangedRadioButton();
//=============================================================================
void
onStringChangedCheckBox();
//=============================================================================
void
onStringChangedText();
//=============================================================================
void
onStringChangedEdit();
//=============================================================================
void
onStringChangedListBox();
//=============================================================================
void
onStringChangedPopupMenu();
//=============================================================================
void
onPositionPropertyChanged(bool newWidget);
//=============================================================================
void
onParentPositionChanged();
//=============================================================================
void
onVisiblePropertyChanged();
//=============================================================================
void
onCDataPropertyChanged();
//=============================================================================
void
onEditPropertyChanged();
//=============================================================================
void
onToggleButtonChanged(bool newWidget);
//=============================================================================
void
onSliderChanged(bool newWidget);
//=============================================================================
void
onCheckBoxChanged(bool newWidget);
//=============================================================================
void
onRadioButtonChanged(bool newWidget);
//=============================================================================
void
onToolTipsChanged(bool newWidget);
//=============================================================================
void
onEnableChanged();
//=============================================================================
void
onBackgroundPropertyChanged();
//=============================================================================
void
onFontSizeOrUnitChanged();
//=============================================================================
void
onFontNameChanged();
//=============================================================================
void
onFontAngleChanged();
//=============================================================================
void
onFontWeightChanged();
//=============================================================================
void
onHAlignmentChanged();
//=============================================================================
void
onListTopBoxChanged(bool newWidget);
//=============================================================================
void
onPopupMenuChanged(bool newWidget);
//=============================================================================
void
tokenize(
const std::wstring& str, std::vector<std::wstring>& tokens, const std::wstring& delimiters);
//=============================================================================

public slots:
void
clicked();
Expand Down
171 changes: 171 additions & 0 deletions modules/graphics/src/cpp/GOUIControlEvents.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
//=============================================================================
// Copyright (c) 2016-present Allan CORNET (Nelson)
//=============================================================================
// This file is part of the Nelson.
//=============================================================================
// LICENCE_BLOCK_BEGIN
// SPDX-License-Identifier: LGPL-3.0-or-later
// LICENCE_BLOCK_END
//=============================================================================
#include <QtWidgets/QPushButton>
#include <QtWidgets/QRadioButton>
#include <QtWidgets/QCheckBox>
#include <QtWidgets/QSlider>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QListWidget>
#include <QtGui/QImage>
#include <QtGui/QPainter>
#include <QtGui/QPixmap>
#include "QMultiLineEdit.h"
#include "QStringConverter.hpp"
#include "GOUIControl.h"
#include "GOPropertyValues.hpp"
#include "GOPropertyNames.hpp"
#include "GOColorProperty.hpp"
#include "GOStringProperty.hpp"
#include "GOStringVectorProperty.hpp"
#include "GOArrayOfProperty.hpp"
#include "GOGObjectsProperty.hpp"
#include "GOScalarDoubleProperty.hpp"
#include "GOFontAngleProperty.hpp"
#include "GOFontUnitsProperty.hpp"
#include "GOFontWeightProperty.hpp"
#include "GOStringOnOffProperty.hpp"
#include "GOAlignHorizProperty.hpp"
#include "GOVectorFourDoubleProperty.hpp"
#include "GOUnitsProperty.hpp"
#include "GOVectorProperty.hpp"
#include "GOControlStyleProperty.hpp"
#include "GOCallbackProperty.hpp"
#include "AnonymousMacroFunctionDef.hpp"
#include "GOHelpers.hpp"
#include "Error.hpp"
#include "i18n.hpp"
//=============================================================================
namespace Nelson {
//=============================================================================
void
GOUIControl::clicked()
{
if (!widget) {
return;
}

toggleButtonClicked();
sliderClicked();
radioButtonClicked();
checkboxClicked();
editClicked();
listboxClicked();
popupmenuClicked();

GOCallbackProperty* goCallback
= (GOCallbackProperty*)findProperty(GO_CALLBACK_PROPERTY_NAME_STR);
if (goCallback) {
goCallback->pushEvent(this, L"ActionData", L"Action");
}
}
//=============================================================================
void
GOUIControl::toggleButtonClicked()
{
if (!stringCheck(GO_STYLE_PROPERTY_NAME_STR, GO_PROPERTY_VALUE_TOGGLEBUTTON_STR)) {
return;
}
if (((QPushButton*)widget)->isChecked()) {
findProperty(GO_VALUE_PROPERTY_NAME_STR)
->set(ArrayOf::doubleConstructor(findScalarDoubleProperty(GO_MAX_PROPERTY_NAME_STR)));
} else {
findProperty(GO_VALUE_PROPERTY_NAME_STR)
->set(ArrayOf::doubleConstructor(findScalarDoubleProperty(GO_MIN_PROPERTY_NAME_STR)));
}
}
//=============================================================================
void
GOUIControl::sliderClicked()
{
if (!stringCheck(GO_STYLE_PROPERTY_NAME_STR, GO_PROPERTY_VALUE_SLIDER_STR)) {
return;
}
double min(findScalarDoubleProperty(GO_MIN_PROPERTY_NAME_STR));
std::vector<double> steps(findVectorDoubleProperty(GO_SLIDER_STEP_NAME_STR));
findProperty(GO_VALUE_PROPERTY_NAME_STR)
->set(ArrayOf::doubleConstructor(min + steps[0] * ((QSlider*)widget)->value()));
clearChanged(GO_VALUE_PROPERTY_NAME_STR);
}
//=============================================================================
void
GOUIControl::radioButtonClicked()
{
if (!stringCheck(GO_STYLE_PROPERTY_NAME_STR, GO_PROPERTY_VALUE_RADIOBUTTON_STR)) {
return;
}
if (((QRadioButton*)widget)->isChecked()) {
findProperty(GO_VALUE_PROPERTY_NAME_STR)
->set(findProperty(GO_MAX_PROPERTY_NAME_STR)->get());
} else {
findProperty(GO_VALUE_PROPERTY_NAME_STR)
->set(findProperty(GO_MIN_PROPERTY_NAME_STR)->get());
}
}
//=============================================================================
void
GOUIControl::checkboxClicked()
{
if (!stringCheck(GO_STYLE_PROPERTY_NAME_STR, GO_PROPERTY_VALUE_CHECKBOX_STR)) {
return;
}
if (((QCheckBox*)widget)->isChecked()) {
findProperty(GO_VALUE_PROPERTY_NAME_STR)
->set(findProperty(GO_MAX_PROPERTY_NAME_STR)->get());
} else {
findProperty(GO_VALUE_PROPERTY_NAME_STR)
->set(findProperty(GO_MIN_PROPERTY_NAME_STR)->get());
}
}
//=============================================================================
void
GOUIControl::editClicked()
{
if (!stringCheck(GO_STYLE_PROPERTY_NAME_STR, GO_PROPERTY_VALUE_EDIT_STR)) {
return;
}
QString qstr;
if (widget->objectName() == "multiLine") {
qstr = ((QMultiLineEdit*)widget)->toPlainText();
} else {
qstr = ((QLineEdit*)widget)->text();
}
setStringDefault(GO_STRING_PROPERTY_NAME_STR, QStringTowstring(qstr));
}
//=============================================================================
void
GOUIControl::listboxClicked()
{
if (!stringCheck(GO_STYLE_PROPERTY_NAME_STR, GO_PROPERTY_VALUE_LISTBOX_STR)) {
return;
}
QList<QListWidgetItem*> selection(((QListWidget*)widget)->selectedItems());
std::vector<double> selected;
for (int i = 0; i < selection.size(); i++) {
selected.push_back(((QListWidget*)widget)->row(selection[i]) + 1);
}
((GOVectorProperty*)findProperty(GO_VALUE_PROPERTY_NAME_STR))->data(selected);
clearChanged(GO_VALUE_PROPERTY_NAME_STR);
}
//=============================================================================
void
GOUIControl::popupmenuClicked()
{
if (!stringCheck(GO_STYLE_PROPERTY_NAME_STR, GO_PROPERTY_VALUE_POPUPMENU_STR)) {
return;
}
int value = ((QComboBox*)widget)->currentIndex() + 1;
findProperty(GO_VALUE_PROPERTY_NAME_STR)->set(ArrayOf::doubleConstructor(value));
clearChanged(GO_VALUE_PROPERTY_NAME_STR);
}
//=============================================================================
}
//=============================================================================
29 changes: 29 additions & 0 deletions modules/graphics/src/cpp/GOUIControlHelpers.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//=============================================================================
// Copyright (c) 2016-present Allan CORNET (Nelson)
//=============================================================================
// This file is part of the Nelson.
//=============================================================================
// LICENCE_BLOCK_BEGIN
// SPDX-License-Identifier: LGPL-3.0-or-later
// LICENCE_BLOCK_END
//=============================================================================
#include "GOUIControl.h"
//=============================================================================
namespace Nelson {
//=============================================================================
void
GOUIControl::tokenize(
const std::wstring& str, std::vector<std::wstring>& tokens, const std::wstring& delimiters)
{
std::wstring::size_type lastPos = str.find_first_not_of(delimiters, 0);
std::wstring::size_type pos = str.find_first_of(delimiters, lastPos);

while (std::wstring::npos != pos || std::wstring::npos != lastPos) {
tokens.push_back(str.substr(lastPos, pos - lastPos));
lastPos = str.find_first_not_of(delimiters, pos);
pos = str.find_first_of(delimiters, lastPos);
}
}
//=============================================================================
}
//=============================================================================
Loading

0 comments on commit 234dbae

Please sign in to comment.