File: SolidDistributionsEditor.h

package info (click to toggle)
dyssol 1.5.0-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,204 kB
  • sloc: cpp: 53,870; sh: 85; python: 59; makefile: 11
file content (99 lines) | stat: -rw-r--r-- 2,798 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/* Copyright (c) 2020, Dyssol Development Team. All rights reserved. This file is part of Dyssol. See LICENSE file for license information. */

#pragma once

#include "ui_SolidDistributionsEditor.h"
#include "DistrFunctionDialog.h"

class CMaterialsDatabase;
class CFlowsheet;
class CBaseStream;
class CMDMatrix;
class CMultidimensionalGrid;

class CSolidDistributionsEditor : public QWidget
{
	Q_OBJECT
public:
	Ui::SolidDistributionsEditor ui;

private:
	CMaterialsDatabase* m_materialsDB;
	CFlowsheet* m_pFlowsheet;
	const CMultidimensionalGrid* m_pGrid;
	CMDMatrix* m_pDistribution;
	CBaseStream* m_pStream;

	std::vector<QComboBox*> m_vCombos;
	std::vector<QSlider*> m_vSliders;
	CDistrFunctionDialog* m_pDistributor;
	size_t m_iCurrTime;
	bool m_bExternalViewState;

	std::vector<int> m_vLastCombos;
	std::vector<int> m_vLastSliders;

public:
	CSolidDistributionsEditor(QWidget *parent);
	~CSolidDistributionsEditor();

	void SetFlowsheet(CFlowsheet* _pFlowsheet, CMaterialsDatabase* _materialsDB);
	void SetDistribution(CMDMatrix* _pDistribution, CBaseStream* _pStream);
	void SetTimePoint(size_t _index);

	void GetViewState(std::vector<int> &_vLastCombos, std::vector<int> &_vLastSliders) const;
	void SetViewState(const std::vector<int> &_vLastCombos, const std::vector<int> &_vLastSliders);

	void SetEditable(bool _bEditable) const; // Turn on/off edit possibility.

public slots:
	void setVisible(bool _bVisible) override;

private:
	void UpdateWholeView();
	void UpdateCombos();
	void UpdateTimeLabel() const;
	void UpdateFractionsTable() const;
	void UpdateDistributionsList() const;
	void UpdateDistributionTable() const;

	void AddAdditionalDim();
	void SetupComboBoxDimensions(QComboBox *_pCombo);
	void SetupComboBoxPSDType() const;
	void SetupComboBoxPSDGridType() const;
	void UpdatePSDComboVisible() const;

	void EnableMainTable() const;
	void CheckCompoundNormalization() const;
	void SetDistributionTableHeaders() const;
	std::vector<std::string> GetHeaders(EDistrTypes _distr) const;
	void CheckDistrNormalization() const;
	EDistrTypes GetSelectedDim() const;
	EDistrTypes GetTypeFromCombo(size_t _index) const;
	void SaveViewState();
	void LoadViewState();

	std::vector<EDistrTypes> ChosenTypes() const;
	std::vector<unsigned> ChosenCoords() const;
	EPSDTypes ChosenPSDType() const;
	EPSDGridType ChosenPSDGridType() const;
	std::string ChosenCompound() const;

private slots:
	void TableItemChanged() const;
	void DimsComboChanged() const;
	void DimsSliderChanged() const;
	void CompoundChanged() const;
	void CompoundFractionChanged( QTableWidgetItem* _pItem );
	void CompoundFractionsPasted();
	void ComboPSDTypeChanged() const;
	void ComboPSDGridTypeChanged() const;
	void FunctionalCalled() const;
	void ApplyPressed();

private:


signals:
	void DataChanged();
};