From: Shamus Hammons Date: Sat, 13 Jul 2013 16:08:57 +0000 (-0500) Subject: More work on LayerWidget. Not functional yet. X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;ds=inline;h=a7a9909f617d5dbcebfc6d4baa7053dbe3961751;p=architektonas More work on LayerWidget. Not functional yet. --- diff --git a/architektonas.pro b/architektonas.pro index 609aaf6..65afe20 100644 --- a/architektonas.pro +++ b/architektonas.pro @@ -59,6 +59,7 @@ HEADERS = \ src/fileio.h \ src/generaltab.h \ src/layerwidget.h \ + src/layeritemwidget.h \ src/line.h \ src/main.h \ src/mathconstants.h \ @@ -87,6 +88,7 @@ SOURCES = \ src/fileio.cpp \ src/generaltab.cpp \ src/layerwidget.cpp \ + src/layeritemwidget.cpp \ src/line.cpp \ src/main.cpp \ src/object.cpp \ diff --git a/res/architektonas.qrc b/res/architektonas.qrc index e8a96eb..8e79c6d 100644 --- a/res/architektonas.qrc +++ b/res/architektonas.qrc @@ -20,5 +20,7 @@ zoom-out.png eye-open.png eye-closed.png + lock-open.png + lock-closed.png diff --git a/res/lock-closed.png b/res/lock-closed.png new file mode 100644 index 0000000..ec066cd Binary files /dev/null and b/res/lock-closed.png differ diff --git a/res/lock-open.png b/res/lock-open.png new file mode 100644 index 0000000..7187f56 Binary files /dev/null and b/res/lock-open.png differ diff --git a/src/layeritemwidget.cpp b/src/layeritemwidget.cpp new file mode 100644 index 0000000..273ebf1 --- /dev/null +++ b/src/layeritemwidget.cpp @@ -0,0 +1,54 @@ +// layeritemwidget.cpp: Layer item widget +// +// Part of the Architektonas Project +// (C) 2011 Underground Software +// See the README and GPLv3 files for licensing and warranty information +// +// JLH = James Hammons +// +// WHO WHEN WHAT +// --- ---------- ------------------------------------------------------------ +// JLH 07/13/2013 Created this file +// + +#include "layeritemwidget.h" + + +LayerItemWidget::LayerItemWidget(QString s, bool invisible/*=false*/, bool locked/*=false*/): + QWidget(), + name(new QLabel(s)), + visibility(new QPushButton), + editibility(new QPushButton) +{ + QIcon visibleIcon(":/res/eye-open.png"); + visibleIcon.addFile(":/res/eye-closed.png", QSize(16, 16), QIcon::Normal, QIcon::On); + QIcon lockedIcon(":/res/lock-open.png"); + lockedIcon.addFile(":/res/lock-closed.png", QSize(16, 16), QIcon::Normal, QIcon::On); + QSize buttonSize(20, 20); + + QHBoxLayout * mainLayout = new QHBoxLayout; + mainLayout->setContentsMargins(0, 0, 0, 0); // This is required, otherwise the layout engine puts too much space around this widget. :-/ + + visibility->setFlat(true); + visibility->setIcon(visibleIcon); + visibility->setCheckable(true); + visibility->setMaximumSize(buttonSize); + visibility->setChecked(invisible); + + editibility->setFlat(true); + editibility->setIcon(lockedIcon); + editibility->setCheckable(true); + editibility->setMaximumSize(buttonSize); + editibility->setChecked(locked); + + mainLayout->addWidget(visibility); + mainLayout->addWidget(editibility); + mainLayout->addWidget(name); + setLayout(mainLayout); +} + + +LayerItemWidget::~LayerItemWidget() +{ +} + diff --git a/src/layeritemwidget.h b/src/layeritemwidget.h new file mode 100644 index 0000000..0ee1119 --- /dev/null +++ b/src/layeritemwidget.h @@ -0,0 +1,20 @@ +#ifndef __LAYERITEMWIDGET_H__ +#define __LAYERITEMWIDGET_H__ + +#include + +class LayerItemWidget: public QWidget +{ + Q_OBJECT + + public: + LayerItemWidget(QString, bool invisible = false, bool locked = false); + ~LayerItemWidget(); + + public: + QLabel * name; + QPushButton * visibility; + QPushButton * editibility; +}; + +#endif // __LAYERITEMWIDGET_H__ diff --git a/src/layerwidget.cpp b/src/layerwidget.cpp index ba90791..b45eed6 100644 --- a/src/layerwidget.cpp +++ b/src/layerwidget.cpp @@ -12,6 +12,7 @@ // #include "layerwidget.h" +#include "layeritemwidget.h" #if 0 @@ -29,20 +30,59 @@ LayerWidget::LayerWidget(void): QWidget() // checkboxes to change their look (eye open/closed for visibility, // lock open/closed for layer lock). - QIcon visibleChecked(":/res/eye-open.png"); -// QIcon visibleUnchecked(":/res/eye-closed.png"); - visibleChecked.addFile(":/res/eye-closed.png", QSize(16, 16), QIcon::Normal, QIcon::On); + QIcon visible(":/res/eye-open.png"); + visible.addFile(":/res/eye-closed.png", QSize(16, 16), QIcon::Normal, QIcon::On); + QIcon locked(":/res/lock-open.png"); + locked.addFile(":/res/lock-closed.png", QSize(16, 16), QIcon::Normal, QIcon::On); QVBoxLayout * mainLayout = new QVBoxLayout; - QCheckBox * box1 = new QCheckBox("bleah"); - box1->setIcon(visibleChecked); - mainLayout->addWidget(box1); - QPushButton * button1 = new QPushButton;//(visibleChecked); + QHBoxLayout * line1 = new QHBoxLayout; + QHBoxLayout * line2 = new QHBoxLayout; + +// QCheckBox * box1 = new QCheckBox("bleah"); +// box1->setIcon(visible); +// mainLayout->addWidget(box1); + + QPushButton * button1 = new QPushButton; button1->setFlat(true); - button1->setIcon(visibleChecked); + button1->setIcon(visible); button1->setCheckable(true); - mainLayout->addWidget(button1); -//printf("LayerWidget: About to set layout...\n"); + button1->setMaximumSize(QSize(20, 20)); + QPushButton * button2 = new QPushButton; + button2->setFlat(true); + button2->setIcon(locked); + button2->setCheckable(true); + button2->setMaximumSize(QSize(20, 20)); + QLabel * label1 = new QLabel("Background"); + + QPushButton * button3 = new QPushButton; + button3->setFlat(true); + button3->setIcon(visible); + button3->setCheckable(true); + button3->setMaximumSize(QSize(20, 20)); + QPushButton * button4 = new QPushButton; + button4->setFlat(true); + button4->setIcon(locked); + button4->setCheckable(true); + button4->setMaximumSize(QSize(20, 20)); + QLabel * label2 = new QLabel("Guides"); + + line1->addWidget(button1); + line1->addWidget(button2); + line1->addWidget(label1); + + line2->addWidget(button3); + line2->addWidget(button4); + line2->addWidget(label2); + + LayerItemWidget * liw1 = new LayerItemWidget("Floor #1"); + LayerItemWidget * liw2 = new LayerItemWidget("Mechanical"); + + mainLayout->addLayout(line1); + mainLayout->addLayout(line2); + mainLayout->addWidget(liw1); + mainLayout->addWidget(liw2); + mainLayout->addStretch(); setLayout(mainLayout); }