From c543117ff43c63a053ea786ed606398ac4687494 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Tue, 4 Mar 2014 12:59:32 +0000 Subject: added source code git-svn-id: file:///var/local/svn/basicwriter@12 daaaf23c-2e50-4459-9457-1e69db5a47bf --- src/gui/components/UIGrid.cpp | 81 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/gui/components/UIGrid.cpp (limited to 'src/gui/components/UIGrid.cpp') diff --git a/src/gui/components/UIGrid.cpp b/src/gui/components/UIGrid.cpp new file mode 100644 index 0000000..4d6f0e8 --- /dev/null +++ b/src/gui/components/UIGrid.cpp @@ -0,0 +1,81 @@ +/* + BasicWriter + Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include +#include +#include +#include + +#include "GridTree.hpp" + +#include "UIGrid.hpp" + +#include + +namespace uigrid { + +UIGrid::UIGrid(QWidget *parent) : + QWidget(parent) +{ + // Enable automatic ereasing of the background + setAutoFillBackground(true); + + // Create the root grid node. + rootGridNode = new GridTreeNode(Orientation::horz, 1.0); + + // Insert two new nodes into the tree + GridTreeNode *nd1 = new GridTreeNode(Orientation::vert, 0.25, rootGridNode); + GridTreeNode *nd2 = new GridTreeNode(Orientation::horz, 0.75, rootGridNode); + + // Add three nodes as children of the first node + new GridTreeNode(Orientation::horz, 0.33, nd1); + new GridTreeNode(Orientation::horz, 0.33, nd1); + new GridTreeNode(Orientation::horz, 0.33, nd1); + + new GridTreeNode(Orientation::vert, 0.75, nd2); + new GridTreeNode(Orientation::horz, 0.25, nd2); +} + +UIGrid::~UIGrid() +{ + delete rootGridNode; +} + +void UIGrid::paintEvent(QPaintEvent *event) +{ + const QPalette &palette = QApplication::palette(); + // Gather all splitter and frame area regions + std::vector splitters; + std::vector areas; + rootGridNode->gatherBoundingBoxes(&areas, &splitters, + Rect(0, 0, width(), height()), 5); + + QPainter painter(this); + + // Draw the splitters (first the background, then the dividing line) + painter.setPen(palette.mid().color()); + for (auto &c : splitters) { + QRect r(c.r.x1, c.r.y1, c.r.w(), c.r.h()); + painter.fillRect(r, palette.light()); + } + +} + + +} + -- cgit v1.2.3