ParaGUI 1.1.7 review

by on

ParaGUI is a cross-platform high-level application framework and GUI (graphical user interface) library. It can be compiled on var

License: LGPL (GNU Lesser General Public License)
File size: 0K
Developer: Alexander Pipelka
0 stars award from

ParaGUI is a cross-platform high-level application framework and GUI (graphical user interface) library.

It can be compiled on various platforms (Linux, Win32, BeOS, MacOS, ...)

ParaGUI is based on the Simple DirectMedia Layer (SDL).
ParaGUI is targeted on crossplatform multimedia applications and embedded devices operating on framebuffer displays.

Here are some key features of "ParaGUI":
published under LGPL
straight forward C++ class-design
supports alpha-blending of overlapping widgets
highly customizable widgets
(background gradients, background images, transparency, colors, fonts)
XML configuration
many standard widgets already implemented
(buttons, labels, scrollbars, progressbars, windows ...)
create your own widgets
(subclass an existing widget)
supports various imagetypes through SDL_Image (configurable at compile time)
using libSigC++ as callback framework
UNICODE support

What's New in This Release:
added PG_Factory (yeah)
started PG_MessageObject cleanup (move code to PG_Application)
added GetTitlebarHeight() / SetTitlebarHeight to PG_Window
renamed SetColorTitlebar to SetTitlebarColor
marked PG_MessageBox::WaitForClick obsolete
new RunModal() / SetModalStatus(int) methods
PG_ScrollArea::ScrollToWidget(..) now honours area-bounds
removed "using namespace std;" from header files
removed "using namespace std;" from all sources
removed Get / SetApplicationPath from PG_Application
only fade-in invisible widgets
bumped version to 1.1.8
fixed "flickering" of hidden widgets
fixed infinite loops in PG_MultiLineEdit
added PG_Button::SetIconIndent(Uint16)
fixed non-unicode rendering of german "umlaut"
fixed alignment of text (PG_Button)
removed PG_TimerID. Please use PG_TimeObject::ID now
fixed detection of libSDL_image*.so for Debian

applied patches from Sebastian:
made PG_Application::RunEventLoop() virtual to make subclassing easier
made PG_Application::my_quitEventLoop protected to make subclassing easier
made PG_LineEdit signals available to PG_DropDown
made PG_DropDown::handleButtonClick() virtual to make subclassing easier
made PG_MessageBox::handleButton() virtual to make subclassing easier
made PG_RadioButton::handleButtonClick() virtual to make subclassing easier
removed PG_Rect::PG_Rect() and added default params to PG_Rect::PG_Rect(x,y,w,h) instead
made PG_Scrollbar::handleButtonClick virtual to make subclassing easier
made PG_SpinnerBox::handleButtonClick() virtual to make subclassing easier
made PG_SpinnerBox::handleEditEnd() virtual to make subclassing easier
added PG_Window::GetTitlebarColor()
made PG_Window::handleButtonClick() virtual to make subclassing easier
fixed some compilation errors with VC.NET occurred due to missing namespace access
reworked PG_Button::SetSizeByText()
reworked PG_Label::SetSizeByText()
reworked PG_Button::SetSizeByText()
reworked PG_RadioButton::SetSizeByText()
made PG_RichEdit::CompleteLines() call CheckForScrollBars() only if my_AutoVerticalResize is false
added mouse wheel support for PG_RadioButton
reset PG_RichEdit's scrollarea height to 0 when adding new text
added SetSizeByText() example to paratest.cpp
a bit of cleanup
added some small doc fixes
added signals to PG_MessageObject
added PG_LogConsole::SetMaxLogLines()
PG_RichEdit: replaced SetAutoVerticalResize() with SetAutoResize(bool bHorizontal = true, bool bVertical = true)
PG_RichEdit: changed tabSize parameter to Uint16
PG_RichEdit: fixed infinite loop bug which occured when a word was too big to be displayed in a row
PG_RichEdit: improved an algorithm by adding a 'break'
PG_RichEdit: added SetLineWidth()
PG_ScrollWidget: added SetShiftOnRemove(), GetScrollPosX() and GetScrollPosY()
added PG_Window::SetMovable()
made PG_Widget::eventMouseLeave() call its parent's eventMouseLeave() only if cursor actually leaves parent area too
PG_SpinnerBox: removed some virtual modifiers to fix a potential crash
theme_priv.h: added some namespace std references to make VC happy
removed some unnecessary code
made PG_ScrollArea::DeleteAll call area change signals
added some doc updates
PG_Image: may choose drawing mode now
PG_LineEdit: made SetCursorPos() virtual for easier subclassing (-> e. g.
PG_RadioButton: added GetFirstOfGroup() and GetNextOfGroup()
PG_RichEdit: fixed resizing
added method to have parent widget resized automatically
(SetResizeParent(bool bRemove, bool bAdd))
moved bounds checking from ScrollToWidget() to ScrollTo()
added SetAutoResize(bool bRemove, bool bAdd)
made it update its scrollbars properly when calling ScrollToWidget()
PG_DropDown: resize automatically by default
added param 'bRecursive' to SetFontColor()
added EnableReceiver(bool enable, bool bRecursive)
paraconfig_win32.h: renamed macro UNICODE_ENABLED to ENABLE_UNICODE
disabled warning flood for VC++ 7.1 concerning YChar's exception implementation
added DECLSPEC to YChar's and YString's class declarations
added a fix from Jeremie (concerning an END key bug) for his PG_MultiLineEdit (thanks Jeremie!)
fixes for PG_MultiLineEdit (it no longer crashes)
added PG_DropDown::GetFirstInList()

applied patches from Ulf Lorenz:
commented PG_Draw::DrawTile
commented PG_Draw::DrawGradient
PG_Rect: simplified some if-clauses
surface.cpp: tiny check added, another one removed
surface.cpp: preserved clip rect
PG_Widget::FadeOut: lock screen-surface before blitting
PG_Widget::RestoreBackground: properly restore screen-cliprect
PG_Widget::eventBlit: proper screen locking
PG_Widget::Draw[H|V]Line: proper screen locking
PG_Widget: some small comments, removed an obsolete function
PG_Button::eventMouseLeave: fixed a critical bug where you could untoggle a button by clicking
on it, moving the mouse away and releasing the mouse which would
untoggle the button but not release a click event.
PG_Button::SetBorderSize: fixed a small bug where one bordersize would be set for all three cases
PG_Button::eventBlit: screen is now locked
removed some obsolete lines of code, added comments

applied patches from Fred Ollinger:
many many documentation updates
added widget-screenshots
new beginners-tutorial

applied the great unicode patch from Mohammed Yousif

ParaGUI 1.1.7 search tags