Skip to content

Commit 9250dfe

Browse files
authored
I want to die.h
1 parent 521a6a5 commit 9250dfe

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

parser_gui/Widgets/include/TreeVisualiser.h

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,62 @@
44
#include <QWidget>
55
#include <QVBoxLayout>
66
#include <QLabel>
7+
#include <QPainter>
78

89
#include "Node.h"
910

10-
using namespace Tiny::Data;
1111
namespace Tiny::Widgets {
12+
using namespace Tiny::Data;
1213
class TreeVisualiser : public QWidget {
1314
Q_OBJECT
15+
16+
protected:
17+
void paintEvent(QPaintEvent *event) override;
1418
public:
1519
TreeVisualiser(QWidget *parent = nullptr);
16-
void setRoot(Node* root);
20+
void drawTree(QPainter *painter, Node *node, int x, int y, int availableWidth, int currentLevel);
21+
22+
int calculateTreeWidth(Node* node) {
23+
if (!node || node->getChildren().empty()) return 50;
24+
25+
int totalWidth = 0;
26+
for (Node* child : node->getChildren()) {
27+
totalWidth += calculateTreeWidth(child);
28+
}
29+
return std::max(totalWidth, 50);
30+
}
31+
32+
void setRoot(Node *root) {
33+
this->root = root;
34+
}
35+
36+
void wheelEvent(QWheelEvent* event) override;
1737

38+
bool isOval(Node::NodeType type) {
39+
if ((type == Node::NodeType::Identifier) ||
40+
(type == Node::NodeType::Number) ||
41+
(type == Node::NodeType::Addition) ||
42+
(type == Node::NodeType::Comparison)) {
43+
return true;
44+
} else {
45+
return false;
46+
}
47+
}
1848

49+
bool hasValue(Node::NodeType type) {
50+
if ((type == Node::NodeType::Identifier) ||
51+
(type == Node::NodeType::Number) ||
52+
(type == Node::NodeType::ReadStatement) ||
53+
(type == Node::NodeType::AssignStatement) ||
54+
(type == Node::NodeType::Comparison)) {
55+
return true;
56+
} else {
57+
return false;
58+
}
59+
}
60+
private:
61+
Node *root = nullptr;
62+
qreal zoomFactor = 1.0;
1963
}; // class TreeVisualiser
2064
} // namespace Tiny::Widgets
2165

0 commit comments

Comments
 (0)