diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2017-04-23 10:00:42 +0200 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2017-04-23 10:00:42 +0200 | 
| commit | 28934c6bc1a55b993f54b5ff7e3c809767f694d2 (patch) | |
| tree | 27ffe36abc76d1ee1ee5bbad4fd257d1cf7a9265 /test/uitests | |
| parent | b2daadf6fe64715705617e6a9b11163359b7d927 (diff) | |
Fix dist target.
Diffstat (limited to 'test/uitests')
| -rw-r--r-- | test/uitests/Makefile.am | 38 | ||||
| -rw-r--r-- | test/uitests/filebrowsertest.cc | 146 | ||||
| -rw-r--r-- | test/uitests/framewidgettest.cc | 191 | ||||
| -rw-r--r-- | test/uitests/resizetest.cc | 146 | ||||
| -rw-r--r-- | test/uitests/tabwidgettest.cc | 167 | 
5 files changed, 688 insertions, 0 deletions
| diff --git a/test/uitests/Makefile.am b/test/uitests/Makefile.am new file mode 100644 index 0000000..63d8c61 --- /dev/null +++ b/test/uitests/Makefile.am @@ -0,0 +1,38 @@ +noinst_PROGRAMS = resizetest tabwidgettest framewidgettest \ +	filebrowsertest + +resizetest_LDADD = $(top_srcdir)/plugingui/libdggui.la +resizetest_CXXFLAGS = \ +	-I$(top_srcdir)/plugingui \ +	-I$(top_srcdir)/src \ +	-I$(top_srcdir)/hugin +resizetest_SOURCES = \ +	resizetest.cc \ +	$(top_srcdir)/hugin/hugin.c + +tabwidgettest_LDADD = $(top_srcdir)/plugingui/libdggui.la +tabwidgettest_CXXFLAGS = \ +	-I$(top_srcdir)/plugingui \ +	-I$(top_srcdir)/src \ +	-I$(top_srcdir)/hugin +tabwidgettest_SOURCES = \ +	tabwidgettest.cc \ +	$(top_srcdir)/hugin/hugin.c + +filebrowsertest_LDADD = $(top_srcdir)/plugingui/libdggui.la +filebrowsertest_CXXFLAGS = \ +	-I$(top_srcdir)/plugingui \ +	-I$(top_srcdir)/src \ +	-I$(top_srcdir)/hugin +filebrowsertest_SOURCES = \ +	filebrowsertest.cc \ +	$(top_srcdir)/hugin/hugin.c + +framewidgettest_LDADD = $(top_srcdir)/plugingui/libdggui.la +framewidgettest_CXXFLAGS = \ +	-I$(top_srcdir)/plugingui \ +	-I$(top_srcdir)/src \ +	-I$(top_srcdir)/hugin +framewidgettest_SOURCES = \ +	framewidgettest.cc \ +	$(top_srcdir)/hugin/hugin.c diff --git a/test/uitests/filebrowsertest.cc b/test/uitests/filebrowsertest.cc new file mode 100644 index 0000000..c558fab --- /dev/null +++ b/test/uitests/filebrowsertest.cc @@ -0,0 +1,146 @@ +/* -*- Mode: c++ -*- */ +/*************************************************************************** + *            filebrowsertest.cc + * + *  Sat Apr 15 22:24:06 CEST 2017 + *  Copyright 2017 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU Lesser General Public License as published by + *  the Free Software Foundation; either version 3 of the License, or + *  (at your option) any later version. + * + *  DrumGizmo 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 Lesser General Public License for more details. + * + *  You should have received a copy of the GNU Lesser General Public License + *  along with DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include <iostream> + +#include <platform.h> + +#if DG_PLATFORM == DG_PLATFORM_WINDOWS +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#endif +#include <unistd.h> + +#include <hugin.hpp> +#include <window.h> +#include <button.h> +#include <label.h> +#include <filebrowser.h> + +class TestWindow +	: public GUI::Window +{ +public: +	TestWindow() +		: GUI::Window(nullptr) +	{ +		setCaption("FileBrowserTest Window"); +		CONNECT(eventHandler(), closeNotifier, +		        this, &TestWindow::closeEventHandler); + +		CONNECT(file_browser.eventHandler(), closeNotifier, +		        this, &TestWindow::dialogCloseEventHandler); + +		CONNECT(&file_browser, fileSelectNotifier, +		        this, &TestWindow::fileSelected); + +		CONNECT(&file_browser, fileSelectCancelNotifier, +		        this, &TestWindow::fileCanceled); + + +		button.move(0, 0); +		button.resize(120, 30); +		button.setText("Browse..."); + +		label.move(0, 40); +		label.resize(120, 30); +		label.setText("Filename will be shown here."); + +		CONNECT(&button, clickNotifier, +		        this, &TestWindow::dialogShow); +	} + +	void fileSelected(const std::string& filename) +	{ +		label.setText(filename); +	} + +	void fileCanceled() +	{ +		label.setText("[Canceled]"); +	} + +	void closeEventHandler() +	{ +		closing = true; +	} + +	void dialogCloseEventHandler() +	{ +		file_browser.hide(); +	} + +	void dialogShow() +	{ +		file_browser.show(); +		file_browser.resize(300, 300); +	} + +	bool processEvents() +	{ +		eventHandler()->processEvents(); +		return !closing; +	} + +	void repaintEvent(GUI::RepaintEvent* repaintEvent) +	{ +		GUI::Painter painter(*this); + +		label.resize(width(), 30); + +		//painter.clear(); +		painter.setColour(GUI::Colour(0,1,0)); +		painter.drawFilledRectangle(0, 0, width(), height()); +	} + +private: +	bool closing{false}; + +	GUI::Button button{this}; +	GUI::Label label{this}; + +	GUI::FileBrowser file_browser{this}; +}; + +int main() +{ +	INFO(example, "We are up and running"); + +	TestWindow test_window; +	test_window.show(); +	test_window.resize(300,300); + +	while(test_window.processEvents()) +	{ +#if DG_PLATFORM == DG_PLATFORM_WINDOWS +		SleepEx(50, FALSE); +#else +		usleep(50000); +#endif +	} + +	return 0; +} diff --git a/test/uitests/framewidgettest.cc b/test/uitests/framewidgettest.cc new file mode 100644 index 0000000..2b94688 --- /dev/null +++ b/test/uitests/framewidgettest.cc @@ -0,0 +1,191 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            framewidgettest.cc + * + *  Sat Feb 11 23:36:04 CET 2017 + *  Copyright 2017 André Nusser + *  andre.nusser@googlemail.com + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU Lesser General Public License as published by + *  the Free Software Foundation; either version 3 of the License, or + *  (at your option) any later version. + * + *  DrumGizmo 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 Lesser General Public License for more details. + * + *  You should have received a copy of the GNU Lesser General Public License + *  along with DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include <iostream> + +#include <platform.h> + +#if DG_PLATFORM == DG_PLATFORM_WINDOWS +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#endif +#include <unistd.h> + +#include <button.h> +#include <checkbox.h> +#include <frame.h> +#include <hugin.hpp> +#include <label.h> +#include <layout.h> +#include <window.h> +#include <painter.h> + +// TODO: fix segfault on close + +class Widget1 : public GUI::Widget +{ +public: +	Widget1(GUI::Widget* parent) : GUI::Widget(parent) +	{ +		layout.setResizeChildren(true); +		layout.setHAlignment(GUI::HAlignment::center); + +		label1.setText("Label1"); +		label1.setAlignment(GUI::TextAlignment::left); +		layout.addItem(&label1); + +		label2.setText("Label2"); +		label2.setAlignment(GUI::TextAlignment::center); +		layout.addItem(&label2); + +		label3.setText("Label3"); +		label3.setAlignment(GUI::TextAlignment::right); +		layout.addItem(&label3); +	} + +private: +	GUI::VBoxLayout layout{this}; +	GUI::Label label1{this}; +	GUI::Label label2{this}; +	GUI::Label label3{this}; +}; + +class Widget2 : public GUI::Widget +{ +public: +	Widget2(GUI::Widget* parent) : GUI::Widget(parent) +	{ +		layout.setSpacing(10); +		layout.setResizeChildren(true); +		layout.setVAlignment(GUI::VAlignment::top); + +		label1.setText("Label1"); +		label1.setAlignment(GUI::TextAlignment::right); +		layout.addItem(&label1); + +		label2.setText("Label2"); +		label2.setAlignment(GUI::TextAlignment::left); +		layout.addItem(&label2); + +		layout.addItem(&checkbox); +	} + +private: +	GUI::HBoxLayout layout{this}; +	GUI::Label label1{this}; +	GUI::Label label2{this}; +	GUI::CheckBox checkbox{this}; +}; + +class TestWindow : public GUI::Window +{ +public: +	TestWindow() : GUI::Window(nullptr) +	{ +		setCaption("FrameWidgetTest Window"); +		CONNECT(eventHandler(), closeNotifier, this, +		    &TestWindow::closeEventHandler); +		CONNECT(this, sizeChangeNotifier, this, &TestWindow::sizeChanged); + +		layout.setSpacing(10); +		layout.setResizeChildren(true); +		layout.setHAlignment(GUI::HAlignment::center); + +		layout.addItem(&frame1); +		layout.addItem(&frame2); +		layout.addItem(&frame3); +		layout.addItem(&frame4); + +		frame1.setTitle("Frame 1 Title"); +		frame2.setTitle("Frame 2 Title"); +		frame3.setTitle("Frame 3 Title"); +		frame4.setTitle("Frame 4 Title"); + +		frame1.setContent(&w1_1); +		frame2.setContent(&w1_2); +		frame3.setContent(&w2_1); +		frame4.setContent(&w2_2); +	} + +	void sizeChanged(std::size_t width, std::size_t height) +	{ +		// TODO: Do we have to do anything here? +	} + +	void closeEventHandler() +	{ +		closing = true; +	} + +	bool processEvents() +	{ +		eventHandler()->processEvents(); +		return !closing; +	} + +	void repaintEvent(GUI::RepaintEvent* repaintEvent) override +	{ +		GUI::Painter painter(*this); +		painter.setColour(GUI::Colour(0.85)); +		painter.drawFilledRectangle(0, 0, width() - 1, height() - 1); +	} + +private: +	bool closing{false}; + +	GUI::VBoxLayout layout{this}; + +	GUI::FrameWidget frame1{this, true}; +	GUI::FrameWidget frame2{this, false}; +	GUI::FrameWidget frame3{this, true}; +	GUI::FrameWidget frame4{this, false}; + +	Widget1 w1_1{this}; +	Widget1 w1_2{this}; + +	Widget2 w2_1{this}; +	Widget2 w2_2{this}; +}; + +int main() +{ +	INFO(example, "We are up and running"); + +	TestWindow test_window; +	test_window.show(); +	test_window.resize(300, 300); + +	while(test_window.processEvents()) +	{ +#ifdef WIN32 +		SleepEx(50, FALSE); +#else +		usleep(50000); +#endif +	} + +	return 0; +} diff --git a/test/uitests/resizetest.cc b/test/uitests/resizetest.cc new file mode 100644 index 0000000..f5ba01b --- /dev/null +++ b/test/uitests/resizetest.cc @@ -0,0 +1,146 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            resizetest.cc + * + *  Sun Feb  5 20:05:24 CET 2017 + *  Copyright 2017 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU Lesser General Public License as published by + *  the Free Software Foundation; either version 3 of the License, or + *  (at your option) any later version. + * + *  DrumGizmo 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 Lesser General Public License for more details. + * + *  You should have received a copy of the GNU Lesser General Public License + *  along with DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include <iostream> + +#include <platform.h> + +#if DG_PLATFORM == DG_PLATFORM_WINDOWS +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#endif +#include <unistd.h> + +#include <hugin.hpp> +#include <window.h> +#include <font.h> +#include <painter.h> + +class TestWindow +	: public GUI::Window +{ +public: +	TestWindow() +		: GUI::Window(nullptr) +	{ +		setCaption("ResizeTest Window"); +		CONNECT(eventHandler(), closeNotifier, +		        this, &TestWindow::closeEventHandler); +		CONNECT(this, sizeChangeNotifier, this, &TestWindow::sizeChanged); +		CONNECT(this, positionChangeNotifier, this, &TestWindow::positionChanged); +	} + +	void sizeChanged(std::size_t width, std::size_t height) +	{ +		reportedSize = std::make_pair(width, height); +		repaintEvent(nullptr); +	} + +	void positionChanged(int x, int y) +	{ +		reportedPosition = std::make_pair(x, y); +		repaintEvent(nullptr); +	} + +	void closeEventHandler() +	{ +		closing = true; +	} + +	bool processEvents() +	{ +		eventHandler()->processEvents(); +		return !closing; +	} + +	void repaintEvent(GUI::RepaintEvent* repaintEvent) +	{ +		GUI::Painter painter(*this); + +		//painter.clear(); +		painter.setColour(GUI::Colour(0,1,0)); +		painter.drawFilledRectangle(0, 0, width(), height()); + +		auto currentSize = std::make_pair(width(), height()); +		auto currentPosition = std::make_pair(x(), y()); + +		{ +			painter.setColour(GUI::Colour(1,0,0)); +			char str[64]; +			sprintf(str, "reported: (%d, %d); (%d, %d)", +			        (int)reportedPosition.first, +			        (int)reportedPosition.second, +			        (int)reportedSize.first, +			        (int)reportedSize.second); +			auto stringWidth = font.textWidth(str); +			auto stringHeight = font.textHeight(str); +			painter.drawText(reportedSize.first / 2 - stringWidth / 2, +			                 reportedSize.second / 2 + stringHeight / 2 - 7, +			                 font, str, false); +		} + +		{ +			painter.setColour(GUI::Colour(1,0,0)); +			char str[64]; +			sprintf(str, "current: (%d, %d); (%d, %d)", +			        (int)currentPosition.first, +			        (int)currentPosition.second, +			        (int)currentSize.first, +			        (int)currentSize.second); +			auto stringWidth = font.textWidth(str); +			auto stringHeight = font.textHeight(str); +			painter.drawText(currentSize.first / 2 - stringWidth / 2, +			                 currentSize.second / 2 + stringHeight / 2 + 7, +			                 font, str, false); +		} +	} + +private: +	bool closing{false}; +	GUI::Font font{":font.png"}; +	std::pair<std::size_t, std::size_t> reportedSize; +	std::pair<int, int> reportedPosition; +}; + +int main() +{ +	INFO(example, "We are up and running"); + +	TestWindow test_window; +	test_window.show(); +	test_window.resize(300,300); + +	while(test_window.processEvents()) +	{ +#if DG_PLATFORM == DG_PLATFORM_WINDOWS +		SleepEx(50, FALSE); +#else +		usleep(50000); +#endif +	} + +	return 0; +} diff --git a/test/uitests/tabwidgettest.cc b/test/uitests/tabwidgettest.cc new file mode 100644 index 0000000..292991c --- /dev/null +++ b/test/uitests/tabwidgettest.cc @@ -0,0 +1,167 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/*************************************************************************** + *            tabwidgettest.cc + * + *  Thu Feb  9 19:20:06 CET 2017 + *  Copyright 2017 Bent Bisballe Nyeng + *  deva@aasimon.org + ****************************************************************************/ + +/* + *  This file is part of DrumGizmo. + * + *  DrumGizmo is free software; you can redistribute it and/or modify + *  it under the terms of the GNU Lesser General Public License as published by + *  the Free Software Foundation; either version 3 of the License, or + *  (at your option) any later version. + * + *  DrumGizmo 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 Lesser General Public License for more details. + * + *  You should have received a copy of the GNU Lesser General Public License + *  along with DrumGizmo; if not, write to the Free Software + *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA. + */ +#include <iostream> + +#include <platform.h> + +#if DG_PLATFORM == DG_PLATFORM_WINDOWS +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#endif +#include <unistd.h> + +#include <hugin.hpp> +#include <window.h> +#include <tabwidget.h> +#include <label.h> +#include <layout.h> +#include <button.h> +#include <painter.h> + +class Widget1 +	: public GUI::Widget +{ +public: +	Widget1(GUI::Widget* parent) +		: GUI::Widget(parent) +	{ +		layout.setResizeChildren(true); +		layout.setHAlignment(GUI::HAlignment::center); + +		label1.setText("Label1"); +		label1.setAlignment(GUI::TextAlignment::left); +		layout.addItem(&label1); + +		label2.setText("Label2"); +		label2.setAlignment(GUI::TextAlignment::center); +		layout.addItem(&label2); + +		label3.setText("Label3"); +		label3.setAlignment(GUI::TextAlignment::right); +		layout.addItem(&label3); +	} + +private: +	GUI::VBoxLayout layout{this}; +	GUI::Label label1{this}; +	GUI::Label label2{this}; +	GUI::Label label3{this}; +}; + +class Widget2 +	: public GUI::Button +{ +public: +	Widget2(GUI::Widget* parent) +		: GUI::Button(parent) +	{ +		setText("Widget2"); +	} +}; + +class Widget3 +	: public GUI::Widget +{ +public: +	Widget3(GUI::Widget* parent) +		: GUI::Widget(parent) +	{ +		label.move(100, 80); +		label.resize(100, 20); +		label.setText("Widget3"); +	} +private: +	GUI::Label label{this}; +}; + +class TestWindow +	: public GUI::Window +{ +public: +	TestWindow() +		: GUI::Window(nullptr) +	{ +		setCaption("TabWidgetTest Window"); +		CONNECT(eventHandler(), closeNotifier, +		        this, &TestWindow::closeEventHandler); +		CONNECT(this, sizeChangeNotifier, this, &TestWindow::sizeChanged); +		tabs.move(0, 0); +		tabs.addTab("Tab1", &widget1); +		tabs.addTab("Tab2", &widget2); +		tabs.addTab("Tab3", &widget3); +} + +	void sizeChanged(std::size_t width, std::size_t height) +	{ +		tabs.resize(this->width(), this->height()); +	} + +	void closeEventHandler() +	{ +		closing = true; +	} + +	bool processEvents() +	{ +		eventHandler()->processEvents(); +		return !closing; +	} + +	void repaintEvent(GUI::RepaintEvent* repaintEvent) override +	{ +		GUI::Painter painter(*this); +		painter.setColour(GUI::Colour(0.85)); +		painter.drawFilledRectangle(0, 0, width() - 1, height() - 1); +	} + +private: +	bool closing{false}; +	GUI::TabWidget tabs{this}; +	Widget1 widget1{this}; +	Widget2 widget2{this}; +	Widget3 widget3{this}; +}; + +int main() +{ +	INFO(example, "We are up and running"); + +	TestWindow test_window; +	test_window.show(); +	test_window.resize(300,300); + +	while(test_window.processEvents()) +	{ +#if DG_PLATFORM == DG_PLATFORM_WINDOWS +		SleepEx(50, FALSE); +#else +		usleep(50000); +#endif +	} + +	return 0; +} | 
