diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | e9ae80694875f869892f13f4fcaf1170a00dea41 (patch) | |
tree | aa2f8d8a217e2d376224c8d46b7397b68d35de2d /kommander/editor | |
download | tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.tar.gz tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdewebdev@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kommander/editor')
319 files changed, 68621 insertions, 0 deletions
diff --git a/kommander/editor/Makefile.am b/kommander/editor/Makefile.am new file mode 100644 index 00000000..aad9e81d --- /dev/null +++ b/kommander/editor/Makefile.am @@ -0,0 +1,53 @@ +SUBDIRS = pics +# this is the program that gets installed. it's name is used for all +# of the other Makefile.am variables +bin_PROGRAMS = kmdr-editor + +# set the include path for X, qt and KDE +AM_CPPFLAGS = -I$(top_srcdir)/kommander/widget -I$(top_srcdir)/kommander/widgets -I$(top_srcdir)/kommander/plugin -I$(top_srcdir)/kommander/factory -Ishared -Iinterfaces -Ipics $(all_includes) + +# the library search path. +kmdr_editor_LDFLAGS = $(KDE_RPATH) $(all_libraries) + +# the libraries to link against. +kmdr_editor_LDADD = $(top_builddir)/kommander/factory/libkommanderfactory.la \ + $(top_builddir)/kommander/widget/libkommanderwidget.la \ + $(top_builddir)/kommander/widgets/libkommanderwidgets.la \ + $(top_builddir)/kommander/plugin/libkommanderplugin.la -lktexteditor + +# which sources should be compiled for kmdr_editor +kmdr_editor_SOURCES = actiondnd.cpp actioneditorimpl.cpp \ + assoctexteditorimpl.cpp actionlistview.cpp asciivalidator.cpp assistproc.cpp command.cpp \ + connectioneditorimpl.cpp defs.cpp filechooser.cpp formfile.cpp formsettingsimpl.cpp \ + formwindow.cpp hierarchyview.cpp iconvieweditorimpl.cpp layout.cpp \ + listboxeditorimpl.cpp listvieweditorimpl.cpp main.cpp mainwindow.cpp mainwindowactions.cpp \ + metadatabase.cpp multilineeditorimpl.cpp newformimpl.cpp orderindicator.cpp \ + paletteeditoradvancedimpl.cpp paletteeditorimpl.cpp parser.cpp pixmapchooser.cpp previewframe.cpp \ + previewwidgetimpl.cpp propertyeditor.cpp qcompletionedit.cpp resource.cpp sizehandle.cpp \ + styledbutton.cpp tableeditorimpl.cpp widgetdatabase.cpp widgetfactory.cpp \ + wizardeditorimpl.cpp workspace.cpp actioneditor.ui assoctexteditor.ui connectioneditor.ui \ + createtemplate.ui formsettings.ui iconvieweditor.ui listboxeditor.ui listeditor.ui \ + listvieweditor.ui multilineeditor.ui newform.ui paletteeditor.ui paletteeditoradvanced.ui \ + pixmapfunction.ui preferences.ui previewwidget.ui tableeditor.ui wizardeditor.ui \ + choosewidget.ui choosewidgetimpl.cpp functions.ui functionsimpl.cpp messagelog.cpp + +# these are the headers for your project that won't be installed +noinst_HEADERS = actiondnd.h actioneditorimpl.h actionlistview.h \ + asciivalidator.h assistproc.h assoctexteditorimpl.h command.h connectioneditorimpl.h \ + defs.h filechooser.h formfile.h formsettingsimpl.h formwindow.h globaldefs.h \ + hierarchyview.h iconvieweditorimpl.h layout.h listboxeditorimpl.h listvieweditorimpl.h \ + mainwindow.h metadatabase.h multilineeditorimpl.h newformimpl.h orderindicator.h \ + paletteeditoradvancedimpl.h paletteeditorimpl.h parser.h pixmapchooser.h previewframe.h \ + previewwidgetimpl.h propertyeditor.h qcompletionedit.h resource.h sizehandle.h \ + styledbutton.h tableeditorimpl.h widgetdatabase.h widgetfactory.h widgetinterface.h \ + wizardeditorimpl.h workspace.h choosewidgetimpl.h messagelog.h + +# let automoc handle all of the meta source files (moc) +METASOURCES = AUTO + +xdg_apps_DATA = kmdr-editor.desktop + +syntaxkatedir = $(kde_datadir)/katepart/syntax +syntaxkate_DATA = kommander.xml kommander-new.xml + + diff --git a/kommander/editor/actiondnd.cpp b/kommander/editor/actiondnd.cpp new file mode 100644 index 00000000..0da7c650 --- /dev/null +++ b/kommander/editor/actiondnd.cpp @@ -0,0 +1,1244 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qaction.h> +#include <qapplication.h> +#include <qbitmap.h> +#include <qdragobject.h> +#include <kinputdialog.h> +#include <qlayout.h> +#include <qmainwindow.h> +#include <qmenudata.h> +#include <qmessagebox.h> +#include <qobjectlist.h> +#include <qpainter.h> +#include <qstyle.h> +#include <qtimer.h> + +#include "actiondnd.h" +#include "command.h" +#include "defs.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "metadatabase.h" +#include "widgetfactory.h" + +#include <klocale.h> + +bool QDesignerAction::addTo( QWidget *w ) +{ + if ( !widgetToInsert ) + return QAction::addTo( w ); + + if ( w->inherits( "QPopupMenu" ) ) + return false; + + widgetToInsert->reparent( w, QPoint( 0, 0 ), false ); + addedTo( widgetToInsert, w ); + return true; +} + +bool QDesignerAction::removeFrom( QWidget *w ) +{ + if ( !widgetToInsert ) + return QAction::removeFrom( w ); + + remove(); + return true; +} + +void QDesignerAction::remove() +{ + if ( !widgetToInsert ) + return; + MainWindow::self->formWindow()->selectWidget( widgetToInsert, false ); + widgetToInsert->reparent( 0, QPoint( 0, 0 ), false ); +} + +QDesignerToolBarSeparator::QDesignerToolBarSeparator(Orientation o , QToolBar *parent, + const char* name ) + : QWidget( parent, name ) +{ + connect( parent, SIGNAL(orientationChanged(Orientation)), + this, SLOT(setOrientation(Orientation)) ); + setOrientation( o ); + setBackgroundMode( parent->backgroundMode() ); + setBackgroundOrigin( ParentOrigin ); + setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ) ); +} + +void QDesignerToolBarSeparator::setOrientation( Orientation o ) +{ + orient = o; +} + +void QDesignerToolBarSeparator::styleChange( QStyle& ) +{ + setOrientation( orient ); +} + +QSize QDesignerToolBarSeparator::sizeHint() const +{ + int extent = style().pixelMetric( QStyle::PM_DockWindowSeparatorExtent, + this ); + if ( orient == Horizontal ) + return QSize( extent, 0 ); + else + return QSize( 0, extent ); +} + +void QDesignerToolBarSeparator::paintEvent( QPaintEvent * ) +{ + QPainter p( this ); + QStyle::SFlags flags = QStyle::Style_Default; + + if ( orientation() == Horizontal ) + flags |= QStyle::Style_Horizontal; + + style().drawPrimitive( QStyle::PE_DockWindowSeparator, &p, rect(), + colorGroup(), flags ); +} + + + +QSeparatorAction::QSeparatorAction( QObject *parent ) + : QAction( parent, "qt_designer_separator" ), wid( 0 ) +{ +} + +bool QSeparatorAction::addTo( QWidget *w ) +{ + if ( w->inherits( "QToolBar" ) ) { + QToolBar *tb = (QToolBar*)w; + wid = new QDesignerToolBarSeparator( tb->orientation(), tb ); + return true; + } else if ( w->inherits( "QPopupMenu" ) ) { + idx = ( (QPopupMenu*)w )->count(); + ( (QPopupMenu*)w )->insertSeparator( idx ); + return true; + } + return false; +} + +bool QSeparatorAction::removeFrom( QWidget *w ) +{ + if ( w->inherits( "QToolBar" ) ) { + delete wid; + return true; + } else if ( w->inherits( "QPopupMenu" ) ) { + ( (QPopupMenu*)w )->removeItemAt( idx ); + return true; + } + return false; +} + +QWidget *QSeparatorAction::widget() const +{ + return wid; +} + + + + +QDesignerToolBar::QDesignerToolBar( QMainWindow *mw ) + : QToolBar( mw ), lastIndicatorPos( -1, -1 ) +{ + insertAnchor = 0; + afterAnchor = true; + setAcceptDrops( true ); + MetaDataBase::addEntry( this ); + lastIndicatorPos = QPoint( -1, -1 ); + indicator = new QDesignerIndicatorWidget( this ); + indicator->hide(); + installEventFilter( this ); + widgetInserting = false; + findFormWindow(); + mw->setDockEnabled( DockTornOff, false ); +} + +QDesignerToolBar::QDesignerToolBar( QMainWindow *mw, Dock dock ) + : QToolBar( QString::null, mw, dock), lastIndicatorPos( -1, -1 ) +{ + insertAnchor = 0; + afterAnchor = true; + setAcceptDrops( true ); + indicator = new QDesignerIndicatorWidget( this ); + indicator->hide(); + MetaDataBase::addEntry( this ); + installEventFilter( this ); + widgetInserting = false; + findFormWindow(); + mw->setDockEnabled( DockTornOff, false ); +} + +void QDesignerToolBar::findFormWindow() +{ + QWidget *w = this; + while ( w ) { + if ( w->inherits( "FormWindow" ) ) + formWindow = (FormWindow*)w; + w = w->parentWidget(); + } +} + +void QDesignerToolBar::addAction( QAction *a ) +{ + actionList.append( a ); + connect( a, SIGNAL( destroyed() ), this, SLOT( actionRemoved() ) ); + if ( a->inherits( "QActionGroup" ) ) { + ( (QDesignerActionGroup*)a )->widget()->installEventFilter( this ); + actionMap.insert( ( (QDesignerActionGroup*)a )->widget(), a ); + } else if ( a->inherits( "QSeparatorAction" ) ) { + ( (QSeparatorAction*)a )->widget()->installEventFilter( this ); + actionMap.insert( ( (QSeparatorAction*)a )->widget(), a ); + } else { + ( (QDesignerAction*)a )->widget()->installEventFilter( this ); + actionMap.insert( ( (QDesignerAction*)a )->widget(), a ); + } +} + +static void fixObject( QObject *&o ) +{ + while ( o && o->parent() && !o->parent()->inherits( "QDesignerToolBar" ) ) + o = o->parent(); +} + +bool QDesignerToolBar::eventFilter( QObject *o, QEvent *e ) +{ + if ( !o || !e || o->inherits( "QDockWindowHandle" ) || o->inherits( "QDockWindowTitleBar" ) ) + return QToolBar::eventFilter( o, e ); + + if ( o == this && e->type() == QEvent::MouseButtonPress && + ( ( QMouseEvent*)e )->button() == LeftButton ) { + mousePressEvent( (QMouseEvent*)e ); + return true; + } + + if ( o == this ) + return QToolBar::eventFilter( o, e ); + + if ( e->type() == QEvent::MouseButtonPress ) { + QMouseEvent *ke = (QMouseEvent*)e; + fixObject( o ); + if ( !o ) + return false; + buttonMousePressEvent( ke, o ); + return true; + } else if(e->type() == QEvent::ContextMenu ) { + QContextMenuEvent *ce = (QContextMenuEvent*)e; + fixObject( o ); + if( !o ) + return false; + buttonContextMenuEvent( ce, o ); + return true; + } else if ( e->type() == QEvent::MouseMove ) { + QMouseEvent *ke = (QMouseEvent*)e; + fixObject( o ); + if ( !o ) + return false; + buttonMouseMoveEvent( ke, o ); + return true; + } else if ( e->type() == QEvent::MouseButtonRelease ) { + QMouseEvent *ke = (QMouseEvent*)e; + fixObject( o ); + if ( !o ) + return false; + buttonMouseReleaseEvent( ke, o ); + return true; + } else if ( e->type() == QEvent::DragEnter ) { + QDragEnterEvent *de = (QDragEnterEvent*)e; + if ( de->provides( "application/x-designer-actions" ) || + de->provides( "application/x-designer-actiongroup" ) || + de->provides( "application/x-designer-separator" ) ) + de->accept(); + } else if ( e->type() == QEvent::DragMove ) { + QDragMoveEvent *de = (QDragMoveEvent*)e; + if ( de->provides( "application/x-designer-actions" ) || + de->provides( "application/x-designer-actiongroup" ) || + de->provides( "application/x-designer-separator" ) ) + de->accept(); + } + + return QToolBar::eventFilter( o, e ); +} + +void QDesignerToolBar::paintEvent( QPaintEvent *e ) +{ + QToolBar::paintEvent( e ); + if ( e->rect() != rect() ) + return; + lastIndicatorPos = QPoint( -1, -1 ); +} + +void QDesignerToolBar::contextMenuEvent( QContextMenuEvent *e ) +{ + e->accept(); + QPopupMenu menu( 0 ); + menu.insertItem( i18n("Delete Toolbar" ), 1 ); + int res = menu.exec( e->globalPos() ); + if ( res != -1 ) { + RemoveToolBarCommand *cmd = new RemoveToolBarCommand( i18n("Delete Toolbar '%1'" ).arg( name() ), + formWindow, 0, this ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } +} + +void QDesignerToolBar::mousePressEvent( QMouseEvent *e ) +{ + widgetInserting = false; + if ( e->button() == LeftButton && + MainWindow::self->currentTool() != POINTER_TOOL && + MainWindow::self->currentTool() != ORDER_TOOL ) { + + if ( MainWindow::self->currentTool() == CONNECT_TOOL ) { + + } else { + widgetInserting = true; + } + + return; + } +} + +void QDesignerToolBar::mouseReleaseEvent( QMouseEvent *e ) +{ + if ( widgetInserting ) + doInsertWidget( mapFromGlobal( e->globalPos() ) ); + widgetInserting = false; +} + +void QDesignerToolBar::buttonMouseReleaseEvent( QMouseEvent *e, QObject *w ) +{ + if ( widgetInserting ) + doInsertWidget( mapFromGlobal( e->globalPos() ) ); + else if ( w->isWidgetType() && formWindow->widgets()->find( w ) ) { + formWindow->clearSelection( false ); + formWindow->selectWidget( w ); + } + widgetInserting = false; +} + +void QDesignerToolBar::buttonContextMenuEvent( QContextMenuEvent *e, QObject *o ) +{ + e->accept(); + QPopupMenu menu( 0 ); + const int ID_DELETE = 1; + const int ID_SEP = 2; + const int ID_DELTOOLBAR = 3; + QMap<QWidget*, QAction*>::Iterator it = actionMap.find( (QWidget*)o ); + if ( it != actionMap.end() && (*it)->inherits( "QSeparatorAction" ) ) + menu.insertItem( i18n("Delete Separator" ), ID_DELETE ); + else + menu.insertItem( i18n("Delete Item" ), ID_DELETE ); + menu.insertItem( i18n("Insert Separator" ), ID_SEP ); + menu.insertSeparator(); + menu.insertItem( i18n("Delete Toolbar" ), ID_DELTOOLBAR ); + int res = menu.exec( e->globalPos() ); + if ( res == ID_DELETE ) { + QMap<QWidget*, QAction*>::Iterator it = actionMap.find( (QWidget*)o ); + if ( it == actionMap.end() ) + return; + QAction *a = *it; + int index = actionList.find( a ); + RemoveActionFromToolBarCommand *cmd = new RemoveActionFromToolBarCommand( + i18n("Delete Action '%1' From Toolbar '%2'" ). + arg( a->name() ).arg( caption() ), + formWindow, a, this, index ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } else if ( res == ID_SEP ) { + calcIndicatorPos( mapFromGlobal( e->globalPos() ) ); + QAction *a = new QSeparatorAction( 0 ); + int index = actionList.findRef( *actionMap.find( insertAnchor ) ); + if ( index != -1 && afterAnchor ) + ++index; + if ( !insertAnchor ) + index = 0; + + AddActionToToolBarCommand *cmd = new AddActionToToolBarCommand( + i18n("Add Separator to Toolbar '%1'" ). + arg( a->name() ), + formWindow, a, this, index ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } else if ( res == ID_DELTOOLBAR ) { + RemoveToolBarCommand *cmd = new RemoveToolBarCommand( i18n("Delete Toolbar '%1'" ).arg( name() ), + formWindow, 0, this ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } +} + +void QDesignerToolBar::buttonMousePressEvent( QMouseEvent *e, QObject * ) +{ + widgetInserting = false; + + if ( e->button() == MidButton ) + return; + + if ( e->button() == LeftButton && + MainWindow::self->currentTool() != POINTER_TOOL && + MainWindow::self->currentTool() != ORDER_TOOL ) { + + if ( MainWindow::self->currentTool() == CONNECT_TOOL ) { + + } else { + widgetInserting = true; + } + + return; + } + + + dragStartPos = e->pos(); +} + +void QDesignerToolBar::removeWidget( QWidget *w ) +{ + QMap<QWidget*, QAction*>::Iterator it = actionMap.find( w ); + if ( it == actionMap.end() ) + return; + QAction *a = *it; + int index = actionList.find( a ); + RemoveActionFromToolBarCommand *cmd = + new RemoveActionFromToolBarCommand( i18n("Delete Action '%1' From Toolbar '%2'" ). + arg( a->name() ).arg( caption() ), + formWindow, a, this, index ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + QApplication::sendPostedEvents(); + adjustSize(); +} + +void QDesignerToolBar::buttonMouseMoveEvent( QMouseEvent *e, QObject *o ) +{ + if ( widgetInserting || ( e->state() & LeftButton ) == 0 ) + return; + if ( QABS( QPoint( dragStartPos - e->pos() ).manhattanLength() ) < QApplication::startDragDistance() ) + return; + QMap<QWidget*, QAction*>::Iterator it = actionMap.find( (QWidget*)o ); + if ( it == actionMap.end() ) + return; + QAction *a = *it; + if ( !a ) + return; + int index = actionList.find( a ); + RemoveActionFromToolBarCommand *cmd = + new RemoveActionFromToolBarCommand( i18n("Delete Action '%1' From Toolbar '%2'" ). + arg( a->name() ).arg( caption() ), + formWindow, a, this, index ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + QApplication::sendPostedEvents(); + adjustSize(); + + QString type = a->inherits( "QActionGroup" ) ? QString( "application/x-designer-actiongroup" ) : + a->inherits( "QSeparatorAction" ) ? QString( "application/x-designer-separator" ) : QString( "application/x-designer-actions" ); + QStoredDrag *drag = new QStoredDrag( type, this ); + QString s = QString::number( (long)a ); // #### huha, that is evil + drag->setEncodedData( QCString( s.latin1() ) ); + drag->setPixmap( a->iconSet().pixmap() ); + if ( a->inherits( "QDesignerAction" ) ) { + if ( formWindow->widgets()->find( ( (QDesignerAction*)a )->widget() ) ) + formWindow->selectWidget( ( (QDesignerAction*)a )->widget(), false ); + } + if ( !drag->drag() ) { + AddActionToToolBarCommand *cmd = new AddActionToToolBarCommand( i18n("Add Action '%1' to Toolbar '%2'" ). + arg( a->name() ).arg( caption() ), + formWindow, a, this, index ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } + lastIndicatorPos = QPoint( -1, -1 ); + indicator->hide(); +} + +#ifndef QT_NO_DRAGANDDROP + +void QDesignerToolBar::dragEnterEvent( QDragEnterEvent *e ) +{ + widgetInserting = false; + lastIndicatorPos = QPoint( -1, -1 ); + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) + e->accept(); +} + +void QDesignerToolBar::dragMoveEvent( QDragMoveEvent *e ) +{ + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) + e->accept(); + else + return; + drawIndicator( calcIndicatorPos( e->pos() ) ); +} + +void QDesignerToolBar::dragLeaveEvent( QDragLeaveEvent * ) +{ + indicator->hide(); + insertAnchor = 0; + afterAnchor = true; +} + +void QDesignerToolBar::dropEvent( QDropEvent *e ) +{ + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) + e->accept(); + else + return; + QString s; + if ( e->provides( "application/x-designer-actiongroup" ) ) + s = QString( e->encodedData( "application/x-designer-actiongroup" ) ); + else if ( e->provides( "application/x-designer-separator" ) ) + s = QString( e->encodedData( "application/x-designer-separator" ) ); + else + s = QString( e->encodedData( "application/x-designer-actions" ) ); + + indicator->hide(); + QAction *a = 0; + int index = actionList.findRef( *actionMap.find( insertAnchor ) ); + if ( index != -1 && afterAnchor ) + ++index; + if ( !insertAnchor ) + index = 0; + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-separator" ) ) { + if ( e->provides( "application/x-designer-actions" ) ) + a = (QDesignerAction*)s.toLong(); + else + a = (QSeparatorAction*)s.toLong(); + } else { + a = (QDesignerActionGroup*)s.toLong(); + } + + if ( actionList.findRef( a ) != -1 ) { + QMessageBox::warning( MainWindow::self, i18n("Insert/Move Action" ), + i18n("Action '%1' has already been added to this toolbar.\n" + "An Action may only occur once in a given toolbar." ). + arg( a->name() ) ); + return; + } + + AddActionToToolBarCommand *cmd = new AddActionToToolBarCommand( i18n("Add Action '%1' to Toolbar '%2'" ). + arg( a->name() ).arg( caption() ), + formWindow, a, this, index ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + + lastIndicatorPos = QPoint( -1, -1 ); +} + +#endif + +void QDesignerToolBar::reInsert() +{ + QAction *a = 0; + actionMap.clear(); + clear(); + for ( a = actionList.first(); a; a = actionList.next() ) { + a->addTo( this ); + if ( a->inherits( "QActionGroup" ) ) { + actionMap.insert( ( (QDesignerActionGroup*)a )->widget(), a ); + if ( ( (QDesignerActionGroup*)a )->widget() ) + ( (QDesignerActionGroup*)a )->widget()->installEventFilter( this ); + } else if ( a->inherits( "QDesignerAction" ) ) { + actionMap.insert( ( (QDesignerAction*)a )->widget(), a ); + ( (QDesignerAction*)a )->widget()->installEventFilter( this ); + } else if ( a->inherits( "QSeparatorAction" ) ) { + actionMap.insert( ( (QSeparatorAction*)a )->widget(), a ); + ( (QSeparatorAction*)a )->widget()->installEventFilter( this ); + } + } + QApplication::sendPostedEvents(); + adjustSize(); +} + +void QDesignerToolBar::actionRemoved() +{ + actionList.removeRef( (QAction*)sender() ); +} + +QPoint QDesignerToolBar::calcIndicatorPos( const QPoint &pos ) +{ + if ( orientation() == Horizontal ) { + QPoint pnt( width() - 2, 0 ); + insertAnchor = 0; + afterAnchor = true; + if ( !children() ) + return pnt; + pnt = QPoint( 13, 0 ); + QObjectListIt it( *children() ); + QObject * obj; + while( (obj=it.current()) != 0 ) { + ++it; + if ( obj->isWidgetType() && + qstrcmp( "qt_dockwidget_internal", obj->name() ) != 0 ) { + QWidget *w = (QWidget*)obj; + if ( w->x() < pos.x() ) { + pnt.setX( w->x() + w->width() + 1 ); + insertAnchor = w; + afterAnchor = true; + } + } + } + return pnt; + } else { + QPoint pnt( 0, height() - 2 ); + insertAnchor = 0; + afterAnchor = true; + if ( !children() ) + return pnt; + pnt = QPoint( 0, 13 ); + QObjectListIt it( *children() ); + QObject * obj; + while( (obj=it.current()) != 0 ) { + ++it; + if ( obj->isWidgetType() && + qstrcmp( "qt_dockwidget_internal", obj->name() ) != 0 ) { + QWidget *w = (QWidget*)obj; + if ( w->y() < pos.y() ) { + pnt.setY( w->y() + w->height() + 1 ); + insertAnchor = w; + afterAnchor = true; + } + } + } + return pnt; + } +} + +void QDesignerToolBar::drawIndicator( const QPoint &pos ) +{ + if ( lastIndicatorPos == pos ) + return; + bool wasVsisible = indicator->isVisible(); + if ( orientation() == Horizontal ) { + indicator->resize( 3, height() ); + if ( pos != QPoint( -1, -1 ) ) + indicator->move( pos.x() - 1, 0 ); + indicator->show(); + indicator->raise(); + lastIndicatorPos = pos; + } else { + indicator->resize( width(), 3 ); + if ( pos != QPoint( -1, -1 ) ) + indicator->move( 0, pos.y() - 1 ); + indicator->show(); + indicator->raise(); + lastIndicatorPos = pos; + } + if ( !wasVsisible ) + QApplication::sendPostedEvents(); +} + +void QDesignerToolBar::doInsertWidget( const QPoint &p ) +{ + if ( formWindow != MainWindow::self->formWindow() ) + return; + calcIndicatorPos( p ); + QWidget *w = WidgetFactory::create( MainWindow::self->currentTool(), this, 0, true ); + installEventFilters( w ); + MainWindow::self->formWindow()->insertWidget( w, true ); + QDesignerAction *a = new QDesignerAction( w, parent() ); + int index = actionList.findRef( *actionMap.find( insertAnchor ) ); + if ( index != -1 && afterAnchor ) + ++index; + if ( !insertAnchor ) + index = 0; + AddActionToToolBarCommand *cmd = new AddActionToToolBarCommand( i18n("Add Widget '%1' to Toolbar '%2'" ). + arg( w->name() ).arg( caption() ), + formWindow, a, this, index ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + MainWindow::self->resetTool(); +} + +void QDesignerToolBar::clear() +{ + for ( QAction *a = actionList.first(); a; a = actionList.next() ) { + if ( a->inherits( "QDesignerAction" ) ) + ( (QDesignerAction*)a )->remove(); + } + QToolBar::clear(); +} + +void QDesignerToolBar::installEventFilters( QWidget *w ) +{ + if ( !w ) + return; + QObjectList *l = w->queryList( "QWidget" ); + for ( QObject *o = l->first(); o; o = l->next() ) + o->installEventFilter( this ); + delete l; +} + + + +QDesignerMenuBar::QDesignerMenuBar( QWidget *mw ) + : QMenuBar( mw, 0 ) +{ + show(); + setAcceptDrops( true ); + MetaDataBase::addEntry( this ); + itemNum = 0; + mousePressed = false; + lastIndicatorPos = QPoint( -1, -1 ); + insertAt = -1; + indicator = new QDesignerIndicatorWidget( this ); + indicator->hide(); + findFormWindow(); +} + +void QDesignerMenuBar::findFormWindow() +{ + QWidget *w = this; + while ( w ) { + if ( w->inherits( "FormWindow" ) ) + formWindow = (FormWindow*)w; + w = w->parentWidget(); + } +} + +void QDesignerMenuBar::contextMenuEvent( QContextMenuEvent *e ) +{ + e->accept(); + int itm = itemAtPos( e->pos() ); + if ( itm == -1 ) { + if ( formWindow ) + formWindow->mainWindow()->popupFormWindowMenu( e->globalPos(), formWindow ); + return; + } + QPopupMenu menu( this ); + menu.insertItem( i18n("Delete Item" ), 1 ); + menu.insertItem( i18n("Rename Item..." ), 2 ); + int res = menu.exec( e->globalPos() ); + if ( res == 1 ) { + QMenuItem *item = findItem( idAt( itm ) ); + RemoveMenuCommand *cmd = new RemoveMenuCommand( i18n("Delete Menu '%1'" ).arg( item->text() ), + formWindow, + (QMainWindow*)parentWidget(), this, + (QDesignerPopupMenu*)item->popup(), + idAt( itm ), itm, item->text() ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + // #### need to do a proper invalidate and re-layout + parentWidget()->layout()->invalidate(); + parentWidget()->layout()->activate(); + } else if ( res == 2 ) { + bool ok; + QString old = text( idAt( itm ) ); + QString txt = KInputDialog::getText( i18n("Rename Menu Item" ), i18n("Menu text:" ), + text( idAt( itm ) ), &ok, 0 ); + if ( ok ) { + RenameMenuCommand *cmd = new RenameMenuCommand( + i18n("Rename Menu '%1' to '%2'" ).arg( old ).arg( txt ), + formWindow, this, idAt( itm ), old, txt ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } + } +} + +void QDesignerMenuBar::mousePressEvent( QMouseEvent *e ) +{ + lastIndicatorPos = QPoint( -1, -1 ); + insertAt = -1; + mousePressed = true; + if ( e->button() == MidButton || e->button() == RightButton ) + return; + + dragStartPos = e->pos(); + QMenuBar::mousePressEvent( e ); +} + +void QDesignerMenuBar::mouseMoveEvent( QMouseEvent *e ) +{ + if ( !mousePressed || e->state() == NoButton ) { + QMenuBar::mouseMoveEvent( e ); + return; + } + if ( QABS( QPoint( dragStartPos - e->pos() ).manhattanLength() ) < QApplication::startDragDistance() ) + return; + hidePopups(); + activateItemAt( -1 ); + int itm = itemAtPos( dragStartPos ); + if ( itm == -1 ) + return; + QPopupMenu *popup = findItem( idAt( itm ) )->popup(); + QString txt = findItem( idAt( itm ) )->text(); + removeItemAt( itm ); + + QStoredDrag *drag = new QStoredDrag( "application/x-designer-menuitem", this ); + QString s = QString::number( (long)popup ); + s += "/" + txt; + drag->setEncodedData( QCString( s.latin1() ) ); + QSize sz( fontMetrics().boundingRect( txt ).size() ); + QPixmap pix( sz.width() + 20, sz.height() * 2 ); + pix.fill( white ); + QPainter p( &pix, this ); + p.drawText( 2, 0, pix.width(), pix.height(), 0, txt ); + p.end(); + pix.setMask( pix.createHeuristicMask() ); + drag->setPixmap( pix ); + oldPos = itm; + if ( !drag->drag() ) { + insertItem( txt, popup, -1, itm ); + } + lastIndicatorPos = QPoint( -1, -1 ); + indicator->hide(); + mousePressed = false; +} + +void QDesignerMenuBar::mouseReleaseEvent( QMouseEvent *e ) +{ + QMenuBar::mouseReleaseEvent( e ); + mousePressed = false; +} + +#ifndef QT_NO_DRAGANDDROP + +void QDesignerMenuBar::dragEnterEvent( QDragEnterEvent *e ) +{ + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) + e->accept(); + if ( e->provides( "application/x-designer-menuitem" ) ) + e->accept(); + lastIndicatorPos = QPoint( -1, -1 ); + insertAt = -1; +} + +void QDesignerMenuBar::dragMoveEvent( QDragMoveEvent *e ) +{ + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-menuitem" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) + e->accept(); + else + return; + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) { + int item = itemAtPos( e->pos() ); + bool uieffect = QApplication::isEffectEnabled( UI_AnimateMenu ); + QApplication::setEffectEnabled( UI_AnimateMenu, false ); + if ( !qApp->activePopupWidget() ) + actItem = -1; + activateItemAt( item ); + QApplication::setEffectEnabled( UI_AnimateMenu, uieffect ); + if ( item == -1 ) + hidePopups(); + } else { + drawIndicator( calcIndicatorPos( e->pos() ) ); + } +} + +void QDesignerMenuBar::dragLeaveEvent( QDragLeaveEvent * ) +{ + mousePressed = false; + lastIndicatorPos = QPoint( -1, -1 ); + insertAt = -1; +} + +void QDesignerMenuBar::dropEvent( QDropEvent *e ) +{ + mousePressed = false; + if ( !e->provides( "application/x-designer-menuitem" ) ) + return; + e->accept(); + QString s( e->encodedData( "application/x-designer-menuitem" ) ); + QString s1 = s.left( s.find( "/" ) ); + QString s2 = s.mid( s.find( "/" ) + 1 ); + QPopupMenu *popup = (QPopupMenu*)s1.toLong(); // #### huha, that is evil + QString txt = s2; + insertItem( txt, popup, -1, insertAt ); + + MoveMenuCommand *cmd = new MoveMenuCommand( i18n("Move Menu '%1'" ).arg( txt ), formWindow, + this, (QDesignerPopupMenu*)popup, oldPos, insertAt, txt ); + // do not execute, we did the work already + formWindow->commandHistory()->addCommand( cmd ); + + indicator->hide(); +} + +#endif + +QPoint QDesignerMenuBar::calcIndicatorPos( const QPoint &pos ) +{ + int w = frameWidth(); + insertAt = count(); + for ( int i = 0; i < (int)count(); ++i ) { + QRect r = itemRect( i ); + if ( pos.x() < w + r.width() / 2 ) { + insertAt = i; + break; + } + w += r.width(); + } + + return QPoint( w, 0 ); +} + +void QDesignerMenuBar::drawIndicator( const QPoint &pos ) +{ + if ( lastIndicatorPos == pos ) + return; + bool wasVsisible = indicator->isVisible(); + indicator->resize( 3, height() ); + indicator->move( pos.x() - 1, 0 ); + indicator->show(); + indicator->raise(); + lastIndicatorPos = pos; + if ( !wasVsisible ) + QApplication::sendPostedEvents(); +} + +void QDesignerMenuBar::setItemNumber( int num ) +{ + itemNum = num; +} + +int QDesignerMenuBar::itemNumber() const +{ + return itemNum; +} + +void QDesignerMenuBar::setItemText( const QString &s ) +{ + if ( itemNum < 0 || itemNum >= (int)count() ) + return; + changeItem( idAt( itemNum ), s ); +} + +QString QDesignerMenuBar::itemText() const +{ + if ( itemNum < 0 || (int)itemNum >= (int)count() ) + return QString::null; + return text( idAt( itemNum ) ); +} + +void QDesignerMenuBar::setItemName( const QCString &s ) +{ + if ( itemNum < 0 || itemNum >= (int)count() ) + return; + findItem( idAt( itemNum ) )->popup()->setName( s ); +} + +QCString QDesignerMenuBar::itemName() const +{ + if ( itemNum < 0 || itemNum >= (int)count() ) + return ""; + return findItem( idAt( itemNum ) )->popup()->name(); +} + + + +QDesignerPopupMenu::QDesignerPopupMenu( QWidget *w ) + : QPopupMenu( w, 0 ), + popupMenu( 0 ) +{ + findFormWindow(); + setAcceptDrops( true ); + insertAt = -1; + mousePressed = false; + lastIndicatorPos = QPoint( -1, -1 ); + indicator = new QDesignerIndicatorWidget( this ); + indicator->hide(); +} + +void QDesignerPopupMenu::contextMenuEvent( QContextMenuEvent *e ) +{ +#if defined( Q_WS_MAC ) //the mac needs us to use context menu rather than right click + e->accept(); + QMouseEvent me( QEvent::MouseButtonPress, e->pos(), e->globalPos(), RightButton, RightButton ); + mousePressEvent(&me); +#else + Q_UNUSED( e ); +#endif +} + +void QDesignerPopupMenu::mousePressEvent( QMouseEvent *e ) +{ + if ( e->button() == MidButton ) + return; + + if ( e->button() == RightButton ) { + // A popup for a popup, we only need one, so make sure that + // we don't create multiple. The timer keeps the event loop sane. + popupPos = e->globalPos(); + popupLocalPos = e->pos(); + if ( popupMenu ) { + popupMenu->close(); + } + e->accept(); + QTimer::singleShot( 0, this, SLOT(createPopupMenu()) ); + return; + } + mousePressed = true; + dragStartPos = e->pos(); + QPopupMenu::mousePressEvent( e ); +} + +void QDesignerPopupMenu::createPopupMenu() +{ + // actually creates our popup for the popupmenu. + QPopupMenu menu( 0 ); + popupMenu = &menu; + int itm; + const int ID_DELETE = 1; + const int ID_SEP = 2; + itm = itemAtPos( popupLocalPos, false ); + if ( itm == -1 ) + return; + QAction *a = actionList.at( itm ); + if ( a && a->inherits( "QSeparatorAction" ) ) + menu.insertItem( i18n("Delete Separator" ), ID_DELETE ); + else + menu.insertItem( i18n("Delete Item" ), ID_DELETE ); + menu.insertItem( i18n("Insert Separator" ), ID_SEP ); + int res = menu.exec( popupPos ); + if ( res == ID_DELETE ) { + QAction *a = actionList.at( itm ); + if ( !a ) + return; + RemoveActionFromPopupCommand *cmd = new RemoveActionFromPopupCommand( + i18n("Delete Action '%1' From Popup Menu '%2'" ). + arg( a->name() ).arg( caption() ), + formWindow, a, this, itm ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } else if ( res == ID_SEP ) { + QPoint p( pos() ); + calcIndicatorPos( mapFromGlobal( popupPos ) ); + QAction *a = new QSeparatorAction( 0 ); + AddActionToPopupCommand *cmd = new AddActionToPopupCommand( + i18n("Add Separator to Popup Menu '%1'" ). + arg( name() ), + formWindow, a, this, insertAt ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + ( (QDesignerMenuBar*)( (QMainWindow*)parentWidget() )->menuBar() )->hidePopups(); + ( (QDesignerMenuBar*)( (QMainWindow*)parentWidget() )->menuBar() )->activateItemAt( -1 ); + popup( p ); + } + // set this back to zero so we know a popup (will soon) not exist. + popupMenu = 0; +} + +void QDesignerPopupMenu::mouseMoveEvent( QMouseEvent *e ) +{ + if ( !mousePressed || e->state() == NoButton ) { + QPopupMenu::mouseMoveEvent( e ); + return; + } + if ( QABS( QPoint( dragStartPos - e->pos() ).manhattanLength() ) < QApplication::startDragDistance() ) { + QPopupMenu::mouseMoveEvent( e ); + return; + } + int itm = itemAtPos( dragStartPos, false ); + if ( itm == -1 ) + return; + QAction *a = actionList.at( itm ); + if ( !a ) + return; + RemoveActionFromPopupCommand *cmd = new RemoveActionFromPopupCommand( i18n("Delete Action '%1' From Popup Menu '%2'" ). + arg( a->name() ).arg( caption() ), + formWindow, a, this, itm ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + + QString type = a->inherits( "QActionGroup" ) ? QString( "application/x-designer-actiongroup" ) : + a->inherits( "QSeparatorAction" ) ? QString( "application/x-designer-separator" ) : QString( "application/x-designer-actions" ); + QStoredDrag *drag = new QStoredDrag( type, this ); + QString s = QString::number( (long)a ); // #### huha, that is evil + drag->setEncodedData( QCString( s.latin1() ) ); + drag->setPixmap( a->iconSet().pixmap() ); + if ( !drag->drag() ) { + AddActionToPopupCommand *cmd = new AddActionToPopupCommand( i18n("Add Action '%1' to Popup Menu '%2'" ). + arg( a->name() ).arg( name() ), + formWindow, a, this, itm ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } + indicator->hide(); + lastIndicatorPos = QPoint( -1, -1 ); + mousePressed = false; +} + +void QDesignerPopupMenu::mouseReleaseEvent( QMouseEvent *e ) +{ + mousePressed = false; + QPopupMenu::mouseReleaseEvent( e ); +} + +#ifndef QT_NO_DRAGANDDROP + +void QDesignerPopupMenu::dragEnterEvent( QDragEnterEvent *e ) +{ + mousePressed = false; + lastIndicatorPos = QPoint( -1, -1 ); + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) + e->accept(); +} + +void QDesignerPopupMenu::dragMoveEvent( QDragMoveEvent *e ) +{ + mousePressed = false; + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) + e->accept(); + else + return; + drawIndicator( calcIndicatorPos( e->pos() ) ); +} + +void QDesignerPopupMenu::dragLeaveEvent( QDragLeaveEvent * ) +{ + mousePressed = false; + indicator->hide(); + insertAt = -1; +} + +void QDesignerPopupMenu::dropEvent( QDropEvent *e ) +{ + mousePressed = false; + if ( e->provides( "application/x-designer-actions" ) || + e->provides( "application/x-designer-actiongroup" ) || + e->provides( "application/x-designer-separator" ) ) + e->accept(); + else + return; + + QPoint p = pos(); + QAction *a = 0; + if ( e->provides( "application/x-designer-actiongroup" ) ) { + QString s( e->encodedData( "application/x-designer-actiongroup" ) ); + a = (QDesignerActionGroup*)s.toLong(); + } else { + QString s; + if ( e->provides( "application/x-designer-separator" ) ) { + s = QString( e->encodedData( "application/x-designer-separator" ) ); + a = (QSeparatorAction*)s.toLong(); + } else { + s = QString( e->encodedData( "application/x-designer-actions" ) ); + a = (QDesignerAction*)s.toLong(); + } + } + + if ( actionList.findRef( a ) != -1 ) { + QMessageBox::warning( MainWindow::self, i18n("Insert/Move Action" ), + i18n("Action '%1' has already been added to this menu.\n" + "An Action may only occur once in a given menu." ). + arg( a->name() ) ); + return; + } + + AddActionToPopupCommand *cmd = new AddActionToPopupCommand( i18n("Add Action '%1' to Popup Menu '%2'" ). + arg( a->name() ).arg( name() ), + formWindow, a, this, insertAt ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + + ( (QDesignerMenuBar*)( (QMainWindow*)parentWidget() )->menuBar() )->hidePopups(); + ( (QDesignerMenuBar*)( (QMainWindow*)parentWidget() )->menuBar() )->activateItemAt( -1 ); + indicator->hide(); + popup( p ); +} + +#endif + +void QDesignerPopupMenu::reInsert() +{ + clear(); + for ( QAction *a = actionList.first(); a; a = actionList.next() ) + a->addTo( this ); +} + +void QDesignerPopupMenu::drawIndicator( const QPoint &pos ) +{ + if ( lastIndicatorPos == pos ) + return; + bool wasVsisible = indicator->isVisible(); + indicator->resize( width(), 3 ); + indicator->move( 0, pos.y() - 1 ); + indicator->show(); + indicator->raise(); + lastIndicatorPos = pos; + if ( !wasVsisible ) + QApplication::sendPostedEvents(); +} + +QPoint QDesignerPopupMenu::calcIndicatorPos( const QPoint &pos ) +{ + int h = frameWidth(); + insertAt = count(); + for ( int i = 0; i < (int)count(); ++i ) { + QRect r = itemGeometry( i ); + if ( pos.y() < h + r.height() / 2 ) { + insertAt = i; + break; + } + h += r.height(); + } + + return QPoint( 0, h ); +} + +void QDesignerPopupMenu::addAction( QAction *a ) +{ + actionList.append( a ); + connect( a, SIGNAL( destroyed() ), this, SLOT( actionRemoved() ) ); +} + +void QDesignerPopupMenu::actionRemoved() +{ + actionList.removeRef( (QAction*)sender() ); +} + +void QDesignerPopupMenu::paintEvent( QPaintEvent *e ) +{ + QPopupMenu::paintEvent( e ); + if ( e->rect() != rect() ) + return; + lastIndicatorPos = QPoint( -1, -1 ); +} + +void QDesignerPopupMenu::findFormWindow() +{ + QWidget *w = this; + while ( w ) { + if ( w->inherits( "FormWindow" ) ) + formWindow = (FormWindow*)w; + w = w->parentWidget(); + } +} + +#include "actiondnd.moc" diff --git a/kommander/editor/actiondnd.h b/kommander/editor/actiondnd.h new file mode 100644 index 00000000..d99cc54c --- /dev/null +++ b/kommander/editor/actiondnd.h @@ -0,0 +1,304 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef ACTIONDND_H +#define ACTIONDND_H + +#include <qaction.h> +#include <qmap.h> +#include <qmenubar.h> +#include <qpixmap.h> +#include <qpopupmenu.h> +#include <qptrlist.h> +#include <qtoolbar.h> +#include <qguardedptr.h> + +class QDesignerPopupMenu; +class QDesignerIndicatorWidget; +class FormWindow; + +class QDesignerActionGroup : public QActionGroup +{ + Q_OBJECT + +public: + QDesignerActionGroup( QObject *parent ) + : QActionGroup( !parent || parent->inherits( "QActionGroup" ) ? parent : 0 ), wid( 0 ), idx( -1 ) {} + + QWidget *widget() const { return wid; } + QWidget *widget( QAction *a ) const { return *widgets.find( a ); } + int index() const { return idx; } + +protected: + void addedTo( QWidget *w, QWidget * ) { + wid = w; + } + void addedTo( QWidget *w, QWidget *, QAction *a ) { + widgets.insert( a, w ); + } + void addedTo( int index, QPopupMenu * ) { + idx = index; + } + +private: + QWidget *wid; + QMap<QAction *, QWidget *> widgets; + int idx; + +}; + +class QDesignerAction : public QAction +{ + Q_OBJECT + +public: + QDesignerAction( QObject *parent ) + : QAction( !parent || parent->inherits( "QActionGroup" ) ? parent : 0 ), wid( 0 ), idx( -1 ), widgetToInsert( 0 ) {} + QDesignerAction( QWidget *w, QObject *parent ) + : QAction( !parent || parent->inherits( "QActionGroup" ) ? parent : 0 ), wid( 0 ), idx( -1 ), widgetToInsert( w ) {} + + QWidget *widget() const { return wid; } + int index() const { return idx; } + + bool addTo( QWidget *w ); + bool removeFrom( QWidget *w ); + + void remove(); + bool supportsMenu() const { return !widgetToInsert; } + +protected: + void addedTo( QWidget *w, QWidget * ) { + wid = w; + } + void addedTo( int index, QPopupMenu * ) { + idx = index; + } + +private: + QWidget *wid; + int idx; + QWidget *widgetToInsert; + +}; + +class QDesignerToolBarSeparator : public QWidget +{ + Q_OBJECT + +public: + QDesignerToolBarSeparator( Orientation, QToolBar *parent, const char* name=0 ); + + QSize sizeHint() const; + Orientation orientation() const { return orient; } +public slots: + void setOrientation( Orientation ); +protected: + void styleChange( QStyle& ); + void paintEvent( QPaintEvent * ); +private: + Orientation orient; +}; + + +class QSeparatorAction : public QAction +{ + Q_OBJECT + +public: + QSeparatorAction( QObject *parent ); + + bool addTo( QWidget *w ); + bool removeFrom( QWidget *w ); + QWidget *widget() const; + int index() const; + +private: + QWidget *wid; + int idx; + +}; + +class QDesignerToolBar : public QToolBar +{ + Q_OBJECT + +public: + QDesignerToolBar( QMainWindow *mw ); + QDesignerToolBar( QMainWindow *mw, Dock dock ); + QPtrList<QAction> insertedActions() const { return actionList; } + void addAction( QAction *a ); + + void clear(); + void installEventFilters( QWidget *w ); + void insertAction( QWidget *w, QAction *a ) { actionMap.insert( w, a ); } + void insertAction( int index, QAction *a ) { actionList.insert( index, a ); } + void appendAction( QAction *a ) { actionList.append( a ); } + void removeAction( QAction *a ) { actionList.remove( a ); } + void reInsert(); + void removeWidget( QWidget *w ); + +protected: + bool eventFilter( QObject *, QEvent * ); + void paintEvent( QPaintEvent * ); +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent( QDragEnterEvent * ); + void dragMoveEvent( QDragMoveEvent * ); + void dragLeaveEvent( QDragLeaveEvent * ); + void dropEvent( QDropEvent * ); +#endif + void contextMenuEvent( QContextMenuEvent *e ); + void mousePressEvent( QMouseEvent *e ); + void mouseReleaseEvent( QMouseEvent *e ); + +private slots: + void actionRemoved(); + +private: + void drawIndicator( const QPoint &pos ); + QPoint calcIndicatorPos( const QPoint &pos ); + void buttonContextMenuEvent( QContextMenuEvent *e, QObject *o ); + void buttonMousePressEvent( QMouseEvent *e, QObject *o ); + void buttonMouseMoveEvent( QMouseEvent *e, QObject *o ); + void buttonMouseReleaseEvent( QMouseEvent *e, QObject *o ); + void doInsertWidget( const QPoint &p ); + void findFormWindow(); + +private: + QPoint lastIndicatorPos; + QWidget *insertAnchor; + bool afterAnchor; + QPtrList<QAction> actionList; + QMap<QWidget*, QAction*> actionMap; + QPoint dragStartPos; + QDesignerIndicatorWidget *indicator; + bool widgetInserting; + FormWindow *formWindow; + +}; + +class QDesignerMenuBar : public QMenuBar +{ + Q_OBJECT + friend class QDesignerPopupMenu; + + Q_PROPERTY( int itemNumber WRITE setItemNumber READ itemNumber ) + Q_PROPERTY( QString itemText WRITE setItemText READ itemText ) + Q_PROPERTY( QCString itemName WRITE setItemName READ itemName ) + +public: + QDesignerMenuBar( QWidget *mw ); + + void setItemNumber( int num ); + int itemNumber() const; + void setItemText( const QString &s ); + QString itemText() const; + void setItemName( const QCString &s ); + QCString itemName() const; + +protected: + void mousePressEvent( QMouseEvent *e ); + void mouseMoveEvent( QMouseEvent *e ); + void mouseReleaseEvent( QMouseEvent *e ); + void contextMenuEvent( QContextMenuEvent *e ); +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent( QDragEnterEvent * ); + void dragMoveEvent( QDragMoveEvent * ); + void dragLeaveEvent( QDragLeaveEvent * ); + void dropEvent( QDropEvent * ); +#endif + +private: + void drawIndicator( const QPoint &pos ); + QPoint calcIndicatorPos( const QPoint &pos ); + void findFormWindow(); + +private: + int itemNum; + QPoint dragStartPos; + bool mousePressed; + QPoint lastIndicatorPos; + int insertAt; + QDesignerIndicatorWidget *indicator; + FormWindow *formWindow; + int oldPos; + +}; + +class QDesignerPopupMenu : public QPopupMenu +{ + Q_OBJECT + +public: + QDesignerPopupMenu( QWidget *w ); + QPtrList<QAction> insertedActions() const { return actionList; } + void addAction( QAction *a ); + void reInsert(); + void insertAction( int index, QAction *a ) { actionList.insert( index, a ); } + void removeAction( QAction *a ) { actionList.remove( a ); } + +protected: + void mousePressEvent( QMouseEvent *e ); + void mouseMoveEvent( QMouseEvent *e ); + void mouseReleaseEvent( QMouseEvent *e ); + void contextMenuEvent( QContextMenuEvent *e ); + void paintEvent( QPaintEvent * ); +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent( QDragEnterEvent * ); + void dragMoveEvent( QDragMoveEvent * ); + void dragLeaveEvent( QDragLeaveEvent * ); + void dropEvent( QDropEvent * ); +#endif + +private slots: + void actionRemoved(); + void createPopupMenu(); + +private: + void drawIndicator( const QPoint &pos ); + QPoint calcIndicatorPos( const QPoint &pos ); + void findFormWindow(); + +private: + QPoint lastIndicatorPos; + int insertAt; + QPtrList<QAction> actionList; + QPoint dragStartPos; + bool mousePressed; + QDesignerIndicatorWidget *indicator; + FormWindow *formWindow; + QGuardedPtr<QPopupMenu> popupMenu; + QPoint popupPos; + QPoint popupLocalPos; + +}; + +class QDesignerIndicatorWidget : public QWidget +{ + Q_OBJECT + +public: + QDesignerIndicatorWidget( QWidget *p ) + : QWidget( p, "qt_dockwidget_internal" ) { + setBackgroundColor( red ); + } + +}; + +#endif diff --git a/kommander/editor/actioneditor.ui b/kommander/editor/actioneditor.ui new file mode 100644 index 00000000..733e5b29 --- /dev/null +++ b/kommander/editor/actioneditor.ui @@ -0,0 +1,201 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>ActionEditorBase</class> +<include location="local" implDecl="in declaration">actioneditor.ui.h</include> +<forward>class QListViewItem;</forward> +<layoutdefaults spacing="6" margin="11"/> +<widget class="QWidget"> + <property name="name"> + <cstring>ActionEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>206</width> + <height>227</height> + </rect> + </property> + <property name="caption"> + <string>Edit Actions</string> + </property> + <property name="layoutMargin" stdset="0"> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>4</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QToolButton"> + <property name="name"> + <cstring>buttonNewAction</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Create new Action</string> + </property> + </widget> + <widget class="QToolButton"> + <property name="name"> + <cstring>buttonDeleteAction</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image1</pixmap> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Delete current Action</string> + </property> + </widget> + <widget class="QToolButton"> + <property name="name"> + <cstring>buttonConnect</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image2</pixmap> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Connect current Action</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Spacer1</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </hbox> + </widget> + <widget class="ActionListView"> + <property name="name"> + <cstring>listActions</cstring> + </property> + </widget> + </vbox> +</widget> +<customwidgets> + <customwidget> + <class>ActionListView</class> + <header location="local">actionlistview.h</header> + <sizehint> + <width>200</width> + <height>200</height> + </sizehint> + <container>0</container> + <sizepolicy> + <hordata>7</hordata> + <verdata>7</verdata> + </sizepolicy> + <pixmap>image3</pixmap> + <signal>selectionChanged( QListViewItem * )</signal> + <signal>currentChanged( QListViewItem * )</signal> + <signal>clicked( QListViewItem * )</signal> + </customwidget> +</customwidgets> +<images> + <image name="image0"> + <data format="XPM.GZ" length="721">789cedd2310ac23014c6f13da778245b11ab29c114f1088aa3200eaf2f151daaa07510f1eef64553ac696fe04787fcf90dc9d03481cd7a09492aae35d647023ae0051277abaafb76b77808a93534df0ca67224e4180856e753c967d59cd5c48fb3e0d4b9269d7312a741e30c723a4e9b596333ce92930c69329cc8b9f7f3b7f42e886a1709bea70a3524142812172892325024182892f681bff2f1bf74a5bb2f19fe0f7ae439172f13a0a94f</data> + </image> + <image name="image1"> + <data format="XPM.GZ" length="661">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523232520022630543251d2e253d856405bffcbc54105b19c856360003103711c6b53006abc40a90649491482ac92863955146d6822ca387474619c9301419a03842825819245bd064129513b1cb242602512216994430d44bc4904984c8c1a5e032897a3019a8144c26518f800c92715864d0ec81ab4dc4701b924fb0850e8a4cad351700fe117ccc</data> + </image> + <image name="image2"> + <data format="XPM.GZ" length="1142">789cbdd1cb6e82401480e1bd4f4174671a1c70504cd3055e60d5a6cb264d17330378451450b44ddfbd73ce19489abae8caa30bbefccc108641df7a7b7db6fa834e59896aad2cb51285d58f4f59767dff78faea745dd7d2ffa16739dd874ed7b694f592ef13b85ee8eb1e630e971c786898605d1baad803ee5a622d1a2623e0b125d619d165b4f6d212ebd990d3dab225d60ae93bbe2f8121d061ae923170451cf2340506868a18217d7d33be9104baba2a5cbb6d483767c0e1849b07a5c491437509f4c478423c0105673ef3815343c5187083544dfd34343501aad8610eb206c69ec3897364d25018ea03005e81c9a8a9b9a1a97b64a21f848c8169ca19c76fdd238e27637c4145149ec0c3b16fce5d4b4fd0d8b21d2aa2a770e2c496e91267b5a62228c46263cb2d955d4665af07b6cb753a1c8b6359ee2a2a34b9fe9d6c599cf5ac7f15985a2728977f96ab0e9fb62ccb1bbbc18a2028ffee564f9b709e5199d7347a850cce380b3a1d136a389d308cc2288aeefc7d6e97efc7ce0ff25f14ae</data> + </image> + <image name="image3"> + <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> + </image> +</images> +<connections> + <connection language="C++"> + <sender>listActions</sender> + <signal>currentChanged( QListViewItem * )</signal> + <receiver>ActionEditorBase</receiver> + <slot>currentActionChanged(QListViewItem*)</slot> + </connection> + <connection language="C++"> + <sender>listActions</sender> + <signal>clicked( QListViewItem * )</signal> + <receiver>ActionEditorBase</receiver> + <slot>currentActionChanged(QListViewItem*)</slot> + </connection> + <connection language="C++"> + <sender>listActions</sender> + <signal>selectionChanged( QListViewItem * )</signal> + <receiver>ActionEditorBase</receiver> + <slot>currentActionChanged(QListViewItem*)</slot> + </connection> + <connection language="C++"> + <sender>buttonNewAction</sender> + <signal>clicked()</signal> + <receiver>ActionEditorBase</receiver> + <slot>newAction()</slot> + </connection> + <connection language="C++"> + <sender>buttonConnect</sender> + <signal>clicked()</signal> + <receiver>ActionEditorBase</receiver> + <slot>connectionsClicked()</slot> + </connection> + <connection language="C++"> + <sender>buttonDeleteAction</sender> + <signal>clicked()</signal> + <receiver>ActionEditorBase</receiver> + <slot>deleteAction()</slot> + </connection> + <slot access="protected" language="C++" returnType="void">init()</slot> + <slot access="protected" language="C++" returnType="void">destroy()</slot> + <slot access="protected" language="C++" returnType="void">connectionsClicked()</slot> + <slot access="protected" language="C++" returnType="void">currentActionChanged( QListViewItem * )</slot> + <slot access="protected" language="C++" returnType="void">deleteAction()</slot> + <slot access="protected" language="C++" returnType="void">newAction()</slot> +</connections> +</UI> diff --git a/kommander/editor/actioneditorimpl.cpp b/kommander/editor/actioneditorimpl.cpp new file mode 100644 index 00000000..0d694250 --- /dev/null +++ b/kommander/editor/actioneditorimpl.cpp @@ -0,0 +1,261 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "actioneditorimpl.h" +#include "formwindow.h" +#include "metadatabase.h" +#include "actionlistview.h" +#include "connectioneditorimpl.h" +#include "mainwindow.h" + +#include <qaction.h> +#include <qlineedit.h> +#include <qlabel.h> +#include <qtoolbutton.h> +#include <qlistview.h> +#include <qcheckbox.h> +#include <qpushbutton.h> +#include <qpopupmenu.h> +#include <qobjectlist.h> + +#include <klocale.h> + +ActionEditor::ActionEditor( QWidget* parent, const char* name, WFlags fl ) + : ActionEditorBase( parent, name, fl ), currentAction( 0 ), formWindow( 0 ) +{ + listActions->addColumn( i18n("Actions" ) ); + setEnabled( false ); + buttonConnect->setEnabled( false ); + + QPopupMenu *popup = new QPopupMenu( this ); + popup->insertItem( i18n("New &Action" ), this, SLOT( newAction() ) ); + popup->insertItem( i18n("New Action &Group" ), this, SLOT( newActionGroup() ) ); + popup->insertItem( i18n("New &Dropdown Action Group" ), this, SLOT( newDropDownActionGroup() ) ); + buttonNewAction->setPopup( popup ); + buttonNewAction->setPopupDelay( 0 ); + + connect( listActions, SIGNAL( insertAction() ), this, SLOT( newAction() ) ); + connect( listActions, SIGNAL( insertActionGroup() ), this, SLOT( newActionGroup() ) ); + connect( listActions, SIGNAL( insertDropDownActionGroup() ), this, SLOT( newDropDownActionGroup() ) ); + connect( listActions, SIGNAL( deleteAction() ), this, SLOT( deleteAction() ) ); + connect( listActions, SIGNAL( connectAction() ), this, SLOT( connectionsClicked() ) ); +} + +void ActionEditor::closeEvent( QCloseEvent *e ) +{ + emit hidden(); + e->accept(); +} + +void ActionEditor::currentActionChanged( QListViewItem *i ) +{ + buttonConnect->setEnabled( i != 0 ); + if ( !i ) + return; + currentAction = ( (ActionItem*)i )->action(); + if ( !currentAction ) + currentAction = ( (ActionItem*)i )->actionGroup(); + if ( formWindow && currentAction ) + formWindow->setActiveObject( currentAction ); +} + +void ActionEditor::deleteAction() +{ + if ( !currentAction ) + return; + + QListViewItemIterator it( listActions ); + while ( it.current() ) { + if ( ( (ActionItem*)it.current() )->action() == currentAction ) { + formWindow->actionList().removeRef( currentAction ); + delete currentAction; + QValueList<MetaDataBase::Connection> conns = + MetaDataBase::connections( formWindow, currentAction ); + for ( QValueList<MetaDataBase::Connection>::Iterator it2 = conns.begin(); + it2 != conns.end(); ++it2 ) + MetaDataBase::removeConnection( formWindow, (*it2).sender, (*it2).signal, + (*it2).receiver, (*it2).slot ); + delete it.current(); + break; + } else if ( ( (ActionItem*)it.current() )->actionGroup() == currentAction ) { + formWindow->actionList().removeRef( currentAction ); + delete currentAction; + QValueList<MetaDataBase::Connection> conns = + MetaDataBase::connections( formWindow, currentAction ); + for ( QValueList<MetaDataBase::Connection>::Iterator it2 = conns.begin(); + it2 != conns.end(); ++it2 ) + MetaDataBase::removeConnection( formWindow, (*it2).sender, (*it2).signal, + (*it2).receiver, (*it2).slot ); + delete it.current(); + break; + } + ++it; + } + + if ( formWindow ) + formWindow->setActiveObject( formWindow->mainContainer() ); +} + +void ActionEditor::newAction() +{ + ActionItem *actionParent = (ActionItem*)listActions->selectedItem(); + if ( actionParent ) { + if ( !actionParent->actionGroup() || + !actionParent->actionGroup()->inherits( "QActionGroup" ) ) + actionParent = (ActionItem*)actionParent->parent(); + } + + ActionItem *i = 0; + if ( actionParent ) + i = new ActionItem( actionParent ); + else + i = new ActionItem( listActions, (bool)false ); + MetaDataBase::addEntry( i->action() ); + QString n = "Action"; + formWindow->unify( i->action(), n, true ); + i->setText( 0, n ); + i->action()->setName( n ); + i->action()->setText( i->action()->name() ); + if ( actionParent && actionParent->actionGroup() && + actionParent->actionGroup()->usesDropDown() ) { + i->action()->setToggleAction( true ); + MetaDataBase::setPropertyChanged( i->action(), "toggleAction", true ); + } + MetaDataBase::setPropertyChanged( i->action(), "text", true ); + MetaDataBase::setPropertyChanged( i->action(), "name", true ); + listActions->setCurrentItem( i ); + if ( !actionParent ) + formWindow->actionList().append( i->action() ); +} + +void ActionEditor::newActionGroup() +{ + ActionItem *actionParent = (ActionItem*)listActions->selectedItem(); + if ( actionParent ) { + if ( !actionParent->actionGroup() || + !actionParent->actionGroup()->inherits( "QActionGroup" ) ) + actionParent = (ActionItem*)actionParent->parent(); + } + + ActionItem *i = 0; + if ( actionParent ) + i = new ActionItem( actionParent, true ); + else + i = new ActionItem( listActions, true ); + + MetaDataBase::addEntry( i->actionGroup() ); + MetaDataBase::setPropertyChanged( i->actionGroup(), "usesDropDown", true ); + QString n = "ActionGroup"; + formWindow->unify( i->action(), n, true ); + i->setText( 0, n ); + i->actionGroup()->setName( n ); + i->actionGroup()->setText( i->actionGroup()->name() ); + MetaDataBase::setPropertyChanged( i->actionGroup(), "text", true ); + MetaDataBase::setPropertyChanged( i->actionGroup(), "name", true ); + listActions->setCurrentItem( i ); + i->setOpen( true ); + if ( !actionParent ) + formWindow->actionList().append( i->actionGroup() ); +} + +void ActionEditor::newDropDownActionGroup() +{ + newActionGroup(); + ( (ActionItem*)listActions->currentItem() )->actionGroup()->setUsesDropDown( true ); +} + +void ActionEditor::setFormWindow( FormWindow *fw ) +{ + listActions->clear(); + formWindow = fw; + if ( !formWindow || + !formWindow->mainContainer() || + !formWindow->mainContainer()->inherits( "QMainWindow" ) ) { + setEnabled( false ); + } else { + setEnabled( true ); + for ( QAction *a = formWindow->actionList().first(); a; a = formWindow->actionList().next() ) { + ActionItem *i = 0; + if ( a->parent() && a->parent()->inherits( "QAction" ) ) + continue; + i = new ActionItem( listActions, a ); + i->setText( 0, a->name() ); + i->setPixmap( 0, a->iconSet().pixmap() ); + if ( a->inherits( "QActionGroup" ) ) { + insertChildActions( i ); + } + } + if ( listActions->firstChild() ) { + listActions->setCurrentItem( listActions->firstChild() ); + listActions->setSelected( listActions->firstChild(), true ); + } + } +} + +void ActionEditor::insertChildActions( ActionItem *i ) +{ + if ( !i->actionGroup() || !i->actionGroup()->children() ) + return; + QObjectListIt it( *i->actionGroup()->children() ); + while ( it.current() ) { + QObject *o = it.current(); + ++it; + if ( !o->inherits( "QAction" ) ) + continue; + QAction *a = (QAction*)o; + ActionItem *i2 = new ActionItem( (QListViewItem*)i, a ); + i->setOpen( true ); + i2->setText( 0, a->name() ); + i2->setPixmap( 0, a->iconSet().pixmap() ); + if ( a->inherits( "QActionGroup" ) ) + insertChildActions( i2 ); + } +} + +void ActionEditor::updateActionName( QAction *a ) +{ + QListViewItemIterator it( listActions ); + while ( it.current() ) { + if ( ( (ActionItem*)it.current() )->action() == a ) + ( (ActionItem*)it.current() )->setText( 0, a->name() ); + else if ( ( (ActionItem*)it.current() )->actionGroup() == a ) + ( (ActionItem*)it.current() )->setText( 0, a->name() ); + ++it; + } +} + +void ActionEditor::updateActionIcon( QAction *a ) +{ + QListViewItemIterator it( listActions ); + while ( it.current() ) { + if ( ( (ActionItem*)it.current() )->action() == a ) + ( (ActionItem*)it.current() )->setPixmap( 0, a->iconSet().pixmap() ); + else if ( ( (ActionItem*)it.current() )->actionGroup() == a ) + ( (ActionItem*)it.current() )->setPixmap( 0, a->iconSet().pixmap() ); + ++it; + } +} + +void ActionEditor::connectionsClicked() +{ + ConnectionEditor editor( formWindow->mainWindow(), currentAction, formWindow, formWindow ); + editor.exec(); +} +#include "actioneditorimpl.moc" diff --git a/kommander/editor/actioneditorimpl.h b/kommander/editor/actioneditorimpl.h new file mode 100644 index 00000000..9ecfaaa5 --- /dev/null +++ b/kommander/editor/actioneditorimpl.h @@ -0,0 +1,64 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef ACTIONEDITOR_H +#define ACTIONEDITOR_H + +#include "actioneditor.h" + +class QAction; +class FormWindow; +class ActionItem; + +class ActionEditor : public ActionEditorBase +{ + Q_OBJECT + +public: + ActionEditor( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); + void setFormWindow( FormWindow *fw ); + void updateActionName( QAction *a ); + void updateActionIcon( QAction *a ); + FormWindow *form() const { return formWindow; } + +protected: + void closeEvent( QCloseEvent *e ); + +protected slots: + void currentActionChanged( QListViewItem * ); + void deleteAction(); + void newAction(); + void newActionGroup(); + void newDropDownActionGroup(); + void connectionsClicked(); + +signals: + void hidden(); + +private: + void insertChildActions( ActionItem *i ); + +private: + QAction *currentAction; + FormWindow *formWindow; + +}; + +#endif // ACTIONEDITOR_H diff --git a/kommander/editor/actionlistview.cpp b/kommander/editor/actionlistview.cpp new file mode 100644 index 00000000..0db57f76 --- /dev/null +++ b/kommander/editor/actionlistview.cpp @@ -0,0 +1,111 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "actionlistview.h" +#include <qdragobject.h> +#include <qheader.h> + +#include <klocale.h> + +ActionListView::ActionListView( QWidget *parent, const char *name ) + : QListView( parent, name ) +{ + header()->setStretchEnabled( true ); + setRootIsDecorated( true ); + setSorting( -1 ); + connect( this, SIGNAL( contextMenuRequested( QListViewItem *, const QPoint &, int ) ), + this, SLOT( rmbMenu( QListViewItem *, const QPoint & ) ) ); +} + +ActionItem::ActionItem( QListView *lv, QAction *ac ) + : QListViewItem( lv ), a( 0 ), g( 0 ) +{ + if ( ac->inherits( "QActionGroup" ) ) + g = (QDesignerActionGroup*)ac; + else + a = (QDesignerAction*)ac; + setDragEnabled( true ); +} + +ActionItem::ActionItem( QListViewItem *i, QAction *ac ) + : QListViewItem( i ), a( 0 ), g( 0 ) +{ + if ( ac->inherits( "QActionGroup" ) ) + g = (QDesignerActionGroup*)ac; + else + a = (QDesignerAction*)ac; + setDragEnabled( true ); + moveToEnd(); +} + +void ActionItem::moveToEnd() +{ + QListViewItem *i = this; + while ( i->nextSibling() ) + i = i->nextSibling(); + if ( i != this ) + moveItem( i ); +} + +QDragObject *ActionListView::dragObject() +{ + ActionItem *i = (ActionItem*)currentItem(); + if ( !i ) + return 0; + QStoredDrag *drag = 0; + if ( i->action() ) { + drag = new QStoredDrag( "application/x-designer-actions", viewport() ); + QString s = QString::number( (long)i->action() ); // #### huha, that is evil + drag->setEncodedData( QCString( s.latin1() ) ); + drag->setPixmap( i->action()->iconSet().pixmap() ); + } else { + drag = new QStoredDrag( "application/x-designer-actiongroup", viewport() ); + QString s = QString::number( (long)i->actionGroup() ); // #### huha, that is evil + drag->setEncodedData( QCString( s.latin1() ) ); + drag->setPixmap( i->actionGroup()->iconSet().pixmap() ); + } + return drag; +} + +void ActionListView::rmbMenu( QListViewItem *i, const QPoint &p ) +{ + QPopupMenu *popup = new QPopupMenu( this ); + popup->insertItem( i18n("New &Action" ), 0 ); + popup->insertItem( i18n("New Action &Group" ), 1 ); + popup->insertItem( i18n("New &Dropdown Action Group" ), 2 ); + if ( i ) { + popup->insertSeparator(); + popup->insertItem( i18n("&Connect Action..." ), 3 ); + popup->insertSeparator(); + popup->insertItem( i18n("Delete Action" ), 4 ); + } + int res = popup->exec( p ); + if ( res == 0 ) + emit insertAction(); + else if ( res == 1 ) + emit insertActionGroup(); + else if ( res == 2 ) + emit insertDropDownActionGroup(); + else if ( res == 3 ) + emit connectAction(); + else if ( res == 4 ) + emit deleteAction(); +} +#include "actionlistview.moc" diff --git a/kommander/editor/actionlistview.h b/kommander/editor/actionlistview.h new file mode 100644 index 00000000..33709068 --- /dev/null +++ b/kommander/editor/actionlistview.h @@ -0,0 +1,75 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef ACTIONLISTVIEW_H +#define ACTIONLISTVIEW_H + +#include <qlistview.h> +#include "actiondnd.h" + +class ActionItem : public QListViewItem +{ +public: + ActionItem( QListView *lv, bool group ) + : QListViewItem( lv ), + a( group ? 0 : new QDesignerAction( 0 ) ), + g( group ? new QDesignerActionGroup( 0 ) : 0 ) { setDragEnabled( TRUE ); } + ActionItem( QListView *lv, QAction *ac ); + ActionItem( QListViewItem *i, QAction *ac ); + ActionItem( ActionItem *parent, bool group = FALSE ) + : QListViewItem( parent ), + a( group ? 0 : new QDesignerAction( parent->actionGroup() ) ), + g( group ? new QDesignerActionGroup( parent->actionGroup() ) : 0 ) { setDragEnabled( TRUE ); moveToEnd(); } + + QDesignerAction *action() const { return a; } + QDesignerActionGroup *actionGroup() const { return g; } + +private: + void moveToEnd(); + +private: + QDesignerAction *a; + QDesignerActionGroup *g; + +}; + +class ActionListView : public QListView +{ + Q_OBJECT + +public: + ActionListView( QWidget *parent = 0, const char *name = 0 ); + +protected: + QDragObject *dragObject(); + +private slots: + void rmbMenu( QListViewItem *i, const QPoint &p ); + +signals: + void insertAction(); + void insertActionGroup(); + void insertDropDownActionGroup(); + void deleteAction(); + void connectAction(); + +}; + +#endif diff --git a/kommander/editor/asciivalidator.cpp b/kommander/editor/asciivalidator.cpp new file mode 100644 index 00000000..776e6e9f --- /dev/null +++ b/kommander/editor/asciivalidator.cpp @@ -0,0 +1,77 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "asciivalidator.h" + +#include <qstring.h> + +AsciiValidator::AsciiValidator( QObject * parent, const char *name ) + : QValidator( parent, name ), functionName( false ) +{ +} + +AsciiValidator::AsciiValidator( bool funcName, QObject * parent, const char *name ) + : QValidator( parent, name ), functionName( funcName ) +{ +} + +AsciiValidator::AsciiValidator( const QString &allow, QObject * parent, const char *name ) + : QValidator( parent, name ), functionName( false ), allowedChars( allow ) +{ +} + +AsciiValidator::~AsciiValidator() +{ +} + +QValidator::State AsciiValidator::validate( QString &s, int & ) const +{ + bool inParen = false; + if ( !s.isEmpty() && s[0].row() == 0 && s[0].cell() >= '0' && s[0].cell() <= '9' ) { + s[0] = '_'; + } + for ( int i = 0; i < (int) s.length(); i++ ) { + uchar r = s[i].row(); + uchar c = s[i].cell(); + if ( functionName && inParen ) { + if ( c != ')' ) + continue; + s.truncate( i + 1 ); + return QValidator::Acceptable; + } + if ( r == 0 && ( ( c >= '0' && c <= '9' ) || + ( c >= 'a' && c <= 'z' ) || + ( c >= 'A' && c <= 'Z' ) ) ) + continue; + if ( functionName ) { + if ( c == '(' ) { + inParen = true; + continue; + } + } + + if ( allowedChars.find( s[ i ] ) != -1 ) + continue; + + s[i] = '_'; + } + return QValidator::Acceptable; +} +#include "asciivalidator.moc" diff --git a/kommander/editor/asciivalidator.h b/kommander/editor/asciivalidator.h new file mode 100644 index 00000000..50d273c2 --- /dev/null +++ b/kommander/editor/asciivalidator.h @@ -0,0 +1,46 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef ASCIIVALIDATOR_H +#define ASCIIVALIDATOR_H + + +#include <qvalidator.h> + + +class AsciiValidator: public QValidator +{ + Q_OBJECT +public: + AsciiValidator( QObject * parent, const char *name = 0 ); + AsciiValidator( bool funcName, QObject * parent, const char *name = 0 ); + AsciiValidator( const QString &allow, QObject * parent, const char *name = 0 ); + ~AsciiValidator(); + + QValidator::State validate( QString &, int & ) const; + +private: + bool functionName; + QString allowedChars; + +}; + + +#endif diff --git a/kommander/editor/assistproc.cpp b/kommander/editor/assistproc.cpp new file mode 100644 index 00000000..58ac4f78 --- /dev/null +++ b/kommander/editor/assistproc.cpp @@ -0,0 +1,74 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#include "assistproc.h" + +AssistProc::AssistProc( QObject *parent, const char *name, const QString &path ) + : QProcess( parent, name ) +{ + assistantPath = path; + connect( this, SIGNAL(readyReadStdout()), this, SLOT(processOutput()) ); + connect( this, SIGNAL(readyReadStderr()), this, SLOT(processErrOutput()) ); +} + +AssistProc::~AssistProc() +{ + tryTerminate(); + QTimer::singleShot( 5000, this, SLOT(kill())); // If busy, kill in 5 sec... +} + +bool AssistProc::run( const QString &path ) +{ + if ( !path.isEmpty() ) + assistantPath = path; + + clearArguments(); + addArgument( assistantPath ); + addArgument( "-stdin" ); + + if ( !start() ) { + qWarning( "Assistant [exe]: Couldn't start \'%s\', please check path.", assistantPath.latin1() ); + return false; + } + return true; +} + +bool AssistProc::sendRequest( const QString &data ) +{ + if ( isRunning() ) { + writeToStdin( data ); + } else { + if ( run() ) // If not running, try to start + writeToStdin( data ); // and display requested page. + else + return false; + } + return true; +} + +void AssistProc::processOutput() +{ + qWarning( "Assistant [out]: %s", readStdout().data() ); +} + +void AssistProc::processErrOutput() +{ + qWarning( "Assistant [err]: %s", readStderr().data() ); +} +#include "assistproc.moc" diff --git a/kommander/editor/assistproc.h b/kommander/editor/assistproc.h new file mode 100644 index 00000000..1f584daf --- /dev/null +++ b/kommander/editor/assistproc.h @@ -0,0 +1,47 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#ifndef ASSISTPROC_H +#define ASSISTPROC_H + +#include <qprocess.h> +#include <qtimer.h> +#include <qsocket.h> +#include <qstring.h> + +class AssistProc : public QProcess +{ + Q_OBJECT +public: + AssistProc( QObject *parent=0, const char * name = 0, const QString &path = QString::null ); + ~AssistProc(); + bool run( const QString &path = QString::null ); + +public slots: + bool sendRequest( const QString &data ); + +private slots: + void processOutput(); + void processErrOutput(); + +private: + QString assistantPath; +}; + +#endif // ASSISTPROC_H diff --git a/kommander/editor/assoctexteditor.ui b/kommander/editor/assoctexteditor.ui new file mode 100644 index 00000000..e3258b73 --- /dev/null +++ b/kommander/editor/assoctexteditor.ui @@ -0,0 +1,222 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>AssocTextEditorBase</class> +<widget class="QDialog"> + <property name="name"> + <cstring>AssocTextEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>627</width> + <height>457</height> + </rect> + </property> + <property name="caption"> + <string>Edit Text</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout5</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1_2</cstring> + </property> + <property name="text"> + <string>&Widget:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>widgetsComboBox</cstring> + </property> + </widget> + <widget class="QComboBox"> + <property name="name"> + <cstring>widgetsComboBox</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>3</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>treeWidgetButton</cstring> + </property> + <property name="text"> + <string>...</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>&Text for:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>stateComboBox</cstring> + </property> + </widget> + <widget class="QComboBox"> + <property name="name"> + <cstring>stateComboBox</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>2</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QGroupBox" row="2" column="0"> + <property name="name"> + <cstring>groupBox1</cstring> + </property> + <property name="title"> + <string>Insert</string> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KPushButton"> + <property name="name"> + <cstring>functionButton</cstring> + </property> + <property name="text"> + <string>&Function...</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer3</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Fixed</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QLabel"> + <property name="name"> + <cstring>TextLabel3</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Wi&dget:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>widgetComboBox</cstring> + </property> + </widget> + <widget class="QComboBox"> + <property name="name"> + <cstring>widgetComboBox</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>3</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Fixed</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>filePushButton</cstring> + </property> + <property name="text"> + <string>Fi&le...</string> + </property> + </widget> + </hbox> + </widget> + <widget class="QFrame" row="1" column="0"> + <property name="name"> + <cstring>editorFrame</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>3</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape"> + <enum>Box</enum> + </property> + <property name="frameShadow"> + <enum>Plain</enum> + </property> + </widget> + </grid> +</widget> +<connections> + <connection> + <sender>AssocTextEditorBase</sender> + <signal>destroyed(QObject*)</signal> + <receiver>AssocTextEditorBase</receiver> + <slot>AssocTextEditorBase_destroyed(QObject*)</slot> + </connection> +</connections> +<slots> + <slot>AssocTextEditorBase_destroyed(QObject*)</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kommander/editor/assoctexteditorimpl.cpp b/kommander/editor/assoctexteditorimpl.cpp new file mode 100644 index 00000000..25ac7f30 --- /dev/null +++ b/kommander/editor/assoctexteditorimpl.cpp @@ -0,0 +1,506 @@ +/*************************************************************************** + assoctexteditorimpl.cpp - Associated text editor implementation + ------------------- + copyright : (C) 2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + (C) 2006 Andras Mantia <amantia@kde.org> + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +/* KDE INCLUDES */ +#include <klocale.h> +#include <kfiledialog.h> +#include <kmessagebox.h> +#include <kglobal.h> +#include <kglobalsettings.h> +#include <kiconloader.h> +#include <kpushbutton.h> +#include <ktextedit.h> +#include <kdebug.h> +#include <kpopupmenu.h> +#include <kactioncollection.h> +#include <kdebug.h> + +#include <ktexteditor/view.h> +#include <ktexteditor/editorchooser.h> +#include <ktexteditor/editinterface.h> +#include <ktexteditor/viewcursorinterface.h> +#include <ktexteditor/highlightinginterface.h> +#include <ktexteditor/popupmenuinterface.h> +#include <ktexteditor/undointerface.h> + +#include <kparts/partmanager.h> + +/* QT INCLUDES */ +#include <qstringlist.h> +#include <qmetaobject.h> +#include <qcombobox.h> +#include <qstring.h> +#include <qfile.h> +#include <qobject.h> +#include <qobjectlist.h> +#include <qtimer.h> +#include <qevent.h> +#include <qvaluelist.h> + +/* OTHER INCLUDES */ +#include <cstdio> +#include "assoctexteditorimpl.h" +#include "kommanderwidget.h" +#include "formwindow.h" +#include "propertyeditor.h" +#include "command.h" +#include "metadatabase.h" +#include "choosewidgetimpl.h" +#include "functionsimpl.h" + +QValueList<QWidget *> openedWidgets; + +AssocTextEditor::AssocTextEditor(QWidget *a_widget, FormWindow* a_form, + PropertyEditor* a_property, KParts::PartManager *partManager, QWidget *a_parent, const char *a_name, bool a_modal) + : AssocTextEditorBase(a_parent, a_name, a_modal) +{ + // text editor +/* associatedTextEdit->setFont(KGlobalSettings::fixedFont()); + associatedTextEdit->setTabStopWidth(associatedTextEdit->fontMetrics().maxWidth() * 3); + associatedTextEdit->setTextFormat(Qt::PlainText);*/ + + // icon for non-empty scripts + scriptPixmap = KGlobal::iconLoader()->loadIcon("source", KIcon::Small); + + // signals and slots connections + m_formWindow = a_form; + m_propertyEditor = a_property; + m_widget = a_widget; + + // list of widgets that can be edited + buildWidgetList(); + for (int i=0; i<widgetsComboBox->count(); i++) + if (widgetFromString(widgetsComboBox->text(i)) == m_widget) + { + widgetsComboBox->setCurrentItem(i); + break; + } + + doc = KTextEditor::createDocument ("libkatepart", a_parent, "KTextEditor::Document"); + QGridLayout *layout = new QGridLayout(editorFrame, 1, 1); + view = doc->createView(editorFrame); + layout->addWidget(view, 1,1); + partManager->addPart(doc, true); + + //trick to import all the KatePart actions into the dialog + KPopupMenu *invisiblePopup = new KPopupMenu(this); + KActionCollection *ac = view->actionCollection(); + uint count = ac->count(); + for (uint i = 0; i < count; i++) + { + ac->action(i)->plug(invisiblePopup); + } + + //add those KatePart actions to a popup menu that are important + KPopupMenu *popup = new KPopupMenu(this); + KAction *a = view->actionCollection()->action("edit_undo"); + if (a) + a->plug(popup); + a = view->actionCollection()->action("edit_redo"); + if (a) + a->plug(popup); + popup->insertSeparator(); + a = view->actionCollection()->action("edit_find"); + if (a) + a->plug(popup); + a = view->actionCollection()->action("edit_find_next"); + if (a) + a->plug(popup); + a = view->actionCollection()->action("edit_find_prev"); + if (a) + a->plug(popup); + a = view->actionCollection()->action("edit_replace"); + if (a) + a->plug(popup); + popup->insertSeparator(); + a = view->actionCollection()->action("edit_cut"); + if (a) + a->plug(popup); + a = view->actionCollection()->action("edit_copy"); + if (a) + a->plug(popup); + a = view->actionCollection()->action("edit_paste"); + if (a) + a->plug(popup); + readOnlyAction = view->actionCollection()->action("tools_toggle_write_lock"); + popup->insertSeparator(); + highlightPopup = new KPopupMenu(popup); + connect(highlightPopup, SIGNAL(activated(int)), SLOT(slotHighlightingChanged(int))); + + popup->insertItem(i18n("&Highlighting"), highlightPopup); + + KTextEditor::PopupMenuInterface *popupIf = dynamic_cast<KTextEditor::PopupMenuInterface *>(view); + popupIf->installPopup(popup); + + associatedTextEdit = dynamic_cast<KTextEditor::EditInterface*>(doc); + readOnly = true; + if (readOnlyAction) + readOnlyAction->activate(); + setWidget(a_widget); + + connect(doc, SIGNAL(textChanged()), SLOT(textEditChanged())); + connect(widgetsComboBox, SIGNAL(activated(int)), SLOT(widgetChanged(int))); + connect(stateComboBox, SIGNAL(activated(int)), SLOT(stateChanged(int))); + connect(filePushButton, SIGNAL(clicked()), SLOT(insertFile())); + connect(functionButton, SIGNAL(clicked()), SLOT(insertFunction())); + connect(widgetComboBox, SIGNAL(activated(int)), SLOT(insertWidgetName(int))); + connect(treeWidgetButton, SIGNAL(clicked()), SLOT(selectWidget())); + + view->setFocus(); +} + +AssocTextEditor::~AssocTextEditor() +{ + save(); + delete doc; + if (!readOnly) + openedWidgets.remove(m_widget); +} + +void AssocTextEditor::setWidget(QWidget *a_widget) +{ + KommanderWidget *a_atw = dynamic_cast<KommanderWidget *>(a_widget); + if (!a_widget || !a_atw) + return; + + + if (!readOnly) + openedWidgets.remove(m_widget); + if (readOnly) + { + if (readOnlyAction) + readOnlyAction->activate(); + readOnly = false; + setCaption(i18n("Edit text")); + } + + m_widget = a_widget; + m_states = a_atw->states(); + m_populationText = a_atw->populationText(); + + // list of states of current widget (plus population text) + stateComboBox->clear(); + stateComboBox->insertStringList(a_atw->displayStates()); + stateComboBox->insertItem("population"); + + // set states and population scripts + QStringList at = a_atw->associatedText(); + m_atdict.clear(); + QStringList::iterator at_it = at.begin(); + for(QStringList::ConstIterator s_it = m_states.begin(); s_it != m_states.end(); ++s_it) + { + if(at_it != at.end()) + { + m_atdict[(*s_it)] = (*at_it); + ++at_it; + } + else + m_atdict[(*s_it)] = QString::null; + } + m_populationText = a_atw->populationText(); + + // show pixmaps for nonempty scripts + int m_initialization = -1; + int p_population = stateComboBox->count()-1; + int active = -1; + for (int i = 0; i < p_population; i++) + { + if (!m_atdict[stateComboBox->text(i)].isEmpty()) + { + stateComboBox->changeItem(scriptPixmap, stateComboBox->text(i), i); + if (active == -1) active = i; + } + if (stateComboBox->text(i) == "initialization") + m_initialization = i; + } + if (!m_populationText.isEmpty()) + { + stateComboBox->changeItem(scriptPixmap, stateComboBox->text(p_population), p_population); + if (active == -1) active = p_population; + } + if (active == -1 && m_initialization != -1) + { + active = m_initialization; + } + if (active == -1) active = 0; + + // initial text for initial state + stateComboBox->setCurrentItem(active); + m_currentState = stateComboBox->currentText(); + stateChanged(active); + + KTextEditor::UndoInterface *undoIf = dynamic_cast<KTextEditor::UndoInterface*>(doc); + undoIf->clearUndo(); + + + if (openedWidgets.contains(m_widget)) + { + if (readOnlyAction && !readOnly) + readOnlyAction->activate(); + setCaption(i18n("Edit text - read only mode")); + readOnly = true; + } + else + { + openedWidgets.append(m_widget); + } + +} + +void AssocTextEditor::save() const +{ + KommanderWidget *atw = dynamic_cast<KommanderWidget *>(m_widget); + if (!atw) + return; + + if (atw->associatedText() != associatedText()) + { + QString text = i18n("Set the \'text association\' of \'%1\'").arg(m_widget->name()); + SetPropertyCommand *cmd = new SetPropertyCommand(text, m_formWindow, + m_widget, m_propertyEditor, "associations", atw->associatedText(), + associatedText(), QString::null, QString::null, false); + cmd->execute(); + m_formWindow->commandHistory()->addCommand(cmd); + MetaDataBase::setPropertyChanged(m_widget, "associations", true); + } + if (atw->populationText() != populationText()) + { + QString text = i18n("Set the \'population text\' of \'%1\'").arg(m_widget->name()); + SetPropertyCommand *cmd = new SetPropertyCommand(text, m_formWindow, m_widget, + m_propertyEditor, "populationText", atw->populationText(), + populationText(), QString::null, QString::null, false); + cmd->execute(); + m_formWindow->commandHistory()->addCommand(cmd); + MetaDataBase::setPropertyChanged(m_widget, "populationText", true); + } +} + + +QStringList AssocTextEditor::associatedText() const +{ + QStringList at; + for(QStringList::ConstIterator it = m_states.begin(); it != m_states.end(); ++it) + at.append(m_atdict[(*it)]); + return at; +} + +QString AssocTextEditor::populationText() const +{ + return m_populationText; +} + +QStringList AssocTextEditor::buildWidgetList() +{ + QStringList widgetList; + QObject* thisObject = m_formWindow->mainContainer(); + QObjectList *objectList = thisObject->queryList(); + objectList->prepend(thisObject); + + for (QObjectListIt it(*objectList); it.current(); ++it) + { + // There is a warning message with the property() function if it does not exist. + // Verify the property exists with the meta information first */ + bool pExists = false; + QMetaObject *metaObj = it.current()->metaObject(); + if(metaObj) + { + int id = metaObj->findProperty("KommanderWidget", true); + const QMetaProperty *metaProp = metaObj->property(id, true); + if(metaProp && metaProp->isValid()) + pExists = true; + } + if(pExists) + { + QVariant flag = (it.current())->property("KommanderWidget"); + if(flag.isValid() && !(QString(it.current()->name()).startsWith("qt_"))) + { + widgetList.append( widgetToString( (QWidget*)it.current()) ); + m_widgetList.insert(it.current()->name(), (QWidget*)it.current()); + } + } + } + delete objectList; + + widgetList.sort(); + widgetComboBox->clear(); + widgetComboBox->insertStringList(widgetList); + widgetsComboBox->clear(); + widgetsComboBox->insertStringList(widgetList); + return widgetList; +} + +void AssocTextEditor::stateChanged(int a_index) +{ + m_currentState = stateComboBox->text(a_index); + if (a_index == stateComboBox->count() - 1) + associatedTextEdit->setText(m_populationText); + else + associatedTextEdit->setText(m_atdict[m_currentState]); + KTextEditor::ViewCursorInterface *viewCursorIf = dynamic_cast<KTextEditor::ViewCursorInterface*>(view); + viewCursorIf->setCursorPositionReal(0, 0); + highlightPopup->clear(); + QString hlType = "Kommander (old parser)"; + if (useInternalParser()) + hlType = "Kommander (new parser)"; + KTextEditor::HighlightingInterface *hlIf = dynamic_cast<KTextEditor::HighlightingInterface*>(doc); + if (hlIf) + { + uint hlCount = hlIf->hlModeCount(); + for (uint i = 0; i < hlCount; i++) + { + if (hlIf->hlModeSectionName(i) == "Scripts") + highlightPopup->insertItem(hlIf->hlModeName(i), i); + if (hlIf->hlModeName(i).contains(hlType, false) > 0) + { + hlIf->setHlMode(i); + highlightPopup->setItemChecked(i, true); + oldHlMode = i; + } + } + } + +} + +void AssocTextEditor::textEditChanged() +{ + if (m_currentState == "population") + m_populationText = associatedTextEdit->text(); + m_atdict[m_currentState] = associatedTextEdit->text(); + int index = stateComboBox->currentItem(); + if (associatedTextEdit->text().isEmpty()) + stateComboBox->changeItem(QPixmap(), stateComboBox->currentText(), index); + else if (!stateComboBox->pixmap(index) || stateComboBox->pixmap(index)->isNull()) + stateComboBox->changeItem(scriptPixmap, stateComboBox->currentText(), index); +} + +void AssocTextEditor::widgetChanged(int index) +{ + save(); + setWidget( widgetFromString( widgetsComboBox->text(index)) ) ; +} + +void AssocTextEditor::selectWidget() +{ + ChooseWidget cDialog(this); + cDialog.setWidget(m_formWindow->mainContainer()); + if (cDialog.exec()) { + QString newWidget = cDialog.selection(); + for (int i = 0; i<widgetsComboBox->count(); i++) + if (widgetsComboBox->text(i) == newWidget) { + widgetsComboBox->setCurrentItem(i); + widgetChanged(i); + break; + } + } +} + + + +void AssocTextEditor::insertAssociatedText(const QString& a_text) +{ + uint line, col; + KTextEditor::ViewCursorInterface *viewCursorIf = dynamic_cast<KTextEditor::ViewCursorInterface*>(view); + viewCursorIf->cursorPositionReal(&line, &col); + associatedTextEdit->insertText(line, col, a_text); +} + +void AssocTextEditor::insertFile() +{ + QString fileName = KFileDialog::getOpenFileName(); + + if(fileName.isEmpty()) + return; + + QFile insertFile(fileName); + if(!insertFile.open(IO_ReadOnly)) + { + KMessageBox::error( this, i18n("<qt>Cannot open file<br><b>%1</b></qt").arg( fileName ) ); + return; + } + QTextStream insertStream(&insertFile); + QString insertText = insertStream.read(); + insertAssociatedText(insertText); + insertFile.close(); +} + +void AssocTextEditor::insertWidgetName(int index) +{ + QString prefix; + if (!useInternalParser()) + prefix = QString(QChar(ESCCHAR)); + insertAssociatedText(prefix + widgetToString(widgetFromString(widgetComboBox->text(index)), false)); +} + +void AssocTextEditor::insertFunction() +{ + FunctionsDialog pDialog(this, m_widgetList, useInternalParser(), 0); + if (pDialog.exec()) + insertAssociatedText(pDialog.functionText()); +} + +QString AssocTextEditor::widgetToString(QWidget* widget, bool formatted) +{ + if (!widget) + return QString::null; + else if (formatted) + return QString("%1 (%2)").arg(widget->name()).arg(widget->className()); + else + return widget->name(); +} + +QWidget* AssocTextEditor::widgetFromString(const QString& name) +{ + QString realname = name; + int i = realname.find(' '); + if (i != -1) + realname.truncate(i); + return m_widgetList[realname]; +} + +void AssocTextEditor::slotHighlightingChanged(int mode) +{ + highlightPopup->setItemChecked(oldHlMode, false); + KTextEditor::HighlightingInterface *hlIf = dynamic_cast<KTextEditor::HighlightingInterface*>(doc); + if (hlIf) + hlIf->setHlMode(mode); + highlightPopup->setItemChecked(mode, true); + oldHlMode = mode; +} + +bool AssocTextEditor::useInternalParser() +{ + QString s = ""; + int line = -1; + while (s.isEmpty() && line < (int)associatedTextEdit->numLines()) + { + line++; + s = associatedTextEdit->textLine(line); + } + s = s.stripWhiteSpace(); + if (s.startsWith("#!") && s != "#!kommander") + return false; //code is written in external script, old parser is used + if (KommanderWidget::useInternalParser || s == "#!kommander") + return true; + return false; +} + +void AssocTextEditor::closeEvent ( QCloseEvent * e ) +{ + deleteLater(); + e->accept(); +} + +#include "assoctexteditorimpl.moc" diff --git a/kommander/editor/assoctexteditorimpl.h b/kommander/editor/assoctexteditorimpl.h new file mode 100644 index 00000000..65879cef --- /dev/null +++ b/kommander/editor/assoctexteditorimpl.h @@ -0,0 +1,133 @@ +/*************************************************************************** + assoctexteditorimpl.h - Associated text editor implementation + ------------------- + copyright : (C) 2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + (C) 2006 Andras Mantia <amantia@kde.org> + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef _HAVE_ASSOCTEXTEDITORIMPL_H_ +#define _HAVE_ASSOCTEXTEDITORIMPL_H_ + +#include <qdict.h> +#include <qstringlist.h> +#include <qstring.h> +#include <qwidget.h> +#include <qobject.h> +#include <qmap.h> +#include <qptrvector.h> +#include <qpixmap.h> + + +#include "assoctexteditor.h" +#include <kommanderwidget.h> + +class FormWindow; +class PropertyEditor; + +namespace KTextEditor { + class EditInterface; + class Document; + class View; +} + +namespace KParts{ + class PartManager; +} + +class KAction; +class KPopupMenu; + +class AssocTextEditor : public AssocTextEditorBase +{ + Q_OBJECT +public: + AssocTextEditor(QWidget*, FormWindow*, PropertyEditor*, KParts::PartManager *partManager, QWidget*, const char* = 0, bool = true); + ~AssocTextEditor(); + // Set interface for given widget. + void setWidget(QWidget *); + // Save changes for current widget + void save() const; + // Return population text for current widget + QString populationText() const; + // Return associated text for current widget + QStringList associatedText() const; + +public slots: + // Current script text has changed - save it in m_atdict + void textEditChanged(); + // Current widget has changed - store script and update interface + void widgetChanged(int); + // Current script has changed - store script and show new script + void stateChanged(int); + // Select widget via widget tree dialog + void selectWidget(); + + // Functions for script editing: + + // Insert given text at cursor position for current widget and state + void insertAssociatedText(const QString&); + // Select file and insert its content at cursor position + void insertFile(); + // Open function browser and insert chosen function at cursor position + void insertFunction(); + // Insert selected function at cursor position + void insertWidgetName(int); + +protected: + virtual void closeEvent(QCloseEvent * e); + +protected slots: + + void slotHighlightingChanged(int mode); + +private: + bool useInternalParser(); + + // Current widget + QWidget *m_widget; + KommanderWidget* m_kommanderWidget; +//FIXME: could it be done more cleanly? + // Current form and property editor + FormWindow* m_formWindow; + PropertyEditor* m_propertyEditor; + // Current state + QString m_currentState; + // List of states for current widget + QStringList m_states; + // Current widget list + QDict<QWidget> m_widgetList; + // Dictionary for current widget; contains pairs (state, script associated with current state) + QMap<QString, QString> m_atdict; + // Current population text + QString m_populationText; + // Non-enmpty script pixmap + QPixmap scriptPixmap; + + // Create list of all widgets on the same dialog as current widget + // Set store to true, to update m_widgetList; + QStringList buildWidgetList(); + // Convert widget to string displayed in combos + // If formatted, return formatted string, else just widget's name + QString widgetToString(QWidget* widget, bool formatted = true); + // Conver combo string to widget + QWidget* widgetFromString(const QString& name); + + KTextEditor::EditInterface *associatedTextEdit; + KTextEditor::Document *doc; + KTextEditor::View *view; + KPopupMenu *highlightPopup; + int oldHlMode; + bool readOnly; + KAction *readOnlyAction; +}; + +#endif diff --git a/kommander/editor/choosewidget.ui b/kommander/editor/choosewidget.ui new file mode 100644 index 00000000..809f38ea --- /dev/null +++ b/kommander/editor/choosewidget.ui @@ -0,0 +1,150 @@ +<!DOCTYPE UI><UI version="3.2" stdsetdef="1"> +<class>ChooseWidgetBase</class> +<widget class="QDialog"> + <property name="name"> + <cstring>ChooseWidgetBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>431</width> + <height>390</height> + </rect> + </property> + <property name="caption"> + <string>Choose Widget</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="2" column="0"> + <property name="name"> + <cstring>layout2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2_2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </hbox> + </widget> + <widget class="KListView" row="0" column="0"> + <property name="name"> + <cstring>widgetView</cstring> + </property> + </widget> + <widget class="QLayoutWidget" row="1" column="0"> + <property name="name"> + <cstring>layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>Find:</string> + </property> + </widget> + <widget class="QLineEdit"> + <property name="name"> + <cstring>nameEdit</cstring> + </property> + </widget> + </hbox> + </widget> + </grid> +</widget> +<customwidgets> +</customwidgets> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>ChooseWidgetBase</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>ChooseWidgetBase</receiver> + <slot>reject()</slot> + </connection> +</connections> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>klistview.h</includehint> +</includehints> +</UI> diff --git a/kommander/editor/choosewidgetimpl.cpp b/kommander/editor/choosewidgetimpl.cpp new file mode 100644 index 00000000..53580a6e --- /dev/null +++ b/kommander/editor/choosewidgetimpl.cpp @@ -0,0 +1,128 @@ + /*************************************************************************** + choosewidgetimpl.cpp - dialog to choose widget + ------------------- + begin : Thu 13 Apr 2004 + copyright : (C) 2000 Michal Rudolf <mrudolf@kdewebdev.org> + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + + /** KDE INCLUDES */ +#include <klistview.h> +#include <klocale.h> + +/** QT INCLUDES */ +#include <qptrstack.h> +#include <qobject.h> +#include <qobjectlist.h> +#include <qlineedit.h> +#include "qmetaobject.h" + +/** OTHER INCLUDES */ +#include "choosewidgetimpl.h" +#include "choosewidgetimpl.moc" + +ChooseWidget::ChooseWidget(QWidget* a_parent, const char* a_name, bool a_modal) + : ChooseWidgetBase(a_parent, a_name, a_modal) +{ + connect( nameEdit, SIGNAL(textChanged(const QString&)), SLOT(textChanged(const QString&)) ); + connect( widgetView, SIGNAL(executed(QListViewItem*)), SLOT(selectedItem(QListViewItem*))); + widgetView->setFullWidth(true); + widgetView->addColumn(i18n("Widgets")); + widgetView->setRootIsDecorated(true); + nameEdit->setFocus(); +} + +ChooseWidget::~ChooseWidget() +{ + +} + +void ChooseWidget::setWidget(QWidget* w) +{ + widgetView->clear(); + if (!w) + return; + + QListViewItem* item; + QPtrStack<QWidget> p_widgets; + QPtrStack<QListViewItem> p_items; + + item = new QListViewItem(widgetView, QString("%1 (%2)").arg(w->name()).arg(w->className())); + item->setOpen(true); + + p_widgets.push(w); + p_items.push(item); + + while (!p_widgets.isEmpty()) { + w = p_widgets.pop(); + item = p_items.pop(); + QObjectList *objectList = w->queryList(0, 0, true, false); + for (QObjectListIt it(*objectList); it.current(); ++it) { + QListViewItem* newItem = item; + if (isKommanderWidget(*it)) + newItem = new QListViewItem(item, QString("%1 (%2)").arg((*it)->name()).arg((*it)->className())); + if ((*it)->children()) { + p_widgets.push((QWidget*)(*it)); + p_items.push(newItem); + } + } + delete objectList; + } + if (widgetView->childCount()) { + widgetView->setCurrentItem(widgetView->firstChild()); + widgetView->firstChild()->setSelected(true); + } +} + + +QString ChooseWidget::selection() +{ + if (widgetView->currentItem()) + return widgetView->currentItem()->text(0); + else + return QString::null; +} + +void ChooseWidget::textChanged(const QString& text) +{ + QListViewItem* item = widgetView->findItem(text, 0, Qt::BeginsWith); + if (item) { + widgetView->setCurrentItem(item); + widgetView->ensureItemVisible(item); + } +} + +bool ChooseWidget::isKommanderWidget(QObject* w) +{ + bool pExists = false; + QMetaObject *metaObj = w->metaObject(); + if (metaObj) + { + int id = metaObj->findProperty("KommanderWidget", true); + const QMetaProperty *metaProp = metaObj->property(id, true); + if (metaProp && metaProp->isValid()) + pExists = true; + } + if (pExists) + { + QVariant flag = (w)->property("KommanderWidget"); + if(flag.isValid() && !(QString(w->name()).startsWith("qt_"))) + return true; + } + return false; +} + +void ChooseWidget::selectedItem(QListViewItem* item) +{ + if (item) + accept(); +} + diff --git a/kommander/editor/choosewidgetimpl.h b/kommander/editor/choosewidgetimpl.h new file mode 100644 index 00000000..877bcd07 --- /dev/null +++ b/kommander/editor/choosewidgetimpl.h @@ -0,0 +1,45 @@ +/*************************************************************************** + choosewidgetimpl.h - dialog to choose widget + ------------------- + begin : Thu 13 Apr 2004 + copyright : (C) 2000 Michal Rudolf <mrudolf@kdewebdev.org> + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef _HAVE_CHOOSEWIDGETIMPL_H_ +#define _HAVE_CHOOSEWIDGETIMPL_H_ + +#include "choosewidget.h" + +class ChooseWidget : public ChooseWidgetBase +{ + Q_OBJECT +public: + ChooseWidget(QWidget*, const char* = 0, bool=true); + ~ChooseWidget(); + // Put current widget and all of its children in a tree + void setWidget(QWidget *); + // Return current widget + QString selection(); + +public slots: + // Filter text changed - find matching widget + void textChanged(const QString&); + // Double clicked on listviwew + void selectedItem(QListViewItem *); +private: + // Check if given widget is a Kommander widget + bool isKommanderWidget(QObject* w); + +}; + +#endif + diff --git a/kommander/editor/command.cpp b/kommander/editor/command.cpp new file mode 100644 index 00000000..b6bbe82c --- /dev/null +++ b/kommander/editor/command.cpp @@ -0,0 +1,1838 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#include <scriptobject.h> +#include "command.h" +#include "formwindow.h" +#include "widgetfactory.h" +#include "propertyeditor.h" +#include "metadatabase.h" +#include "widgetdatabase.h" +#include "mainwindow.h" +#include "hierarchyview.h" +#include "workspace.h" +#include "actioneditorimpl.h" +#include "actiondnd.h" +#include "formfile.h" + +#include <qmap.h> +#include <qfeatures.h> +#include <qwidget.h> +#include <qmetaobject.h> +#include <qapplication.h> +#include <qlayout.h> +#include <qmessagebox.h> +#include <qlistbox.h> +#include <qiconview.h> +#include <qmultilineedit.h> +#include <qptrstack.h> +#include <qheader.h> +#ifndef QT_NO_TABLE +#include <qtable.h> +#endif +#include <qaction.h> + +#include <klocale.h> + + +CommandHistory::CommandHistory( int s ) + : current( -1 ), steps( s ), savedAt( -1 ) +{ + history.setAutoDelete( true ); + modified = false; + compressedCommand = 0; +} + +void CommandHistory::addCommand( Command *cmd, bool tryCompress ) +{ + if ( tryCompress ) { + if ( !compressedCommand || + compressedCommand->type() != cmd->type() || + !compressedCommand->canMerge( cmd ) ) { + checkCompressedCommand(); + compressedCommand = 0; + } + + if ( compressedCommand ) { + compressedCommand->merge( cmd ); + modified = true; + modificationChanged( modified ); + return; + } + compressedCommand = cmd; + } else { + checkCompressedCommand(); + } + + if ( current < (int)history.count() - 1 ) { + if ( current < savedAt ) + savedAt = -2; + + QPtrList<Command> commands; + commands.setAutoDelete( false ); + + for( int i = 0; i <= current; ++i ) { + commands.insert( i, history.at( 0 ) ); + history.take( 0 ); + } + + commands.append( cmd ); + history.clear(); + history = commands; + history.setAutoDelete( true ); + } else { + history.append( cmd ); + } + + if ( (int)history.count() > steps ) { + savedAt--; + history.removeFirst(); + } else { + ++current; + } + + emitUndoRedo(); + modified = true; + modificationChanged( modified ); +} + +void CommandHistory::undo() +{ + checkCompressedCommand(); + compressedCommand = 0; + if ( current > -1 ) { + history.at( current )->unexecute(); + --current; + } + emitUndoRedo(); + modified = savedAt != current; + modificationChanged( modified ); +} + +void CommandHistory::redo() +{ + checkCompressedCommand(); + compressedCommand = 0; + if ( current > -1 ) { + if ( current < (int)history.count() - 1 ) { + ++current; + history.at( current )->execute(); + } + } else { + if ( history.count() > 0 ) { + ++current; + history.at( current )->execute(); + } + } + emitUndoRedo(); + modified = savedAt != current; + modificationChanged( modified ); +} + +void CommandHistory::emitUndoRedo() +{ + Command *undoCmd = 0; + Command *redoCmd = 0; + + if ( current >= 0 && current < (int)history.count() ) + undoCmd = history.at( current ); + if ( current + 1 >= 0 && current + 1 < (int)history.count() ) + redoCmd = history.at( current + 1 ); + + bool ua = (undoCmd != 0); + QString uc; + if ( ua ) + uc = undoCmd->name(); + bool ra = (redoCmd != 0); + QString rc; + if ( ra ) + rc = redoCmd->name(); + emit undoRedoChanged( ua, ra, uc, rc ); +} + +void CommandHistory::setModified( bool m ) +{ + modified = m; + if ( !modified ) + savedAt = current; + modificationChanged( modified ); +} + +bool CommandHistory::isModified() const +{ + return modified; +} + +void CommandHistory::checkCompressedCommand() +{ + if ( compressedCommand && compressedCommand->type() == Command::SetProperty ) { + Command *c = compressedCommand; + compressedCommand = 0; + if ( !( (SetPropertyCommand*)c )->checkProperty() ) { + history.remove( current ); + --current; + emitUndoRedo(); + } + } +} + +// ------------------------------------------------------------ + +Command::Command( const QString &n, FormWindow *fw ) + : cmdName( n ), formWin( fw ) +{ +} + +Command::~Command() +{ +} + +QString Command::name() const +{ + return cmdName; +} + +FormWindow *Command::formWindow() const +{ + return formWin; +} + +void Command::merge( Command * ) +{ +} + +bool Command::canMerge( Command * ) +{ + return false; +} + + +// ------------------------------------------------------------ + +ResizeCommand::ResizeCommand( const QString &n, FormWindow *fw, + QWidget *w, const QRect &oldr, const QRect &nr ) + : Command( n, fw ), widget( w ), oldRect( oldr ), newRect( nr ) +{ +} + +void ResizeCommand::execute() +{ + widget->setGeometry( newRect ); + formWindow()->updateSelection( widget ); + formWindow()->emitUpdateProperties( widget ); + if ( WidgetFactory::layoutType( widget ) != WidgetFactory::NoLayout ) + formWindow()->updateChildSelections( widget ); +} + +void ResizeCommand::unexecute() +{ + widget->setGeometry( oldRect ); + formWindow()->updateSelection( widget ); + formWindow()->emitUpdateProperties( widget ); + if ( WidgetFactory::layoutType( widget ) != WidgetFactory::NoLayout ) + formWindow()->updateChildSelections( widget ); +} + +// ------------------------------------------------------------ + +InsertCommand::InsertCommand( const QString &n, FormWindow *fw, + QWidget *w, const QRect &g ) + : Command( n, fw ), widget( w ), geometry( g ) +{ +} + +void InsertCommand::execute() +{ + if ( geometry.size() == QSize( 0, 0 ) ) { + widget->move( geometry.topLeft() ); + widget->adjustSize(); + } else { + QSize s = geometry.size().expandedTo( widget->minimumSize() ); + s = s.expandedTo( widget->minimumSizeHint() ); + QRect r( geometry.topLeft(), s ); + widget->setGeometry( r ); + } + widget->show(); + formWindow()->widgets()->insert( widget, widget ); + formWindow()->clearSelection( false ); + formWindow()->selectWidget( widget ); + formWindow()->mainWindow()->objectHierarchy()->widgetInserted( widget ); +} + +void InsertCommand::unexecute() +{ + widget->hide(); + formWindow()->selectWidget( widget, false ); + formWindow()->widgets()->remove( widget ); + formWindow()->mainWindow()->objectHierarchy()->widgetRemoved( widget ); + } + +// ------------------------------------------------------------ + +MoveCommand::MoveCommand( const QString &n, FormWindow *fw, + const QWidgetList &w, + const QValueList<QPoint> op, + const QValueList<QPoint> np, + QWidget *opr, QWidget *npr ) + : Command( n, fw ), widgets( w ), oldPos( op ), newPos( np ), + oldParent( opr ), newParent( npr ) +{ + widgets.setAutoDelete( false ); +} + +void MoveCommand::merge( Command *c ) +{ + MoveCommand *cmd = (MoveCommand*)c; + newPos = cmd->newPos; +} + +bool MoveCommand::canMerge( Command *c ) +{ + MoveCommand *cmd = (MoveCommand*)c; + return widgets == cmd->widgets; +} + + +void MoveCommand::execute() +{ + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + if ( !w->parentWidget() || WidgetFactory::layoutType( w->parentWidget() ) == WidgetFactory::NoLayout ) { + if ( newParent && oldParent && newParent != oldParent ) { + QPoint pos = newParent->mapFromGlobal( w->mapToGlobal( QPoint( 0,0 ) ) ); + w->reparent( newParent, pos, true ); + formWindow()->raiseSelection( w ); + formWindow()->raiseChildSelections( w ); + formWindow()->widgetChanged( w ); + formWindow()->mainWindow()->objectHierarchy()->widgetRemoved( w ); + formWindow()->mainWindow()->objectHierarchy()->widgetInserted( w ); + } + w->move( newPos[ widgets.at() ] ); + } + formWindow()->updateSelection( w ); + formWindow()->updateChildSelections( w ); + formWindow()->emitUpdateProperties( w ); + } +} + +void MoveCommand::unexecute() +{ + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + if ( !w->parentWidget() || WidgetFactory::layoutType( w->parentWidget() ) == WidgetFactory::NoLayout ) { + if ( newParent && oldParent && newParent != oldParent ) { + QPoint pos = oldParent->mapFromGlobal( w->mapToGlobal( QPoint( 0,0 ) ) ); + w->reparent( oldParent, pos, true ); + formWindow()->raiseSelection( w ); + formWindow()->raiseChildSelections( w ); + formWindow()->widgetChanged( w ); + formWindow()->mainWindow()->objectHierarchy()->widgetRemoved( w ); + formWindow()->mainWindow()->objectHierarchy()->widgetInserted( w ); + } + w->move( oldPos[ widgets.at() ] ); + } + formWindow()->updateSelection( w ); + formWindow()->updateChildSelections( w ); + formWindow()->emitUpdateProperties( w ); + } +} + +// ------------------------------------------------------------ + +DeleteCommand::DeleteCommand( const QString &n, FormWindow *fw, + const QWidgetList &w ) + : Command( n, fw ), widgets( w ) +{ + widgets.setAutoDelete( false ); +} + +void DeleteCommand::execute() +{ + formWindow()->setPropertyShowingBlocked( true ); + connections.clear(); + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + w->hide(); + QString s = w->name(); + s.prepend( "qt_dead_widget_" ); + w->setName( s ); + formWindow()->selectWidget( w, false ); + formWindow()->widgets()->remove( w ); + QValueList<MetaDataBase::Connection> conns = MetaDataBase::connections( formWindow(), w ); + connections.insert( w, conns ); + QValueList<MetaDataBase::Connection>::Iterator it = conns.begin(); + for ( ; it != conns.end(); ++it ) { + MetaDataBase::removeConnection( formWindow(), (*it).sender, + (*it).signal, (*it).receiver, (*it).slot ); + } + } + formWindow()->setPropertyShowingBlocked( false ); + formWindow()->emitShowProperties(); + formWindow()->mainWindow()->objectHierarchy()->widgetsRemoved( widgets ); + +} + +void DeleteCommand::unexecute() +{ + formWindow()->setPropertyShowingBlocked( true ); + formWindow()->clearSelection( false ); + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + w->show(); + QString s = w->name(); + s.remove( 0, QString( "qt_dead_widget_" ).length() ); + w->setName( s ); + formWindow()->widgets()->insert( w, w ); + formWindow()->selectWidget( w ); + QValueList<MetaDataBase::Connection> conns = *connections.find( w ); + QValueList<MetaDataBase::Connection>::Iterator it = conns.begin(); + for ( ; it != conns.end(); ++it ) { + MetaDataBase::addConnection( formWindow(), (*it).sender, + (*it).signal, (*it).receiver, (*it).slot ); + } + } + formWindow()->setPropertyShowingBlocked( false ); + formWindow()->emitShowProperties(); + formWindow()->mainWindow()->objectHierarchy()->widgetsInserted( widgets ); +} + +// ------------------------------------------------------------ + +SetPropertyCommand::SetPropertyCommand( const QString &n, FormWindow *fw, + QObject *w, PropertyEditor *e, + const QString &pn, const QVariant &ov, + const QVariant &nv, const QString &ncut, + const QString &ocut, bool reset ) + : Command( n, fw ), widget( w ), editor( e ), propName( pn ), + oldValue( ov ), newValue( nv ), oldCurrentItemText( ocut ), newCurrentItemText( ncut ), + wasChanged( true ), isResetCommand( reset ) +{ + wasChanged = MetaDataBase::isPropertyChanged( w, propName ); +} + + +void SetPropertyCommand::execute() +{ + if ( !wasChanged ) + MetaDataBase::setPropertyChanged( widget, propName, true ); + if ( isResetCommand ) { + MetaDataBase::setPropertyChanged( widget, propName, false ); + if ( WidgetFactory::resetProperty( widget, propName ) ) { + if ( !formWindow()->isWidgetSelected( widget ) && widget != formWindow() ) + formWindow()->selectWidget( widget ); + if ( editor->widget() != widget ) + editor->setWidget( widget, formWindow() ); + editor->propertyList()->setCurrentProperty( propName ); + PropertyItem *i = (PropertyItem*)editor->propertyList()->currentItem(); + if ( !i ) + return; + i->setValue( widget->property( propName ) ); + i->setChanged( false ); + editor->refetchData(); + editor->emitWidgetChanged(); + return; + } + } + setProperty( newValue, newCurrentItemText ); +} + +void SetPropertyCommand::unexecute() +{ + if ( !wasChanged ) + MetaDataBase::setPropertyChanged( widget, propName, false ); + if ( isResetCommand ) + MetaDataBase::setPropertyChanged( widget, propName, true ); + setProperty( oldValue, oldCurrentItemText ); +} + +bool SetPropertyCommand::canMerge( Command *c ) +{ + SetPropertyCommand *cmd = (SetPropertyCommand*)c; + const QMetaProperty *p = + widget->metaObject()->property( widget->metaObject()->findProperty( propName, true ), true ); + if ( !p ) { + if ( propName == "toolTip" || propName == "whatsThis" ) + return true; + if ( widget->inherits( "CustomWidget" ) ) { + MetaDataBase::CustomWidget *cw = ( (CustomWidget*)widget )->customWidget(); + if ( !cw ) + return false; + for ( QValueList<MetaDataBase::Property>::Iterator it = cw->lstProperties.begin(); it != cw->lstProperties.end(); ++it ) { + if ( QString( (*it ).property ) == propName ) { + if ( (*it).type == "String" || (*it).type == "CString" || (*it).type == "Int" || (*it).type == "UInt" ) + return true; + } + } + } + return false; + } + QVariant::Type t = QVariant::nameToType( p->type() ); + return ( cmd->propName == propName && + t == QVariant::String || t == QVariant::CString || t == QVariant::Int || t == QVariant::UInt ); +} + +void SetPropertyCommand::merge( Command *c ) +{ + SetPropertyCommand *cmd = (SetPropertyCommand*)c; + newValue = cmd->newValue; + newCurrentItemText = cmd->newCurrentItemText; +} + +bool SetPropertyCommand::checkProperty() +{ + if ( propName == "name" /*|| propName == "itemName"*/ ) { // ### fix that + QString s = newValue.toString(); + if ( !formWindow()->unify( widget, s, false ) ) { + QMessageBox::information( formWindow()->mainWindow(), + i18n("Set 'name' Property" ), + i18n("The name of a widget must be unique.\n" + "'%1' is already used in form '%2',\n" + "so the name has been reverted to '%3'." ). + arg( newValue.toString() ). + arg( formWindow()->name() ). + arg( oldValue.toString() )); + setProperty( oldValue, oldCurrentItemText, false ); + return false; + } + if ( s.isEmpty() ) { + QMessageBox::information( formWindow()->mainWindow(), + i18n("Set 'name' Property" ), + i18n("The name of a widget must not be null.\n" + "The name has been reverted to '%1'." ). + arg( oldValue.toString() )); + setProperty( oldValue, oldCurrentItemText, false ); + return false; + } + + if ( widget->parent() && widget->parent()->inherits( "FormWindow" ) ) + formWindow()->mainWindow()->formNameChanged( (FormWindow*)( (QWidget*)widget )->parentWidget() ); + } + return true; +} + +void SetPropertyCommand::setProperty( const QVariant &v, const QString ¤tItemText, bool select ) +{ + if ( !formWindow()->isWidgetSelected( widget ) && !formWindow()->isMainContainer( widget ) && select ) + formWindow()->selectWidget( widget ); + if ( editor->widget() != widget && select ) + editor->setWidget( widget, formWindow() ); + if ( select ) + editor->propertyList()->setCurrentProperty( propName ); + + const QMetaProperty *p = + widget->metaObject()->property( widget->metaObject()->findProperty( propName, true ), true ); + if ( !p ) { + if ( propName == "hAlign" ) { + p = widget->metaObject()->property( widget->metaObject()->findProperty( "alignment", true ), true ); + int align = widget->property( "alignment" ).toInt(); + align &= ~( AlignHorizontal_Mask ); + align |= p->keyToValue( currentItemText ); + widget->setProperty( "alignment", QVariant( align ) ); + } else if ( propName == "vAlign" ) { + p = widget->metaObject()->property( widget->metaObject()->findProperty( "alignment", true ), true ); + int align = widget->property( "alignment" ).toInt(); + align &= ~( AlignVertical_Mask ); + align |= p->keyToValue( currentItemText ); + widget->setProperty( "alignment", QVariant( align ) ); + } else if ( propName == "wordwrap" ) { + int align = widget->property( "alignment" ).toInt(); + align &= ~WordBreak; + if ( v.toBool() ) + align |= WordBreak; + widget->setProperty( "alignment", QVariant( align ) ); + } else if ( propName == "layoutSpacing" ) { + MetaDataBase::setSpacing( WidgetFactory::containerOfWidget( (QWidget*)editor->widget() ), v.toInt() ); + } else if ( propName == "layoutMargin" ) { + MetaDataBase::setMargin( WidgetFactory::containerOfWidget( (QWidget*)editor->widget() ), v.toInt() ); + } else if ( propName == "toolTip" || propName == "whatsThis" || propName == "database" || propName == "frameworkCode" ) { + MetaDataBase::setFakeProperty( editor->widget(), propName, v ); + } else if ( editor->widget()->inherits( "CustomWidget" ) ) { + MetaDataBase::CustomWidget *cw = ( (CustomWidget*)widget )->customWidget(); + if ( cw ) { + MetaDataBase::setFakeProperty( editor->widget(), propName, v ); + } + } + editor->refetchData(); + editor->emitWidgetChanged(); + ( ( PropertyItem* )editor->propertyList()->currentItem() )->setChanged( MetaDataBase::isPropertyChanged( widget, propName ) ); +#ifndef QT_NO_SQL + if ( propName == "database" ) + formWindow()->mainWindow()->objectHierarchy()->databasePropertyChanged( (QWidget*)widget, MetaDataBase::fakeProperty( widget, "database" ).toStringList() ); +#endif + return; + } + + if ( p->isSetType() ) { + ; + } else if ( p->isEnumType() ) { + widget->setProperty( propName, p->keyToValue( currentItemText ) ); + } else { + QVariant ov; + if ( propName == "name" || propName == "itemName" ) + ov = widget->property( propName ); + int oldSerNum = -1; + if ( v.type() == QVariant::Pixmap ) + oldSerNum = v.toPixmap().serialNumber(); + widget->setProperty( propName, v ); + if ( oldSerNum != -1 && oldSerNum != widget->property( propName ).toPixmap().serialNumber() ) + MetaDataBase::setPixmapKey( formWindow(), + widget->property( propName ).toPixmap().serialNumber(), + MetaDataBase::pixmapKey( formWindow(), oldSerNum ) ); + if ( propName == "cursor" ) + MetaDataBase::setCursor( (QWidget*)widget, v.toCursor() ); + if ( propName == "name" && widget->isWidgetType() ) { + formWindow()->mainWindow()->objectHierarchy()->namePropertyChanged( (QWidget*)widget, ov ); + if ( formWindow()->isMainContainer( widget ) ) + formWindow()->setName( v.toCString() ); + } + if ( propName == "name" && widget->inherits( "QAction" ) && + formWindow()->mainContainer() && + formWindow()->mainContainer()->inherits( "QMainWindow" ) ) { + formWindow()->mainWindow()->actioneditor()->updateActionName( (QAction*)widget ); + } + if ( propName == "iconSet" && widget->inherits( "QAction" ) && + formWindow()->mainContainer() && + formWindow()->mainContainer()->inherits( "QMainWindow" ) ) { + formWindow()->mainWindow()->actioneditor()->updateActionIcon( (QAction*)widget ); + } + if ( propName == "caption" ) { + if ( formWindow()->isMainContainer( widget ) ) + formWindow()->setCaption( v.toString() ); + } + if ( propName == "icon" ) { + if ( formWindow()->isMainContainer( widget ) ) + formWindow()->setIcon( v.toPixmap() ); + } + } + editor->refetchData(); + if ( editor->propertyList()->currentItem() && select ) { + ( ( PropertyItem* )editor->propertyList()->currentItem() )->showEditor(); + ( ( PropertyItem* )editor->propertyList()->currentItem() )->setChanged( MetaDataBase::isPropertyChanged( widget, propName ) ); + } + editor->emitWidgetChanged(); + formWindow()->killAccels( widget ); +} + +// ------------------------------------------------------------ + +LayoutHorizontalCommand::LayoutHorizontalCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ) + : Command( n, fw ), layout( wl, parent, fw, layoutBase ) +{ +} + +void LayoutHorizontalCommand::execute() +{ + formWindow()->clearSelection( false ); + layout.doLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +void LayoutHorizontalCommand::unexecute() +{ + formWindow()->clearSelection( false ); + layout.undoLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +// ------------------------------------------------------------ + +LayoutHorizontalSplitCommand::LayoutHorizontalSplitCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ) + : Command( n, fw ), layout( wl, parent, fw, layoutBase, true, true ) +{ +} + +void LayoutHorizontalSplitCommand::execute() +{ + formWindow()->clearSelection( false ); + layout.doLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +void LayoutHorizontalSplitCommand::unexecute() +{ + formWindow()->clearSelection( false ); + layout.undoLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +// ------------------------------------------------------------ + +LayoutVerticalCommand::LayoutVerticalCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ) + : Command( n, fw ), layout( wl, parent, fw, layoutBase ) +{ +} + +void LayoutVerticalCommand::execute() +{ + formWindow()->clearSelection( false ); + layout.doLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +void LayoutVerticalCommand::unexecute() +{ + formWindow()->clearSelection( false ); + layout.undoLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +// ------------------------------------------------------------ + +LayoutVerticalSplitCommand::LayoutVerticalSplitCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ) + : Command( n, fw ), layout( wl, parent, fw, layoutBase, true, true ) +{ +} + +void LayoutVerticalSplitCommand::execute() +{ + formWindow()->clearSelection( false ); + layout.doLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +void LayoutVerticalSplitCommand::unexecute() +{ + formWindow()->clearSelection( false ); + layout.undoLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +// ------------------------------------------------------------ + +LayoutGridCommand::LayoutGridCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl, int xres, int yres ) + : Command( n, fw ), layout( wl, parent, fw, layoutBase, QSize( QMAX(5,xres), QMAX(5,yres) ) ) +{ +} + +void LayoutGridCommand::execute() +{ + formWindow()->clearSelection( false ); + layout.doLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +void LayoutGridCommand::unexecute() +{ + formWindow()->clearSelection( false ); + layout.undoLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); +} + +// ------------------------------------------------------------ + +BreakLayoutCommand::BreakLayoutCommand( const QString &n, FormWindow *fw, + QWidget *layoutBase, const QWidgetList &wl ) + : Command( n, fw ), lb( layoutBase ), widgets( wl ) +{ + WidgetFactory::LayoutType lay = WidgetFactory::layoutType( layoutBase ); + spacing = MetaDataBase::spacing( layoutBase ); + margin = MetaDataBase::margin( layoutBase ); + layout = 0; + if ( lay == WidgetFactory::HBox ) + layout = new HorizontalLayout( wl, layoutBase, fw, layoutBase, false, layoutBase->inherits( "QSplitter" ) ); + else if ( lay == WidgetFactory::VBox ) + layout = new VerticalLayout( wl, layoutBase, fw, layoutBase, false, layoutBase->inherits( "QSplitter" ) ); + else if ( lay == WidgetFactory::Grid ) + layout = new GridLayout( wl, layoutBase, fw, layoutBase, QSize( QMAX( 5, fw->grid().x()), QMAX( 5, fw->grid().y()) ), false ); +} + +void BreakLayoutCommand::execute() +{ + if ( !layout ) + return; + formWindow()->clearSelection( false ); + layout->breakLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) + w->resize( QMAX( 16, w->width() ), QMAX( 16, w->height() ) ); +} + +void BreakLayoutCommand::unexecute() +{ + if ( !layout ) + return; + formWindow()->clearSelection( false ); + layout->doLayout(); + formWindow()->mainWindow()->objectHierarchy()->rebuild(); + MetaDataBase::setSpacing( WidgetFactory::containerOfWidget( lb ), spacing ); + MetaDataBase::setMargin( WidgetFactory::containerOfWidget( lb ), margin ); +} + +// ------------------------------------------------------------ + +MacroCommand::MacroCommand( const QString &n, FormWindow *fw, + const QPtrList<Command> &cmds ) + : Command( n, fw ), commands( cmds ) +{ +} + +void MacroCommand::execute() +{ + for ( Command *c = commands.first(); c; c = commands.next() ) + c->execute(); +} + +void MacroCommand::unexecute() +{ + for ( Command *c = commands.last(); c; c = commands.prev() ) + c->unexecute(); +} + +// ------------------------------------------------------------ + +AddTabPageCommand::AddTabPageCommand( const QString &n, FormWindow *fw, + QTabWidget *tw, const QString &label ) + : Command( n, fw ), tabWidget( tw ), tabLabel( label ) +{ + tabPage = new QDesignerWidget( formWindow(), tabWidget, "tab" ); + tabPage->hide(); + index = -1; + MetaDataBase::addEntry( tabPage ); +} + +void AddTabPageCommand::execute() +{ + if ( index == -1 ) + index = ( (QDesignerTabWidget*)tabWidget )->count(); + tabWidget->insertTab( tabPage, tabLabel, index ); + tabWidget->showPage( tabPage ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( tabWidget ); +} + +void AddTabPageCommand::unexecute() +{ + tabWidget->removePage( tabPage ); + tabPage->hide(); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( tabWidget ); +} + +// ------------------------------------------------------------ +// ------------------------------------------------------------ + +AddToolBoxPageCommand::AddToolBoxPageCommand( const QString &n, FormWindow *fw, + QToolBox *tw, const QString &_label ) + : Command( n, fw ), toolBox( tw ), label( _label ) +{ + page = new QDesignerWidget( formWindow(), toolBox, "tab" ); + page->hide(); + index = -1; + MetaDataBase::addEntry( page ); +} + +void AddToolBoxPageCommand::execute() +{ + if ( index == -1 ) + index = ( (EditorToolBox*)toolBox)->count(); + toolBox->insertItem(index, page, label); + toolBox->setCurrentItem( page ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( toolBox ); +} + +void AddToolBoxPageCommand::unexecute() +{ + toolBox->removeItem( page ); + page->hide(); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( toolBox ); +} + +// ------------------------------------------------------------ + +MoveTabPageCommand::MoveTabPageCommand( const QString &n, FormWindow *fw, + QTabWidget *tw, QWidget* page, const QString& label, int nIndex, int oIndex ) + : Command( n, fw ), tabWidget( tw ), tabPage( page ), tabLabel( label ) +{ + newIndex = nIndex; + oldIndex = oIndex; +} + +void MoveTabPageCommand::execute() +{ + ((QDesignerTabWidget*)tabWidget )->removePage( tabPage ); + ((QDesignerTabWidget*)tabWidget )->insertTab( tabPage, tabLabel, newIndex ); + ((QDesignerTabWidget*)tabWidget )->showPage( tabPage ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( tabWidget ); +} + +void MoveTabPageCommand::unexecute() +{ + ((QDesignerTabWidget*)tabWidget )->removePage( tabPage ); + ((QDesignerTabWidget*)tabWidget )->insertTab( tabPage, tabLabel, oldIndex ); + ((QDesignerTabWidget*)tabWidget )->showPage( tabPage ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( tabWidget ); +} + +// ------------------------------------------------------------ + +DeleteTabPageCommand::DeleteTabPageCommand( const QString &n, FormWindow *fw, + QTabWidget *tw, QWidget *page ) + : Command( n, fw ), tabWidget( tw ), tabPage( page ) +{ + tabLabel = ( (QDesignerTabWidget*)tabWidget )->pageTitle(); + index = ( (QDesignerTabWidget*)tabWidget )->currentPage(); +} + +void DeleteTabPageCommand::execute() +{ + tabWidget->removePage( tabPage ); + tabPage->hide(); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( tabWidget ); +} + +void DeleteTabPageCommand::unexecute() +{ + tabWidget->insertTab( tabPage, tabLabel, index ); + tabWidget->showPage( tabPage ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( tabWidget ); +} + +// ------------------------------------------------------------ + +DeleteToolBoxPageCommand::DeleteToolBoxPageCommand( const QString &n, FormWindow *fw, + QToolBox *tw, QWidget *_page ) + : Command( n, fw ), toolBox( tw ), page( _page ) +{ + label = ( (EditorToolBox*)toolBox )->pageTitle(); + index = ( (EditorToolBox*)toolBox )->currentPage(); +} + +void DeleteToolBoxPageCommand::execute() +{ + toolBox->removeItem( page ); + page->hide(); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( toolBox ); +} + +void DeleteToolBoxPageCommand::unexecute() +{ + toolBox->insertItem(index, page, label); + toolBox->setCurrentItem( page ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->tabsChanged( toolBox ); +} + +// ------------------------------------------------------------ + +AddWizardPageCommand::AddWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, const QString &label, int i, bool s ) + : Command( n, fw ), wizard( w ), pageLabel( label ) +{ + page = new QDesignerWidget( formWindow(), wizard, "page" ); + page->hide(); + index = i; + show = s; + MetaDataBase::addEntry( page ); +} + +void AddWizardPageCommand::execute() +{ + if ( index == -1 ) + index = wizard->pageCount(); + wizard->insertPage( page, pageLabel, index ); + if ( show ) + ( (QDesignerWizard*)wizard )->setCurrentPage( ( (QDesignerWizard*)wizard )->pageNum( page ) ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->pagesChanged( wizard ); +} + +void AddWizardPageCommand::unexecute() +{ + wizard->removePage( page ); + page->hide(); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->pagesChanged( wizard ); +} + +// ------------------------------------------------------------ + +DeleteWizardPageCommand::DeleteWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, int i, bool s ) + : Command( n, fw ), wizard( w ), index( i ) +{ + show = s; +} + +void DeleteWizardPageCommand::execute() +{ + page = wizard->page( index ); + pageLabel = wizard->title( page ); + wizard->removePage( page ); + page->hide(); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->pagesChanged( wizard ); +} + +void DeleteWizardPageCommand::unexecute() +{ + wizard->insertPage( page, pageLabel, index ); + if ( show ) + ( (QDesignerWizard*)wizard )->setCurrentPage( ( (QDesignerWizard*)wizard )->pageNum( page ) ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->pagesChanged( wizard ); +} + +// ------------------------------------------------------------ + +RenameWizardPageCommand::RenameWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, int i, const QString& name ) + : Command( n, fw ), wizard( w ), index( i ), label( name ) +{ + +} + +void RenameWizardPageCommand::execute() +{ + page = wizard->page( index ); + QString oldLabel = wizard->title( page ); + + wizard->setTitle( page, label ); + label = oldLabel; + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); +} + +void RenameWizardPageCommand::unexecute() +{ + execute(); +} + +// ------------------------------------------------------------ + +SwapWizardPagesCommand::SwapWizardPagesCommand( const QString &n, FormWindow *fw, QWizard *w, int i1, int i2 ) + : Command( n, fw ), wizard( w ), index1( i1 ), index2( i2 ) +{ +} + +void SwapWizardPagesCommand::execute() +{ + QWidget *page1 = wizard->page( index1 ); + QWidget *page2 = wizard->page( index2 ); + QString page1Label = wizard->title( page1 ); + QString page2Label = wizard->title( page2 ); + wizard->removePage( page1 ); + wizard->removePage( page2 ); + wizard->insertPage( page1, page1Label, index2 ); + wizard->insertPage( page2, page2Label, index1 ); + formWindow()->emitUpdateProperties( formWindow()->currentWidget() ); + formWindow()->mainWindow()->objectHierarchy()->pagesChanged( wizard ); +} + +void SwapWizardPagesCommand::unexecute() +{ + execute(); +} + +// ------------------------------------------------------------ + +AddConnectionCommand::AddConnectionCommand( const QString &name, FormWindow *fw, + MetaDataBase::Connection c ) + : Command( name, fw ), connection( c ) +{ +} + +void AddConnectionCommand::execute() +{ + MetaDataBase::addConnection( formWindow(), connection.sender, + connection.signal, connection.receiver, connection.slot ); +#ifndef KOMMANDER + if ( connection.receiver == formWindow()->mainContainer() ) + { + // qDebug("AddConnectionCommand::execute(): Would have called EventList::setup()"); + formWindow()->mainWindow()->propertyeditor()->eventList()->setup(); + } +#endif +} + +void AddConnectionCommand::unexecute() +{ + MetaDataBase::removeConnection( formWindow(), connection.sender, + connection.signal, connection.receiver, connection.slot ); +#ifndef KOMMANDER + if ( connection.receiver == formWindow()->mainContainer() ) + { + // qDebug("AddConnectionCommand::unexecute(): Would have called EventList::setup()"); + formWindow()->mainWindow()->propertyeditor()->eventList()->setup(); + } +#endif +} + +// ------------------------------------------------------------ + +RemoveConnectionCommand::RemoveConnectionCommand( const QString &name, FormWindow *fw, + MetaDataBase::Connection c ) + : Command( name, fw ), connection( c ) +{ +} + +void RemoveConnectionCommand::execute() +{ + MetaDataBase::removeConnection( formWindow(), connection.sender, + connection.signal, connection.receiver, connection.slot ); +#ifndef KOMMANDER + if ( connection.receiver == formWindow()->mainContainer() ) + { + // qDebug("RemoveConnectionCommand::execute(): Would have called EventList::setup()"); + formWindow()->mainWindow()->propertyeditor()->eventList()->setup(); + } +#endif +} + +void RemoveConnectionCommand::unexecute() +{ + MetaDataBase::addConnection( formWindow(), connection.sender, + connection.signal, connection.receiver, connection.slot ); +#ifndef KOMMANDER + if ( connection.receiver == formWindow()->mainContainer() ) + { + // qDebug("RemoveConnectionCommand::unexecute(): Would have called EventList::setup()"); + formWindow()->mainWindow()->propertyeditor()->eventList()->setup(); + } +#endif +} + +// ------------------------------------------------------------ + +/* TODO : We don't need these commands. */ +AddSlotCommand::AddSlotCommand( const QString &name, FormWindow *fw, const QCString &s, + const QString& spec, const QString &a, const QString &l, const QString &rt ) + : Command( name, fw ), slot( s ), specifier( spec ), access( a ), language( l ), returnType( rt ) +{ + // qDebug("AddSlotCommand::AddSlotCommand()"); +} + +void AddSlotCommand::execute() +{ + MetaDataBase::addSlot( formWindow(), slot, specifier, access, language, returnType ); +#ifndef KOMMANDER + formWindow()->mainWindow()->slotsChanged(); +#endif + if ( formWindow()->formFile() ) + formWindow()->formFile()->setModified( true ); +} + +void AddSlotCommand::unexecute() +{ + MetaDataBase::removeSlot( formWindow(), slot, specifier, access, language, returnType ); +#ifndef KOMMANDER + formWindow()->mainWindow()->slotsChanged(); +#endif + if ( formWindow()->formFile() ) + formWindow()->formFile()->setModified( true ); +} + +// ------------------------------------------------------------ + +RemoveSlotCommand::RemoveSlotCommand( const QString &name, FormWindow *fw, const QCString &s, + const QString& spec, const QString &a, const QString &l, const QString &rt ) + : Command( name, fw ), slot( s ), specifier( spec ), access( a ), language( l ), returnType( rt ) +{ + // qDebug("RemoveSlotCommand::RemoveSlotCommand()"); +} + +void RemoveSlotCommand::execute() +{ + MetaDataBase::removeSlot( formWindow(), slot, specifier, access, language, returnType ); +#ifndef KOMMANDER + formWindow()->mainWindow()->slotsChanged(); +#endif + if ( formWindow()->formFile() ) + formWindow()->formFile()->setModified( true ); +} + +void RemoveSlotCommand::unexecute() +{ + MetaDataBase::addSlot( formWindow(), slot, specifier, access, language, returnType ); +#ifndef KOMMANDER + formWindow()->mainWindow()->slotsChanged(); +#endif + if ( formWindow()->formFile() ) + formWindow()->formFile()->setModified( true ); +} + +// ------------------------------------------------------------ + +LowerCommand::LowerCommand( const QString &name, FormWindow *fw, const QWidgetList &w ) + : Command( name, fw ), widgets( w ) +{ +} + +void LowerCommand::execute() +{ + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + w->lower(); + formWindow()->raiseSelection( w ); + } + +} + +void LowerCommand::unexecute() +{ + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + w->raise(); + formWindow()->raiseSelection( w ); + } +} + +// ------------------------------------------------------------ + +RaiseCommand::RaiseCommand( const QString &name, FormWindow *fw, const QWidgetList &w ) + : Command( name, fw ), widgets( w ) +{ +} + +void RaiseCommand::execute() +{ + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + w->raise(); + formWindow()->raiseSelection( w ); + } + +} + +void RaiseCommand::unexecute() +{ + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + w->lower(); + formWindow()->raiseSelection( w ); + } +} + +// ------------------------------------------------------------ + +PasteCommand::PasteCommand( const QString &n, FormWindow *fw, + const QWidgetList &w ) + : Command( n, fw ), widgets( w ) +{ +} + +void PasteCommand::execute() +{ + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + w->show(); + formWindow()->selectWidget( w ); + formWindow()->widgets()->insert( w, w ); + formWindow()->mainWindow()->objectHierarchy()->widgetInserted( w ); + } +} + +void PasteCommand::unexecute() +{ + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + w->hide(); + formWindow()->selectWidget( w, false ); + formWindow()->widgets()->remove( w ); + formWindow()->mainWindow()->objectHierarchy()->widgetRemoved( w ); + } + } + +// ------------------------------------------------------------ + +TabOrderCommand::TabOrderCommand( const QString &n, FormWindow *fw, + const QWidgetList &ol, const QWidgetList &nl ) + : Command( n, fw ), oldOrder( ol ), newOrder( nl ) +{ +} + +void TabOrderCommand::merge( Command *c ) +{ + TabOrderCommand *cmd = (TabOrderCommand*)c; + newOrder = cmd->newOrder; +} + +bool TabOrderCommand::canMerge( Command * ) +{ + return true; +} + +void TabOrderCommand::execute() +{ + MetaDataBase::setTabOrder( formWindow(), newOrder ); +} + +void TabOrderCommand::unexecute() +{ + MetaDataBase::setTabOrder( formWindow(), oldOrder ); +} + +// ------------------------------------------------------------ + +PopulateListBoxCommand::PopulateListBoxCommand( const QString &n, FormWindow *fw, + QListBox *lb, const QValueList<Item> &items ) + : Command( n, fw ), newItems( items ), listbox( lb ) +{ + QListBoxItem *i = 0; + for ( i = listbox->firstItem(); i; i = i->next() ) { + Item item; + if ( i->pixmap() ) + item.pix = *i->pixmap(); + item.text = i->text(); + oldItems.append( item ); + } +} + +void PopulateListBoxCommand::execute() +{ + listbox->clear(); + for ( QValueList<Item>::Iterator it = newItems.begin(); it != newItems.end(); ++it ) { + Item i = *it; + if ( !i.pix.isNull() ) + (void)new QListBoxPixmap( listbox, i.pix, i.text ); + else + (void)new QListBoxText( listbox, i.text ); + } + formWindow()->mainWindow()->propertyeditor()->refetchData(); +} + +void PopulateListBoxCommand::unexecute() +{ + listbox->clear(); + for ( QValueList<Item>::Iterator it = oldItems.begin(); it != oldItems.end(); ++it ) { + Item i = *it; + if ( !i.pix.isNull() ) + (void)new QListBoxPixmap( listbox, i.pix, i.text ); + else + (void)new QListBoxText( listbox, i.text ); + } + formWindow()->mainWindow()->propertyeditor()->refetchData(); +} + +// ------------------------------------------------------------ + +PopulateIconViewCommand::PopulateIconViewCommand( const QString &n, FormWindow *fw, + QIconView *iv, const QValueList<Item> &items ) + : Command( n, fw ), newItems( items ), iconview( iv ) +{ +#ifndef QT_NO_ICONVIEW + QIconViewItem *i = 0; + for ( i = iconview->firstItem(); i; i = i->nextItem() ) { + Item item; + if ( i->pixmap() ) + item.pix = *i->pixmap(); + item.text = i->text(); + oldItems.append( item ); + } +#endif +} + +void PopulateIconViewCommand::execute() +{ +#ifndef QT_NO_ICONVIEW + iconview->clear(); + for ( QValueList<Item>::Iterator it = newItems.begin(); it != newItems.end(); ++it ) { + Item i = *it; + (void)new QIconViewItem( iconview, i.text, i.pix ); + } +#endif +} + +void PopulateIconViewCommand::unexecute() +{ +#ifndef QT_NO_ICONVIEW + iconview->clear(); + for ( QValueList<Item>::Iterator it = oldItems.begin(); it != oldItems.end(); ++it ) { + Item i = *it; + (void)new QIconViewItem( iconview, i.text, i.pix ); + } +#endif +} + +// ------------------------------------------------------------ + +PopulateListViewCommand::PopulateListViewCommand( const QString &n, FormWindow *fw, + QListView *lv, QListView *from ) + : Command( n, fw ), listview( lv ) +{ + newItems = new QListView(); + newItems->hide(); + transferItems( from, newItems ); + oldItems = new QListView(); + oldItems->hide(); + transferItems( listview, oldItems ); +} + +void PopulateListViewCommand::execute() +{ + listview->clear(); + transferItems( newItems, listview ); +} + +void PopulateListViewCommand::unexecute() +{ + listview->clear(); + transferItems( oldItems, listview ); +} + +void PopulateListViewCommand::transferItems( QListView *from, QListView *to ) +{ + QHeader *header = to->header(); + while ( header->count() ) + to->removeColumn( 0 ); + QHeader *h2 = from->header(); + for ( int i = 0; i < h2->count(); ++i ) { + to->addColumn( h2->label( i ) ); + if ( h2->iconSet( i ) && !h2->iconSet( i )->pixmap().isNull() ) + header->setLabel( i, *h2->iconSet( i ), h2->label( i ) ); + header->setResizeEnabled( h2->isResizeEnabled( i ), i ); + header->setClickEnabled( h2->isClickEnabled( i ), i ); + } + + QListViewItemIterator it( from ); + QPtrStack<QListViewItem> fromParents, toParents; + fromParents.push( 0 ); + toParents.push( 0 ); + QPtrStack<QListViewItem> toLasts; + QListViewItem *fromLast = 0; + toLasts.push( 0 ); + int cols = from->columns(); + to->setSorting( -1 ); + from->setSorting( -1 ); + for ( ; it.current(); ++it ) { + QListViewItem *i = it.current(); + if ( i->parent() == fromParents.top() ) { + QListViewItem *pi = toParents.top(); + QListViewItem *ni = 0; + if ( pi ) + ni = new QListViewItem( pi, toLasts.top() ); + else + ni = new QListViewItem( to, toLasts.top() ); + for ( int c = 0; c < cols; ++c ) { + ni->setText( c, i->text( c ) ); + if ( i->pixmap( c ) ) + ni->setPixmap( c, *i->pixmap( c ) ); + } + toLasts.pop(); + toLasts.push( ni ); + if ( pi ) + pi->setOpen( true ); + } else { + if ( i->parent() == fromLast ) { + fromParents.push( fromLast ); + toParents.push( toLasts.top() ); + toLasts.push( 0 ); + QListViewItem *pi = toParents.top(); + QListViewItem *ni = 0; + if ( pi ) + ni = new QListViewItem( pi ); + else + ni = new QListViewItem( to ); + for ( int c = 0; c < cols; ++c ) { + ni->setText( c, i->text( c ) ); + if ( i->pixmap( c ) ) + ni->setPixmap( c, *i->pixmap( c ) ); + } + toLasts.pop(); + toLasts.push( ni ); + if ( pi ) + pi->setOpen( true ); + } else { + while ( fromParents.top() != i->parent() ) { + fromParents.pop(); + toParents.pop(); + toLasts.pop(); + } + + QListViewItem *pi = toParents.top(); + QListViewItem *ni = 0; + if ( pi ) + ni = new QListViewItem( pi, toLasts.top() ); + else + ni = new QListViewItem( to, toLasts.top() ); + for ( int c = 0; c < cols; ++c ) { + ni->setText( c, i->text( c ) ); + if ( i->pixmap( c ) ) + ni->setPixmap( c, *i->pixmap( c ) ); + } + if ( pi ) + pi->setOpen( true ); + toLasts.pop(); + toLasts.push( ni ); + } + } + fromLast = i; + } +} + + + +// ------------------------------------------------------------ + +PopulateMultiLineEditCommand::PopulateMultiLineEditCommand( const QString &n, FormWindow *fw, + QMultiLineEdit *mle, const QString &txt ) + : Command( n, fw ), newText( txt ), mlined( mle ) +{ + oldText = mlined->text(); + wasChanged = MetaDataBase::isPropertyChanged( mlined, "text" ); +} + +void PopulateMultiLineEditCommand::execute() +{ + mlined->setText( newText ); + MetaDataBase::setPropertyChanged( mlined, "text", true ); + formWindow()->emitUpdateProperties( mlined ); +} + +void PopulateMultiLineEditCommand::unexecute() +{ + mlined->setText( oldText ); + MetaDataBase::setPropertyChanged( mlined, "text", wasChanged ); + formWindow()->emitUpdateProperties( mlined ); +} + +// ------------------------------------------------------------ + +PopulateTableCommand::PopulateTableCommand( const QString &n, FormWindow *fw, QTable *t, + const QValueList<Row> &rows, + const QValueList<Column> &columns ) + : Command( n, fw ), newRows( rows ), newColumns( columns ), table( t ) +{ +#ifndef QT_NO_TABLE + int i = 0; + QMap<QString, QString> columnFields = MetaDataBase::columnFields( table ); + for ( i = 0; i < table->horizontalHeader()->count(); ++i ) { + PopulateTableCommand::Column col; + col.text = table->horizontalHeader()->label( i ); + if ( table->horizontalHeader()->iconSet( i ) ) + col.pix = table->horizontalHeader()->iconSet( i )->pixmap(); + col.field = *columnFields.find( col.text ); + oldColumns.append( col ); + } + for ( i = 0; i < table->verticalHeader()->count(); ++i ) { + PopulateTableCommand::Row row; + row.text = table->verticalHeader()->label( i ); + if ( table->verticalHeader()->iconSet( i ) ) + row.pix = table->verticalHeader()->iconSet( i )->pixmap(); + oldRows.append( row ); + } +#endif +} + +void PopulateTableCommand::execute() +{ +#ifndef QT_NO_TABLE + QMap<QString, QString> columnFields; + table->setNumCols( newColumns.count() ); + int i = 0; + for ( QValueList<Column>::Iterator cit = newColumns.begin(); cit != newColumns.end(); ++cit, ++i ) { + table->horizontalHeader()->setLabel( i, (*cit).pix, (*cit).text ); + if ( !(*cit).field.isEmpty() ) + columnFields.insert( (*cit).text, (*cit).field ); + } + MetaDataBase::setColumnFields( table, columnFields ); + table->setNumRows( newRows.count() ); + i = 0; + for ( QValueList<Row>::Iterator rit = newRows.begin(); rit != newRows.end(); ++rit, ++i ) + table->verticalHeader()->setLabel( i, (*rit).pix, (*rit).text ); +#endif +} + +void PopulateTableCommand::unexecute() +{ +#ifndef QT_NO_TABLE + QMap<QString, QString> columnFields; + table->setNumCols( oldColumns.count() ); + int i = 0; + for ( QValueList<Column>::Iterator cit = oldColumns.begin(); cit != oldColumns.end(); ++cit, ++i ) { + table->horizontalHeader()->setLabel( i, (*cit).pix, (*cit).text ); + if ( !(*cit).field.isEmpty() ) + columnFields.insert( (*cit).text, (*cit).field ); + } + MetaDataBase::setColumnFields( table, columnFields ); + table->setNumRows( oldRows.count() ); + i = 0; + for ( QValueList<Row>::Iterator rit = oldRows.begin(); rit != oldRows.end(); ++rit, ++i ) + table->verticalHeader()->setLabel( i, (*rit).pix, (*rit).text ); +#endif +} + +// ------------------------------------------------------------ + +AddActionToToolBarCommand::AddActionToToolBarCommand( const QString &n, FormWindow *fw, + QAction *a, QDesignerToolBar *tb, int idx ) + : Command( n, fw ), action( a ), toolBar( tb ), index( idx ) +{ +} + +void AddActionToToolBarCommand::execute() +{ + action->addTo( toolBar ); + + if ( action->inherits( "QDesignerAction" ) ) { + QString s = ( (QDesignerAction*)action )->widget()->name(); + if ( s.startsWith( "qt_dead_widget_" ) ) { + s.remove( 0, QString( "qt_dead_widget_" ).length() ); + ( (QDesignerAction*)action )->widget()->setName( s ); + } + } + + if ( action->inherits( "QDesignerAction" ) ) { + toolBar->insertAction( ( (QDesignerAction*)action )->widget(), action ); + ( (QDesignerAction*)action )->widget()->installEventFilter( toolBar ); + } else if ( action->inherits( "QDesignerActionGroup" ) ) { + if ( ( (QDesignerActionGroup*)action )->usesDropDown() ) { + toolBar->insertAction( ( (QDesignerActionGroup*)action )->widget(), action ); + ( (QDesignerActionGroup*)action )->widget()->installEventFilter( toolBar ); + } + } else if ( action->inherits( "QSeparatorAction" ) ) { + toolBar->insertAction( ( (QSeparatorAction*)action )->widget(), action ); + ( (QSeparatorAction*)action )->widget()->installEventFilter( toolBar ); + } + if ( !action->inherits( "QActionGroup" ) || ( (QActionGroup*)action )->usesDropDown()) { + if ( index == -1 ) + toolBar->appendAction( action ); + else + toolBar->insertAction( index, action ); + toolBar->reInsert(); + QObject::connect( action, SIGNAL( destroyed() ), toolBar, SLOT( actionRemoved() ) ); + } else { + QObjectListIt it( *action->children() ); + if ( action->children() ) { + int i = 0; + while ( it.current() ) { + QObject *o = it.current(); + ++it; + if ( !o->inherits( "QAction" ) ) + continue; + // ### fix it for nested actiongroups + if ( o->inherits( "QDesignerAction" ) ) { + QDesignerAction *ac = (QDesignerAction*)o; + toolBar->insertAction( ac->widget(), ac ); + ac->widget()->installEventFilter( toolBar ); + if ( index == -1 ) + toolBar->appendAction( ac ); + else + toolBar->insertAction( index + (i++), ac ); + } + } + } + toolBar->reInsert(); + QObject::connect( action, SIGNAL( destroyed() ), toolBar, SLOT( actionRemoved() ) ); + } +} + +void AddActionToToolBarCommand::unexecute() +{ + if ( action->inherits( "QDesignerAction" ) ) { + QString s = ( (QDesignerAction*)action )->widget()->name(); + s.prepend( "qt_dead_widget_" ); + ( (QDesignerAction*)action )->widget()->setName( s ); + } + + toolBar->removeAction( action ); + action->removeFrom( toolBar ); + QObject::disconnect( action, SIGNAL( destroyed() ), toolBar, SLOT( actionRemoved() ) ); + if ( !action->inherits( "QActionGroup" ) || ( (QActionGroup*)action )->usesDropDown()) { + action->removeEventFilter( toolBar ); + } else { + if ( action->children() ) { + QObjectListIt it( *action->children() ); + while ( it.current() ) { + QObject *o = it.current(); + ++it; + if ( !o->inherits( "QAction" ) ) + continue; + if ( o->inherits( "QDesignerAction" ) ) { + o->removeEventFilter( toolBar ); + toolBar->removeAction( (QAction*)o ); + } + } + } + } +} + +// ------------------------------------------------------------ + +AddActionToPopupCommand::AddActionToPopupCommand( const QString &n, FormWindow *fw, + QAction *a, QDesignerPopupMenu *p, int idx ) + : Command( n, fw ), action( a ), popup( p ), index( idx ) +{ +} + +void AddActionToPopupCommand::execute() +{ + if ( action->inherits( "QActionGroup" ) ) { + if ( ( (QActionGroup*)action )->usesDropDown() ) { + action->addTo( popup ); + popup->insertAction( index, action ); + } else { + action->addTo( popup ); + if ( action->children() ) { + QObjectListIt it( *action->children() ); + int i = 0; + while ( it.current() ) { + QObject *o = it.current(); + ++it; + if ( !o->inherits( "QAction" ) ) + continue; + QDesignerAction *ac = (QDesignerAction*)o; + popup->insertAction( index + (i++), ac ); + } + } + } + popup->reInsert(); + QObject::connect( action, SIGNAL( destroyed() ), popup, SLOT( actionRemoved() ) ); + } else { + if ( !action->inherits( "QDesignerAction" ) || ( (QDesignerAction*)action )->supportsMenu() ) { + action->addTo( popup ); + popup->insertAction( index, action ); + popup->reInsert(); + QObject::connect( action, SIGNAL( destroyed() ), popup, SLOT( actionRemoved() ) ); + } + } +} + +void AddActionToPopupCommand::unexecute() +{ + action->removeFrom( popup ); + popup->removeAction( action ); + QObject::disconnect( action, SIGNAL( destroyed() ), popup, SLOT( actionRemoved() ) ); + if ( !action->inherits( "QActionGroup" ) || ( (QActionGroup*)action )->usesDropDown()) { + action->removeEventFilter( popup ); + } else { + if ( action->children() ) { + QObjectListIt it( *action->children() ); + while ( it.current() ) { + QObject *o = it.current(); + ++it; + if ( !o->inherits( "QAction" ) ) + continue; + if ( o->inherits( "QDesignerAction" ) ) { + o->removeEventFilter( popup ); + popup->removeAction( (QAction*)o ); + } + } + } + } +} + +// ------------------------------------------------------------ + +AddMenuCommand::AddMenuCommand( const QString &n, FormWindow *fw, QMainWindow *mw ) + : Command( n, fw ), menuBar( 0 ), popup( 0 ), mainWindow( mw ), id( -1 ), name( "Menu" ) +{ +} + +void AddMenuCommand::execute() +{ + if ( !popup ) { + QString n = "PopupMenu"; + popup = new QDesignerPopupMenu( mainWindow ); + formWindow()->unify( popup, n, true ); + popup->setName( n ); + } + if ( !mainWindow->child( 0, "QMenuBar" ) ) { + menuBar = new QDesignerMenuBar( (QWidget*)mainWindow ); + menuBar->setName( "menubar" ); + } else { + menuBar = (QDesignerMenuBar*)mainWindow->menuBar(); + } + if ( id == -1 ) + id = mainWindow->menuBar()->insertItem( name, popup ); + else + id = mainWindow->menuBar()->insertItem( name, popup, id, index ); + formWindow()->killAccels( formWindow() ); +} + +void AddMenuCommand::unexecute() +{ + if ( !popup || !menuBar ) + return; + menuBar->removeItem( id ); + formWindow()->killAccels( formWindow() ); +} + +// ------------------------------------------------------------ + +RenameMenuCommand::RenameMenuCommand( const QString &n, FormWindow *fw, QDesignerMenuBar *mb, + int i, const QString &on, const QString &nn ) + : Command( n, fw ), menuBar( mb ), id( i ), oldName( on ), newName( nn ) +{ +} + +void RenameMenuCommand::execute() +{ + menuBar->changeItem( id, newName ); + formWindow()->killAccels( formWindow() ); +} + +void RenameMenuCommand::unexecute() +{ + menuBar->changeItem( id, oldName ); + formWindow()->killAccels( formWindow() ); +} + +// ------------------------------------------------------------ + +MoveMenuCommand::MoveMenuCommand( const QString &n, FormWindow *fw, QDesignerMenuBar *mb, + QDesignerPopupMenu *p, int fidx, int tidx, const QString &txt ) + : Command( n, fw ), menuBar( mb ), popup( p ), fromIdx( fidx ), toIdx( tidx ), text( txt ) +{ +} + +void MoveMenuCommand::execute() +{ + menuBar->removeItem( menuBar->idAt( fromIdx ) ); + menuBar->insertItem( text, popup, -1, toIdx ); + formWindow()->killAccels( formWindow() ); +} + +void MoveMenuCommand::unexecute() +{ + menuBar->removeItem( menuBar->idAt( toIdx ) ); + menuBar->insertItem( text, popup, -1, fromIdx ); + formWindow()->killAccels( formWindow() ); +} + +// ------------------------------------------------------------ + +AddToolBarCommand::AddToolBarCommand( const QString &n, FormWindow *fw, QMainWindow *mw ) + : Command( n, fw ), toolBar( 0 ), mainWindow( mw ) +{ +} + +void AddToolBarCommand::execute() +{ + if ( !toolBar ) { + toolBar = new QDesignerToolBar( mainWindow ); + QString n = "Toolbar"; + formWindow()->unify( toolBar, n, true ); + toolBar->setName( n ); + mainWindow->addToolBar( toolBar, n ); + } else { + toolBar->show(); + } +} + +void AddToolBarCommand::unexecute() +{ + toolBar->hide(); +} +#include "command.moc" diff --git a/kommander/editor/command.h b/kommander/editor/command.h new file mode 100644 index 00000000..80a3e569 --- /dev/null +++ b/kommander/editor/command.h @@ -0,0 +1,931 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef COMMAND_H +#define COMMAND_H + +#include "metadatabase.h" +#include "layout.h" + +#include <qstring.h> +#include <qrect.h> +#include <qvaluelist.h> +#include <qvariant.h> +#include <qobject.h> +#include <qlistview.h> +#include <qptrlist.h> +#include <qmap.h> + +class QWizard; +class QTabWidget; +class Command; +class QWidget; +class FormWindow; +class PropertyEditor; +class QListBox; +class QIconView; +class QMultiLineEdit; +class QTable; +class QAction; +class QDesignerToolBar; +class QMainWindow; +class QDesignerPopupMenu; +class QDesignerMenuBar; +class QToolBox; + +class Command : public Qt +{ +public: + Command( const QString &n, FormWindow *fw ); + virtual ~Command(); + + enum Type { + Resize, + Insert, + Move, + Delete, + SetProperty, + LayoutHorizontal, + LayoutVertical, + LayoutHorizontalSplitter, + LayoutVerticalSplitter, + LayoutGrid, + BreakLayout, + Macro, + AddTabPage, + DeleteTabPage, + MoveTabPage, + AddWizardPage, + DeleteWizardPage, + SwapWizardPages, + RenameWizardPage, + AddConnection, + RemoveConnection, + AddSlot, + RemoveSlot, + Lower, + Raise, + Paste, + TabOrder, + PopulateListBox, + PopulateIconView, + PopulateListView, + PopulateMultiLineEdit, + PopulateTable, + AddActionToToolBar, + RemoveActionFromToolBar, + AddActionToPopup, + RemoveActionFromPopup, + AddMenu, + RemoveMenu, + RenameMenu, + MoveMenu, + AddToolBar, + RemoveToolBar, + AddToolBoxPage, + DeleteToolBoxPage + }; + + QString name() const; + + virtual void execute() = 0; + virtual void unexecute() = 0; + virtual Type type() const = 0; + virtual void merge( Command *c ); + virtual bool canMerge( Command *c ); + + FormWindow *formWindow() const; + +private: + QString cmdName; + FormWindow *formWin; + +}; + + +class CommandHistory : public QObject +{ + Q_OBJECT + +public: + CommandHistory( int s ); + + void addCommand( Command *cmd, bool tryCompress = FALSE ); + void undo(); + void redo(); + + void emitUndoRedo(); + + void setModified( bool m ); + bool isModified() const; + +public slots: + void checkCompressedCommand(); + +signals: + void undoRedoChanged( bool undoAvailable, bool redoAvailable, + const QString &undoCmd, const QString &redoCmd ); + void modificationChanged( bool m ); + +private: + QPtrList<Command> history; + int current, steps; + bool modified; + int savedAt; + Command *compressedCommand; + +}; + +class ResizeCommand : public Command +{ +public: + ResizeCommand( const QString &n, FormWindow *fw, + QWidget *w, const QRect &oldr, const QRect &nr ); + + void execute(); + void unexecute(); + Type type() const { return Resize; } + +private: + QWidget *widget; + QRect oldRect, newRect; + +}; + +class InsertCommand : public Command +{ +public: + InsertCommand( const QString &n, FormWindow *fw, QWidget *w, const QRect &g ); + + void execute(); + void unexecute(); + Type type() const { return Insert; } + +private: + QWidget *widget; + QRect geometry; + +}; + +class MoveCommand : public Command +{ +public: + MoveCommand( const QString &n, FormWindow *fw, + const QWidgetList &w, + const QValueList<QPoint> op, + const QValueList<QPoint> np, + QWidget *opr, QWidget *npr ); + void execute(); + void unexecute(); + Type type() const { return Move; } + void merge( Command *c ); + bool canMerge( Command *c ); + +private: + QWidgetList widgets; + QValueList<QPoint> oldPos, newPos; + QWidget *oldParent, *newParent; + +}; + +class DeleteCommand : public Command +{ +public: + DeleteCommand( const QString &n, FormWindow *fw, + const QWidgetList &w ); + void execute(); + void unexecute(); + Type type() const { return Delete; } + +private: + QWidgetList widgets; + QMap< QWidget*, QValueList<MetaDataBase::Connection> > connections; + +}; + +class SetPropertyCommand : public Command +{ +public: + SetPropertyCommand( const QString &n, FormWindow *fw, + QObject *w, PropertyEditor *e, + const QString &pn, const QVariant &ov, + const QVariant &nv, const QString &ncut, + const QString &ocut, + bool reset = FALSE ); + + void execute(); + void unexecute(); + Type type() const { return SetProperty; } + void merge( Command *c ); + bool canMerge( Command *c ); + bool checkProperty(); + +private: + void setProperty( const QVariant &v, const QString ¤tItemText, bool select = TRUE ); + + QObject *widget; + PropertyEditor *editor; + QString propName; + QVariant oldValue, newValue; + QString oldCurrentItemText, newCurrentItemText; + bool wasChanged; + bool isResetCommand; + +}; + +class LayoutHorizontalCommand : public Command +{ +public: + LayoutHorizontalCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutHorizontal; } + +private: + HorizontalLayout layout; + +}; + +class LayoutHorizontalSplitCommand : public Command +{ +public: + LayoutHorizontalSplitCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutHorizontalSplitter; } + +private: + HorizontalLayout layout; + +}; + +class LayoutVerticalCommand : public Command +{ +public: + LayoutVerticalCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutVertical; } + +private: + VerticalLayout layout; + +}; + +class LayoutVerticalSplitCommand : public Command +{ +public: + LayoutVerticalSplitCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return LayoutVerticalSplitter; } + +private: + VerticalLayout layout; + +}; + +class LayoutGridCommand : public Command +{ +public: + LayoutGridCommand( const QString &n, FormWindow *fw, + QWidget *parent, QWidget *layoutBase, + const QWidgetList &wl, int xres, int yres ); + + void execute(); + void unexecute(); + Type type() const { return LayoutGrid; } + +private: + GridLayout layout; + +}; + +class BreakLayoutCommand : public Command +{ +public: + BreakLayoutCommand( const QString &n, FormWindow *fw, + QWidget *layoutBase, const QWidgetList &wl ); + + void execute(); + void unexecute(); + Type type() const { return BreakLayout; } + +private: + Layout *layout; + int spacing; + int margin; + QWidget *lb; + QWidgetList widgets; + +}; + +class MacroCommand : public Command +{ +public: + MacroCommand( const QString &n, FormWindow *fw, + const QPtrList<Command> &cmds ); + + void execute(); + void unexecute(); + Type type() const { return Macro; } + +private: + QPtrList<Command> commands; + +}; + +class AddTabPageCommand : public Command +{ +public: + AddTabPageCommand( const QString &n, FormWindow *fw, + QTabWidget *tw, const QString &label ); + + void execute(); + void unexecute(); + Type type() const { return AddTabPage; } + +private: + QTabWidget *tabWidget; + int index; + QWidget *tabPage; + QString tabLabel; + +}; + +class DeleteTabPageCommand : public Command +{ +public: + DeleteTabPageCommand( const QString &n, FormWindow *fw, + QTabWidget *tw, QWidget *page ); + + void execute(); + void unexecute(); + Type type() const { return DeleteTabPage; } + +private: + QTabWidget *tabWidget; + int index; + QWidget *tabPage; + QString tabLabel; + +}; + +class AddToolBoxPageCommand : public Command +{ +public: + AddToolBoxPageCommand( const QString &n, FormWindow *fw, + QToolBox *tw, const QString &label ); + + void execute(); + void unexecute(); + Type type() const { return AddToolBoxPage; } + +private: + QToolBox *toolBox; + int index; + QWidget *page; + QString label; + +}; + +class DeleteToolBoxPageCommand : public Command +{ +public: + DeleteToolBoxPageCommand( const QString &n, FormWindow *fw, + QToolBox *tw, QWidget *page ); + + void execute(); + void unexecute(); + Type type() const { return DeleteToolBoxPage; } + +private: + QToolBox *toolBox; + int index; + QWidget *page; + QString label; + +}; +class MoveTabPageCommand : public Command +{ +public: + MoveTabPageCommand(const QString &n, FormWindow *fw, + QTabWidget *tw, QWidget *page, const QString& label, int nIndex, int oIndex ); + + void execute(); + void unexecute(); + Type type() const { return MoveTabPage; } + +private: + QTabWidget *tabWidget; + int newIndex, oldIndex; + QWidget *tabPage; + QString tabLabel; + +}; + +class AddWizardPageCommand : public Command +{ +public: + AddWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, const QString &label, int index = -1, bool show = TRUE ); + + void execute(); + void unexecute(); + Type type() const { return AddWizardPage; } + +private: + QWizard *wizard; + int index; + bool show; + QWidget *page; + QString pageLabel; + +}; + +class DeleteWizardPageCommand : public Command +{ +public: + DeleteWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, int index, bool show = TRUE ); + + void execute(); + void unexecute(); + Type type() const { return DeleteWizardPage; } + +private: + QWizard *wizard; + int index; + bool show; + QWidget *page; + QString pageLabel; + +}; + +class RenameWizardPageCommand : public Command +{ +public: + RenameWizardPageCommand( const QString &n, FormWindow *fw, + QWizard *w, int index, const QString& name ); + + void execute(); + void unexecute(); + Type type() const { return RenameWizardPage; } + +private: + QWizard *wizard; + int index; + QWidget *page; + QString label; + +}; + +class SwapWizardPagesCommand : public Command +{ +public: + SwapWizardPagesCommand( const QString &n, FormWindow *fw, + QWizard *w, int index1, int index2 ); + + void execute(); + void unexecute(); + Type type() const { return SwapWizardPages; } + +private: + QWizard *wizard; + int index1, index2; + +}; + +class AddConnectionCommand : public Command +{ +public: + AddConnectionCommand( const QString &name, FormWindow *fw, + MetaDataBase::Connection c ); + + void execute(); + void unexecute(); + Type type() const { return AddConnection; } + +private: + MetaDataBase::Connection connection; + +}; + +class RemoveConnectionCommand : public Command +{ +public: + RemoveConnectionCommand( const QString &name, FormWindow *fw, + MetaDataBase::Connection c ); + + void execute(); + void unexecute(); + Type type() const { return RemoveConnection; } + +private: + MetaDataBase::Connection connection; + +}; + +class AddSlotCommand : public Command +{ +public: + AddSlotCommand( const QString &name, FormWindow *fw, const QCString &s, const QString& spec, + const QString &a, const QString &l, const QString &rt ); + + void execute(); + void unexecute(); + Type type() const { return AddSlot; } + +private: + QCString slot; + QString specifier; + QString access; + QString language; + QString returnType; + +}; + +class RemoveSlotCommand : public Command +{ +public: + RemoveSlotCommand( const QString &name, FormWindow *fw, const QCString &s, const QString& spec, + const QString &a, const QString &l, const QString &rt ); + + void execute(); + void unexecute(); + Type type() const { return RemoveSlot; } + +private: + QCString slot; + QString specifier; + QString access; + QString language; + QString returnType; + +}; + +class LowerCommand : public Command +{ +public: + LowerCommand( const QString &name, FormWindow *fw, const QWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Lower; } + +private: + QWidgetList widgets; + +}; + +class RaiseCommand : public Command +{ +public: + RaiseCommand( const QString &name, FormWindow *fw, const QWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Raise; } + +private: + QWidgetList widgets; + +}; + +class PasteCommand : public Command +{ +public: + PasteCommand( const QString &n, FormWindow *fw, const QWidgetList &w ); + + void execute(); + void unexecute(); + Type type() const { return Paste; } + +private: + QWidgetList widgets; + +}; + +class TabOrderCommand : public Command +{ +public: + TabOrderCommand( const QString &n, FormWindow *fw, const QWidgetList &ol, const QWidgetList &nl ); + + void execute(); + void unexecute(); + Type type() const { return TabOrder; } + void merge( Command *c ); + bool canMerge( Command *c ); + +private: + QWidgetList oldOrder, newOrder; + +}; + +class PopulateListBoxCommand : public Command +{ +public: + struct Item + { + QString text; + QPixmap pix; +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) + bool operator==( const Item & ) const { return FALSE; } +#endif + }; + + PopulateListBoxCommand( const QString &n, FormWindow *fw, + QListBox *lb, const QValueList<Item> &items ); + void execute(); + void unexecute(); + Type type() const { return PopulateListBox; } + + bool operator==( const PopulateListBoxCommand & ) const; + +private: + QValueList<Item> oldItems, newItems; + QListBox *listbox; + +}; + +class PopulateIconViewCommand : public Command +{ +public: + struct Item + { + QString text; + QPixmap pix; +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) + bool operator==( const Item & ) const { return FALSE; } +#endif + }; + + PopulateIconViewCommand( const QString &n, FormWindow *fw, + QIconView *iv, const QValueList<Item> &items ); + void execute(); + void unexecute(); + Type type() const { return PopulateIconView; } + + bool operator==( const PopulateIconViewCommand & ) const; + +private: + QValueList<Item> oldItems, newItems; + QIconView *iconview; + +}; + +class PopulateListViewCommand : public Command +{ +public: + PopulateListViewCommand( const QString &n, FormWindow *fw, + QListView *lv, QListView *from ); + void execute(); + void unexecute(); + Type type() const { return PopulateListView; } + static void transferItems( QListView *from, QListView *to ); + + bool operator==( const PopulateListViewCommand & ) const; + +private: + QListView *oldItems, *newItems; + QListView *listview; + +}; + +class PopulateMultiLineEditCommand : public Command +{ +public: + PopulateMultiLineEditCommand( const QString &n, FormWindow *fw, + QMultiLineEdit *mle, const QString &txt ); + void execute(); + void unexecute(); + Type type() const { return PopulateMultiLineEdit; } + +private: + QString newText, oldText; + QMultiLineEdit *mlined; + bool wasChanged; + +}; + +class PopulateTableCommand : public Command +{ +public: + struct Row + { + QString text; + QPixmap pix; +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) + bool operator==( const Row& ) const { return FALSE; } +#endif + }; + + struct Column + { + QString text; + QPixmap pix; + QString field; +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) + bool operator==( const Column& ) const { return FALSE; } +#endif + }; + + PopulateTableCommand( const QString &n, FormWindow *fw, QTable *t, + const QValueList<Row> &rows, + const QValueList<Column> &columns ); + + void execute(); + void unexecute(); + Type type() const { return PopulateTable; } + +private: + QValueList<Row> oldRows, newRows; + QValueList<Column> oldColumns, newColumns; + QTable *table; + +}; + +class AddActionToToolBarCommand : public Command +{ +public: + AddActionToToolBarCommand( const QString &n, FormWindow *fw, + QAction *a, QDesignerToolBar *tb, int idx ); + + void execute(); + void unexecute(); + Type type() const { return AddActionToToolBar; } + +private: + QAction *action; + QDesignerToolBar *toolBar; + int index; + +}; + +class RemoveActionFromToolBarCommand : public AddActionToToolBarCommand +{ +public: + RemoveActionFromToolBarCommand( const QString &n, FormWindow *fw, + QAction *a, QDesignerToolBar *tb, int idx ) + : AddActionToToolBarCommand( n, fw, a, tb, idx ) {} + + void execute() { AddActionToToolBarCommand::unexecute(); } + void unexecute() { AddActionToToolBarCommand::execute(); } + Type type() const { return RemoveActionFromToolBar; } + +}; + +class AddActionToPopupCommand : public Command +{ +public: + AddActionToPopupCommand( const QString &n, FormWindow *fw, + QAction *a, QDesignerPopupMenu *p, int idx ); + + void execute(); + void unexecute(); + Type type() const { return AddActionToPopup; } + +private: + QAction *action; + QDesignerPopupMenu *popup; + int index; + +}; + +class RemoveActionFromPopupCommand : public AddActionToPopupCommand +{ +public: + RemoveActionFromPopupCommand( const QString &n, FormWindow *fw, + QAction *a, QDesignerPopupMenu *p, int idx ) + : AddActionToPopupCommand( n, fw, a, p, idx ) {} + + void execute() { AddActionToPopupCommand::unexecute(); } + void unexecute() { AddActionToPopupCommand::execute(); } + Type type() const { return RemoveActionFromPopup; } + +}; + +class AddMenuCommand : public Command +{ +public: + AddMenuCommand( const QString &n, FormWindow *fw, QMainWindow *mw ); + + void execute(); + void unexecute(); + Type type() const { return AddMenu; } + +protected: + QDesignerMenuBar *menuBar; + QDesignerPopupMenu *popup; + QMainWindow *mainWindow; + int id; + int index; + QString name; + +}; + +class RemoveMenuCommand : public AddMenuCommand +{ +public: + RemoveMenuCommand( const QString &n, FormWindow *fw, QMainWindow *mw, + QDesignerMenuBar *mb, QDesignerPopupMenu *p, int i, int idx, const QString &mn ) + : AddMenuCommand( n, fw, mw ) { menuBar = mb; popup = p; id = i; index = idx, name = mn; } + + void execute() { AddMenuCommand::unexecute(); } + void unexecute() { AddMenuCommand::execute(); } + Type type() const { return RemoveMenu; } + +}; + +class RenameMenuCommand : public Command +{ +public: + RenameMenuCommand( const QString &n, FormWindow *fw, QDesignerMenuBar *mb, + int i, const QString &on, const QString &nn ); + + void execute(); + void unexecute(); + Type type() const { return RenameMenu; } + +private: + QDesignerMenuBar *menuBar; + int id; + QString oldName, newName; + +}; + +class MoveMenuCommand : public Command +{ +public: + MoveMenuCommand( const QString &n, FormWindow *fw, QDesignerMenuBar *mb, + QDesignerPopupMenu *p, int fidx, int tidx, const QString &txt ); + + void execute(); + void unexecute(); + Type type() const { return MoveMenu; } + +private: + QDesignerMenuBar *menuBar; + QDesignerPopupMenu *popup; + int fromIdx, toIdx; + QString text; + +}; + +class AddToolBarCommand : public Command +{ +public: + AddToolBarCommand( const QString &n, FormWindow *fw, QMainWindow *mw ); + + void execute(); + void unexecute(); + Type type() const { return AddToolBar; } + +protected: + QDesignerToolBar *toolBar; + QMainWindow *mainWindow; + +}; + +class RemoveToolBarCommand : public AddToolBarCommand +{ +public: + RemoveToolBarCommand( const QString &n, FormWindow *fw, QMainWindow *mw, QDesignerToolBar *tb ) + : AddToolBarCommand( n, fw, mw ) { toolBar = tb; } + + void execute() { AddToolBarCommand::unexecute(); } + void unexecute() { AddToolBarCommand::execute(); } + Type type() const { return RemoveToolBar; } + +}; + +#endif diff --git a/kommander/editor/connectioneditor.ui b/kommander/editor/connectioneditor.ui new file mode 100644 index 00000000..d9e5a161 --- /dev/null +++ b/kommander/editor/connectioneditor.ui @@ -0,0 +1,418 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>ConnectionEditorBase</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>ConnectionEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>780</width> + <height>538</height> + </rect> + </property> + <property name="caption"> + <string>Edit Connections</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Edit Connections</b><p>Add and remove connections in the current form .</p><p>Select a signal and a corresponding slot then press the <b>Connect</b>-button to create a connection.</p><p>Select a connection from the list then press the <b>Disconnect</b>-button to delete the connection.</p></string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="KListView" row="3" column="0" rowspan="1" colspan="2"> + <column> + <property name="text"> + <string>Sender</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>Signal</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>Receiver</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>Slot</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <property name="name"> + <cstring>connectionView</cstring> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <property name="showSortIndicator"> + <bool>true</bool> + </property> + <property name="fullWidth"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Displays the connections between the sender and the receiver.</string> + </property> + </widget> + <widget class="KListBox" row="1" column="1"> + <property name="name"> + <cstring>slotBox</cstring> + </property> + <property name="whatsThis" stdset="0"> + <string><b>A list of slots for the receiver.</b><p>The slots that are displayed are only those which have arguments that correspond with the arguments of the signal that is currently selected in the Signal-list.</b></string> + </property> + </widget> + <widget class="KListBox" row="1" column="0"> + <property name="name"> + <cstring>signalBox</cstring> + </property> + <property name="whatsThis" stdset="0"> + <string>Displays the list of signals that the widget emits.</string> + </property> + </widget> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>labelSignal</cstring> + </property> + <property name="text"> + <string>Si&gnals:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>signalBox</cstring> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>comboSender</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget" row="0" column="1"> + <property name="name"> + <cstring>Layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>labelSlot</cstring> + </property> + <property name="text"> + <string>&Slots:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>slotBox</cstring> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>comboReceiver</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget" row="4" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>layout7</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KPushButton"> + <property name="name"> + <cstring>disconnectButton</cstring> + </property> + <property name="text"> + <string>&Disconnect</string> + </property> + <property name="accel"> + <string>Alt+D</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Remove the selected connection</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Remove the selected connection.</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer5</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>71</width> + <height>21</height> + </size> + </property> + </spacer> + <widget class="KPushButton"> + <property name="name"> + <cstring>okButton</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="accel"> + <string>Alt+O</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="KPushButton"> + <property name="name"> + <cstring>cancelButton</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="accel"> + <string>Alt+C</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer4</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>230</width> + <height>20</height> + </size> + </property> + </spacer> + </hbox> + </widget> + <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>layout8</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>TextLabel1</cstring> + </property> + <property name="text"> + <string>Connec&tions:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>connectionView</cstring> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Spacer2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>231</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="KPushButton"> + <property name="name"> + <cstring>connectButton</cstring> + </property> + <property name="text"> + <string>Co&nnect</string> + </property> + <property name="accel"> + <string>Alt+N</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Create connection</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Create a connection between a signal and a slot.</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Spacer3</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>211</width> + <height>20</height> + </size> + </property> + </spacer> + </hbox> + </widget> + </grid> +</widget> +<tabstops> + <tabstop>comboSender</tabstop> + <tabstop>signalBox</tabstop> + <tabstop>comboReceiver</tabstop> + <tabstop>slotBox</tabstop> + <tabstop>connectButton</tabstop> + <tabstop>connectionView</tabstop> + <tabstop>disconnectButton</tabstop> + <tabstop>okButton</tabstop> + <tabstop>cancelButton</tabstop> +</tabstops> +<slots> + <slot access="protected">init()</slot> + <slot access="protected">destroy()</slot> + <slot>addSlotClicked()</slot> + <slot access="protected">connectClicked()</slot> + <slot access="protected">connectionsChanged()</slot> + <slot access="protected">disconnectClicked()</slot> + <slot access="protected">receiverChanged( const QString & )</slot> + <slot access="protected">okClicked()</slot> + <slot access="protected">signalChanged()</slot> + <slot access="protected">slotsChanged()</slot> + <slot access="protected">cancelClicked()</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>klistview.h</includehint> + <includehint>klistbox.h</includehint> + <includehint>klistbox.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> +</includehints> +</UI> diff --git a/kommander/editor/connectioneditorimpl.cpp b/kommander/editor/connectioneditorimpl.cpp new file mode 100644 index 00000000..dafae5a7 --- /dev/null +++ b/kommander/editor/connectioneditorimpl.cpp @@ -0,0 +1,373 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#include "connectioneditorimpl.h" +#include "metadatabase.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "command.h" +#include "widgetfactory.h" +#include "pixmapchooser.h" +#include <qmetaobject.h> +#include <qlabel.h> +#include <qregexp.h> + +#include <klistbox.h> +#include <klistview.h> +#include <kpushbutton.h> +#include <kcombobox.h> +#include <klocale.h> + +static const char *const ignore_slots[] = { + "destroyed()", + //"setCaption(const QString&)", + "setIcon(const QPixmap&)", + //"setIconText(const QString&)", + "setMouseTracking(bool)", + "clearFocus()", + "setUpdatesEnabled(bool)", + "update()", + "update(int,int,int,int)", + "update(const QRect&)", + "repaint()", + "repaint(bool)", + "repaint(int,int,int,int,bool)", + "repaint(const QRect&,bool)", + "repaint(const QRegion&,bool)", + "repaint(int,int,int,int)", + "repaint(const QRect&)", + "repaint(const QRegion&)", + //"show()", + //"hide()", + "iconify()", + "showMinimized()", + "showMaximized()", + "showFullScreen()", + "showNormal()", + "polish()", + "constPolish()", + //"raise()", + //"lower()", + "stackUnder(QWidget*)", + //"move(int,int)", + "move(const QPoint&)", + //"resize(int,int)", + "resize(const QSize&)", + //"setGeometry(int,int,int,int)", + "setGeometry(const QRect&)", + "focusProxyDestroyed()", + "showExtension(bool)", + "setUpLayout()", + //"showDockMenu(const QPoint&)", + "init()", + "destroy()", + "deleteLater()", + 0 +}; + +static const char *const ignore_signals[] = { + "destroyed()", + "destroyed(QObject*)", + "accessibilityChanged(int)", + "accessibilityChanged(int,int)", + 0 +}; + + +ConnectionEditor::ConnectionEditor(QWidget* parent, QObject* sndr, QObject* rcvr, FormWindow* fw) + : ConnectionEditorBase(parent, 0, true), m_formWindow(fw) +{ + if (!rcvr || rcvr == m_formWindow) + rcvr = m_formWindow->mainContainer(); + if (!sndr || sndr == m_formWindow) + sndr = m_formWindow->mainContainer(); + m_sender = sndr; + m_receiver = rcvr; + + /* Create widget list */ + QStringList lst; + lst << m_formWindow->name(); + for (QPtrDictIterator<QWidget> it(*m_formWindow->widgets()); it.current(); ++it) + { + if (it.current()->isVisibleTo(this) && + !it.current()->inherits("QLayoutWidget") && + !it.current()->inherits("Spacer") && + qstrcmp(it.current()->name(), "central widget") && + !m_formWindow->isMainContainer(it.current()) && + !lst.contains(it.current()->name())) + lst << it.current()->name(); + } + + // Fill receiver combos with widget list +// fillWidgetList(comboReceiver, lst, m_receiver->name()); + + // Fill receiver combos with widget and action list + for (QPtrListIterator<QAction> it(m_formWindow->actionList()); it.current(); ++it) + lst << it.current()->name(); + lst.sort(); + fillWidgetList(comboReceiver, lst, m_receiver->name()); + fillWidgetList(comboSender, lst, m_sender->name()); + senderChanged(m_sender->name()); + fillConnectionsList(); + updateConnectButton(); + updateDisconnectButton(); + + // Connections + connect(comboSender, SIGNAL(activated(const QString&)), SLOT(senderChanged(const QString&))); + connect(comboReceiver, SIGNAL(activated(const QString&)), SLOT(receiverChanged(const QString&))); + connect(signalBox, SIGNAL(selectionChanged()), SLOT(updateConnectButton())); + connect(slotBox, SIGNAL(selectionChanged()), SLOT(updateConnectButton())); + connect(connectButton, SIGNAL(clicked()), SLOT(connectClicked())); + connect(disconnectButton, SIGNAL(clicked()), SLOT(disconnectClicked())); + connect(okButton, SIGNAL(clicked()), SLOT(okClicked())); + connect(cancelButton, SIGNAL(clicked()), SLOT(cancelClicked())); + connect(signalBox, SIGNAL(doubleClicked(QListBoxItem*)), SLOT(connectClicked())); + connect(slotBox, SIGNAL(doubleClicked(QListBoxItem*)), SLOT(connectClicked())); +} + +ConnectionEditor::~ConnectionEditor() +{ +} + +bool ConnectionEditor::isSignalIgnored(const char *signal) const +{ + for (int i = 0; ignore_signals[i]; i++) + if (!qstrcmp(signal, ignore_signals[i])) + return true; + return false; +} + +bool ConnectionEditor::isSlotIgnored(const QMetaData* md) +{ + if (md->access != QMetaData::Public && (md->access != QMetaData::Protected || + !m_formWindow->isMainContainer((QWidget*)m_receiver))) + return true; + for (int i = 0; ignore_slots[i]; i++) + if (!qstrcmp(md->name, ignore_slots[i])) + return true; + if (!m_formWindow->isMainContainer((QWidget *)m_receiver) && !qstrcmp(md->name, "close()")) + return true; + if (!qstrcmp(md->name, "setFocus()") && m_receiver->isWidgetType() && + ((QWidget*)m_receiver)->focusPolicy() == QWidget::NoFocus) + return true; + for (int i = 0; i<comboSender->count(); i++) + if (checkConnectArgs(MetaDataBase::normalizeSlot(signalBox->text(i)).latin1(), m_receiver, md->name)) + return false; + return true; +} + +QObject* ConnectionEditor::objectByName(const QString& s) const +{ + for (QPtrDictIterator <QWidget> it(*m_formWindow->widgets()); it.current(); ++it) + if (QString(it.current()->name()) == s) + return it.current(); + + for (QPtrListIterator<QAction> it(m_formWindow->actionList()); it.current(); ++it) + if (QString(it.current()->name()) == s) + return it.current(); + + return 0; +} + + +void ConnectionEditor::connectClicked() +{ + if (signalBox->currentItem() == -1 || slotBox->currentItem() == -1) + return; + if (hasConnection(m_sender->name(), signalBox->currentText(), m_receiver->name(), + slotBox->currentText())) + return; + MetaDataBase::Connection conn; + conn.sender = m_sender; + conn.signal = signalBox->currentText(); + conn.slot = slotBox->currentText(); + conn.receiver = m_receiver; + KListViewItem *i = new KListViewItem(connectionView, m_sender->name(), conn.signal, m_receiver->name(), + conn.slot); + i->setPixmap(0, PixmapChooser::loadPixmap("connecttool.xpm")); + connectionView->setCurrentItem(i); + connectionView->setSelected(i, true); + m_connections.insert(i, conn); + connectButton->setEnabled(false); + updateDisconnectButton(); +} + +void ConnectionEditor::disconnectClicked() +{ + QListViewItem *p_item = connectionView->currentItem(); + if (!p_item) + return; + + QMap <QListViewItem*, MetaDataBase::Connection>::Iterator it = m_connections.find(p_item); + if (it != m_connections.end()) + m_connections.remove(it); + delete p_item; + if (connectionView->currentItem()) + connectionView->setSelected(connectionView->currentItem(), true); + updateConnectButton(); + updateDisconnectButton(); +} + +void ConnectionEditor::okClicked() +{ + MacroCommand* rmConn = 0, *addConn = 0; + QString n = i18n("Connect/Disconnect the signals and slots of '%1' and '%2'").arg(m_sender->name()). + arg(m_receiver->name()); + QValueList <MetaDataBase::Connection>::Iterator cit; + if (!m_oldConnections.isEmpty()) + { + QPtrList <Command> commands; + for (cit = m_oldConnections.begin(); cit != m_oldConnections.end(); ++cit) + commands.append(new RemoveConnectionCommand(i18n("Remove Connection"), m_formWindow, *cit)); + rmConn = new MacroCommand(i18n("Remove Connections"), m_formWindow, commands); + } + if (!m_connections.isEmpty()) + { + QMap<QListViewItem*, MetaDataBase::Connection>::Iterator it = m_connections.begin(); + QPtrList<Command> commands; + for (; it != m_connections.end(); ++it) + { + MetaDataBase::Connection conn = *it; + commands.append(new AddConnectionCommand(i18n("Add Connection"), m_formWindow, conn)); + } + addConn = new MacroCommand(i18n("Add Connections"), m_formWindow, commands); + } + + if (rmConn || addConn) + { + QPtrList < Command > commands; + if (rmConn) + commands.append(rmConn); + if (addConn) + commands.append(addConn); + MacroCommand *cmd = new MacroCommand(n, m_formWindow, commands); + m_formWindow->commandHistory()->addCommand(cmd); + cmd->execute(); + } + + accept(); +} + +void ConnectionEditor::cancelClicked() +{ + reject(); +} + +void ConnectionEditor::senderChanged(const QString& s) +{ + QObject* p_object = objectByName(s); + if (!p_object) + return; + m_sender = p_object; + QStrList p_sigs = m_sender->metaObject()->signalNames(true); + signalBox->clear(); + for (QStrListIterator it(p_sigs); it.current(); ++it) + if (!isSignalIgnored(it.current()) && !signalBox->findItem(it.current(), Qt::ExactMatch)) + signalBox->insertItem(it.current()); + if (m_sender == m_formWindow->mainContainer()) + signalBox->insertStringList(MetaDataBase::signalList(m_formWindow)); + signalBox->sort(); + signalBox->setCurrentItem(signalBox->firstItem()); + // Update slots - some may (not) have their signal equivalents now. + receiverChanged(m_receiver->name()); +} + +void ConnectionEditor::receiverChanged(const QString& s) +{ + QObject* p_object = objectByName(s); + if (!p_object) + return; + m_receiver = p_object; + int n = m_receiver->metaObject()->numSlots(true); + slotBox->clear(); + for (int i = 0; i < n; ++i) + { + const QMetaData* md = m_receiver->metaObject()->slot(i, true); + if (!isSlotIgnored(md) && !slotBox->findItem(md->name, Qt::ExactMatch)) + slotBox->insertItem(md->name); + } + slotBox->sort(); + slotBox->setCurrentItem(slotBox->firstItem()); + updateConnectButton(); +} + +void ConnectionEditor::updateConnectButton() +{ + bool itemsSelected = signalBox->currentItem() != -1 && slotBox->currentItem() != -1; + bool notConnected = !itemsSelected || !hasConnection(m_sender->name(), signalBox->currentText(), + m_receiver->name(), slotBox->currentText()); + bool connectionAllowed = notConnected && checkConnectArgs(MetaDataBase::normalizeSlot(signalBox->currentText()).latin1(), + m_receiver, MetaDataBase::normalizeSlot(slotBox->currentText()).latin1()); + connectButton->setEnabled(itemsSelected && notConnected && connectionAllowed); +} + +void ConnectionEditor::updateDisconnectButton() +{ + disconnectButton->setEnabled((connectionView->currentItem())); +} + +bool ConnectionEditor::hasConnection(const QString& snder, const QString& signal, + const QString& rcvr, const QString& slot) const +{ + for (QListViewItemIterator it(connectionView); it.current(); ++it) + if (it.current()->text(0) == snder && + it.current()->text(1) == signal && + it.current()->text(2) == rcvr && it.current()->text(3) == slot) + return true; + return false; +} + +void ConnectionEditor::fillConnectionsList() +{ + connectionView->clear(); + m_connections.clear(); + m_oldConnections = MetaDataBase::connections(m_formWindow); + if (!m_oldConnections.isEmpty()) + { + QValueList <MetaDataBase::Connection>::Iterator it = m_oldConnections.begin(); + for (; it != m_oldConnections.end(); ++it) + { + if (m_formWindow->isMainContainer((QWidget*)(*it).receiver) && + !MetaDataBase::hasSlot(m_formWindow, MetaDataBase::normalizeSlot((*it).slot).latin1())) + continue; + MetaDataBase::Connection conn = *it; + KListViewItem *i = new KListViewItem(connectionView, conn.sender->name(), conn.signal, + conn.receiver->name(), conn.slot); + i->setPixmap(0, PixmapChooser::loadPixmap("connecttool.xpm")); + m_connections.insert(i, conn); + } + } + connectionView->setCurrentItem(connectionView->firstChild()); + if (connectionView->currentItem()) + connectionView->setSelected(connectionView->currentItem(), true); +} + +void ConnectionEditor::fillWidgetList(KComboBox* a_combo, const QStringList& items, const QString& defaultWidget) +{ + a_combo->insertStringList(items); + for (int i = 0; i < a_combo->count(); ++i) + if (a_combo->text(i) == defaultWidget) + { + a_combo->setCurrentItem(i); + return; + } + if (a_combo->count()) + a_combo->setCurrentItem(0); +} + +#include "connectioneditorimpl.moc" diff --git a/kommander/editor/connectioneditorimpl.h b/kommander/editor/connectioneditorimpl.h new file mode 100644 index 00000000..95c6887b --- /dev/null +++ b/kommander/editor/connectioneditorimpl.h @@ -0,0 +1,76 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef CONNECTIONEDITORIMPL_H +#define CONNECTIONEDITORIMPL_H + +#include "connectioneditor.h" +#include "metadatabase.h" + +#include <qmap.h> + +class QListViewItem; +class FormWindow; + +class ConnectionEditor : public ConnectionEditorBase +{ +Q_OBJECT public: + ConnectionEditor(QWidget* parent, QObject* sender, QObject* receiver, FormWindow* fw); + ~ConnectionEditor(); + +protected slots: + // Add current pair <signal, slot> to the list + void connectClicked(); + // Remove current pair <signal, slot> to the list + void disconnectClicked(); + // Lists all connections defined in current dialog + void fillConnectionsList(); + // Lists all widgets in sender or receiver combo + void fillWidgetList(KComboBox* a_combo, const QStringList& items, const QString& defaultWidget); + // Sender widget was changed - update signal list + void senderChanged(const QString & s); + // Receiver widget was changed - update slot list + void receiverChanged(const QString & s); + // Enable/disable 'Connect' button when pair <signal,slot> changes + void updateConnectButton(); + // Enable/disable 'Disconnect' button when selection changes + void updateDisconnectButton(); + // Accept and close button + void okClicked(); + // Cancel and close button + void cancelClicked(); + +private: + // Whether given signal should appear in the signal list + bool isSignalIgnored(const char*) const; + // Whether given slot should appear in the slot list + bool isSlotIgnored(const QMetaData* md); + // Finds widget by name + QObject* objectByName(const QString& s) const; + bool hasConnection(const QString & snder, const QString & signal, + const QString & rcvr, const QString & slot) const; + QMap <QListViewItem*, MetaDataBase::Connection> m_connections; + QValueList <MetaDataBase::Connection> m_oldConnections; + QObject* m_sender; + QObject* m_receiver; + FormWindow* m_formWindow; +}; + +#endif diff --git a/kommander/editor/createtemplate.ui b/kommander/editor/createtemplate.ui new file mode 100644 index 00000000..a6034d03 --- /dev/null +++ b/kommander/editor/createtemplate.ui @@ -0,0 +1,222 @@ +<!DOCTYPE UI><UI> +<class>CreateTemplate</class><comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget> + <class>QDialog</class> + <property stdset="1"> + <name>name</name> + <cstring>CreateTemplate</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>0</x> + <y>0</y> + <width>347</width> + <height>248</height> + </rect> + </property> + <property stdset="1"> + <name>caption</name> + <string>Create Template</string> + </property> + <property stdset="1"> + <name>sizeGripEnabled</name> + <bool>true</bool> + </property> + <grid> + <property stdset="1"> + <name>margin</name> + <number>11</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget row="0" column="0" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Template &name:</string> + </property> + <property> + <name>buddy</name> + <cstring>editName</cstring> + </property> + </widget> + <widget row="0" column="1" > + <class>QLineEdit</class> + <property stdset="1"> + <name>name</name> + <cstring>editName</cstring> + </property> + <property> + <name>toolTip</name> + <string>Name of the new template</string> + </property> + <property> + <name>whatsThis</name> + <string>Enter the name of the new template</string> + </property> + </widget> + <widget row="1" column="1" rowspan="2" colspan="1" > + <class>QListBox</class> + <property stdset="1"> + <name>name</name> + <cstring>listClass</cstring> + </property> + <property> + <name>toolTip</name> + <string>Class of the new template</string> + </property> + <property> + <name>whatsThis</name> + <string>Enter the name of the class which should be used as the template's base class</string> + </property> + </widget> + <widget row="3" column="0" rowspan="1" colspan="2" > + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout1</cstring> + </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <spacer> + <property> + <name>name</name> + <cstring>Spacer1</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>buttonCreate</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>C&reate</string> + </property> + <property stdset="1"> + <name>default</name> + <bool>true</bool> + </property> + <property> + <name>whatsThis</name> + <string>Creates the new template</string> + </property> + </widget> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>PushButton1</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Cancel</string> + </property> + <property> + <name>whatsThis</name> + <string>Closes the Dialog</string> + </property> + </widget> + </hbox> + </widget> + <widget row="1" column="0" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Baseclass for template:</string> + </property> + <property> + <name>buddy</name> + <cstring>listClass</cstring> + </property> + </widget> + <spacer row="2" column="0" > + <property> + <name>name</name> + <cstring>Spacer2</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Vertical</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </grid> +</widget> +<connections> + <connection> + <sender>buttonCreate</sender> + <signal>clicked()</signal> + <receiver>CreateTemplate</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>PushButton1</sender> + <signal>clicked()</signal> + <receiver>CreateTemplate</receiver> + <slot>reject()</slot> + </connection> +</connections> +</UI> diff --git a/kommander/editor/defs.cpp b/kommander/editor/defs.cpp new file mode 100644 index 00000000..fdf06ce9 --- /dev/null +++ b/kommander/editor/defs.cpp @@ -0,0 +1,78 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "defs.h" + +int size_type_to_int( QSizePolicy::SizeType t ) +{ + if ( t == QSizePolicy::Fixed ) + return 0; + if ( t == QSizePolicy::Minimum ) + return 1; + if ( t == QSizePolicy::Maximum ) + return 2; + if ( t == QSizePolicy::Preferred ) + return 3; + if ( t == QSizePolicy::MinimumExpanding ) + return 4; + if ( t == QSizePolicy::Expanding ) + return 5; + if ( t == QSizePolicy::Ignored ) + return 6; + return 0; +} + +QString size_type_to_string( QSizePolicy::SizeType t ) +{ + if ( t == QSizePolicy::Fixed ) + return "Fixed"; + if ( t == QSizePolicy::Minimum ) + return "Minimum"; + if ( t == QSizePolicy::Maximum ) + return "Maximum"; + if ( t == QSizePolicy::Preferred ) + return "Preferred"; + if ( t == QSizePolicy::MinimumExpanding ) + return "MinimumExpanding"; + if ( t == QSizePolicy::Expanding ) + return "Expanding"; + if ( t == QSizePolicy::Ignored ) + return "Ignored"; + return 0; +} + +QSizePolicy::SizeType int_to_size_type( int i ) +{ + if ( i == 0 ) + return QSizePolicy::Fixed; + if ( i == 1 ) + return QSizePolicy::Minimum; + if ( i == 2 ) + return QSizePolicy::Maximum; + if ( i == 3 ) + return QSizePolicy::Preferred; + if ( i == 4 ) + return QSizePolicy::MinimumExpanding; + if ( i == 5 ) + return QSizePolicy::Expanding; + if ( i == 6 ) + return QSizePolicy::Ignored; + return QSizePolicy::Preferred; +} diff --git a/kommander/editor/defs.h b/kommander/editor/defs.h new file mode 100644 index 00000000..ade3fa4b --- /dev/null +++ b/kommander/editor/defs.h @@ -0,0 +1,35 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef DEFS_H +#define DEFS_H + +#include <qsizepolicy.h> +#include <qstring.h> + +#define POINTER_TOOL 32000 +#define CONNECT_TOOL 32001 +#define ORDER_TOOL 32002 + +int size_type_to_int( QSizePolicy::SizeType t ); +QString size_type_to_string( QSizePolicy::SizeType t ); +QSizePolicy::SizeType int_to_size_type( int i ); + +#endif diff --git a/kommander/editor/filechooser.cpp b/kommander/editor/filechooser.cpp new file mode 100644 index 00000000..14bedb95 --- /dev/null +++ b/kommander/editor/filechooser.cpp @@ -0,0 +1,63 @@ +#include "filechooser.h" +#include <qlineedit.h> +#include <qpushbutton.h> +#include <kfiledialog.h> +#include <qlayout.h> + +FileChooser::FileChooser( QWidget *parent, const char *name ) + : QWidget( parent, name ), md( File ) +{ + QHBoxLayout *layout = new QHBoxLayout( this ); + layout->setMargin( 0 ); + + lineEdit = new QLineEdit( this, "filechooser_lineedit" ); + layout->addWidget( lineEdit ); + + connect( lineEdit, SIGNAL( textChanged( const QString & ) ), + this, SIGNAL( fileNameChanged( const QString & ) ) ); + + button = new QPushButton( "...", this, "filechooser_button" ); + button->setFixedWidth( button->fontMetrics().width( " ... " ) ); + layout->addWidget( button ); + + connect( button, SIGNAL( clicked() ), + this, SLOT( chooseFile() ) ); + + setFocusProxy( lineEdit ); +} + +void FileChooser::setMode( Mode m ) +{ + md = m; +} + +FileChooser::Mode FileChooser::mode() const +{ + return md; +} + +void FileChooser::setFileName( const QString &fn ) +{ + lineEdit->setText( fn ); +} + +QString FileChooser::fileName() const +{ + return lineEdit->text(); +} + +void FileChooser::chooseFile() +{ + QString fn; + if ( mode() == File ) + fn = KFileDialog::getOpenFileName( lineEdit->text(), QString::null, this ); + else + fn = KFileDialog::getExistingDirectory( lineEdit->text(),this ); + + if ( !fn.isEmpty() ) { + lineEdit->setText( fn ); + emit fileNameChanged( fn ); + } +} + +#include "filechooser.moc" diff --git a/kommander/editor/filechooser.h b/kommander/editor/filechooser.h new file mode 100644 index 00000000..e6bc98e3 --- /dev/null +++ b/kommander/editor/filechooser.h @@ -0,0 +1,42 @@ +#ifndef FILECHOOSER_H +#define FILECHOOSER_H + +#include <qwidget.h> + +class QLineEdit; +class QPushButton; + +class FileChooser : public QWidget +{ + Q_OBJECT + + Q_ENUMS( Mode ) + Q_PROPERTY( Mode mode READ mode WRITE setMode ) + Q_PROPERTY( QString fileName READ fileName WRITE setFileName ) + +public: + FileChooser( QWidget *parent = 0, const char *name = 0); + + enum Mode { File, Directory }; + + QString fileName() const; + Mode mode() const; + +public slots: + void setFileName( const QString &fn ); + void setMode( Mode m ); + +signals: + void fileNameChanged( const QString & ); + +private slots: + void chooseFile(); + +private: + QLineEdit *lineEdit; + QPushButton *button; + Mode md; + +}; + +#endif diff --git a/kommander/editor/formfile.cpp b/kommander/editor/formfile.cpp new file mode 100644 index 00000000..645b04ef --- /dev/null +++ b/kommander/editor/formfile.cpp @@ -0,0 +1,302 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +// Other includes +#include "formfile.h" +#include "timestamp.h" +#include "formwindow.h" +#include "command.h" +#include "mainwindow.h" +#include "resource.h" +#include "workspace.h" + +// Qt includes +#include <qfile.h> +#include <qregexp.h> +#include <qstatusbar.h> +#include <qtimer.h> + +// KDE includes +#include <kdebug.h> +#include <kfiledialog.h> +#include <klocale.h> +#include <kmessagebox.h> +#include <kstatusbar.h> +#include <kstdguiitem.h> + +#include <sys/stat.h> + +FormFile::FormFile(const QString &fn, bool temp) + : filename(fn), fileNameTemp(temp), fw(0) +{ + QTimer::singleShot(0, this, SLOT(init())); +} + +void FormFile::init() +{ + connect(this, SIGNAL(addedFormFile(FormFile *)), MainWindow::self->workspace(), + SLOT(formFileAdded(FormFile*))); + connect(this, SIGNAL(removedFormFile(FormFile *)), MainWindow::self->workspace(), + SLOT(formFileRemoved(FormFile*))); + emit addedFormFile(this); +} + +FormFile::~FormFile() +{ + if (formWindow()) + formWindow()->setFormFile(0); +} + +void FormFile::setFormWindow(FormWindow *f) +{ + if (f == fw) + return; + if (fw) + fw->setFormFile(0); + fw = f; + if (fw) + fw->setFormFile(this); +} + +void FormFile::setFileName(const QString &fn) +{ + if (fn == filename) + return; + if (fn.isEmpty()) { + fileNameTemp = true; + if (filename.find("unnamed")) + filename = createUnnamedFileName(); + return; + } + filename = fn; +} + +FormWindow *FormFile::formWindow() const +{ + return fw; +} + +QString FormFile::fileName() const +{ + return filename; +} + +QString FormFile::absFileName() const +{ + return filename; +} + + +bool FormFile::save(bool withMsgBox) +{ + if (!formWindow()) + return true; + if (fileNameTemp) + return saveAs(); + if (!isModified()) + return true; + else if (withMsgBox && !formWindow()->checkCustomWidgets()) + return false; + + Resource resource(MainWindow::self); + resource.setWidget(formWindow()); + if (!resource.save(filename, false)) + { + if (KMessageBox::questionYesNo(MainWindow::self, i18n("Failed to save file '%1'.\n" + "Do you want to use another file name?").arg(filename), QString::null, i18n("Try Another"), i18n("Do Not Try")) == KMessageBox::Yes) + return saveAs(); + else + return false; + } + MainWindow::self->statusBar()->message(i18n("'%1' saved.").arg(filename), 3000); + ::chmod(filename.local8Bit(), S_IRWXU); + setModified(false); + return true; +} + +bool FormFile::saveAs() +{ + QString f = fileName(); + if(fileNameTemp) + f = QString(formWindow()->name()).lower() + ".kmdr"; + bool saved = false; + while (!saved) { + QString fn = KFileDialog::getSaveFileName(QString::null, + i18n("*.kmdr|Kommander Files"), MainWindow::self, + i18n("Save Form '%1' As").arg(formWindow()->name())); + if (fn.isEmpty()) + return false; + QFileInfo fi(fn); + if (fi.extension() != "kmdr") + fn += ".kmdr"; + fileNameTemp = false; + filename = fn; + + QFileInfo relfi(filename); + if (relfi.exists()) { + if (KMessageBox::warningContinueCancel(MainWindow::self, + i18n("The file already exists. Do you wish to overwrite it?"), + i18n("Overwrite File?"), i18n("Overwrite")) == KMessageBox::Continue) + saved = true; + else + filename = f; + } + else + saved = true; + } + setModified(true); + return save(); +} + +bool FormFile::close() +{ + if (formWindow()) + return formWindow()->close(); + return true; +} + +bool FormFile::closeEvent() +{ + if (!isModified()) + { + emit removedFormFile(this); + QFile f(filename + ".backup"); + f.remove(); + return true; + } + + switch (KMessageBox::warningYesNoCancel(MainWindow::self, i18n("Dialog '%1' was modified." + "Do you want to save it?").arg(filename), i18n("Save File?"), KStdGuiItem::save(), KStdGuiItem::discard())) { + case KMessageBox::Yes: + if (!save()) + return false; + case KMessageBox::No: //fall through + MainWindow::self->workspace()->update(); + break; + case KMessageBox::Cancel: + return false; + default: + break; + } + + emit removedFormFile(this); + setModified(false); + QFile f(filename + ".backup"); + f.remove(); + return true; +} + +void FormFile::setModified(bool m) +{ + setFormWindowModified(m); +} + +bool FormFile::isModified() +{ + return isFormWindowModified(); +} + +bool FormFile::isFormWindowModified() const +{ + if (!formWindow() || !formWindow()->commandHistory()) + return false; + return formWindow()->commandHistory()->isModified(); +} + +void FormFile::setFormWindowModified(bool m) +{ + if (m == isFormWindowModified() || !formWindow() || !formWindow()->commandHistory()) + return; + formWindow()->commandHistory()->setModified(m); + emit somethingChanged(this); +} + +void FormFile::showFormWindow() +{ + if (formWindow()) + { + formWindow()->setFocus(); + return; + } + MainWindow::self->openFormWindow(filename, true, this); +} + + +static int ui_counter = 0; +QString FormFile::createUnnamedFileName() +{ + return i18n("unnamed") + QString::number(++ui_counter) + QString(".kmdr"); +} + +QString FormFile::formName() const +{ + FormFile* that = (FormFile*) this; + if (formWindow()) { + that->cachedFormName = formWindow()->name(); + return cachedFormName; + } + if (!cachedFormName.isNull()) + return cachedFormName; + QFile f(filename); + if (f.open(IO_ReadOnly)) + { + QTextStream ts(&f); + QString line; + QString className; + while (!ts.eof()) + { + line = ts.readLine(); + if (!className.isEmpty()) + { + int end = line.find("</class>"); + if (end == -1) + className += line; + else + { + className += line.left(end); + break; + } + continue; + } + int start; + if ((start = line.find("<class>")) != -1) + { + int end = line.find("</class>"); + if (end == -1) + className = line.mid(start + 7); + else + { + className = line.mid(start + 7, end - (start + 7)); + break; + } + } + } + that->cachedFormName = className; + } + if (cachedFormName.isEmpty()) + that->cachedFormName = filename; + return cachedFormName; +} + +void FormFile::formWindowChangedSomehow() +{ + emit somethingChanged(this); +} + +#include "formfile.moc" diff --git a/kommander/editor/formfile.h b/kommander/editor/formfile.h new file mode 100644 index 00000000..39fecc67 --- /dev/null +++ b/kommander/editor/formfile.h @@ -0,0 +1,74 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. �All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#ifndef FORMFILE_H +#define FORMFILE_H + +#include <qobject.h> +#include "timestamp.h" +#include "metadatabase.h" + +class FormWindow; + +class FormFile : public QObject +{ + Q_OBJECT + +public: + FormFile(const QString &fn, bool temp); + ~FormFile(); + + void setFormWindow( FormWindow *f ); + void setFileName( const QString &fn ); + void setModified(bool m); + FormWindow *formWindow() const; + QString fileName() const; + QString absFileName() const; + bool save( bool withMsgBox = TRUE ); + bool saveAs(); + bool close(); + bool closeEvent(); + bool isModified(); + void showFormWindow(); + static QString createUnnamedFileName(); + QString formName() const; + bool hasTempFileName() const {return fileNameTemp;} + +signals: + void addedFormFile(FormFile*); + void removedFormFile(FormFile*); + void somethingChanged(FormFile*); + +private slots: + void formWindowChangedSomehow(); + void init(); + +private: + bool isFormWindowModified() const; + void setFormWindowModified( bool m ); + +private: + QString filename; + bool fileNameTemp; + FormWindow *fw; + QString cachedFormName; + +}; + +#endif diff --git a/kommander/editor/formsettings.ui b/kommander/editor/formsettings.ui new file mode 100644 index 00000000..321de024 --- /dev/null +++ b/kommander/editor/formsettings.ui @@ -0,0 +1,338 @@ +<!DOCTYPE UI><UI version="3.2" stdsetdef="1"> +<class>FormSettingsBase</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>FormSettingsBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>497</width> + <height>490</height> + </rect> + </property> + <property name="caption"> + <string>Form Settings</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Form Settings</b><p>Change settings for the form. Settings like <b>Comment</b> and <b>Author</b> are for your own use and are not required.</p></string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget" row="2" column="0"> + <property name="name"> + <cstring>Layout4</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="KPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="KPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + <widget class="QGroupBox" row="1" column="0"> + <property name="name"> + <cstring>GroupBox2</cstring> + </property> + <property name="title"> + <string>La&youts</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QSpinBox" row="0" column="1"> + <property name="name"> + <cstring>spinMargin</cstring> + </property> + <property name="value"> + <number>11</number> + </property> + </widget> + <widget class="QSpinBox" row="1" column="1"> + <property name="name"> + <cstring>spinSpacing</cstring> + </property> + <property name="value"> + <number>6</number> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>TextLabel1_3</cstring> + </property> + <property name="text"> + <string>Default mar&gin:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>spinMargin</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>TextLabel2_2</cstring> + </property> + <property name="text"> + <string>D&efault spacing:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>spinSpacing</cstring> + </property> + </widget> + </grid> + </widget> + <widget class="QGroupBox" row="0" column="0"> + <property name="name"> + <cstring>GroupBox1</cstring> + </property> + <property name="frameShape"> + <enum>Box</enum> + </property> + <property name="frameShadow"> + <enum>Sunken</enum> + </property> + <property name="title"> + <string>&Settings</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QMultiLineEdit" row="3" column="1" rowspan="2" colspan="1"> + <property name="name"> + <cstring>editComment</cstring> + </property> + <property name="whatsThis" stdset="0"> + <string>Enter a comment about the form.</string> + </property> + </widget> + <spacer row="4" column="0"> + <property name="name"> + <cstring>Spacer1</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>130</height> + </size> + </property> + </spacer> + <widget class="QLabel" row="3" column="0"> + <property name="name"> + <cstring>TextLabel2</cstring> + </property> + <property name="text"> + <string>Co&mment:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>editComment</cstring> + </property> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>TextLabel1_2_2</cstring> + </property> + <property name="text"> + <string>&License:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>editAuthor</cstring> + </property> + </widget> + <widget class="KLineEdit" row="2" column="1"> + <property name="name"> + <cstring>editLicense</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>Enter your name</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Enter your name.</string> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>TextLabel1_2_3</cstring> + </property> + <property name="text"> + <string>&Version:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>editAuthor</cstring> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>TextLabel1_2</cstring> + </property> + <property name="text"> + <string>A&uthor:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>editAuthor</cstring> + </property> + </widget> + <widget class="KLineEdit" row="0" column="1"> + <property name="name"> + <cstring>editAuthor</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>Enter your name</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Enter your name.</string> + </property> + </widget> + <widget class="KLineEdit" row="1" column="1"> + <property name="name"> + <cstring>editVersion</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>Enter your name</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Enter your name.</string> + </property> + </widget> + </grid> + </widget> + </grid> +</widget> +<customwidgets> +</customwidgets> +<connections> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>FormSettingsBase</receiver> + <slot>reject()</slot> + </connection> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>FormSettingsBase</receiver> + <slot>okClicked()</slot> + </connection> +</connections> +<tabstops> + <tabstop>editAuthor</tabstop> + <tabstop>editVersion</tabstop> + <tabstop>editLicense</tabstop> + <tabstop>editComment</tabstop> + <tabstop>spinMargin</tabstop> + <tabstop>spinSpacing</tabstop> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> +</tabstops> +<slots> + <slot>okClicked()</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>klineedit.h</includehint> + <includehint>klineedit.h</includehint> + <includehint>klineedit.h</includehint> +</includehints> +</UI> diff --git a/kommander/editor/formsettingsimpl.cpp b/kommander/editor/formsettingsimpl.cpp new file mode 100644 index 00000000..4daec8ba --- /dev/null +++ b/kommander/editor/formsettingsimpl.cpp @@ -0,0 +1,58 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2005 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#include "formsettingsimpl.h" +#include "formwindow.h" +#include "metadatabase.h" +#include "command.h" +#include "asciivalidator.h" +#include "mainwindow.h" + +#include <qmultilineedit.h> +#include <klineedit.h> +#include <qspinbox.h> + +FormSettings::FormSettings( QWidget *parent, FormWindow *fw ) + : FormSettingsBase( parent, 0, true ), formwindow( fw ) +{ + MetaDataBase::MetaInfo info = MetaDataBase::metaInfo(fw); + editAuthor->setText(info.author); + editVersion->setText(info.version); + editLicense->setText(info.license); + editComment->setText(info.comment); + spinSpacing->setValue(formwindow->layoutDefaultSpacing()); + spinMargin->setValue(formwindow->layoutDefaultMargin()); +} + +void FormSettings::okClicked() +{ + MetaDataBase::MetaInfo info; + info.author = editAuthor->text(); + info.version = editVersion->text(); + info.license = editLicense->text(); + info.comment = editComment->text(); + MetaDataBase::setMetaInfo(formwindow, info); + formwindow->commandHistory()->setModified(true); + + formwindow->setLayoutDefaultSpacing(spinSpacing->value()); + formwindow->setLayoutDefaultMargin(spinMargin->value()); + accept(); +} + +#include "formsettingsimpl.moc" + diff --git a/kommander/editor/formsettingsimpl.h b/kommander/editor/formsettingsimpl.h new file mode 100644 index 00000000..f33c2194 --- /dev/null +++ b/kommander/editor/formsettingsimpl.h @@ -0,0 +1,43 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef FORMSETTINGSIMPL_H +#define FORMSETTINGSIMPL_H + +#include "formsettings.h" + +class FormWindow; + +class FormSettings : public FormSettingsBase +{ + Q_OBJECT + +public: + FormSettings( QWidget *parent, FormWindow *fw ); + +protected slots: + void okClicked(); + +private: + FormWindow *formwindow; + +}; + +#endif diff --git a/kommander/editor/formwindow.cpp b/kommander/editor/formwindow.cpp new file mode 100644 index 00000000..0aa9b122 --- /dev/null +++ b/kommander/editor/formwindow.cpp @@ -0,0 +1,2609 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +// Qt includes +#include <qaccel.h> +#include <qapplication.h> +#include <qbitmap.h> +#include <qevent.h> +#include <qfeatures.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qmap.h> +#include <qmetaobject.h> +#include <qobjectlist.h> +#include <qpainter.h> +#include <qpalette.h> +#include <qpen.h> +#include <qpixmapcache.h> +#include <qpopupmenu.h> +#include <qpushbutton.h> +#include <qsizegrip.h> +#include <qspinbox.h> +#include <qstatusbar.h> +#include <qtimer.h> +#include <qtooltip.h> +#include <qwhatsthis.h> + +// KDE includes +#include <klocale.h> +#include <kmessagebox.h> +#include <kstatusbar.h> + +// Other includes +#include "formwindow.h" +#include "defs.h" +#include "mainwindow.h" +#include "widgetfactory.h" +#include "sizehandle.h" +#include "metadatabase.h" +#include "resource.h" +#include "layout.h" +#include "connectioneditorimpl.h" +#include "widgetdatabase.h" +#include "pixmapchooser.h" +#include "orderindicator.h" +#include "hierarchyview.h" + +#include "globaldefs.h" +#include "formfile.h" + +#include <stdlib.h> + + +static void setCursorToAll(const QCursor &c, QWidget *start) +{ + start->setCursor(c); + QObjectList *l = (QObjectList*)start->children(); + if (l) + for (QObject *o = l->first(); o; o = l->next()) + { + if (o->isWidgetType() && !o->inherits("SizeHandle")) + setCursorToAll(c, ((QWidget*)o)); + } +} + +static void restoreCursors(QWidget *start, FormWindow *fw) +{ + if (fw->widgets()->find(start)) + start->setCursor(MetaDataBase::cursor(start)); + else + start->setCursor(Qt::ArrowCursor); + QObjectList *l = (QObjectList*)start->children(); + if (l) + for (QObject *o = l->first(); o; o = l->next()) + { + if (o->isWidgetType() && !o->inherits("SizeHandle")) + restoreCursors(((QWidget*)o), fw); + } +} + + +/* + The FormWindow is the widget which is used as editor for forms. It + handles inserting, deleting, moving, resizing, etc. of widgets. + + Normally multiple formwindows are used at the same time in the + Designer. So each formwindow has its own undo/redo buffer, etc. + + Also the formwindow has some signals to inform e.g. about selection + changes which is interesting for the PropertyEditor. + + For handling the events of the child widgets (moving, etc.) the + handleMousePress(), etc. functions are called from the application + event filter which is implemented in MainWindow::eventFilter(). +*/ + +FormWindow::FormWindow(FormFile *f, MainWindow *mw, QWidget *parent, const char *name) + : QWidget(parent, name, WDestructiveClose), mainwindow(mw), + commands(100), pixInline(true) +{ + ff = f; + init(); + initSlots(); +} + +FormWindow::FormWindow(FormFile *f, QWidget *parent, const char *name) + : QWidget(parent, name, WDestructiveClose), mainwindow(0), + commands(100), pixInline(true) +{ + ff = f; + init(); +} + +void FormWindow::init() +{ + MetaDataBase::addEntry(this); + ff->setFormWindow(this); + propertyWidget = 0; + toolFixed = false; + checkedSelectionsForMove = false; + mContainer = 0; + connectSender = connectReceiver = 0; + currTool = POINTER_TOOL; + unclippedPainter = 0; + widgetPressed = false; + drawRubber = false; + setFocusPolicy(ClickFocus); + sizePreviewLabel = 0; + checkSelectionsTimer = new QTimer(this, "checkSelectionsTimer"); + connect(checkSelectionsTimer, SIGNAL(timeout()), + this, SLOT(invalidCheckedSelections())); + updatePropertiesTimer = new QTimer(this); + connect(updatePropertiesTimer, SIGNAL(timeout()), + this, SLOT(updatePropertiesTimerDone())); + showPropertiesTimer = new QTimer(this); + connect(showPropertiesTimer, SIGNAL(timeout()), + this, SLOT(showPropertiesTimerDone())); + selectionChangedTimer = new QTimer(this); + connect(selectionChangedTimer, SIGNAL(timeout()), + this, SLOT(selectionChangedTimerDone())); + insertParent = 0; + connect(&commands, SIGNAL(undoRedoChanged(bool, bool, const QString &, const QString &)), + this, SIGNAL(undoRedoChanged(bool, bool, const QString &, const QString &))); + propShowBlocked = false; + + setIcon(PixmapChooser::loadPixmap("form.xpm", PixmapChooser::Mini)); + + connect(&commands, SIGNAL(modificationChanged(bool)), + this, SLOT(modificationChanged(bool))); + buffer = 0; + + QWidget *w = WidgetFactory::create(WidgetDatabase::idFromClassName("QFrame"), this); + setMainContainer(w); + propertyWidget = w; + targetContainer = 0; + hadOwnPalette = false; + + defSpacing = BOXLAYOUT_DEFAULT_SPACING; + defMargin = BOXLAYOUT_DEFAULT_MARGIN; +} + +void FormWindow::setMainWindow(MainWindow *w) +{ + mainwindow = w; + MetaDataBase::addEntry(this); + initSlots(); +} + +void FormWindow::initSlots() +{ +} + +FormWindow::~FormWindow() +{ + if (MainWindow::self->objectHierarchy()->formWindow() == this) + MainWindow::self->objectHierarchy()->setFormWindow(0, 0); + MetaDataBase::clear(this); + if (ff) + ff->setFormWindow(0); +} + +void FormWindow::closeEvent(QCloseEvent *e) +{ + if (ff->closeEvent() && mainwindow->unregisterClient(this)) + e->accept(); + else + e->ignore(); +} + +void FormWindow::paintGrid(QWidget *w, QPaintEvent *e) +{ + if (!mainWindow()->showGrid()) + return; + QPixmap grid; + QString grid_name; + grid_name.sprintf("FormWindowGrid_%d_%d", mainWindow()->grid().x(), mainWindow()->grid().y()); + if(!QPixmapCache::find(grid_name, grid)) { + grid = QPixmap(350 + (350 % mainWindow()->grid().x()), 350 + (350 % mainWindow()->grid().y())); + grid.fill(colorGroup().color(QColorGroup::Foreground)); + QBitmap mask(grid.width(), grid.height()); + mask.fill(color0); + QPainter p(&mask); + p.setPen(color1); + for (int y = 0; y < grid.width(); y += mainWindow()->grid().y()) + for (int x = 0; x < grid.height(); x += mainWindow()->grid().x()) + p.drawPoint(x, y); + grid.setMask(mask); + QPixmapCache::insert(grid_name, grid); + } + QPainter p(w); + p.setClipRegion(e->rect()); + p.drawTiledPixmap(QRect(0, 0, width(), height()), grid); +} + + +/*For operations like drawing a rubber band or drawing the rect + when inserting a new widget, a unclipped painter (which draws also + on child widgets) is needed. This method does all the initialization. +*/ + +void FormWindow::beginUnclippedPainter(bool doNot) +{ + endUnclippedPainter(); + bool unclipped = testWFlags(WPaintUnclipped); + setWFlags(WPaintUnclipped); + unclippedPainter = new QPainter; + unclippedPainter->begin(this); + if (!unclipped) + clearWFlags(WPaintUnclipped); + if (doNot) + { + unclippedPainter->setPen(QPen(color0, 2)); + unclippedPainter->setRasterOp(NotROP); + } +} + +void FormWindow::endUnclippedPainter() +{ + if (unclippedPainter) + unclippedPainter->end(); + delete unclippedPainter; + unclippedPainter = 0; +} + +QPoint FormWindow::gridPoint(const QPoint &p) +{ + return QPoint((p.x() / grid().x()) * grid().x(), + (p.y() / grid().y()) * grid().y()); +} + +void FormWindow::drawSizePreview(const QPoint &pos, const QString& text) +{ + unclippedPainter->save(); + unclippedPainter->setPen(QPen(colorGroup().foreground(), 1 )); + unclippedPainter->setRasterOp(CopyROP); + if (!sizePreviewPixmap.isNull()) + unclippedPainter->drawPixmap(sizePreviewPos, sizePreviewPixmap); + if (text.isNull()) { + sizePreviewPixmap = QPixmap(); // set null again + unclippedPainter->restore(); + return; + } + QRect r = fontMetrics().boundingRect(0, 0, 0, 0, AlignCenter, text); + r = QRect(pos + QPoint(10, 10), r.size() + QSize(5, 5)); + + checkPreviewGeometry(r); + + sizePreviewPos = r.topLeft(); + sizePreviewPixmap = QPixmap::grabWindow(winId(), r.x(), r.y(), r.width(), r.height()); + unclippedPainter->setBrush(QColor(255, 255, 128)); + unclippedPainter->drawRect(r); + unclippedPainter->drawText(r, AlignCenter, text); + unclippedPainter->restore(); +} + +void FormWindow::insertWidget() +{ + if (!insertParent || currTool == POINTER_TOOL) + return; + + bool useSizeHint = !oldRectValid || (currRect.width() < 2 && currRect.height() < 2); + Orientation orient = Horizontal; + QString n = WidgetDatabase::className(currTool); + if (useSizeHint && (n == "Spacer" || n == "QSlider" || n == "Line" || n == "QScrollBar")) { + QPopupMenu m(mainWindow()); + m.insertItem(i18n("&Horizontal")); + int ver = m.insertItem(i18n("&Vertical")); + int r = m.exec(QCursor::pos()); + if (r == ver) + orient = Vertical; + } + + QWidget *w = WidgetFactory::create(currTool, insertParent, 0, true, &currRect, orient); + if (!w) + return; + + if (!savePixmapInline() && currTool == WidgetDatabase::idFromClassName("PixmapLabel")) + ((QLabel*)w)->setPixmap(PixmapChooser::loadPixmap("image.xpm")); + int id = WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)); + if (WidgetDatabase::isCustomWidget(id)) { + QWhatsThis::add(w, i18n("<b>A %1 (custom widget)</b> " + "<p>Click <b>Edit Custom Widgets...</b> in the <b>Tools|Custom</b> " + "menu to add and change custom widgets. You can add " + "properties as well as signals and slots to integrate custom widgets into " + "<i>Qt Designer</i>, and provide a pixmap which will be used to represent " + "the widget on the form.</p>") + .arg(WidgetDatabase::toolTip(id))); + QToolTip::add(w, i18n("A %1 (custom widget)").arg(WidgetDatabase::toolTip(id))); + } + else + { + QString tt = WidgetDatabase::toolTip(id); + QString wt = WidgetDatabase::whatsThis(id); + if (!wt.isEmpty() && !tt.isEmpty()) + QWhatsThis::add(w, i18n("<b>A %1</b><p>%2</p>").arg(tt).arg(wt)); + } + + QString s = w->name(); + unify(w, s, true); + w->setName(s); + insertWidget(w); + QRect r(currRect); + if (!oldRectValid || (currRect.width() < 2 && currRect.height() < 2)) + r = QRect(rectAnchor, QSize(0, 0)); + + QPoint p = r.topLeft(); + p = mapToGlobal(p); + p = insertParent->mapFromGlobal(p); + r = QRect(p, r.size()); + if (useSizeHint) + { + r.setWidth(w->sizeHint().width()); + r.setHeight(w->sizeHint().height()); + } + + if (r.width() < 2 * grid().x()) + r.setWidth(2 * grid().x()); + if (r.height() < 2 * grid().y()) + r.setHeight(2 * grid().y()); + + const QObjectList *l = insertParent->children(); + QObjectListIt it(*l); + QWidgetList lst; + if (WidgetDatabase::isContainer(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)))) + for (; it.current();) { + QObject *o = it.current(); + ++it; + if (o->isWidgetType() && ((QWidget*)o)->isVisibleTo(this) && + insertedWidgets.find((QWidget*)o) && o != w) + { + QRect r2(((QWidget*)o)->pos(), ((QWidget*)o)->size()); + if (r.contains(r2)) + lst.append((QWidget*)o); + } + } + + if (!lst.isEmpty()) + { + QWidget *pw = WidgetFactory::containerOfWidget(w); + QValueList<QPoint> op, np; + for (QWidget *i = lst.first(); i; i = lst.next()) + { + op.append(i->pos()); + QPoint pos = pw->mapFromGlobal(i->mapToGlobal(QPoint(0, 0))); + pos -= r.topLeft(); + np.append(pos); + } + MoveCommand *mv = new MoveCommand(i18n("Reparent Widgets"), this, lst, op, np, insertParent, pw); + if (!toolFixed) + mainwindow->resetTool(); + else + setCursorToAll(CrossCursor, w); + + InsertCommand *cmd = new InsertCommand(i18n("Insert %1").arg(w->name()), this, w, r); + + QPtrList<Command> commands; + commands.append(mv); + commands.append(cmd); + + MacroCommand *mc = new MacroCommand(i18n("Insert %1").arg(w->name()), this, commands); + commandHistory()->addCommand(mc); + mc->execute(); + } + else + { + if (!toolFixed) + mainwindow->resetTool(); + else + setCursorToAll(CrossCursor, w); + + InsertCommand *cmd = new InsertCommand(i18n("Insert %1").arg(w->name()), this, w, r); + commandHistory()->addCommand(cmd); + cmd->execute(); + } +} + +void FormWindow::insertWidget(QWidget *w, bool checkName) +{ + if (checkName) { + QString s = w->name(); + unify(w, s, true); + w->setName(s); + } + + MetaDataBase::addEntry(w); + int id = WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)); + if (WidgetDatabase::isCustomWidget(id)) + { + QWhatsThis::add(w, i18n("<b>A %1 (custom widget)</b> " + "<p>Click <b>Edit Custom Widgets...</b> in the <b>Tools|Custom</b> " + "menu to add and change custom widgets. You can add " + "properties as well as signals and slots to integrate custom widgets into " + "<i>Qt Designer</i>, and provide a pixmap which will be used to represent " + "the widget on the form.</p>") + .arg(WidgetDatabase::toolTip(id))); + QToolTip::add(w, i18n("A %1 (custom widget)").arg(WidgetDatabase::toolTip(id))); + } + else + { + QString tt = WidgetDatabase::toolTip(id); + QString wt = WidgetDatabase::whatsThis(id); + if (!wt.isEmpty() && !tt.isEmpty()) + QWhatsThis::add(w, i18n("<b>A %1</b><p>%2</p>").arg(tt).arg(wt)); + } + + restoreCursors(w, this); + widgets()->insert(w, w); + w->show(); +} + +void FormWindow::removeWidget(QWidget *w) +{ + MetaDataBase::removeEntry(w); + widgets()->take(w); +} + +void FormWindow::handleContextMenu(QContextMenuEvent *e, QWidget *w) +{ + switch (currTool) { + case POINTER_TOOL: + if (!isMainContainer(w) && qstrcmp(w->name(), "central widget")) + { // press on a child widget + raiseChildSelections(w); // raise selections and select widget + selectWidget(w); + // if widget is laid out, find the first non-laid out super-widget + QWidget *realWidget = w; // but store the original one + while (w->parentWidget() && (WidgetFactory::layoutType(w->parentWidget()) != + WidgetFactory::NoLayout || !insertedWidgets.find(w))) + w = w->parentWidget(); + if (mainContainer()->inherits("QMainWindow") && + ((QMainWindow*)mainContainer())->centralWidget() == realWidget) + { + e->accept(); + mainwindow->popupFormWindowMenu(e->globalPos(), this); + } + else + { + e->accept(); + mainwindow->popupWidgetMenu(e->globalPos(), this, realWidget); + } + } + else + { + e->accept(); + clearSelection(); + mainwindow->popupFormWindowMenu(e->globalPos(), this); + } + break; + default: + break; + } +} + +void FormWindow::handleMousePress(QMouseEvent *e, QWidget *w) +{ + checkedSelectionsForMove = false; + checkSelectionsTimer->stop(); + if (!sizePreviewLabel) { + sizePreviewLabel = new QLabel(this); + sizePreviewLabel->hide(); + sizePreviewLabel->setBackgroundColor(QColor(255, 255, 128)); + sizePreviewLabel->setFrameStyle(QFrame::Plain | QFrame::Box); + } + + switch (currTool) { + case POINTER_TOOL: + if (!isMainContainer(w) && qstrcmp(w->name(), "central widget") != 0) + { // press on a child widget + // if the clicked widget is not in a layout, raise it + if (!w->parentWidget() || WidgetFactory::layoutType(w->parentWidget()) == WidgetFactory::NoLayout) + w->raise(); + if ((e->state() & ControlButton)) + { // with control pressed, always start rubber band selection + drawRubber = true; + currRect = QRect(0, 0, -1, -1); + startRectDraw(mapFromGlobal(e->globalPos()), e->globalPos(), this, Rubber); + break; + } + + bool sel = isWidgetSelected(w); + if (!((e->state() & ControlButton) || (e->state() & ShiftButton))) + { // control not pressed... + if (!sel) // ...and widget no selectted: unselect all + clearSelection(false); + else + { // ...widget selected + // only if widget has a layout (it is a layout meta widget or a laid out container!), + // unselect its childs + if (WidgetFactory::layoutType(w) != WidgetFactory::NoLayout) + { + QObjectList *l = w->queryList("QWidget"); + setPropertyShowingBlocked(true); + for (QObject *o = l->first(); o; o = l->next()) + { + if (!o->isWidgetType()) + continue; + if (insertedWidgets.find((QWidget*)o)) + selectWidget((QWidget*)o, false); + } + setPropertyShowingBlocked(false); + delete l; + } + } + qApp->processEvents(); + } + if (((e->state() & ControlButton) || (e->state() & ShiftButton)) && + sel && e->button() == LeftButton) + { // control pressed and selected, unselect widget + selectWidget(w, false); + break; + } + + raiseChildSelections(w); // raise selections and select widget + selectWidget(w); + + // if widget is laid out, find the first non-laid out super-widget + while (w->parentWidget() && + (WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout + || !insertedWidgets.find(w))) + w = w->parentWidget(); + + if (e->button() == LeftButton) + { // left button: store original geometry and more as the widget might start moving + widgetPressed = true; + widgetGeom = QRect(w->pos(), w->size()); + oldPressPos = w->mapFromGlobal(e->globalPos()); + origPressPos = oldPressPos; + checkedSelectionsForMove = false; + moving.clear(); + if (w->parentWidget() && !isMainContainer(w->parentWidget()) && + !isCentralWidget(w->parentWidget())) + { + targetContainer = w->parentWidget(); + hadOwnPalette = w->parentWidget()->ownPalette(); + restorePalette = w->parentWidget()->palette(); + } + } + } + else + { // press was on the formwindow + if (e->button() == LeftButton) + { // left button: start rubber selection and show formwindow properties + drawRubber = true; + if (!((e->state() & ControlButton) || (e->state() & ShiftButton))) + { + clearSelection(false); + QObject *opw = propertyWidget; + propertyWidget = mainContainer(); + if (opw->isWidgetType()) + repaintSelection((QWidget*)opw); + } + currRect = QRect(0, 0, -1, -1); + startRectDraw(mapFromGlobal(e->globalPos()), e->globalPos(), this, Rubber); + } + } + break; + case CONNECT_TOOL: + if (e->button() != LeftButton) + break; + saveBackground(); + mainWindow()->statusBar()->message(i18n("Connect '%1' with...").arg(w->name())); + connectStartPos = mapFromGlobal(e->globalPos()); + currentConnectPos = mapFromGlobal(e->globalPos()); + connectSender = designerWidget(w); + connectReceiver = connectableObject(designerWidget(w), connectReceiver); + beginUnclippedPainter(false); + drawConnectLine(); + break; + case ORDER_TOOL: + if (!isMainContainer(w)) + { // press on a child widget + orderedWidgets.removeRef(w); + orderedWidgets.append(w); + for (QWidget *wid = orderedWidgets.last(); wid; wid = orderedWidgets.prev()) + { + int i = stackedWidgets.findRef(wid); + if (i != -1) + { + stackedWidgets.removeRef(wid); + stackedWidgets.insert(0, wid); + } + } + QWidgetList oldl = MetaDataBase::tabOrder(this); + TabOrderCommand *cmd = new TabOrderCommand(i18n("Change Tab Order"), this, + oldl, stackedWidgets); + cmd->execute(); + commandHistory()->addCommand(cmd, true); + updateOrderIndicators(); + } + break; + default: // any insert widget tool + if (e->button() == LeftButton) + { + insertParent = WidgetFactory::containerOfWidget(mainContainer()); + // default parent for new widget is the formwindow + if (!isMainContainer(w)) + { // press was not on formwindow, check if we can find another parent + QWidget *wid = w; + for (;;) + { + int id = WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(wid)); + if ((WidgetDatabase::isContainer(id) || wid == mainContainer()) && + !wid->inherits("QLayoutWidget") && !wid->inherits("QSplitter")) + { + insertParent = WidgetFactory::containerOfWidget(wid); // found another parent, store it + break; + } + else + { + wid = wid->parentWidget(); + if (!wid) + break; + } + } + } + startRectDraw(w->mapFromGlobal(e->globalPos()), e->globalPos(), w, Insert); + } + break; + } +} + +void FormWindow::handleMouseDblClick(QMouseEvent *, QWidget *w) +{ + switch (currTool) { + case ORDER_TOOL: + if (!isMainContainer(w)) + { // press on a child widget + orderedWidgets.clear(); + orderedWidgets.append(w); + for (QWidget *wid = orderedWidgets.last(); wid; wid = orderedWidgets.prev()) + { + int i = stackedWidgets.findRef(wid); + if (i != -1) + { + stackedWidgets.removeRef(wid); + stackedWidgets.insert(0, wid); + } + } + QWidgetList oldl = MetaDataBase::tabOrder(this); + TabOrderCommand *cmd = new TabOrderCommand(i18n("Change Tab Order"), this, oldl, stackedWidgets); + cmd->execute(); + commandHistory()->addCommand(cmd, true); + updateOrderIndicators(); + } + default: + break; + } +} + +void FormWindow::handleMouseMove(QMouseEvent *e, QWidget *w) +{ + if ((e->state() & LeftButton) != LeftButton) + return; + + QWidget *newReceiver = (QWidget*)connectReceiver, *oldReceiver = (QWidget*)connectReceiver, *wid; + bool drawRecRect; + switch (currTool) { + case POINTER_TOOL: + if (widgetPressed && allowMove(w)) + { // we are prepated for a move + // if widget is laid out, find the first non-laid out super-widget + while (w->parentWidget() && (WidgetFactory::layoutType(w->parentWidget()) != + WidgetFactory::NoLayout || !insertedWidgets.find(w))) + w = w->parentWidget(); + // calc correct position + QPoint pos = w->mapFromGlobal(e->globalPos()); + // calc move distance and store it + QPoint d = oldPressPos - pos; + if (QABS(d.x()) < grid().x()) + d.setX(0); + if (QABS(d.y()) < grid().y()) + d.setY(0); + if (d.x() == 0) + pos.setX(oldPressPos.x()); + if (d.y() == 0) + pos.setY(oldPressPos.y()); + oldPressPos = pos; + // snap to grid + int x = widgetGeom.x() - d.x(); + widgetGeom.setX(x); + x = (x / grid().x()) * grid().x(); + int y = widgetGeom.y() - d.y(); + widgetGeom.setY(y); + y = (y / grid().y()) * grid().y(); + QPoint p = w->pos(); + + if (x - p.x() || y - p.y()) + { // if we actually have to move + if (!checkedSelectionsForMove) + { // if not checked yet, check if the correct widget are selected... + if (!isWidgetSelected(w)) + { // and unselect others. Only siblings can be moved at the same time + setPropertyShowingBlocked(true); + selectWidget(w); + setPropertyShowingBlocked(false); + } + checkSelectionsForMove(w); + } + // check whether we would have to reparent the selection and + // highlight the possible new parent container + QMapConstIterator<ulong, QPoint> it = moving.begin(); + QWidget* wa = containerAt(e->globalPos(), ((QWidget*)it.key())); + if (wa && !isMainContainer(wa) && !isCentralWidget(wa)) + { + wa = WidgetFactory::containerOfWidget(wa); + // ok, looks like we moved onto a container + + if (wa != targetContainer) + { + if (targetContainer) + { + if (hadOwnPalette) + targetContainer->setPalette(restorePalette); + else + targetContainer->unsetPalette(); + } + targetContainer = wa; + hadOwnPalette = wa->ownPalette(); + restorePalette = wa->palette(); + wa->setPaletteBackgroundColor(wa->colorGroup().midlight()); + } + } + else if (targetContainer) + { + if(hadOwnPalette) + targetContainer->setPalette(restorePalette); + else + targetContainer->unsetPalette(); + targetContainer = 0; + } + + // finally move the selected widgets and show/update preview label + moveSelectedWidgets(x - p.x(), y - p.y()); + sizePreviewLabel->setText(QString("%1/%2").arg(w->pos().x()).arg(w->pos().y())); + sizePreviewLabel->adjustSize(); + QRect lg(mapFromGlobal(e->globalPos()) + QPoint(16, 16), sizePreviewLabel->size()); + checkPreviewGeometry(lg); + sizePreviewLabel->setGeometry(lg); + sizePreviewLabel->raise(); + sizePreviewLabel->show(); + } + else + { // if we don't need to move, do some indication + QRect lg(mapFromGlobal(e->globalPos()) + QPoint(16, 16), sizePreviewLabel->size()); + checkPreviewGeometry(lg); + sizePreviewLabel->move(lg.x(), lg.y()); + } + + oldPressPos += (p - w->pos()); + } + else if (drawRubber) + // draw rubber if we are in rubber-selection mode + continueRectDraw(mapFromGlobal(e->globalPos()), e->globalPos(), this, Rubber); + break; + case CONNECT_TOOL: + restoreConnectionLine(); + wid = qApp->widgetAt(e->globalPos(), true); + if (wid) + wid = designerWidget(wid); + if (wid && (isMainContainer(wid) || insertedWidgets.find(wid)) && wid->isVisibleTo(this)) + newReceiver = wid; + if (newReceiver && (newReceiver->inherits("QLayoutWidget") + || newReceiver->inherits("Spacer"))) + newReceiver = (QWidget*)connectReceiver; + drawRecRect = newReceiver != connectReceiver; + currentConnectPos = mapFromGlobal(e->globalPos()); + if (newReceiver && (isMainContainer(newReceiver) + || insertedWidgets.find(newReceiver)) && !isCentralWidget(newReceiver)) + connectReceiver = connectableObject(newReceiver, connectReceiver); + mainWindow()->statusBar()->message(i18n("Connect '%1' to '%2'").arg(connectSender->name()). + arg(connectReceiver->name())); + qApp->processEvents(); + if (drawRecRect) + restoreRect(QRect(mapToForm(((QWidget*)oldReceiver)->parentWidget(), + ((QWidget*)oldReceiver)->pos()), ((QWidget*)oldReceiver)->size())); + drawConnectLine(); + break; + case ORDER_TOOL: + break; + default: // we are in an insert-widget tool + if (insertParent) // draw insert rect + continueRectDraw(w->mapFromGlobal(e->globalPos()), e->globalPos(), w, Insert); + break; + } +} + +void FormWindow::handleMouseRelease(QMouseEvent * e, QWidget * w) +{ + if (e->button() != LeftButton) + return; + + switch (currTool) + { + case POINTER_TOOL: + if (widgetPressed && allowMove(w)) + { // we moved the widget + sizePreviewLabel->hide(); + + if (moving.isEmpty() || w->pos() == *moving.find((ulong) w)) + break; + + // restore targetContainer + if (targetContainer) + { + if (hadOwnPalette) + targetContainer->setPalette(restorePalette); + else + targetContainer->unsetPalette(); + } + // tell property editor to update + if (propertyWidget && propertyWidget->isWidgetType() && !isMainContainer(propertyWidget)) + emitUpdateProperties(propertyWidget); + + QMapConstIterator < ulong, QPoint > it = moving.begin(); + QWidget *oldParent = ((QWidget *) it.key())->parentWidget(); + QWidget *newParent = oldParent; + // check whether we have to reparent the selection + QWidget *wa = containerAt(e->globalPos(), ((QWidget *) it.key())); + if (wa) + { + wa = WidgetFactory::containerOfWidget(wa); + // ok, looks like we moved onto a container + + // check whether we really have different parents. + if (wa == ((QWidget *) it.key())->parentWidget()) + goto make_move_command; + + // break layout if necessary + if (WidgetFactory::layoutType(wa) != WidgetFactory::NoLayout) + { + if (KMessageBox::questionYesNo(mainWindow(), + i18n("You tried to insert a widget into the " + "layout Container Widget '%1'.\n" + "This is not possible. " + "In order to insert the widget, the layout of '%1'\n" + "must first be broken.\n" + "Break the layout or cancel the operation?"). + arg(wa->name()).arg(wa->name()), i18n("Inserting Widget"), + i18n("&Break Layout"), KStdGuiItem::cancel()) == KMessageBox::No) + goto make_move_command; // cancel + breakLayout(wa); + } + // doesn't need to be a command, the MoveCommand does reparenting too + bool emitSelChanged = false; + for (QMap < ulong, QPoint >::Iterator it = moving.begin(); it != moving.end(); ++it) + { + QWidget *i = (QWidget *) it.key(); + if (!emitSelChanged && i->inherits("QButton")) + { + if (i->parentWidget() && i->parentWidget()->inherits("QButtonGroup") || + wa->inherits("QButtonGroup")) + emitSelChanged = true; + if (!wa->inherits("QButtonGroup")) + { + MetaDataBase::setPropertyChanged(i, "buttonGroupId", false); + if (i->parentWidget() && i->parentWidget()->inherits("QButtonGroup")) + ((QButtonGroup *) i->parentWidget())->remove((QButton *) i); + } + } + QPoint pos = wa->mapFromGlobal(i->mapToGlobal(QPoint(0, 0))); + i->reparent(wa, pos, true); + raiseSelection(i); + raiseChildSelections(i); + widgetChanged(i); + mainWindow()->objectHierarchy()->widgetRemoved(i); + mainWindow()->objectHierarchy()->widgetInserted(i); + } + if (emitSelChanged) + { + emit showProperties(wa); + emit showProperties(propertyWidget); + } + newParent = wa; + } + + make_move_command: + QWidgetList widgets; // collect the widgets and its old and new positions which have been moved + QValueList < QPoint > oldPos, newPos; + for (it = moving.begin(); it != moving.end(); ++it) + { + widgets.append((QWidget *) it.key()); + oldPos.append(*it); + newPos.append(((QWidget *) it.key())->pos()); + } + // add move command, don't execute it, this is just a summary of the operations we did during the move-event handling + commandHistory()->addCommand(new MoveCommand(i18n("Move"), + this, widgets, oldPos, newPos, oldParent, newParent)); + } else if (drawRubber) + { // we were drawing a rubber selection + endRectDraw(); // get rid of the rectangle + blockSignals(true); + selectWidgets(); // select widgets which intersect the rect + blockSignals(false); + emitSelectionChanged(); // inform about selection changes + if (propertyWidget) + emitShowProperties(propertyWidget); + } + break; + case CONNECT_TOOL: + restoreConnectionLine(); + if (connectSender) + restoreRect(QRect(mapToForm(((QWidget *) connectSender)->parentWidget(), + ((QWidget *) connectSender)->pos()), ((QWidget *) connectSender)->size())); + if (connectReceiver) + restoreRect(QRect(mapToForm(((QWidget *) connectReceiver)->parentWidget(), + ((QWidget *) connectReceiver)->pos()), ((QWidget *) connectReceiver)->size())); + endUnclippedPainter(); + qApp->processEvents(); + if (connectSender && connectReceiver) + editConnections(); + break; + case ORDER_TOOL: + break; + default: // any insert widget tool is active + if (insertParent) + { // we should insert the new widget now + endRectDraw(); + if (WidgetFactory::layoutType(insertParent) != WidgetFactory::NoLayout) + { + if (KMessageBox::questionYesNo(mainWindow(), + i18n("You tried to insert a widget into the " + "layout Container Widget '%1'.\n" + "This is not possible. " + "In order to insert the widget, the layout of '%1'\n" + "must first be broken.\n" + "Break the layout or cancel the operation?"). + arg(insertParent->name()). + arg(insertParent->name()), i18n("Inserting Widget"), + i18n("&Break Layout"), KStdGuiItem::cancel()) == KMessageBox::Yes) + { + breakLayout(insertParent); + } else + { + if (!toolFixed) + mainWindow()->resetTool(); + break; + } + } + insertWidget(); // so do it + } + break; + } + widgetPressed = false; + drawRubber = false; + insertParent = 0; + delete buffer; + buffer = 0; +} + +void FormWindow::handleKeyPress(QKeyEvent * e, QWidget * w) +{ + e->ignore(); + checkSelectionsTimer->stop(); + if (!checkedSelectionsForMove && + (e->key() == Key_Left || + e->key() == Key_Right || + e->key() == Key_Up || e->key() == Key_Down) && propertyWidget->isWidgetType()) + checkSelectionsForMove((QWidget *) propertyWidget); + checkSelectionsTimer->start(1000, true); + if (e->key() == Key_Left || e->key() == Key_Right || e->key() == Key_Up || e->key() == Key_Down) + { + QWidgetList widgets; + QValueList < QPoint > oldPos, newPos; + for (WidgetSelection * s = selections.first(); s; s = selections.next()) + { + if (s->isUsed()) + { + int dx = 0, dy = 0; + bool control = e->state() & ControlButton; + + switch (e->key()) + { + case Key_Left: + { + e->accept(); + if (control) + dx = -1; + else + dx = -grid().x(); + } + break; + case Key_Right: + { + e->accept(); + if (control) + dx = 1; + else + dx = grid().x(); + } + break; + case Key_Up: + { + e->accept(); + if (control) + dy = -1; + else + dy = -grid().y(); + } + break; + case Key_Down: + { + e->accept(); + if (control) + dy = 1; + else + dy = grid().y(); + } + break; + default: + break; + } + + widgets.append(s->widget()); + oldPos.append(s->widget()->pos()); + newPos.append(s->widget()->pos() + QPoint(dx, dy)); + } + } + if (!widgets.isEmpty()) + { + MoveCommand *cmd = new MoveCommand(i18n("Move"), this, + widgets, oldPos, newPos, 0, 0); + commandHistory()->addCommand(cmd, true); + cmd->execute(); + } + } + if (!e->isAccepted()) + { + QObjectList *l = queryList("QWidget"); + if (!l) + return; + if (l->find(w) != -1) + e->accept(); + delete l; + } + +} + +void FormWindow::handleKeyRelease(QKeyEvent * e, QWidget *) +{ + e->ignore(); +} + +void FormWindow::selectWidget(QObject * o, bool select) +{ + if (!o->isWidgetType()) + { + // ########### do QObject stuff + return; + } + + QWidget *w = (QWidget *) o; + + if (isMainContainer(w)) + { + QObject *opw = propertyWidget; + propertyWidget = mainContainer(); + if (opw->isWidgetType()) + repaintSelection((QWidget *) opw); + emitShowProperties(propertyWidget); + return; + } + + if (mainContainer()->inherits("QMainWindow") && + w == ((QMainWindow *) mainContainer())->centralWidget()) + { + QObject *opw = propertyWidget; + propertyWidget = mainContainer(); + if (opw->isWidgetType()) + repaintSelection((QWidget *) opw); + emitShowProperties(propertyWidget); + return; + } + + if (o->inherits("QDesignerToolBar") || o->inherits("QDesignerMenuBar")) + return; + + if (select) + { + QObject *opw = propertyWidget; + propertyWidget = w; + if (opw->isWidgetType()) + repaintSelection((QWidget *) opw); + if (!isPropertyShowingBlocked()) + emitShowProperties(propertyWidget); + WidgetSelection *s = usedSelections.find(w); + if (s) + { + s->show(); + return; + } + + for (WidgetSelection * s2 = selections.first(); s2; s2 = selections.next()) + { + if (!s2->isUsed()) + { + s = s2; + } + } + + if (!s) + { + s = new WidgetSelection(this, &usedSelections); + selections.append(s); + } + + s->setWidget(w); + emitSelectionChanged(); + } else + { + WidgetSelection *s = usedSelections.find(w); + if (s) + s->setWidget(0); + QObject *opw = propertyWidget; + if (!usedSelections.isEmpty()) + propertyWidget = QPtrDictIterator < WidgetSelection > (usedSelections).current()->widget(); + else + propertyWidget = mainContainer(); + if (opw->isWidgetType()) + repaintSelection((QWidget *) opw); + if (!isPropertyShowingBlocked()) + emitShowProperties(propertyWidget); + emitSelectionChanged(); + } +} + +QPoint FormWindow::grid() const +{ + if (!mainWindow()->snapGrid()) + return QPoint(1, 1); + return mainWindow()->grid(); +} + +void FormWindow::updateSelection(QWidget * w) +{ + WidgetSelection *s = usedSelections.find(w); + if (!w->isVisibleTo(this)) + selectWidget(w, false); + else if (s) + s->updateGeometry(); +} + +void FormWindow::raiseSelection(QWidget * w) +{ + WidgetSelection *s = usedSelections.find(w); + if (s) + s->show(); +} + +void FormWindow::repaintSelection(QWidget * w) +{ + WidgetSelection *s = usedSelections.find(w); + if (s) + s->update(); +} + +void FormWindow::clearSelection(bool changePropertyDisplay) +{ + QPtrDictIterator < WidgetSelection > it(usedSelections); + for (; it.current(); ++it) + it.current()->setWidget(0, false); + + usedSelections.clear(); + if (changePropertyDisplay) + { + QObject *opw = propertyWidget; + propertyWidget = mainContainer(); + if (opw->isWidgetType()) + repaintSelection((QWidget *) opw); + emitShowProperties(propertyWidget); + } + emitSelectionChanged(); +} + +void FormWindow::startRectDraw(const QPoint & p, const QPoint & global, QWidget *, RectType t) +{ + QPoint pos(p); + pos = mapFromGlobal(global); + oldRectValid = false; + beginUnclippedPainter(true); + if (t == Rubber) + unclippedPainter->setPen(QPen(color0, 1)); + if (t == Insert) + rectAnchor = gridPoint(pos); + else if (t == Rubber) + rectAnchor = pos; + currRect = QRect(rectAnchor, QPoint(0, 0)); + if (t == Insert) + drawSizePreview(pos, i18n("Use Size Hint")); +} + +void FormWindow::continueRectDraw(const QPoint & p, const QPoint & global, QWidget *, RectType t) +{ + QPoint pos = p; + pos = mapFromGlobal(global); + QPoint p2; + if (t == Insert) + p2 = gridPoint(pos); + else if (t == Rubber) + p2 = pos; + QRect r(rectAnchor, p2); + r = r.normalize(); + + if (currRect == r) + { + QString t("%1/%2"); + t = t.arg(r.width() - 1).arg(r.height() - 1); + drawSizePreview(pos, t); + return; + } + + if (oldRectValid) + unclippedPainter->drawRect(currRect); + if (r.width() > 1 || r.height() > 1) + { + oldRectValid = true; + currRect = r; + if (t == Insert) + { + QString t("%1/%2"); + t = t.arg(r.width() - 1).arg(r.height() - 1); + drawSizePreview(pos, t); + } + unclippedPainter->setClipRegion(QRegion(rect()).subtract(QRect(sizePreviewPos, + sizePreviewPixmap.size()))); + unclippedPainter->drawRect(currRect); + unclippedPainter->setClipping(false); + } else + { + oldRectValid = false; + if (t == Insert) + drawSizePreview(pos, i18n("Use Size Hint")); + } +} + +void FormWindow::endRectDraw() +{ + if (!unclippedPainter) + return; + + if (oldRectValid) + unclippedPainter->drawRect(currRect); + drawSizePreview(QPoint(-1, -1), QString::null); + endUnclippedPainter(); +} + +void FormWindow::selectWidgets() +{ + QObjectList *l = mainContainer()->queryList("QWidget"); + if (l) + { + for (QObject * o = l->first(); o; o = l->next()) + { + if (((QWidget *) o)->isVisibleTo(this) && insertedWidgets[(void *) o]) + { + QPoint p = ((QWidget *) o)->mapToGlobal(QPoint(0, 0)); + p = mapFromGlobal(p); + QRect r(p, ((QWidget *) o)->size()); + if (r.intersects(currRect) && !r.contains(currRect)) + selectWidget((QWidget *) o); + } + } + delete l; + } + emitSelectionChanged(); +} + +bool FormWindow::isWidgetSelected(QObject * w) +{ + if (w->isWidgetType()) + return usedSelections.find((QWidget *) w) != 0; + return false; // #### do stuff for QObjects +} + +void FormWindow::moveSelectedWidgets(int dx, int dy) +{ + QPtrDictIterator < WidgetSelection > it(usedSelections); + for (; it.current(); ++it) + { + WidgetSelection *s = it.current(); + QWidget *w = s->widget(); + if (w->parentWidget() + && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) + continue; + w->move(w->x() + dx, w->y() + dy); + s->updateGeometry(); + updateChildSelections(w); + } +} + +CommandHistory *FormWindow::commandHistory() +{ + return &commands; +} + +void FormWindow::undo() +{ + commandHistory()->undo(); +} + +void FormWindow::redo() +{ + commandHistory()->redo(); +} + +void FormWindow::raiseChildSelections(QWidget * w) +{ + QObjectList *l = w->queryList("QWidget"); + if (!l || !l->first()) + { + delete l; + return; + } + + QPtrDictIterator < WidgetSelection > it(usedSelections); + for (; it.current(); ++it) + { + if (l->findRef(it.current()->widget()) != -1) + it.current()->show(); + } + delete l; +} + +void FormWindow::updateChildSelections(QWidget * w) +{ + QObjectList *l = w->queryList("QWidget"); + if (l) + { + for (QObject * o = l->first(); o; o = l->next()) + { + if (o->isWidgetType() && insertedWidgets.find((QWidget *) o)) + updateSelection((QWidget *) o); + } + delete l; + } +} + +void FormWindow::checkSelectionsForMove(QWidget * w) +{ + checkedSelectionsForMove = true; + + QObjectList *l = w->parentWidget()->queryList("QWidget", 0, false, false); + moving.clear(); + if (l) + { + QPtrDictIterator < WidgetSelection > it(usedSelections); + WidgetSelection *sel; + while ((sel = it.current()) != 0) + { + if (it.current()->widget() == mainContainer()) + continue; + ++it; + if (l->find(sel->widget()) == -1) + { + if (WidgetFactory::layoutType(w) == WidgetFactory::NoLayout) + sel->setWidget(0); + } else + { + if (WidgetFactory::layoutType(sel->widget()->parentWidget()) == WidgetFactory::NoLayout) + { + moving.insert((ulong) sel->widget(), sel->widget()->pos()); + sel->widget()->raise(); + raiseChildSelections(sel->widget()); + raiseSelection(sel->widget()); + } + } + } + delete l; + } +} + +void FormWindow::deleteWidgets() +{ + QWidgetList widgets; + QPtrDictIterator < WidgetSelection > it(usedSelections); + for (; it.current(); ++it) + { + QWidget *tb = 0; + if (!(tb = mainWindow()->isAToolBarChild(it.current()->widget()))) + widgets.append(it.current()->widget()); + else + ((QDesignerToolBar *) tb)->removeWidget(it.current()->widget()); + } + + if (widgets.isEmpty()) + return; + + DeleteCommand *cmd = new DeleteCommand(i18n("Delete"), this, widgets); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::editAdjustSize() +{ + QPtrList < Command > commands; + QWidgetList widgets = selectedWidgets(); + if (widgets.isEmpty()) + { + QRect oldr = geometry(); + mainContainer()->adjustSize(); + resize(mainContainer()->size()); + // check whether our own size constraint hit us + if (size() != mainContainer()->size()) + mainContainer()->resize(size()); + QRect nr = geometry(); + if (oldr != nr) + { + ResizeCommand *cmd = new ResizeCommand(i18n("Adjust Size"), this, this, oldr, nr); + commandHistory()->addCommand(cmd); + } + return; + } + for (QWidget * w = widgets.first(); w; w = widgets.next()) + { + if (w->parentWidget() + && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) + continue; + QRect oldr = w->geometry(); + w->adjustSize(); + QRect nr = w->geometry(); + if (oldr != nr) + commands.append(new ResizeCommand(i18n("Adjust Size"), this, w, oldr, nr)); + } + + if (commands.isEmpty()) + return; + for (WidgetSelection * s = selections.first(); s; s = selections.next()) + s->updateGeometry(); + + MacroCommand *cmd = new MacroCommand(i18n("Adjust Size"), this, commands); + commandHistory()->addCommand(cmd); +} + + +QWidgetList FormWindow::selectedWidgets() const +{ + QWidgetList widgets; + for (QPtrDictIterator<WidgetSelection> it(usedSelections); it.current(); ++it) + widgets.append(it.current()->widget()); + return widgets; +} + +void FormWindow::widgetChanged(QObject *w) +{ + if (w->isWidgetType()) + updateSelection((QWidget*)w); +} + +QLabel *FormWindow::sizePreview() const +{ + if (!sizePreviewLabel) + { + ((FormWindow*)this)->sizePreviewLabel = new QLabel((FormWindow*)this); + ((FormWindow*)this)->sizePreviewLabel->hide(); + ((FormWindow*)this)->sizePreviewLabel->setBackgroundColor(QColor(255, 255, 128)); + ((FormWindow*)this)->sizePreviewLabel->setFrameStyle(QFrame::Plain | QFrame::Box); + } + return sizePreviewLabel; +} + +void FormWindow::invalidCheckedSelections() +{ + checkedSelectionsForMove = false; +} + +void FormWindow::checkPreviewGeometry(QRect & r) +{ + if (rect().contains(r)) + return; + if (r.left() < rect().left()) + r.moveTopLeft(QPoint(0, r.top())); + if (r.right() > rect().right()) + r.moveBottomRight(QPoint(rect().right(), r.bottom())); + if (r.top() < rect().top()) + r.moveTopLeft(QPoint(r.left(), rect().top())); + if (r.bottom() > rect().bottom()) + r.moveBottomRight(QPoint(r.right(), rect().bottom())); +} + +void FormWindow::focusInEvent(QFocusEvent *) +{ + if (mContainer) + { + QVariant prop = mContainer->property("useInternalParser"); + KommanderWidget::useInternalParser = prop.toBool(); + + } +} + +void FormWindow::focusOutEvent(QFocusEvent *) +{ + if (propertyWidget && !isMainContainer(propertyWidget) && !isWidgetSelected(propertyWidget)) + { + QObject *opw = propertyWidget; + propertyWidget = mainContainer(); + if (opw->isWidgetType()) + repaintSelection((QWidget *) opw); + } +} + +void FormWindow::resizeEvent(QResizeEvent * e) +{ + QWidget::resizeEvent(e); + if (currTool == ORDER_TOOL) + repositionOrderIndicators(); + if (isVisible()) + formFile()->setModified(true); +} + +QPtrDict < QWidget > *FormWindow::widgets() +{ + return &insertedWidgets; +} + +QWidget *FormWindow::designerWidget(QObject * o) const +{ + if (!o || !o->isWidgetType()) + return 0; + QWidget *w = (QWidget *) o; + while (w && !isMainContainer(w) && !insertedWidgets[(void *) w] || isCentralWidget(w)) + w = (QWidget *) w->parent(); + return w; +} + +void FormWindow::emitShowProperties(QObject * w) +{ + if (w) + { + QObject *opw = propertyWidget; + propertyWidget = w; + if (opw->isWidgetType()) + repaintSelection((QWidget *) opw); + } + showPropertiesTimer->stop(); + showPropertiesTimer->start(0, true); +} + +void FormWindow::emitUpdateProperties(QObject * w) +{ + if (w == propertyWidget) + { + updatePropertiesTimer->stop(); + updatePropertiesTimer->start(0, true); + } +} + +void FormWindow::emitSelectionChanged() +{ + selectionChangedTimer->stop(); + selectionChangedTimer->start(0, true); +} + +void FormWindow::updatePropertiesTimerDone() +{ + if (propertyWidget && mainWindow()->formWindow() == this) + emit updateProperties(propertyWidget); +} + +void FormWindow::showPropertiesTimerDone() +{ + if (propertyWidget && mainWindow()->formWindow() == this) + emit showProperties(propertyWidget); +} + +void FormWindow::selectionChangedTimerDone() +{ + emit selectionChanged(); +} + +void FormWindow::currentToolChanged() +{ + toolFixed = false; + int t = mainwindow->currentTool(); + if (currTool == t && t != ORDER_TOOL) + return; + + // tool cleanup + switch (currTool) + { + case ORDER_TOOL: + hideOrderIndicators(); + break; + case CONNECT_TOOL: + restoreConnectionLine(); + if (connectSender) + restoreRect(QRect(mapToForm(((QWidget *) connectSender)->parentWidget(), + ((QWidget *) connectSender)->pos()), ((QWidget *) connectSender)->size())); + if (connectReceiver) + restoreRect(QRect(mapToForm(((QWidget *) connectReceiver)->parentWidget(), + ((QWidget *) connectReceiver)->pos()), ((QWidget *) connectReceiver)->size())); + endUnclippedPainter(); + break; + case POINTER_TOOL: + break; + default: + if (insertParent) + endRectDraw(); + break; + } + + connectSender = connectReceiver = 0; + widgetPressed = false; + drawRubber = false; + insertParent = 0; + delete buffer; + buffer = 0; + + currTool = t; + + if (hasFocus()) + clearSelection(false); + + mainWindow()->statusBar()->clear(); + + // tool setup + switch (currTool) + { + case POINTER_TOOL: + if (propertyWidget && !isMainContainer(propertyWidget) && !isWidgetSelected(propertyWidget)) + emitShowProperties(mainContainer()); + restoreCursors(this, this); + break; + case ORDER_TOOL: + if (mainWindow()->formWindow() == this) + { + mainWindow()->statusBar()->message(i18n("Click widgets to change the tab order...")); + orderedWidgets.clear(); + showOrderIndicators(); + if (mainWindow()->formWindow() == this) + emitShowProperties(mainContainer()); + setCursorToAll(ArrowCursor, this); + } + break; + case CONNECT_TOOL: + mainWindow()->statusBar()->message(i18n("Drag a line to create a connection...")); + setCursorToAll(CrossCursor, this); + if (mainWindow()->formWindow() == this) + emitShowProperties(mainContainer()); + break; + default: + mainWindow()->statusBar()->message(i18n("Click on the form to insert a %1..."). + arg(WidgetDatabase::toolTip(currTool).lower())); + setCursorToAll(CrossCursor, this); + if (mainWindow()->formWindow() == this) + emitShowProperties(mainContainer()); + break; + } +} + +void FormWindow::showOrderIndicators() +{ + hideOrderIndicators(); + orderIndicators.setAutoDelete(true); + QObjectList *l = mainContainer()->queryList("QWidget"); + stackedWidgets = MetaDataBase::tabOrder(this); + if (l) + { + int order = 1; + for (QObject * o = l->first(); o; o = l->next()) + { + QWidget *w = (QWidget *) o; + if (w->isVisibleTo(w->parentWidget()) && + insertedWidgets[(void *) w] && w->focusPolicy() != NoFocus) + { + OrderIndicator *ind = new OrderIndicator(order++, w, this); + orderIndicators.append(ind); + if (stackedWidgets.findRef(w) == -1) + stackedWidgets.append(w); + } + } + delete l; + } + updateOrderIndicators(); +} + +void FormWindow::hideOrderIndicators() +{ + orderIndicators.clear(); +} + +void FormWindow::updateOrderIndicators() +{ + int order = 1; + for (QWidget * w = stackedWidgets.first(); w; w = stackedWidgets.next()) + { + for (OrderIndicator * i = orderIndicators.first(); i; i = orderIndicators.next()) + i->setOrder(order, w); + order++; + } +} + +void FormWindow::repositionOrderIndicators() +{ + for (OrderIndicator * i = orderIndicators.first(); i; i = orderIndicators.next()) + i->reposition(); +} + +void FormWindow::updateUndoInfo() +{ + commandHistory()->emitUndoRedo(); +} + +bool FormWindow::checkCustomWidgets() +{ + QStringList missingCustomWidgets; + QPtrDictIterator < QWidget > it(insertedWidgets); + for (; it.current(); ++it) + { + if (it.current()->isA("CustomWidget")) + { + QString className = WidgetFactory::classNameOf(it.current()); + if (!MetaDataBase::hasCustomWidget(className)) + missingCustomWidgets << className; + } + } + return true; +} + +void FormWindow::setPropertyShowingBlocked(bool b) +{ + propShowBlocked = b; +} + +bool FormWindow::isPropertyShowingBlocked() const +{ + return propShowBlocked; +} + + +int FormWindow::numSelectedWidgets() const +{ + return usedSelections.count(); +} + +QString FormWindow::copy() +{ + Resource resource(mainWindow()); + resource.setWidget(this); + return resource.copy(); +} + +void FormWindow::lowerWidgets() +{ + QWidgetList widgets; + QPtrDictIterator < WidgetSelection > it(usedSelections); + for (; it.current(); ++it) + widgets.append(it.current()->widget()); + + LowerCommand *cmd = new LowerCommand(i18n("Lower"), this, widgets); + cmd->execute(); + commandHistory()->addCommand(cmd); +} + +static void find_accel(const QString & txt, QMap < QChar, QWidgetList > &accels, QWidget * w) +{ + int i = txt.find("&"); + if (i == -1) + return; + QChar c = txt[i + 1]; + if (c.isNull() || c == '&') + return; + c = c.lower(); + QMap < QChar, QWidgetList >::Iterator it = accels.find(c); + if (it == accels.end()) + { + QWidgetList wl; + wl.append(w); + accels.insert(c, wl); + } else + { + QWidgetList *wl = &*it; + wl->append(w); + } +} + +void FormWindow::checkAccels() +{ + QMap < QChar, QWidgetList > accels; + QObjectList *l = mainContainer()->queryList("QWidget"); + if (l) + { + for (QObject * o = l->first(); o; o = l->next()) + { + if (((QWidget *) o)->isVisibleTo(this) && insertedWidgets[(void *) o]) + { + QWidget *w = (QWidget *) o; + const QMetaProperty *text = + w->metaObject()->property(w->metaObject()->findProperty("text", true), true); + const QMetaProperty *title = + w->metaObject()->property(w->metaObject()->findProperty("title", true), true); + const QMetaProperty *pageTitle = + w->metaObject()->property(w->metaObject()->findProperty("pageTitle", true), true); + if (text) + find_accel(w->property("text").toString(), accels, w); + if (title) + find_accel(w->property("title").toString(), accels, w); + if (pageTitle) + find_accel(w->property("pageTitle").toString(), accels, w); + } + } + delete l; + } + + bool ok = true; + QWidget *wid; + for (QMap < QChar, QWidgetList >::Iterator it = accels.begin(); it != accels.end(); ++it) + { + if ((*it).count() > 1) + { + ok = false; + if (KMessageBox::questionYesNo(mainWindow(), + i18n("Accelerator '%1' is used %2 times.").arg(it.key().upper()).arg((*it).count()), + i18n("Check Accelerators"), i18n("&Select"), KStdGuiItem::cancel()) == KMessageBox::Yes) + { + clearSelection(false); + for (wid = (*it).first(); wid; wid = (*it).next()) + selectWidget(wid, true); + } + return; + } + } + + if (ok) + KMessageBox::information(mainWindow(), i18n("No accelerator is used more than once."), + i18n("Check Accelerators")); +} + +void FormWindow::raiseWidgets() +{ + QWidgetList widgets; + QPtrDictIterator < WidgetSelection > it(usedSelections); + for (; it.current(); ++it) + widgets.append(it.current()->widget()); + + RaiseCommand *cmd = new RaiseCommand(i18n("Raise"), this, widgets); + cmd->execute(); + commandHistory()->addCommand(cmd); +} + +void FormWindow::paste(const QString & cb, QWidget * parent) +{ + Resource resource(mainWindow()); + resource.setWidget(this); + resource.paste(cb, parent); +} + +void FormWindow::selectAll() +{ + checkedSelectionsForMove = false; + blockSignals(true); + QObjectList *l = mainContainer()->queryList("QWidget"); + if (l) + { + for (QObject * o = l->first(); o; o = l->next()) + { + if (((QWidget *) o)->isVisibleTo(this) && insertedWidgets[(void *) o]) + { + selectWidget((QWidget *) o); + } + } + delete l; + } + + blockSignals(false); + emitSelectionChanged(); + if (propertyWidget) + emitShowProperties(propertyWidget); + emitSelectionChanged(); +} + +void FormWindow::layoutHorizontal() +{ + QWidgetList widgets(selectedWidgets()); + LayoutHorizontalCommand *cmd = new LayoutHorizontalCommand(i18n("Lay Out Horizontally"), + this, mainContainer(), 0, widgets); + clearSelection(false); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::layoutVertical() +{ + QWidgetList widgets(selectedWidgets()); + LayoutVerticalCommand *cmd = new LayoutVerticalCommand(i18n("Lay Out Vertically"), + this, mainContainer(), 0, widgets); + clearSelection(false); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::layoutHorizontalSplit() +{ + QWidgetList widgets(selectedWidgets()); + LayoutHorizontalSplitCommand *cmd = + new LayoutHorizontalSplitCommand(i18n("Lay Out Horizontally (in splitter)"), + this, mainContainer(), 0, widgets); + clearSelection(false); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::layoutVerticalSplit() +{ + QWidgetList widgets(selectedWidgets()); + LayoutVerticalSplitCommand *cmd = + new LayoutVerticalSplitCommand(i18n("Lay Out Vertically (in splitter)"), + this, mainContainer(), 0, widgets); + clearSelection(false); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::layoutGrid() +{ + int xres = grid().x(); + int yres = grid().y(); + + QWidgetList widgets(selectedWidgets()); + LayoutGridCommand *cmd = new LayoutGridCommand(i18n("Lay Out in a Grid"), + this, mainContainer(), 0, widgets, xres, yres); + clearSelection(false); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::layoutHorizontalContainer(QWidget * w) +{ + if (w == this) + w = mainContainer(); + QObjectList *l = (QObjectList *) WidgetFactory::containerOfWidget(w)->children(); + if (!l) + return; + QWidgetList widgets; + for (QObject * o = l->first(); o; o = l->next()) + { + if (o->isWidgetType() && + ((QWidget *) o)->isVisibleTo(this) && insertedWidgets.find((QWidget *) o)) + widgets.append((QWidget *) o); + } + LayoutHorizontalCommand *cmd = new LayoutHorizontalCommand(i18n("Lay Out Children Horizontally"), + this, mainContainer(), w, widgets); + clearSelection(false); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::layoutVerticalContainer(QWidget * w) +{ + if (w == this) + w = mainContainer(); + QObjectList *l = (QObjectList *) WidgetFactory::containerOfWidget(w)->children(); + if (!l) + return; + QWidgetList widgets; + for (QObject * o = l->first(); o; o = l->next()) + { + if (o->isWidgetType() && + ((QWidget *) o)->isVisibleTo(this) && insertedWidgets.find((QWidget *) o)) + widgets.append((QWidget *) o); + } + LayoutVerticalCommand *cmd = new LayoutVerticalCommand(i18n("Lay Out Children Vertically"), + this, mainContainer(), w, widgets); + clearSelection(false); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::layoutGridContainer(QWidget * w) +{ + if (w == this) + w = mainContainer(); + int xres = grid().x(); + int yres = grid().y(); + + QObjectList *l = (QObjectList *) WidgetFactory::containerOfWidget(w)->children(); + if (!l) + return; + QWidgetList widgets; + for (QObject * o = l->first(); o; o = l->next()) + { + if (o->isWidgetType() && + ((QWidget *) o)->isVisibleTo(this) && insertedWidgets.find((QWidget *) o)) + widgets.append((QWidget *) o); + } + LayoutGridCommand *cmd = new LayoutGridCommand(i18n("Lay Out Children in a Grid"), + this, mainContainer(), w, widgets, xres, yres); + clearSelection(false); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +void FormWindow::breakLayout(QWidget * w) +{ + if (w == this) + w = mainContainer(); + w = WidgetFactory::containerOfWidget(w); + QPtrList < Command > commands; + + for (;;) + { + if (!w || w == this) + break; + if (WidgetFactory::layoutType(w) != WidgetFactory::NoLayout && + WidgetDatabase::isContainer(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)))) + { + Command *cmd = breakLayoutCommand(w); + if (cmd) + commands.insert(0, cmd); + if (!w->inherits("QLayoutWidget") && !w->inherits("QSplitter")) + break; + } + w = w->parentWidget(); + } + + if (commands.isEmpty()) + return; + + clearSelection(false); + MacroCommand *cmd = new MacroCommand(i18n("Break Layout"), this, commands); + commandHistory()->addCommand(cmd); + cmd->execute(); +} + +BreakLayoutCommand *FormWindow::breakLayoutCommand(QWidget * w) +{ + QObjectList *l = (QObjectList *) w->children(); + if (!l) + return 0; + + QWidgetList widgets; + for (QObject * o = l->first(); o; o = l->next()) + { + if (o->isWidgetType() && + !mainWindow()->isAToolBarChild((QWidget *) o) && + ((QWidget *) o)->isVisibleTo(this) && insertedWidgets.find((QWidget *) o)) + widgets.append((QWidget *) o); + } + return new BreakLayoutCommand(i18n("Break Layout"), this, + WidgetFactory::widgetOfContainer(w), widgets); +} + +int FormWindow::numVisibleWidgets() const +{ + QPtrDictIterator < QWidget > it(insertedWidgets); + int visible = 0; + for (; it.current(); ++it) + { + if (it.current()->isVisibleTo((FormWindow *) this)) + visible++; + } + return visible; +} + +bool FormWindow::hasInsertedChildren(QWidget *w) const +{ + if (!w) + return false; + w = WidgetFactory::containerOfWidget(w); + if (!w) + return false; + QObjectList *l = w->queryList("QWidget"); + if (!l || !l->first()) + { + delete l; + return false; + } + + for (QObject *o = l->first(); o; o = l->next()) + if (o->isWidgetType() && ((QWidget*)o)->isVisibleTo((FormWindow*)this) && + insertedWidgets.find((QWidget*)o)) + { + delete l; + return true; + } + delete l; + return false; +} + +bool FormWindow::allowMove(QWidget *w) +{ + w = w->parentWidget(); + while (w) + { + if ((isMainContainer(w) || insertedWidgets.find(w)) && WidgetFactory::layoutType(w) == + WidgetFactory::NoLayout) + return true; + w = w->parentWidget(); + } + return false; +} + + +void FormWindow::editConnections() +{ + buffer = 0; + if (!connectSender || !connectReceiver) + return; + mainWindow()->statusBar()->clear(); + ConnectionEditor editor(mainwindow, connectSender, connectReceiver, this); + mainWindow()->statusBar()->message(i18n("Edit connections...")); + editor.exec(); + mainWindow()->statusBar()->clear(); + if (!toolFixed) + mainwindow->resetTool(); + connectSender = connectReceiver = 0; +} + +void FormWindow::saveBackground() +{ + delete buffer; + buffer = new QPixmap(width(), height()); + *buffer = QPixmap::grabWindow(winId()); +} + +void FormWindow::restoreConnectionLine() +{ + if (!unclippedPainter || !buffer) + return; + + int a =QABS(connectStartPos.x() - currentConnectPos.x()); + int b = QABS(connectStartPos.y() - currentConnectPos.y()); + QRect r(connectStartPos, currentConnectPos); + + if (a < 32 || b < 32) + { // special case: vertical or horizontal line + r = r.normalize(); + unclippedPainter->drawPixmap(r.x() - 2, r.y() - 2, *buffer, + r.x() - 2, r.y() - 2, r.width() + 4, r.height() + 4); + return; + } + + if (a <= 0) + a = 1; + if (b <= 0) + b = 1; + int w, h; + if (b > a) + { + h = 64; + w = (a * h) / b; + } + else + { + w = 64; + h = (b * w) / a; + } + int dx = 2 * w / 3; + int dy = 2 * h / 3; + QPoint p(connectStartPos); + + if (r.x() > r.right()) + { + dx = dx * -1; + p.setX(p.x() - 64); + r.moveBy(-64, 0); + } + if (r.y() > r.bottom()) { + dy = dy * -1; + p.setY(p.y() - 64); + r.moveBy(0, -64); + } + + w = h = 64; + r = r.normalize(); + while (r.contains(p)) + { + unclippedPainter->drawPixmap(p, *buffer, QRect(p, QSize(w, h))); + unclippedPainter->setPen(red); + p.setX(p.x() + dx); + p.setY(p.y() + dy); + } + + unclippedPainter->drawPixmap(connectStartPos.x() - 10, connectStartPos.y() - 10, *buffer, + connectStartPos.x() - 10, connectStartPos.y() - 10, 20, 20); +} + +void FormWindow::restoreRect(const QRect &rect) +{ + if (!unclippedPainter) + return; + QRect r(rect); + r = r.normalize(); + r = QRect(r.x() + 2, r.y() + 2, r.width() - 4, r.height() - 4); + unclippedPainter->drawPixmap(r.x() - 2, r.y() - 2, *buffer, r.x() - 2, r.y() - 2, r.width() + 4, 4); + unclippedPainter->drawPixmap(r.x() - 2, r.y() - 2, *buffer, r.x() - 2, r.y() - 2, 4, r.height() + 4); + unclippedPainter->drawPixmap(r.x() - 2, r.y() + r.height() - 3, *buffer, r.x() - 2, + r.y() + r.height() - 3, r.width() + 4, 5); + unclippedPainter->drawPixmap(r.x() + r.width() - 2, r.y(), *buffer, r.x() + r.width() - 2, + r.y(), 4, r.height() + 4); +} + +void FormWindow::drawConnectLine() +{ + if (!unclippedPainter) + return; + unclippedPainter->setPen(QPen(white, 2)); + unclippedPainter->drawLine(connectStartPos, currentConnectPos); + unclippedPainter->setPen(QPen(darkCyan, 1)); + unclippedPainter->drawLine(connectStartPos, currentConnectPos); + + unclippedPainter->setPen(QPen(magenta, 1)); + if (connectSender) + { + QWidget *w = (QWidget*)connectSender; + QPoint p = mapToForm(w, QPoint(0,0)); + unclippedPainter->drawRect(QRect(p + QPoint(2, 2), w->size() - QSize(4, 4))); + } + if (connectReceiver) + { + QWidget *w = (QWidget*)connectReceiver; + QPoint p = mapToForm(w, QPoint(0,0)); + unclippedPainter->drawRect(QRect(p + QPoint(2, 2), w->size() - QSize(4, 4))); + } +} + +QString FormWindow::fileName() const +{ + return ff->absFileName(); +} + +void FormWindow::setFileName(const QString &fn) +{ + ff->setFileName(fn); + emit fileNameChanged(ff->fileName(), this); +} + +void FormWindow::modificationChanged(bool m) +{ + emit modificationChanged(m, this); + emit modificationChanged(m, ff->fileName()); +} + +bool FormWindow::unify(QObject *w, QString &s, bool changeIt) +{ + bool found = !isMainContainer(w) && !qstrcmp(name(), s.latin1()); + if (!found) + { + QString orig = s; + int num = 1; + QPtrDictIterator<QWidget> it(insertedWidgets); + for (; it.current();) + if (it.current() != w && !qstrcmp(it.current()->name(), s.latin1())) + { + found = true; + if (!changeIt) + break; + s = orig + "_" + QString::number(++num); + it.toFirst(); + } + else + ++it; + + if (!found) + { + QPtrList<QAction> al; + QAction *a = 0; + for (a = actions.first(); a; a = actions.next()) + { + QObjectList *l = a->queryList("QAction"); + al.append(a); + for (QObject *ao = l->first(); ao; ao = l->next()) + al.append((QAction*)ao); + delete l; + } + for (a = al.first(); a; a = al.next()) + { + if (a != w && !qstrcmp(a->name(), s.latin1())) + { + found = true; + if (!changeIt) + break; + s = orig + "_" + QString::number(++num); + a = actions.first(); + } + } + } + + if (mainContainer()->inherits("QMainWindow")) + { + if (!found) + { + QObjectList *l = mainContainer()->queryList("QDockWindow", 0, true); + for (QObject *o = l->first(); o; o = l->next()) + if (o != w && !qstrcmp(o->name(), s.latin1())) + { + found = true; + if (!changeIt) + break; + s = orig + "_" + QString::number(++num); + o = l->first(); + } + delete l; + } + if (!found) + { + QObjectList *l = mainContainer()->queryList("QDesignerPopupMenu", 0, true); + for (QObject *o = l->first(); o; o = l->next()) + if (o != w && !qstrcmp(o->name(), s.latin1())) + { + found = true; + if (!changeIt) + break; + s = orig + "_" + QString::number(++num); + o = l->first(); + } + delete l; + } + } + } + if (!found) + return true; + return false; +} + +bool FormWindow::isCustomWidgetUsed(MetaDataBase::CustomWidget *w) +{ + QPtrDictIterator<QWidget> it(insertedWidgets); + for (; it.current(); ++it) + if (it.current()->isA("CustomWidget") && !qstrcmp(WidgetFactory::classNameOf(it.current()), + w->className.utf8())) + return true; + return false; +} + +bool FormWindow::isDatabaseWidgetUsed() const +{ +#ifndef QT_NO_SQL + QStringList dbClasses; + dbClasses << "QDataTable"; // add more here + QPtrDictIterator<QWidget> it(insertedWidgets); + for (; it.current(); ++it) + { + QString c(it.current()->className()); + if (dbClasses.contains(c) > 0) + return true; + } +#endif + return false; +} + +bool FormWindow::isDatabaseAware() const +{ +#ifndef QT_NO_SQL + if (QString(mContainer->className()) == "QDesignerDataBrowser" || + QString(mContainer->className()) == "QDesignerDataView") + return true; + return isDatabaseWidgetUsed(); +#else + return false; +#endif +} + +void FormWindow::visibilityChanged() +{ + if (currTool != ORDER_TOOL) + emitUpdateProperties(currentWidget()); + else + { + updateOrderIndicators(); + repositionOrderIndicators(); + } +} + + +/* + Maps a pos in a w's coordinates to the form's coordinate system. + + This is the equivalent to mapFromGlobal(w->mapToGlobal(pos)) but + avoids the two roundtrips to the X-Server on Unix/X11. + */ +QPoint FormWindow::mapToForm(const QWidget* w, const QPoint& pos) const +{ + QPoint p = pos; + const QWidget* i = w; + while (i && !i->isTopLevel() && !isMainContainer((QWidget*)i)) + { + p = i->mapToParent(p); + i = i->parentWidget(); + } + return mapFromGlobal(w->mapToGlobal(pos)); +} + +static int widgetDepth(QWidget *w) +{ + int d = -1; + while (w && !w->isTopLevel()) + { + d++; + w = w->parentWidget(); + } + + return d; +} + +static bool isChildOf(QWidget *c, QWidget *p) +{ + while (c && !c->isTopLevel()) + { + if (c == p) + return true; + c = c->parentWidget(); + } + return false; +} + +QWidget *FormWindow::containerAt(const QPoint &pos, QWidget *notParentOf) +{ + QPtrDictIterator<QWidget> it(insertedWidgets); + QWidget *container = 0; + int depth = -1; + QWidgetList selected = selectedWidgets(); + if (rect().contains(mapFromGlobal(pos))) + { + container = mainContainer(); + depth = widgetDepth(container); + } + + for (; it.current(); ++it) { + if (it.current()->inherits("QLayoutWidget")) + continue; + if (it.current()->inherits("QSplitter")) + continue; + if (!it.current()->isVisibleTo(this)) + continue; + if (selected.find(it.current()) != -1) + continue; + if (!WidgetDatabase::isContainer(WidgetDatabase::idFromClassName( + WidgetFactory::classNameOf(it.current()))) && it.current() != mainContainer()) + continue; + + // the rectangles of all ancestors of the container must contain the insert position + QWidget *w = it.current(); + while (w && !w->isTopLevel()) + { + if (!w->rect().contains((w->mapFromGlobal(pos)))) + break; + w = w->parentWidget(); + } + if (w && !w->isTopLevel()) continue; // we did not get through the full while loop + + int wd = widgetDepth(it.current()); + if (wd == depth && container && ((QObjectList*)it.current()->parentWidget()-> + children())->find(it.current()) > + ((QObjectList*)container->parentWidget()->children())->find(container)) + wd++; + if (wd > depth && !isChildOf(it.current(), notParentOf)) { + depth = wd; + container = it.current(); + } + } + + return container; +} + +bool FormWindow::isMainContainer(QObject *w) const +{ + return w && w->isWidgetType() && (w == (QWidget*)this || w == mainContainer()); +} + +void FormWindow::setMainContainer(QWidget *w) +{ + bool resetPropertyWidget = isMainContainer(propertyWidget); + if (mContainer) + insertedWidgets.remove(mContainer); + if (propertyWidget == mContainer) + propertyWidget = 0; + delete mContainer; + mContainer = w; + insertedWidgets.insert(mContainer, mContainer); + delete layout(); + QHBoxLayout *l = new QHBoxLayout(this); + l->addWidget(w); + if (resetPropertyWidget) + { + QObject *opw = propertyWidget; + propertyWidget = mContainer; + if (opw && opw->isWidgetType()) + repaintSelection((QWidget*)opw); + } +} + +bool FormWindow::savePixmapInline() const +{ + return pixInline; +} + +QString FormWindow::pixmapLoaderFunction() const +{ + return pixLoader; +} + +void FormWindow::setSavePixmapInline(bool b) +{ + pixInline = b; +} + +void FormWindow::setPixmapLoaderFunction(const QString &func) +{ + pixLoader = func; +} + +void FormWindow::setActiveObject(QObject *o) +{ + emitShowProperties(o); + propertyWidget = o; +} + +QAction *FormWindow::findAction(const QString &name) +{ + for (QAction *a = actionList().first(); a; a = actionList().next()) + { + if (QString(a->name()) == name) + return a; + QAction *ac = (QAction*)a->child(name.latin1(), "QAction"); + if (ac) + return ac; + } + return 0; +} + +void FormWindow::killAccels(QObject *top) +{ + QObjectList *l = top->queryList("QAccel"); + if (!l) + return; + for (QObject *o = l->first(); o; o = l->next()) + ((QAccel*)o)->setEnabled(false); + delete l; +} + +bool FormWindow::isCentralWidget(QObject *w) const +{ + if (!mainContainer()->inherits("QMainWindow")) + return false; + return w == ((QMainWindow*)mainContainer())->centralWidget(); +} + +QObject *FormWindow::connectableObject(QObject *w, QObject *) +{ + return w; +} + +int FormWindow::layoutDefaultSpacing() const +{ + return defSpacing; +} + +int FormWindow::layoutDefaultMargin() const +{ + return defMargin; +} + +void FormWindow::setLayoutDefaultSpacing(int s) +{ + defSpacing = s; +} + +void FormWindow::setLayoutDefaultMargin(int s) +{ + defMargin = s; +} + +FormFile *FormWindow::formFile() const +{ + return ff; +} + +void FormWindow::setFormFile(FormFile *f) +{ + ff = f; + if (ff) + connect(this, SIGNAL(modificationChanged(bool, const QString&)), ff, SLOT(formWindowChangedSomehow())); +} +#include "formwindow.moc" diff --git a/kommander/editor/formwindow.h b/kommander/editor/formwindow.h new file mode 100644 index 00000000..c6d871b0 --- /dev/null +++ b/kommander/editor/formwindow.h @@ -0,0 +1,292 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#ifndef FORMWINDOW_H +#define FORMWINDOW_H + +#include "command.h" +#include "metadatabase.h" +#include "sizehandle.h" +#include "actiondnd.h" + + +#include <qwidget.h> +#include <qmap.h> +#include <qptrdict.h> +#include <qpixmap.h> +#include <qwidgetlist.h> +#include <qmap.h> + +class QPaintEvent; +class QMouseEvent; +class QKeyEvent; +class QPainter; +class QLabel; +class MainWindow; +class QTimer; +class QFocusEvent; +class QCloseEvent; +class Resource; +class QResizeEvent; +class BreakLayoutCommand; +class QPixmap; +class QSizeGrip; +class FormFile; + +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) +#include "orderindicator.h" +#else +class OrderIndicator; +#endif + +class FormWindow : public QWidget +{ + Q_OBJECT + Q_PROPERTY( QString fileName READ fileName WRITE setFileName ) + +public: + FormWindow( FormFile *f, MainWindow *mw, QWidget *parent, const char *name = 0 ); + FormWindow( FormFile *f, QWidget *parent, const char *name = 0 ); + ~FormWindow(); + + void init(); + virtual void setMainWindow( MainWindow *w ); + + virtual QString fileName() const; + virtual void setFileName( const QString &fn ); + + virtual QPoint grid() const; + virtual QPoint gridPoint( const QPoint &p ); + + virtual CommandHistory *commandHistory(); + + virtual void undo(); + virtual void redo(); + virtual QString copy(); + virtual void paste( const QString &cb, QWidget *parent ); + virtual void lowerWidgets(); + virtual void raiseWidgets(); + virtual void checkAccels(); + + virtual void layoutHorizontal(); + virtual void layoutVertical(); + virtual void layoutHorizontalSplit(); + virtual void layoutVerticalSplit(); + virtual void layoutGrid(); + + virtual void layoutHorizontalContainer( QWidget *w ); + virtual void layoutVerticalContainer( QWidget *w ); + virtual void layoutGridContainer( QWidget *w ); + + virtual void breakLayout( QWidget *w ); + + virtual void selectWidget( QObject *w, bool select = TRUE ); + virtual void selectAll(); + virtual void updateSelection( QWidget *w ); + virtual void raiseSelection( QWidget *w ); + virtual void repaintSelection( QWidget *w ); + virtual void clearSelection( bool changePropertyDisplay = TRUE ); + virtual void selectWidgets(); + bool isWidgetSelected( QObject *w ); + virtual void updateChildSelections( QWidget *w ); + virtual void raiseChildSelections( QWidget *w ); + + virtual void emitUpdateProperties( QObject *w ); + virtual void emitShowProperties( QObject *w = 0 ); + virtual void emitSelectionChanged(); + + virtual void setPropertyShowingBlocked( bool b ); + bool isPropertyShowingBlocked() const; + + virtual QLabel *sizePreview() const; + virtual void checkPreviewGeometry( QRect &r ); + + virtual QPtrDict<QWidget> *widgets(); + virtual QWidgetList selectedWidgets() const; + + virtual QWidget *designerWidget( QObject *o ) const; + + virtual void handleContextMenu( QContextMenuEvent *e, QWidget *w ); + virtual void handleMousePress( QMouseEvent *e, QWidget *w ); + virtual void handleMouseRelease( QMouseEvent *e, QWidget *w ); + virtual void handleMouseDblClick( QMouseEvent *e, QWidget *w ); + virtual void handleMouseMove( QMouseEvent *e, QWidget *w ); + virtual void handleKeyPress( QKeyEvent *e, QWidget *w ); + virtual void handleKeyRelease( QKeyEvent *e, QWidget *w ); + + virtual void updateUndoInfo(); + + virtual MainWindow *mainWindow() const { return mainwindow; } + + bool checkCustomWidgets(); + virtual void insertWidget( QWidget *w, bool checkName = FALSE ); + virtual void removeWidget( QWidget *w ); + virtual void deleteWidgets(); + virtual void editAdjustSize(); + virtual void editConnections(); + + virtual int numSelectedWidgets() const; + virtual int numVisibleWidgets() const; + + virtual bool hasInsertedChildren( QWidget *w ) const; + + virtual QWidget *currentWidget() const + { return propertyWidget && propertyWidget->isWidgetType() ? (QWidget*)propertyWidget : 0; } + virtual bool unify( QObject *w, QString &s, bool changeIt ); + + virtual bool isCustomWidgetUsed( MetaDataBase::CustomWidget *w ); + virtual bool isDatabaseWidgetUsed() const; + virtual bool isDatabaseAware() const; + + virtual QPoint mapToForm( const QWidget* w, const QPoint& ) const; + + bool isMainContainer( QObject *w ) const; + bool isCentralWidget( QObject *w ) const; + QWidget *mainContainer() const { return mContainer; } + void setMainContainer( QWidget *w ); + + void paintGrid( QWidget *w, QPaintEvent *e ); + + bool savePixmapInline() const; + QString pixmapLoaderFunction() const; + void setSavePixmapInline( bool b ); + void setPixmapLoaderFunction( const QString &func ); + + void setToolFixed() { toolFixed = TRUE; } + + void setActiveObject( QObject *o ); + + QPtrList<QAction> &actionList() { return actions; } + QAction *findAction( const QString &name ); + + void killAccels( QObject *top ); + + int layoutDefaultSpacing() const; + int layoutDefaultMargin() const; + void setLayoutDefaultSpacing( int s ); + void setLayoutDefaultMargin( int s ); + + void initSlots(); + FormFile *formFile() const; + void setFormFile( FormFile *f ); + +public slots: + virtual void widgetChanged( QObject *w ); + virtual void currentToolChanged(); + virtual void visibilityChanged(); + virtual void modificationChanged( bool m ); + +signals: + void showProperties( QObject *w ); + void updateProperties( QObject *w ); + void undoRedoChanged( bool undoAvailable, bool redoAvailable, const QString &undoCmd, + const QString &redoCmd ); + void selectionChanged(); + void modificationChanged( bool m, FormWindow *fw ); + void modificationChanged( bool m, const QString &s ); + void fileNameChanged( const QString &s, FormWindow *fw ); + +protected: + virtual void closeEvent( QCloseEvent *e ); + virtual void focusInEvent( QFocusEvent *e ); + virtual void focusOutEvent( QFocusEvent *e ); + virtual void resizeEvent( QResizeEvent *e ); + void mouseDoubleClickEvent( QMouseEvent *e ) + { handleMouseDblClick( e, mainContainer() ); } + +private: + enum RectType { Insert, Rubber }; + + virtual void beginUnclippedPainter( bool doNot ); + virtual void endUnclippedPainter(); + virtual void drawConnectLine(); + virtual void drawSizePreview( const QPoint &pos, const QString& text ); + + virtual void insertWidget(); + virtual void moveSelectedWidgets( int dx, int dy ); + + virtual void startRectDraw( const QPoint &p, const QPoint &global, QWidget *w, RectType t ); + virtual void continueRectDraw( const QPoint &p, const QPoint &global, QWidget *w, RectType t ); + virtual void endRectDraw(); + + virtual void checkSelectionsForMove( QWidget *w ); + virtual BreakLayoutCommand *breakLayoutCommand( QWidget *w ); + + virtual bool allowMove( QWidget *w ); + + virtual void saveBackground(); + virtual void restoreConnectionLine(); + virtual void restoreRect( const QRect &rect ) ; + + virtual void showOrderIndicators(); + virtual void updateOrderIndicators(); + virtual void repositionOrderIndicators(); + virtual void hideOrderIndicators(); + + virtual QWidget *containerAt( const QPoint &pos, QWidget *notParentOf ); + + QObject *connectableObject( QObject *w, QObject *fallback ); + +private slots: + virtual void invalidCheckedSelections(); + virtual void updatePropertiesTimerDone(); + virtual void showPropertiesTimerDone(); + virtual void selectionChangedTimerDone(); + +private: + int currTool; + bool oldRectValid, widgetPressed, drawRubber, checkedSelectionsForMove; + QRect currRect; + QPoint rectAnchor; + QPainter *unclippedPainter; + QPoint sizePreviewPos; + QPixmap sizePreviewPixmap; + MainWindow *mainwindow; + QPtrList<WidgetSelection> selections; + QPtrDict<WidgetSelection> usedSelections; + QRect widgetGeom, rubber; + QPoint oldPressPos, origPressPos; + CommandHistory commands; + QMap<ulong, QPoint> moving; + QWidget *insertParent; + QObject *propertyWidget; + QLabel *sizePreviewLabel; + QTimer *checkSelectionsTimer; + QPtrDict<QWidget> insertedWidgets; + bool propShowBlocked; + QTimer* updatePropertiesTimer, *showPropertiesTimer, *selectionChangedTimer; + QPoint connectStartPos, currentConnectPos; + QObject *connectSender, *connectReceiver; + QPixmap *buffer; + QPtrList<OrderIndicator> orderIndicators; + QWidgetList orderedWidgets; + QWidgetList stackedWidgets; + QWidget *mContainer; + bool pixInline; + QString pixLoader; + bool toolFixed; + QPtrList<QAction> actions; + QWidget* targetContainer; + QPalette restorePalette; + bool hadOwnPalette; + int defSpacing, defMargin; + FormFile *ff; +}; + +#endif diff --git a/kommander/editor/functions.ui b/kommander/editor/functions.ui new file mode 100644 index 00000000..48616099 --- /dev/null +++ b/kommander/editor/functions.ui @@ -0,0 +1,722 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>FunctionsDialogBase</class> +<widget class="QDialog"> + <property name="name"> + <cstring>FunctionsDialogBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>638</width> + <height>670</height> + </rect> + </property> + <property name="caption"> + <string>Function Browser</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="0" column="2"> + <property name="name"> + <cstring>layout7_2</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1_2</cstring> + </property> + <property name="text"> + <string>Description:</string> + </property> + </widget> + <widget class="KTextBrowser"> + <property name="name"> + <cstring>descriptionText</cstring> + </property> + <property name="minimumSize"> + <size> + <width>200</width> + <height>0</height> + </size> + </property> + </widget> + </vbox> + </widget> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout7</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>&Group:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>groupComboBox</cstring> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>groupComboBox</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>150</width> + <height>0</height> + </size> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel2</cstring> + </property> + <property name="text"> + <string>&Function:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>functionListBox</cstring> + </property> + </widget> + <widget class="KListBox"> + <property name="name"> + <cstring>functionListBox</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </vbox> + </widget> + <widget class="QGroupBox" row="0" column="1"> + <property name="name"> + <cstring>groupBox1</cstring> + </property> + <property name="minimumSize"> + <size> + <width>250</width> + <height>0</height> + </size> + </property> + <property name="title"> + <string>&Parameters</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel" row="6" column="0"> + <property name="name"> + <cstring>argLabel3</cstring> + </property> + <property name="text"> + <string>Arg3</string> + </property> + </widget> + <widget class="QLabel" row="10" column="0"> + <property name="name"> + <cstring>argLabel5</cstring> + </property> + <property name="text"> + <string>Arg5</string> + </property> + </widget> + <spacer row="14" column="0"> + <property name="name"> + <cstring>spacer4</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>16</height> + </size> + </property> + </spacer> + <widget class="KPushButton" row="15" column="0"> + <property name="name"> + <cstring>copyButton</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximumSize"> + <size> + <width>32767</width> + <height>32</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="toolTip" stdset="0"> + <string>Insert function</string> + </property> + </widget> + <widget class="QLabel" row="8" column="0"> + <property name="name"> + <cstring>argLabel4</cstring> + </property> + <property name="text"> + <string>Arg4</string> + </property> + </widget> + <widget class="KComboBox" row="1" column="0"> + <property name="name"> + <cstring>widgetComboBox</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>3</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QLayoutWidget" row="3" column="0"> + <property name="name"> + <cstring>layout11</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KLineEdit"> + <property name="name"> + <cstring>arg1Edit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>quote1</cstring> + </property> + <property name="text"> + <string>Quote</string> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>combo1</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>argLabel1</cstring> + </property> + <property name="text"> + <string>Arg1</string> + </property> + </widget> + <widget class="QLayoutWidget" row="5" column="0"> + <property name="name"> + <cstring>layout12</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KLineEdit"> + <property name="name"> + <cstring>arg2Edit</cstring> + </property> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>quote2</cstring> + </property> + <property name="text"> + <string>Quote</string> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>combo2</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget" row="7" column="0"> + <property name="name"> + <cstring>layout13</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KLineEdit"> + <property name="name"> + <cstring>arg3Edit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>quote3</cstring> + </property> + <property name="text"> + <string>Quote</string> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>combo3</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>widgetLabel</cstring> + </property> + <property name="text"> + <string>Widget:</string> + </property> + </widget> + <widget class="QLayoutWidget" row="9" column="0"> + <property name="name"> + <cstring>layout14</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KLineEdit"> + <property name="name"> + <cstring>arg4Edit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>quote4</cstring> + </property> + <property name="text"> + <string>Quote</string> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>combo4</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget" row="11" column="0"> + <property name="name"> + <cstring>layout15</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KLineEdit"> + <property name="name"> + <cstring>arg5Edit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>quote5</cstring> + </property> + <property name="text"> + <string>Quote</string> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>combo5</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget" row="13" column="0"> + <property name="name"> + <cstring>layout16</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KLineEdit"> + <property name="name"> + <cstring>arg6Edit</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>quote6</cstring> + </property> + <property name="text"> + <string>Quote</string> + </property> + </widget> + <widget class="KComboBox"> + <property name="name"> + <cstring>combo6</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </hbox> + </widget> + <widget class="QLabel" row="12" column="0"> + <property name="name"> + <cstring>argLabel6</cstring> + </property> + <property name="text"> + <string>Arg6</string> + </property> + </widget> + <widget class="QLabel" row="4" column="0"> + <property name="name"> + <cstring>argLabel2</cstring> + </property> + <property name="text"> + <string>Arg2</string> + </property> + </widget> + </grid> + </widget> + <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="3"> + <property name="name"> + <cstring>layout6</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <spacer> + <property name="name"> + <cstring>spacer3</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>100</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="KPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + </widget> + <widget class="KPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>100</width> + <height>20</height> + </size> + </property> + </spacer> + </hbox> + </widget> + <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="3"> + <property name="name"> + <cstring>layout12</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout11</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KPushButton"> + <property name="name"> + <cstring>clearButton</cstring> + </property> + <property name="maximumSize"> + <size> + <width>32767</width> + <height>20</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="flat"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Clear edited text</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel4</cstring> + </property> + <property name="text"> + <string>Inserted &text:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>insertedText</cstring> + </property> + </widget> + </hbox> + </widget> + <widget class="KTextEdit"> + <property name="name"> + <cstring>insertedText</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>StrongFocus</enum> + </property> + <property name="textFormat"> + <enum>PlainText</enum> + </property> + <property name="linkUnderline"> + <bool>false</bool> + </property> + <property name="autoFormatting"> + <set>AutoAll</set> + </property> + </widget> + </hbox> + </widget> + </grid> +</widget> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>FunctionsDialogBase</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>FunctionsDialogBase</receiver> + <slot>reject()</slot> + </connection> +</connections> +<tabstops> + <tabstop>groupComboBox</tabstop> + <tabstop>functionListBox</tabstop> + <tabstop>widgetComboBox</tabstop> + <tabstop>arg1Edit</tabstop> + <tabstop>arg2Edit</tabstop> + <tabstop>arg3Edit</tabstop> + <tabstop>arg4Edit</tabstop> + <tabstop>arg5Edit</tabstop> + <tabstop>arg6Edit</tabstop> + <tabstop>copyButton</tabstop> + <tabstop>descriptionText</tabstop> + <tabstop>clearButton</tabstop> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> +</tabstops> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>ktextbrowser.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>klistbox.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>klineedit.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>klineedit.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>klineedit.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>klineedit.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>klineedit.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>klineedit.h</includehint> + <includehint>kcombobox.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>kpushbutton.h</includehint> + <includehint>ktextedit.h</includehint> +</includehints> +</UI> diff --git a/kommander/editor/functionsimpl.cpp b/kommander/editor/functionsimpl.cpp new file mode 100644 index 00000000..ad4924e5 --- /dev/null +++ b/kommander/editor/functionsimpl.cpp @@ -0,0 +1,392 @@ +/*************************************************************************** + functionsimpl.cpp - Function browser implementation + ------------------- + copyright : (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or mody * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +/* QT INCLUDES */ +#include <qcheckbox.h> +#include <qlabel.h> +#include <qmetaobject.h> +#include <qstringlist.h> +#include <qregexp.h> + +/* KDE INCLUDES */ +#include <kcombobox.h> +#include <kglobal.h> +#include <kiconloader.h> +#include <klistbox.h> +#include <klineedit.h> +#include <klocale.h> +#include <kpushbutton.h> +#include <ktextedit.h> +#include <ktextbrowser.h> +#include <kdebug.h> + +/* OTHER INCLUDES */ +#include "functionsimpl.h" +#include "kommanderwidget.h" +#include "invokeclass.h" +#include "widgetdatabase.h" + +const int MaxFunctionArgs = 6; + + +FunctionsDialog::FunctionsDialog(QWidget* a_parent, const QDict<QWidget>& a_widgetList, bool useInternalParser, char* a_name, + bool a_modal) + : FunctionsDialogBase(a_parent, a_name, a_modal), m_widgetList(a_widgetList), m_useInternalParser(useInternalParser) +{ + clearButton->setPixmap(KGlobal::iconLoader()->loadIcon("locationbar_erase", KIcon::Toolbar)); + copyButton->setPixmap(KGlobal::iconLoader()->loadIcon("1downarrow", KIcon::Toolbar)); + + groupComboBox->insertStringList(SpecialInformation::groups()); + connect(groupComboBox, SIGNAL(activated(int)), SLOT(groupChanged(int))); + connect(widgetComboBox, SIGNAL(activated(int)), SLOT(groupChanged(int))); + connect(functionListBox, SIGNAL(highlighted(int)), SLOT(functionChanged(int))); + connect(copyButton, SIGNAL(clicked()), SLOT(copyText())); + connect(clearButton, SIGNAL(clicked()), insertedText, SLOT(clear())); + + // build widget name list + for (QDictIterator<QWidget> It(m_widgetList); It.current(); ++It) + m_widgetNames.append(It.currentKey()); + m_widgetNames.sort(); + widgetComboBox->insertStringList(m_widgetNames); + + for (int j = 0; j < WidgetDatabase::count(); j++) + { + QString group = WidgetDatabase::group(j); + if (group == "Kommander" || group == "Custom") + m_widgetTypes << WidgetDatabase::className(j); + } + m_widgetTypes.sort(); + +//TODO: Insert either the generic widget types or parse for on the fly created widget +//names. The problem is that the rest of the code depends on the fact that the widget +//from the widgetComboBox exists +// widgetComboBox->insertStringList(m_widgetTypes); + + m_acceptedSlots = InvokeClass::acceptedSlots(); + + m_DCOP = -1; // Select DCOP functions by default + m_Slots = -1; + for (int i=0; i<groupComboBox->count(); i++) + { + if (groupComboBox->text(i) == i18n("Slots")) + { + m_Slots = i; + break; + } + } + if (!useInternalParser) + { + groupComboBox->removeItem(m_Slots); + m_Slots = -1; + } + for (int i=0; i<groupComboBox->count(); i++) + { + if (groupComboBox->text(i) == "DCOP") + { + m_DCOP = i; + break; + } + } + groupComboBox->changeItem(i18n("Functions"), m_DCOP); //this is a quick way to rename this group in the UI + groupComboBox->setCurrentItem(m_DCOP); + groupChanged(groupComboBox->currentItem()); +} + +FunctionsDialog::~FunctionsDialog() +{ +} + +QString FunctionsDialog::functionText() const +{ + return insertedText->text(); +} + +QString FunctionsDialog::currentFunctionText() +{ + QString prefix, function; + int index = groupComboBox->currentItem(); + QString s = (index != m_DCOP ) ? groupComboBox->text(index) : "DCOP"; + if (m_useInternalParser) + { + function = SpecialInformation::parserGroupName(s); + if (!function.isEmpty()) + function += "_"; + } + else + { + prefix = "@"; + function = s + "."; + } + if (groupComboBox->currentText() == "Kommander") + return QString("%1%2%3").arg(prefix).arg(functionListBox->currentText()).arg(params()); + else if (groupComboBox->currentItem() == m_DCOP || groupComboBox->currentItem() == m_Slots) + return QString("%1%2.%3%4").arg(prefix).arg(widgetComboBox->currentText().section(' ', 0, 0)) + .arg(functionListBox->currentText().left(functionListBox->currentText().find('('))).arg(params()); + else + return QString("%1%2%3%4").arg(prefix).arg(function) + .arg(functionListBox->currentText()).arg(params()); +} + +void FunctionsDialog::groupChanged(int index) +{ + index = groupComboBox->currentItem(); + functionListBox->clear(); + m_slotList.clear(); + if (index == m_Slots) + { + KommanderWidget* a_atw = dynamic_cast<KommanderWidget *>(m_widgetList[widgetComboBox->currentText()]); + QStringList pFunctions = QStringList::fromStrList(a_atw->object()->metaObject()->slotNames(true)); + for (uint i=0; i<pFunctions.count(); i++) + { + QString slot = pFunctions[i]; + QString slotArgStr = slot.section(QRegExp("\\(|\\)"), 1); + if (slotArgStr.isEmpty() || m_acceptedSlots.contains(slotArgStr)) + { + QString name = slot.remove("()"); + if (!m_slotList.contains(name)) + { + m_slotList[name] = slot; + functionListBox->insertItem(name); + } + } + } + } else + { + QString s = (index != m_DCOP ) ? groupComboBox->text(index) : "DCOP"; + QStringList pFunctions = SpecialInformation::functions(s); + KommanderWidget* a_atw = 0; + if (index == m_DCOP) + a_atw = dynamic_cast<KommanderWidget *>(m_widgetList[widgetComboBox->currentText()]); + int pGroup = SpecialInformation::group(s); + SpecialFunction::ParserType pType = m_useInternalParser + ? SpecialFunction::InternalParser : SpecialFunction::MacroParser; + + for (uint i=0; i<pFunctions.count(); i++) + { + int pFunction = SpecialInformation::function(pGroup, pFunctions[i]); + if (!SpecialInformation::isValid(pGroup, pFunction, pType)) + continue; + if (a_atw && !a_atw->isFunctionSupported(pFunction) && !a_atw->isCommonFunction(pFunction)) + continue; + functionListBox->insertItem(pFunctions[i]); + } + } + + functionListBox->sort(); + functionListBox->setCurrentItem(0); + functionChanged(functionListBox->currentItem()); +} + +void FunctionsDialog::functionChanged(int) +{ + if (groupComboBox->currentItem() == m_Slots) + { + KommanderWidget* w = dynamic_cast<KommanderWidget *>(m_widgetList[widgetComboBox->currentText()]); + QObject *o = w->object(); + QString slotHelp = i18n("To learn more about the slot, look at the documentation of the base Qt/KDE class, most probably <i>%1</i>.").arg(o->metaObject()->superClassName() ? QString(o->metaObject()->superClassName()) : QString(o->className()) ); + QString slotName = functionListBox->currentText(); + QString slot = m_slotList[slotName]; + descriptionText->clear(); + descriptionText->setText(i18n("<qt><h3>%1</h3>" + "<p><b>Description:</b> %2\n<p><b>Syntax:</b> <i>%3</i>%4</qt>") + .arg(slotName).arg(slotHelp).arg(slot).arg("")); + } else + { + int index = groupComboBox->currentItem(); + QString s = (index != m_DCOP ) ? groupComboBox->text(index) : "DCOP"; + m_function = SpecialInformation::functionObject(s, + functionListBox->currentText()); + QString defArgs; + if (m_function.minArg() < m_function.argumentCount()) + if (!m_function.minArg()) + defArgs = i18n("<p>Parameters are not obligatory."); + else + defArgs = i18n("<p>Only first argument is obligatory.", + "<p>Only first %n arguments are obligatory.", + m_function.minArg()); + + uint pflags = SpecialFunction::ShowArgumentNames; + if (m_function.maxArg() && m_function.argumentName(0) == "widget") + pflags = pflags | SpecialFunction::SkipFirstArgument; + + descriptionText->clear(); + descriptionText->setText(i18n("<qt><h3>%1</h3>" + "<p><b>Description:</b> %2\n<p><b>Syntax:</b> <i>%3</i>%4</qt>") + .arg(functionListBox->currentText()).arg(m_function.description()) + .arg(m_function.prototype(pflags)).arg(defArgs)); + + } + showParameters(); +} + +void FunctionsDialog::copyText() +{ + QString text = currentFunctionText(); + int para, i; + insertedText->getCursorPosition(¶, &i); +// int cursorPos = insertedText->cursorPosition(); + insertedText->insert(text); + insertedText->setCursorPosition(para, i + text.find('(') + 1); +} + +void FunctionsDialog::showParameters() +{ + KLineEdit* edits[MaxFunctionArgs] = {arg1Edit, arg2Edit, arg3Edit, arg4Edit, arg5Edit, arg6Edit}; + QLabel* labels[MaxFunctionArgs] = {argLabel1, argLabel2, argLabel3, argLabel4, argLabel5, argLabel6}; + KComboBox* combos[MaxFunctionArgs] = {combo1, combo2, combo3, combo4, combo5, combo6}; + QCheckBox* quotes[MaxFunctionArgs] = {quote1, quote2, quote3, quote4, quote5, quote6}; + + if (groupComboBox->currentItem() == m_Slots) + { + widgetComboBox->setShown(true); + widgetLabel->setShown(true); + QString slot = m_slotList[functionListBox->currentText()]; + QStringList slotArgs = QStringList::split(',', slot.section(QRegExp("\\(|\\)"), 1), false); + int argsCount = slotArgs.count(); + for (int i = 0; i < MaxFunctionArgs; i++) + { + labels[i]->setShown(i < argsCount); + QString type; + if (i < argsCount) + { + type = slotArgs[i].remove(QRegExp("\\*|\\&|const\\s")); + labels[i]->setText(QString("%1:").arg(type)); + } + quotes[i]->setChecked(true); + quotes[i]->setShown(false); + if (type == "bool") + { + edits[i]->setShown(false); + combos[i]->setShown(i < argsCount); + combos[i]->clear(); + combos[i]->setEditable(false); + combos[i]->insertItem("true"); + combos[i]->insertItem("false"); + } else + { + combos[i]->setShown(false); + edits[i]->setShown(i < argsCount); + edits[i]->clear(); + if (type == "QString") + { + quotes[i]->setShown(i < argsCount); + } + } + } + } else + { + int start = (m_function.argumentCount() && m_function.argumentName(0) == "widget"); + + widgetComboBox->setShown(start); + widgetLabel->setShown(start); + if (start) + { + arg1Edit->setShown(false); + argLabel1->setShown(false); + combo1->setShown(false); + quote1->setShown(false); + } + int argsCount = m_function.argumentCount(); + for (int i=start; i<MaxFunctionArgs; i++) + { + labels[i]->setShown(i < argsCount); + if (i < argsCount) + labels[i]->setText(QString("%1:").arg(m_function.argumentName(i))); + quotes[i]->setChecked(true); + quotes[i]->setShown(false); + if (m_function.argumentType(i) == "bool") + { + edits[i]->setShown(false); + combos[i]->setShown(i < argsCount); + combos[i]->setEditable(false); + combos[i]->clear(); + combos[i]->insertItem("true"); + combos[i]->insertItem("false"); + } else + { +//FIXME: big hack to show a combo for createWidgets. Good solution: extra flag for arguments telling if it is a file/widget/etc. + if (m_function.name() == "createWidget" && ( i == 1 || i == 2)) + { + combos[i]->clear(); + combos[i]->setEditable(true); + if ( i == 1) + { + combos[i]->insertStringList(m_widgetTypes); + } else + { + combos[i]->insertItem(""); + combos[i]->insertStringList(m_widgetNames); + } + edits[i]->setShown(false); + combos[i]->setShown(true); + } else + { + combos[i]->setShown(false); + edits[i]->setShown(i < argsCount); + edits[i]->clear(); + if (m_function.argumentType(i) == "QString") + { + quotes[i]->setShown(i < argsCount); + } + } + } + } + } +} + +QString FunctionsDialog::params() +{ + QLabel* labels[MaxFunctionArgs] = {argLabel1, argLabel2, argLabel3, argLabel4, argLabel5, argLabel6}; + KLineEdit* edits[MaxFunctionArgs] = {arg1Edit, arg2Edit, arg3Edit, arg4Edit, arg5Edit, arg6Edit}; + KComboBox* combos[MaxFunctionArgs] = {combo1, combo2, combo3, combo4, combo5, combo6}; + QStringList pars; + QCheckBox* quotes[MaxFunctionArgs] = {quote1, quote2, quote3, quote4, quote5, quote6}; + bool params = false; + bool slotsShown = (groupComboBox->currentItem() == m_Slots); + for (int i=0; i<MaxFunctionArgs; i++) + { + if (edits[i]->isShown()) + { + QString s = edits[i]->text(); + if (!s.isEmpty() || i < m_function.minArg()) + { + if (quotes[i]->isChecked() && ( (!slotsShown && m_function.argumentType(i) == "QString") + || (slotsShown && labels[i]->text().startsWith("QString")) ) ) + s = '"' + s + '"'; + pars.append(s); + } + params = true; + } else + if (combos[i]->isShown()) + { + QString s = combos[i]->currentText(); + if (!s.isEmpty() || i < m_function.minArg()) + { + if (s != "true" && s !="false") + s = '"' + s + '"'; + pars.append(s); + } + params = true; + } + } + QString a_param = pars.join(", "); + if (params) + return QString("(%1)").arg(a_param); + else + return a_param; +} + + +#include "functionsimpl.moc" diff --git a/kommander/editor/functionsimpl.h b/kommander/editor/functionsimpl.h new file mode 100644 index 00000000..fab8661d --- /dev/null +++ b/kommander/editor/functionsimpl.h @@ -0,0 +1,61 @@ +/*************************************************************************** + functionsimpl.h - Function browser implementation + ------------------- + copyright : (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef _HAVE_FUNCTIONSIMPL_H_ +#define _HAVE_FUNCTIONSIMPL_H_ + +#include <qstring.h> +#include <qstringlist.h> +#include <qwidget.h> +#include <qdict.h> + +#include "functions.h" +#include "specialinformation.h" + +class FunctionsDialog : public FunctionsDialogBase +{ + Q_OBJECT +public: + FunctionsDialog(QWidget*, const QDict<QWidget>&, bool m_useInternalParser, char* = 0, bool = true); + ~FunctionsDialog(); + // Return current content of text box + QString functionText() const; + // Return current function and parameters + QString currentFunctionText(); +public slots: + // Update list of function availabe for given group + void groupChanged(int); + // Update syntax of chosen function + void functionChanged(int); + // Copy current function and parameters into text box + void copyText(); + // Show widgets for current function's parameters + void showParameters(); +private: + // Calculate current parameters + QString params(); + SpecialFunction m_function; + int m_DCOP; + int m_Slots; + const QDict<QWidget> m_widgetList; + QStringList m_widgetNames; + QStringList m_widgetTypes; + bool m_useInternalParser; + QStringList m_acceptedSlots; + QMap<QString, QString> m_slotList; +}; + + +#endif + diff --git a/kommander/editor/globaldefs.h b/kommander/editor/globaldefs.h new file mode 100644 index 00000000..cc6ed400 --- /dev/null +++ b/kommander/editor/globaldefs.h @@ -0,0 +1,45 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef GLOBALDEFS_H +#define GLOBALDEFS_H + +#include <qcolor.h> + +#define BOXLAYOUT_DEFAULT_MARGIN 11 +#define BOXLAYOUT_DEFAULT_SPACING 6 + +#ifndef NO_STATIC_COLORS +static QColor *backColor1 = 0; +static QColor *backColor2 = 0; +static QColor *selectedBack = 0; + +static void init_colors() +{ + if ( backColor1 ) + return; + backColor1 = new QColor( 236, 245, 255 ); + backColor2 = new QColor( 250, 250, 250 ); + selectedBack = new QColor( 221, 221, 221 ); +} + +#endif + +#endif diff --git a/kommander/editor/hierarchyview.cpp b/kommander/editor/hierarchyview.cpp new file mode 100644 index 00000000..b3f17713 --- /dev/null +++ b/kommander/editor/hierarchyview.cpp @@ -0,0 +1,724 @@ +/********************************************************************** +** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "globaldefs.h" +#include "hierarchyview.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "command.h" +#include "widgetfactory.h" +#include "widgetdatabase.h" +#include "pixmapchooser.h" +#include "propertyeditor.h" +#include "listeditor.h" + +#include <qpalette.h> +#include <qobjectlist.h> +#include <qheader.h> +#include <qpopupmenu.h> +#include <qtabwidget.h> +#include <qwizard.h> +#include <qwidgetstack.h> +#include <qtabbar.h> +#include <qfeatures.h> +#include <qapplication.h> +#include <qtimer.h> +#include <qworkspace.h> +#include <qaccel.h> + +#include <klocale.h> + +#include <stdlib.h> + +static const char * const folder_xpm[]={ + "16 16 6 1", + ". c None", + "b c #ffff00", + "d c #000000", + "* c #999999", + "a c #cccccc", + "c c #ffffff", + "................", + "................", + "..*****.........", + ".*ababa*........", + "*abababa******..", + "*cccccccccccc*d.", + "*cbababababab*d.", + "*cabababababa*d.", + "*cbababababab*d.", + "*cabababababa*d.", + "*cbababababab*d.", + "*cabababababa*d.", + "*cbababababab*d.", + "**************d.", + ".dddddddddddddd.", + "................"}; + +QListViewItem *newItem = 0; + +HierarchyItem::HierarchyItem( Type type, QListViewItem *parent, + const QString &txt1, const QString &txt2, const QString &txt3 ) + : QListViewItem( parent, txt1, txt2, txt3 ), typ( type ) +{ +} + +HierarchyItem::HierarchyItem( Type type, QListView *parent, + const QString &txt1, const QString &txt2, const QString &txt3 ) + : QListViewItem( parent, txt1, txt2, txt3 ), typ( type ) +{ +} + +void HierarchyItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align ) +{ + QColorGroup g( cg ); + g.setColor( QColorGroup::Base, backgroundColor() ); + g.setColor( QColorGroup::Foreground, Qt::black ); + g.setColor( QColorGroup::Text, Qt::black ); + QString txt = text( 0 ); + if ( rtti() == Slot && + ( txt == "init()" || txt == "destroy()" ) ) { + listView()->setUpdatesEnabled( false ); + if ( txt == "init()" ) + setText( 0, txt + " " + i18n( "(Constructor)" ) ); + else + setText( 0, txt + " " + i18n( "(Destructor)" ) ); + QListViewItem::paintCell( p, g, column, width, align ); + setText( 0, txt ); + listView()->setUpdatesEnabled( true ); + } else { + QListViewItem::paintCell( p, g, column, width, align ); + } + p->save(); + p->setPen( QPen( cg.dark(), 1 ) ); + if ( column == 0 ) + p->drawLine( 0, 0, 0, height() - 1 ); + if ( listView()->firstChild() != this ) { + if ( nextSibling() != itemBelow() && itemBelow()->depth() < depth() ) { + int d = depth() - itemBelow()->depth(); + p->drawLine( -listView()->treeStepSize() * d, height() - 1, 0, height() - 1 ); + } + } + p->drawLine( 0, height() - 1, width, height() - 1 ); + p->drawLine( width - 1, 0, width - 1, height() ); + p->restore(); +} + +QColor HierarchyItem::backgroundColor() +{ + updateBackColor(); + return backColor; +} + +void HierarchyItem::updateBackColor() +{ + if ( listView()->firstChild() == this ) { + backColor = *backColor1; + return; + } + + QListViewItemIterator it( this ); + --it; + if ( it.current() ) { + if ( ( ( HierarchyItem*)it.current() )->backColor == *backColor1 ) + backColor = *backColor2; + else + backColor = *backColor1; + } else { + backColor = *backColor1; + } +} + +void HierarchyItem::setWidget( QWidget *w ) +{ + wid = w; +} + +QWidget *HierarchyItem::widget() const +{ + return wid; +} + +void HierarchyItem::okRename( int col ) +{ + if ( newItem == this ) + newItem = 0; + QListViewItem::okRename( col ); +} + +void HierarchyItem::cancelRename( int col ) +{ + if ( newItem == this ) { + newItem = 0; + QListViewItem::cancelRename( col ); + delete this; + return; + } + QListViewItem::cancelRename( col ); +} + + + + +HierarchyList::HierarchyList( QWidget *parent, FormWindow *fw, bool doConnects ) + : QListView( parent ), formWindow( fw ) +{ + init_colors(); + + setDefaultRenameAction( Accept ); + header()->setMovingEnabled( false ); + header()->setStretchEnabled( true ); + normalMenu = 0; + tabWidgetMenu = 0; + addColumn( i18n("Name" ) ); + addColumn( i18n("Class" ) ); + QPalette p( palette() ); + p.setColor( QColorGroup::Base, QColor( *backColor2 ) ); + (void)*selectedBack; // hack + setPalette( p ); + disconnect( header(), SIGNAL( sectionClicked( int ) ), + this, SLOT( changeSortColumn( int ) ) ); + setSorting( -1 ); + setHScrollBarMode( AlwaysOff ); + setVScrollBarMode( AlwaysOn ); + if ( doConnects ) { + connect( this, SIGNAL( clicked( QListViewItem * ) ), + this, SLOT( objectClicked( QListViewItem * ) ) ); + connect( this, SIGNAL( returnPressed( QListViewItem * ) ), + this, SLOT( objectClicked( QListViewItem * ) ) ); + connect( this, SIGNAL( contextMenuRequested( QListViewItem *, const QPoint&, int ) ), + this, SLOT( showRMBMenu( QListViewItem *, const QPoint & ) ) ); + } + deselect = true; + setColumnWidthMode( 1, Manual ); +} + +void HierarchyList::keyPressEvent( QKeyEvent *e ) +{ + if ( e->key() == Key_Shift || e->key() == Key_Control ) + deselect = false; + else + deselect = true; + QListView::keyPressEvent( e ); +} + +void HierarchyList::keyReleaseEvent( QKeyEvent *e ) +{ + deselect = true; + QListView::keyReleaseEvent( e ); +} + +void HierarchyList::viewportMousePressEvent( QMouseEvent *e ) +{ + if ( e->state() & ShiftButton || e->state() & ControlButton ) + deselect = false; + else + deselect = true; + QListView::viewportMousePressEvent( e ); +} + +void HierarchyList::viewportMouseReleaseEvent( QMouseEvent *e ) +{ + QListView::viewportMouseReleaseEvent( e ); +} + +void HierarchyList::objectClicked( QListViewItem *i ) +{ + if ( !i ) + return; + + QWidget *w = findWidget( i ); + if ( !w ) + return; + if ( formWindow == w ) { + if ( deselect ) + formWindow->clearSelection( false ); + formWindow->emitShowProperties( formWindow ); + return; + } + + if ( !formWindow->widgets()->find( w ) ) { + if ( w->parent() && w->parent()->inherits( "QWidgetStack" ) && + w->parent()->parent() && + ( w->parent()->parent()->inherits( "QTabWidget" ) || + w->parent()->parent()->inherits( "QWizard" ) ) ) { + if ( w->parent()->parent()->inherits( "QTabWidget" ) ) + ( (QTabWidget*)w->parent()->parent() )->showPage( w ); + else + ( (QDesignerWizard*)w->parent()->parent() )->setCurrentPage( ( (QDesignerWizard*)w->parent()->parent() )->pageNum( w ) ); + w = (QWidget*)w->parent()->parent(); + formWindow->emitUpdateProperties( formWindow->currentWidget() ); + } else { + return; + } + } + + if ( deselect ) + formWindow->clearSelection( false ); + if ( w->isVisibleTo( formWindow ) ) + formWindow->selectWidget( w, true ); +} + +QWidget *HierarchyList::findWidget( QListViewItem *i ) +{ + return ( (HierarchyItem*)i )->widget(); +} + +QListViewItem *HierarchyList::findItem( QWidget *w ) +{ + QListViewItemIterator it( this ); + while ( it.current() ) { + if ( ( (HierarchyItem*)it.current() )->widget() == w ) + return it.current(); + ++it; + } + return 0; +} + +QWidget *HierarchyList::current() const +{ + if ( currentItem() ) + return ( (HierarchyItem*)currentItem() )->widget(); + return 0; +} + +void HierarchyList::changeNameOf( QWidget *w, const QString &name ) +{ + QListViewItem *item = findItem( w ); + if ( !item ) + return; + item->setText( 0, name ); +} + + +void HierarchyList::changeDatabaseOf( QWidget *w, const QString & info ) +{ +#ifndef QT_NO_SQL + if ( !formWindow->isDatabaseAware() ) + return; + QListViewItem *item = findItem( w ); + if ( !item ) + return; + item->setText( 2, info ); +#else + Q_UNUSED(w); + Q_UNUSED(info); +#endif +} + +void HierarchyList::setup() +{ + if ( !formWindow ) + return; + clear(); + QWidget *w = formWindow->mainContainer(); +#ifndef QT_NO_SQL + if ( formWindow->isDatabaseAware() ) { + if ( columns() == 2 ) { + addColumn( i18n("Database" ) ); + header()->resizeSection( 0, 1 ); + header()->resizeSection( 1, 1 ); + header()->resizeSection( 2, 1 ); + header()->adjustHeaderSize(); + } + } else { + if ( columns() == 3 ) { + removeColumn( 2 ); + } + } +#endif + if ( w ) + insertObject( w, 0 ); +} + +void HierarchyList::setOpen( QListViewItem *i, bool b ) +{ + QListView::setOpen( i, b ); +} + +void HierarchyList::insertObject( QObject *o, QListViewItem *parent ) +{ + bool fakeMainWindow = false; + if ( o && o->inherits( "QMainWindow" ) ) { + QObject *cw = ( (QMainWindow*)o )->centralWidget(); + if ( cw ) { + o = cw; + fakeMainWindow = true; + } + } + QListViewItem *item = 0; + QString className = WidgetFactory::classNameOf( o ); + if ( o->inherits( "QLayoutWidget" ) ) { + switch ( WidgetFactory::layoutType( (QWidget*)o ) ) { + case WidgetFactory::HBox: + className = "HBox"; + break; + case WidgetFactory::VBox: + className = "VBox"; + break; + case WidgetFactory::Grid: + className = "Grid"; + break; + default: + break; + } + } + + QString dbInfo; +#ifndef QT_NO_SQL + dbInfo = MetaDataBase::fakeProperty( o, "database" ).toStringList().join("."); +#endif + + QString name = o->name(); + if ( o->parent() && o->parent()->inherits( "QWidgetStack" ) && + o->parent()->parent() ) { + if ( o->parent()->parent()->inherits( "QTabWidget" ) ) + name = ( (QTabWidget*)o->parent()->parent() )->tabLabel( (QWidget*)o ); + else if ( o->parent()->parent()->inherits( "QWizard" ) ) + name = ( (QWizard*)o->parent()->parent() )->title( (QWidget*)o ); + } + + QToolBox *tb; + if ( o->parent() && o->parent()->parent() && + (tb = ::qt_cast<QToolBox*>(o->parent()->parent()->parent())) ) + name = tb->itemLabel( tb->indexOf((QWidget*)o) ); + + + if ( fakeMainWindow ) { + name = o->parent()->name(); + className = "QMainWindow"; + } + + if ( !parent ) + item = new HierarchyItem( HierarchyItem::Widget, this, name, className, dbInfo ); + else + item = new HierarchyItem( HierarchyItem::Widget, parent, name, className, dbInfo ); + if ( !parent ) + item->setPixmap( 0, PixmapChooser::loadPixmap( "form.xpm", PixmapChooser::Mini ) ); + else if ( o->inherits( "QLayoutWidget") ) + item->setPixmap( 0, PixmapChooser::loadPixmap( "layout.xpm", PixmapChooser::Small ) ); + else + item->setPixmap( 0, WidgetDatabase::iconSet( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( o ) ) ). + pixmap( QIconSet::Small, QIconSet::Normal ) ); + ( (HierarchyItem*)item )->setWidget( (QWidget*)o ); + + const QObjectList *l = o->children(); + if ( !l ) + return; + QObjectListIt it( *l ); + it.toLast(); + for ( ; it.current(); --it ) { + if ( !it.current()->isWidgetType() || ( (QWidget*)it.current() )->isHidden() ) + continue; + if ( !formWindow->widgets()->find( (QWidget*)it.current() ) ) { + if ( it.current()->parent() && + ( it.current()->parent()->inherits( "QTabWidget" ) || + it.current()->parent()->inherits( "QWizard" ) ) && + it.current()->inherits( "QWidgetStack" ) ) { + QObject *obj = it.current(); + QObjectList *l2 = obj->queryList( "QWidget", 0, true, false ); + QDesignerTabWidget *tw = 0; + QDesignerWizard *dw = 0; + if ( it.current()->parent()->inherits( "QTabWidget" ) ) + tw = (QDesignerTabWidget*)it.current()->parent(); + if ( it.current()->parent()->inherits( "QWizard" ) ) + dw = (QDesignerWizard*)it.current()->parent(); + QWidgetStack *stack = (QWidgetStack*)obj; + for ( obj = l2->last(); obj; obj = l2->prev() ) { + if ( qstrcmp( obj->className(), "QWidgetStackPrivate::Invisible" ) == 0 || + ( tw && !tw->tabBar()->tab( stack->id( (QWidget*)obj ) ) ) || + ( dw && dw->isPageRemoved( (QWidget*)obj ) ) ) + continue; + insertObject( obj, item ); + } + delete l2; + } else if ( ::qt_cast<QToolBox*>(it.current()->parent()) ) { + if ( !::qt_cast<QScrollView*>(it.current()) ) + continue; + QToolBox *tb = (QToolBox*)it.current()->parent(); + for ( int i = tb->count() - 1; i >= 0; --i ) + insertObject( tb->item( i ), item ); + } + continue; + } + insertObject( it.current(), item ); + } + + if ( item->firstChild() ) + item->setOpen( true ); +} + +void HierarchyList::setCurrent( QWidget *w ) +{ + QListViewItemIterator it( this ); + while ( it.current() ) { + if ( ( (HierarchyItem*)it.current() )->widget() == w ) { + blockSignals( true ); + setCurrentItem( it.current() ); + ensureItemVisible( it.current() ); + blockSignals( false ); + return; + } + ++it; + } +} + +void HierarchyList::showRMBMenu( QListViewItem *i, const QPoint & p ) +{ + if ( !i ) + return; + + + QWidget *w = findWidget( i ); + if ( !w ) + return; + + if ( w != formWindow && + !formWindow->widgets()->find( w ) ) + return; + + if ( w->isVisibleTo( formWindow ) ) { + if ( !w->inherits( "QTabWidget" ) && !w->inherits( "QWizard" ) ) { + if ( !normalMenu ) + normalMenu = formWindow->mainWindow()->setupNormalHierarchyMenu( this ); + normalMenu->popup( p ); + } else { + if ( !tabWidgetMenu ) + tabWidgetMenu = + formWindow->mainWindow()->setupTabWidgetHierarchyMenu( this, SLOT( addTabPage() ), + SLOT( removeTabPage() ) ); + tabWidgetMenu->popup( p ); + } + } +} + +void HierarchyList::addTabPage() +{ + QWidget *w = current(); + if ( !w ) + return; + if ( w->inherits( "QTabWidget" ) ) { + QTabWidget *tw = (QTabWidget*)w; + AddTabPageCommand *cmd = new AddTabPageCommand( i18n("Add Page to %1" ).arg( tw->name() ), formWindow, + tw, "Tab" ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } else if ( w->inherits( "QWizard" ) ) { + QWizard *wiz = (QWizard*)formWindow->mainContainer(); + AddWizardPageCommand *cmd = new AddWizardPageCommand( i18n("Add Page to %1" ).arg( wiz->name() ), formWindow, + wiz, "Page" ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } +} + +void HierarchyList::removeTabPage() +{ + QWidget *w = current(); + if ( !w ) + return; + if ( w->inherits( "QTabWidget" ) ) { + QTabWidget *tw = (QTabWidget*)w; + if ( tw->currentPage() ) { + QDesignerTabWidget *dtw = (QDesignerTabWidget*)tw; + DeleteTabPageCommand *cmd = new DeleteTabPageCommand( i18n("Delete Page %1 of %2" ). + arg( dtw->pageTitle() ).arg( tw->name() ), + formWindow, tw, tw->currentPage() ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } + } else if ( w->inherits( "QWizard" ) ) { + QWizard *wiz = (QWizard*)formWindow->mainContainer(); + if ( wiz->currentPage() ) { + QDesignerWizard *dw = (QDesignerWizard*)wiz; + DeleteWizardPageCommand *cmd = new DeleteWizardPageCommand( i18n("Delete Page %1 of %2" ). + arg( dw->pageTitle() ).arg( wiz->name() ), + formWindow, wiz, + wiz->indexOf( wiz->currentPage() ), true ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + } + } +} + +// ------------------------------------------------------------ + + +// ------------------------------------------------------------ +static HierarchyItem::Type getChildType( int type ) +{ + switch ( (HierarchyItem::Type)type ) { + case HierarchyItem::Widget: + case HierarchyItem::SlotParent: + qWarning( "getChildType: Inserting childs dynamically to Widget or SlotParent is not allwowed!" ); + return (HierarchyItem::Type)type; + case HierarchyItem::Public: + case HierarchyItem::Protected: + case HierarchyItem::Private: + case HierarchyItem::Slot: + return HierarchyItem::Slot; + case HierarchyItem::DefinitionParent: + case HierarchyItem::Definition: + return HierarchyItem::Definition; + case HierarchyItem::Event: + case HierarchyItem::EventFunction: + return HierarchyItem::Event; + } + return (HierarchyItem::Type)type; +} + +void HierarchyList::insertEntry( QListViewItem *i, const QPixmap &pix, const QString &s ) +{ + HierarchyItem *item = new HierarchyItem( getChildType( i->rtti() ), i, s, + QString::null, QString::null ); + if ( !pix.isNull() ) + item->setPixmap( 0, pix ); + item->setRenameEnabled( 0, true ); + setCurrentItem( item ); + ensureItemVisible( item ); + qApp->processEvents(); + newItem = item; + item->startRename( 0 ); +} + +HierarchyView::HierarchyView( QWidget *parent ) + : QTabWidget( parent, 0, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | + WStyle_Tool |WStyle_MinMax | WStyle_SysMenu ) +{ + formwindow = 0; + setIcon( PixmapChooser::loadPixmap( "logo" ) ); + listview = new HierarchyList( this, formWindow() ); + addTab( listview, i18n("Widgets" ) ); +} + +HierarchyView::~HierarchyView() +{ +} + +void HierarchyView::clear() +{ + listview->clear(); +} + +void HierarchyView::setFormWindow( FormWindow *fw, QWidget *w ) +{ + if (fw == 0 || w == 0) + { + listview->clear(); + listview->setFormWindow(fw); + formwindow = 0; + } + + if (fw == formwindow) + { + listview->setCurrent(w); + if (MainWindow::self->qWorkspace()->activeWindow() == fw) + showPage(listview); + return; + } + + formwindow = fw; + listview->setFormWindow(fw); + listview->setup(); + listview->setCurrent(w); + + if (MainWindow::self->qWorkspace()->activeWindow() == fw) + showPage(listview); +} + +FormWindow *HierarchyView::formWindow() const +{ + return formwindow; +} + +void HierarchyView::closeEvent( QCloseEvent *e ) +{ + emit hidden(); + e->accept(); +} + +void HierarchyView::widgetInserted( QWidget * ) +{ + listview->setup(); +} + +void HierarchyView::widgetRemoved( QWidget * ) +{ + listview->setup(); +} + +void HierarchyView::widgetsInserted( const QWidgetList & ) +{ + listview->setup(); +} + +void HierarchyView::widgetsRemoved( const QWidgetList & ) +{ + listview->setup(); +} + +void HierarchyView::namePropertyChanged( QWidget *w, const QVariant & ) +{ + QWidget *w2 = w; + if ( w->inherits( "QMainWindow" ) ) + w2 = ( (QMainWindow*)w )->centralWidget(); + listview->changeNameOf( w2, w->name() ); +} + + +void HierarchyView::databasePropertyChanged( QWidget *w, const QStringList& info ) +{ +#ifndef QT_NO_SQL + QString i = info.join( "." ); + listview->changeDatabaseOf( w, i ); +#else + Q_UNUSED(w); + Q_UNUSED(info); +#endif +} + + +void HierarchyView::tabsChanged( QTabWidget * ) +{ + listview->setup(); +} + +void HierarchyView::tabsChanged( QToolBox * ) +{ + listview->setup(); +} + +void HierarchyView::pagesChanged( QWizard * ) +{ + listview->setup(); +} + +void HierarchyView::rebuild() +{ + listview->setup(); +} + +void HierarchyView::closed( FormWindow *fw ) +{ + if ( fw == formwindow ) + listview->clear(); +} + +#include "hierarchyview.moc" diff --git a/kommander/editor/hierarchyview.h b/kommander/editor/hierarchyview.h new file mode 100644 index 00000000..54889ec2 --- /dev/null +++ b/kommander/editor/hierarchyview.h @@ -0,0 +1,161 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef HIRARCHYVIEW_H +#define HIRARCHYVIEW_H + +#include <qvariant.h> +#include <qlistview.h> +#include <qtabwidget.h> +#include <qguardedptr.h> +#include <private/qcom_p.h> + +class FormWindow; +class QCloseEvent; +class QPopupMenu; +class QKeyEvent; +class QMouseEvent; +class QWizard; +class QToolBox; + +class HierarchyItem:public QListViewItem +{ +public: + enum Type + { + Widget, + SlotParent, + Public, + Protected, + Private, + Slot, + DefinitionParent, + Definition, + Event, + EventFunction + }; + + HierarchyItem(Type type, QListViewItem * parent, + const QString & txt1, const QString & txt2, const QString & txt3); + HierarchyItem(Type type, QListView * parent, + const QString & txt1, const QString & txt2, const QString & txt3); + + void paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align); + void updateBackColor(); + + void setWidget(QWidget * w); + QWidget *widget() const; + + void setText(int col, const QString & txt) {if (!txt.isEmpty()) QListViewItem::setText(col, txt);} + int rtti() const { return (int) typ;} + +private: + void okRename(int col); + void cancelRename(int col); + +private: + QColor backgroundColor(); + QColor backColor; + QWidget *wid; + Type typ; +}; + +class HierarchyList:public QListView +{ + Q_OBJECT +public: + HierarchyList(QWidget * parent, FormWindow * fw, bool doConnects = TRUE); + + virtual void setup(); + virtual void setCurrent(QWidget * w); + void setOpen(QListViewItem * i, bool b); + void changeNameOf(QWidget * w, const QString & name); + void changeDatabaseOf(QWidget * w, const QString & info); + void setFormWindow(FormWindow * fw) {formWindow = fw;} + void drawContentsOffset(QPainter * p, int ox, int oy, int cx, int cy, int cw, int ch) + { setUpdatesEnabled(FALSE); triggerUpdate(); setUpdatesEnabled(TRUE); + QListView::drawContentsOffset(p, ox, oy, cx, cy, cw, ch); } + void insertEntry(QListViewItem * i, const QPixmap & pix = QPixmap(), const QString & s = + QString::null); + +protected: + void keyPressEvent(QKeyEvent * e); + void keyReleaseEvent(QKeyEvent * e); + void viewportMousePressEvent(QMouseEvent * e); + void viewportMouseReleaseEvent(QMouseEvent * e); + +public slots: + void addTabPage(); + void removeTabPage(); + +private: + void insertObject(QObject * o, QListViewItem * parent); + QWidget *findWidget(QListViewItem * i); + QListViewItem *findItem(QWidget * w); + QWidget *current() const; + + private slots: virtual void objectClicked(QListViewItem * i); + virtual void showRMBMenu(QListViewItem *, const QPoint &); + +protected: + FormWindow * formWindow; + QPopupMenu *normalMenu, *tabWidgetMenu; + bool deselect; +}; + +class HierarchyView : public QTabWidget +{ + Q_OBJECT + +public: + HierarchyView( QWidget *parent ); + ~HierarchyView(); + + void setFormWindow( FormWindow *fw, QWidget *w ); + FormWindow *formWindow() const; + void clear(); + void widgetInserted( QWidget *w ); + void widgetRemoved( QWidget *w ); + void widgetsInserted( const QWidgetList &l ); + void widgetsRemoved( const QWidgetList &l ); + void namePropertyChanged( QWidget *w, const QVariant &old ); + void databasePropertyChanged( QWidget *w, const QStringList& info ); + void tabsChanged( QTabWidget *w ); + void tabsChanged( QToolBox *w ); + void pagesChanged( QWizard *w ); + void rebuild(); + void closed( FormWindow *fw ); + +protected slots: + +protected: + void closeEvent( QCloseEvent *e ); + +signals: + void hidden(); + +private: + FormWindow *formwindow; + HierarchyList *listview; + +}; + + +#endif diff --git a/kommander/editor/iconvieweditor.ui b/kommander/editor/iconvieweditor.ui new file mode 100644 index 00000000..afa18459 --- /dev/null +++ b/kommander/editor/iconvieweditor.ui @@ -0,0 +1,450 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>IconViewEditorBase</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>IconViewEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>567</width> + <height>321</height> + </rect> + </property> + <property name="caption"> + <string>Edit Iconview</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Edit Iconview</b><p>Add, edit or delete items in the icon view.</p><p>Click the <b>New Item</b>-button to create a new item, then enter text and choose a pixmap.</p><p>Select an item from the view and click the <b>Delete Item</b>-button to remove the item from the iconview.</p></string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout6</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QIconView"> + <property name="name"> + <cstring>preview</cstring> + </property> + <property name="whatsThis" stdset="0"> + <string>All items in the iconview.</string> + </property> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout5</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>itemNew</cstring> + </property> + <property name="text"> + <string>&New Item</string> + </property> + <property name="toolTip" stdset="0"> + <string>Add an item</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Create a new item for the iconview.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>itemDelete</cstring> + </property> + <property name="text"> + <string>&Delete Item</string> + </property> + <property name="toolTip" stdset="0"> + <string>Delete item</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Delete the selected item.</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Vertical Spacing1</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </vbox> + </widget> + <widget class="QGroupBox"> + <property name="name"> + <cstring>GroupBox1</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property name="title"> + <string>&Item Properties</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>Label1</cstring> + </property> + <property name="text"> + <string>&Text:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemText</cstring> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>itemText</cstring> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="toolTip" stdset="0"> + <string>Change text</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Change the text for the selected item.</string> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>Label2</cstring> + </property> + <property name="text"> + <string>&Pixmap:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemChoosePixmap</cstring> + </property> + </widget> + <widget class="QLayoutWidget" row="1" column="1"> + <property name="name"> + <cstring>Layout4</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>itemPixmap</cstring> + </property> + <property name="text"> + <string>Label4</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>itemDeletePixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Delete Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Delete the selected item's pixmap.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>itemChoosePixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="toolTip" stdset="0"> + <string>Select a Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Select a pixmap file for the current item.</string> + </property> + </widget> + </hbox> + </widget> + </grid> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout1</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonApply</cstring> + </property> + <property name="text"> + <string>&Apply</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Apply all changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<images> + <image name="image0"> + <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c6b53006ab440370316528264b4c198450c5808a94d1ed00aac214832b43124b544ec414d34b4c4c441103f11341120831309758313d0cf3b0840b7258d55a73010092c14eca</data> + </image> +</images> +<connections> + <connection> + <sender>itemNew</sender> + <signal>clicked()</signal> + <receiver>IconViewEditorBase</receiver> + <slot>insertNewItem()</slot> + </connection> + <connection> + <sender>itemDelete</sender> + <signal>clicked()</signal> + <receiver>IconViewEditorBase</receiver> + <slot>deleteCurrentItem()</slot> + </connection> + <connection> + <sender>itemText</sender> + <signal>textChanged( const QString & )</signal> + <receiver>IconViewEditorBase</receiver> + <slot>currentTextChanged(const QString&)</slot> + </connection> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>IconViewEditorBase</receiver> + <slot>okClicked()</slot> + </connection> + <connection> + <sender>buttonApply</sender> + <signal>clicked()</signal> + <receiver>IconViewEditorBase</receiver> + <slot>applyClicked()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>IconViewEditorBase</receiver> + <slot>cancelClicked()</slot> + </connection> + <connection> + <sender>itemChoosePixmap</sender> + <signal>clicked()</signal> + <receiver>IconViewEditorBase</receiver> + <slot>choosePixmap()</slot> + </connection> + <connection> + <sender>preview</sender> + <signal>selectionChanged(QIconViewItem*)</signal> + <receiver>IconViewEditorBase</receiver> + <slot>currentItemChanged(QIconViewItem*)</slot> + </connection> + <connection> + <sender>preview</sender> + <signal>currentChanged(QIconViewItem*)</signal> + <receiver>IconViewEditorBase</receiver> + <slot>currentItemChanged(QIconViewItem*)</slot> + </connection> + <connection> + <sender>itemDeletePixmap</sender> + <signal>clicked()</signal> + <receiver>IconViewEditorBase</receiver> + <slot>deletePixmap()</slot> + </connection> + <slot access="protected" language="C++" returnType="void">init()</slot> + <slot access="protected" language="C++" returnType="void">destroy()</slot> + <slot access="protected" language="C++" returnType="void">applyClicked()</slot> + <slot access="protected" language="C++" returnType="void">cancelClicked()</slot> + <slot access="protected" language="C++" returnType="void">choosePixmap()</slot> + <slot access="protected" language="C++" returnType="void">currentItemChanged( QIconViewItem * )</slot> + <slot access="protected" language="C++" returnType="void">currentTextChanged( const QString & )</slot> + <slot access="protected" language="C++" returnType="void">deleteCurrentItem()</slot> + <slot access="protected" language="C++" returnType="void">insertNewItem()</slot> + <slot access="protected" language="C++" returnType="void">deletePixmap()</slot> + <slot access="protected" language="C++" returnType="void">okClicked()</slot> +</connections> +<tabstops> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> + <tabstop>preview</tabstop> + <tabstop>itemNew</tabstop> + <tabstop>itemDelete</tabstop> + <tabstop>itemText</tabstop> + <tabstop>itemDeletePixmap</tabstop> + <tabstop>itemChoosePixmap</tabstop> + <tabstop>buttonHelp</tabstop> + <tabstop>buttonApply</tabstop> +</tabstops> +</UI> diff --git a/kommander/editor/iconvieweditorimpl.cpp b/kommander/editor/iconvieweditorimpl.cpp new file mode 100644 index 00000000..f7552cee --- /dev/null +++ b/kommander/editor/iconvieweditorimpl.cpp @@ -0,0 +1,158 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "iconvieweditorimpl.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "pixmapchooser.h" + +#include <qlineedit.h> +#include <qlabel.h> +#include <qiconview.h> +#include <qpushbutton.h> +#include <qcheckbox.h> + +#include <klocale.h> + +IconViewEditor::IconViewEditor( QWidget *parent, QWidget *editWidget, FormWindow *fw ) + : IconViewEditorBase( parent, 0, true ), formwindow( fw ) +{ + connect( buttonHelp, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); + iconview = (QIconView*)editWidget; + + itemText->setText( "" ); + itemText->setEnabled( false ); + itemPixmap->setText( "" ); + itemChoosePixmap->setEnabled( false ); + itemDeletePixmap->setEnabled( false ); + + QIconViewItem *i = 0; + for ( i = iconview->firstItem(); i; i = i->nextItem() ) { + (void)new QIconViewItem( preview, i->text(), *i->pixmap() ); + } + + if ( preview->firstItem() ) + preview->setCurrentItem( preview->firstItem() ); +} + +void IconViewEditor::insertNewItem() +{ + QIconViewItem *i = new QIconViewItem( preview, i18n("New Item" ) ); + preview->setCurrentItem( i ); + preview->setSelected( i, true ); +} + +void IconViewEditor::deleteCurrentItem() +{ + delete preview->currentItem(); + if ( preview->currentItem() ) + preview->setSelected( preview->currentItem(), true ); +} + +void IconViewEditor::currentItemChanged( QIconViewItem *i ) +{ + itemText->blockSignals( true ); + itemText->setText( "" ); + itemPixmap->setText( "" ); + itemText->blockSignals( false ); + + if ( !i ) { + itemText->setEnabled( false ); + itemChoosePixmap->setEnabled( false ); + return; + } + + itemText->blockSignals( true ); + itemText->setEnabled( true ); + itemChoosePixmap->setEnabled( true ); + itemDeletePixmap->setEnabled( i->pixmap() && !i->pixmap()->isNull() ); + + itemText->setText( i->text() ); + if ( i->pixmap() ) + itemPixmap->setPixmap( *i->pixmap() ); + itemText->blockSignals( false ); +} + +void IconViewEditor::currentTextChanged( const QString &txt ) +{ + if ( !preview->currentItem() ) + return; + + preview->currentItem()->setText( txt ); +} + +void IconViewEditor::okClicked() +{ + applyClicked(); + accept(); +} + +void IconViewEditor::cancelClicked() +{ + reject(); +} + +void IconViewEditor::applyClicked() +{ + QIconViewItem *i = 0; + QValueList<PopulateIconViewCommand::Item> items; + for ( i = preview->firstItem(); i; i = i->nextItem() ) { + PopulateIconViewCommand::Item item; + if ( i->pixmap() ) + item.pix = *i->pixmap(); + item.text = i->text(); + items.append( item ); + } + + PopulateIconViewCommand *cmd = new PopulateIconViewCommand( i18n("Edit Items of '%1'" ).arg( iconview->name() ), + formwindow, iconview, items ); + cmd->execute(); + formwindow->commandHistory()->addCommand( cmd ); +} + +void IconViewEditor::choosePixmap() +{ + if ( !preview->currentItem() ) + return; + + QPixmap pix; + if ( preview->currentItem()->pixmap() ) + pix = qChoosePixmap( this, formwindow, *preview->currentItem()->pixmap() ); + else + pix = qChoosePixmap( this, formwindow, QPixmap() ); + + if ( pix.isNull() ) + return; + + preview->currentItem()->setPixmap( pix ); + itemPixmap->setPixmap( pix ); + itemDeletePixmap->setEnabled( true ); +} + +void IconViewEditor::deletePixmap() +{ + if ( !preview->currentItem() ) + return; + + preview->currentItem()->setPixmap( QPixmap() ); + itemPixmap->setText( "" ); + itemDeletePixmap->setEnabled( false ); +} +#include "iconvieweditorimpl.moc" diff --git a/kommander/editor/iconvieweditorimpl.h b/kommander/editor/iconvieweditorimpl.h new file mode 100644 index 00000000..120f0bb6 --- /dev/null +++ b/kommander/editor/iconvieweditorimpl.h @@ -0,0 +1,52 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef ICONVIEWEDITOR_H +#define ICONVIEWEDITOR_H + +#include "iconvieweditor.h" + +class FormWindow; + +class IconViewEditor : public IconViewEditorBase +{ + Q_OBJECT + +public: + IconViewEditor( QWidget *parent, QWidget *editWidget, FormWindow *fw ); + +protected slots: + void insertNewItem(); + void deleteCurrentItem(); + void currentItemChanged( QIconViewItem * ); + void currentTextChanged( const QString & ); + void okClicked(); + void cancelClicked(); + void applyClicked(); + void choosePixmap(); + void deletePixmap(); + +private: + QIconView *iconview; + FormWindow *formwindow; + +}; + +#endif diff --git a/kommander/editor/kmdr-editor.desktop b/kommander/editor/kmdr-editor.desktop new file mode 100644 index 00000000..cdef1c5c --- /dev/null +++ b/kommander/editor/kmdr-editor.desktop @@ -0,0 +1,129 @@ +[Desktop Entry] +GenericName=Dynamic Dialog Editor +GenericName[bg]=Редактор за диалогови прозорци +GenericName[ca]=Editor de dià legs dinà mics +GenericName[cs]=Editor dynamických dialogů +GenericName[da]=Dynamisk dialog-editor +GenericName[de]=Editor für dynamische Dialoge +GenericName[el]=ΕπεξεÏγαστής δυναμικών διαλόγων +GenericName[en_GB]=Dynamic Dialogue Editor +GenericName[es]=Editor de cuadros de diálogo dinámicos +GenericName[et]=Dünaamiliste dialoogide redaktor +GenericName[eu]=Elkarrizketa editore dinamikoa +GenericName[fa]=ویرایشگر Ù…Øاورۀ پویا +GenericName[fi]=Dynaamisten dialogien editori +GenericName[fr]=Éditeur dynamique de boîtes de dialogue +GenericName[gl]=Editor de diálogos dinámicos +GenericName[hi]=गतिशील संवाद संपादक +GenericName[hu]=Párbeszédablak-szerkesztÅ‘ +GenericName[is]=Dynamic Dialog ritillinn +GenericName[it]=Editor per le maschere dinamiche +GenericName[ja]=動的ダイアãƒã‚°ã‚¨ãƒ‡ã‚£ã‚¿ +GenericName[ka]=დინáƒáƒ›áƒ˜áƒ£áƒ დიáƒáƒšáƒáƒ’თრრედáƒáƒ¥áƒ¢áƒáƒ ი +GenericName[lt]=DinaminÄ— dialogų rengyklÄ— +GenericName[ms]=Penyunting Dialog Dinamik +GenericName[nds]=Editor för dünaamsch Dialogen +GenericName[ne]=गतिशील संवाद समà¥à¤ªà¤¾à¤¦à¤• +GenericName[nl]=Dynamische dialoog-editor +GenericName[pl]=Edytor do dynamicznych okien dialogowych +GenericName[pt]=Editor de Diálogos Dinâmicos +GenericName[pt_BR]=Editor de Diálogo Dinâmico +GenericName[ru]=Редактор диалогов +GenericName[sk]=Dynamický editor dialógov +GenericName[sl]=Urejevalnik dinamiÄnih pogovornih oken +GenericName[sr]=Уређивач динамичких дијалога +GenericName[sr@Latn]=UreÄ‘ivaÄ dinamiÄkih dijaloga +GenericName[sv]=Editor för dynamiska dialogrutor +GenericName[ta]=நிகழà¯à®®à¯ உரையாடல௠திரà¯à®¤à¯à®¤à®¿ +GenericName[tg]=Муҳаррири диалоги динамика +GenericName[tr]=Dinamik Diyalog Düzenleyicisi +GenericName[uk]=Динамічний редактор вікон +GenericName[zh_CN]=动æ€å¯¹è¯æ¡†ç¼–辑器 +GenericName[zh_HK]=å‹•æ…‹å°è©±ç›’編輯器 +GenericName[zh_TW]=å‹•æ…‹å°è©±ç›’編輯器 +Name=Kommander Editor +Name[br]=Aozer Kommander +Name[ca]=Editor Kommander +Name[cs]=Editor Kommanderu +Name[da]=Kommander-editor +Name[de]=Kommander-Editor +Name[el]=ΕπεξεÏγαστής Kommander +Name[et]=Redaktor Kommander +Name[eu]=Kommander editorea +Name[fa]=ویرایشگر Kommander +Name[fi]=Komentoeditori +Name[fr]=Éditeur Kommander +Name[ga]=Eagarthóir Kommander +Name[hi]=कमांडर संपादक +Name[hu]=Kommander +Name[is]=Kommander ritillinn +Name[it]=Editor Kommander +Name[ja]=Kommander エディタ +Name[lt]=Kommander rengyklÄ— +Name[ms]=Penyunting Kommander +Name[nds]=Kommander-Editor +Name[ne]=आदेश समà¥à¤ªà¤¾à¤¦à¤• +Name[pa]=Kommander ਸੰਪਾਦਕ +Name[pl]=Edytor Kommander +Name[pt]=Editor do Kommander +Name[pt_BR]=Editor Kommander +Name[ru]=Редактор Kommander +Name[sl]=Urejevalnik Kommander +Name[sr]=Kommander уређивач +Name[sr@Latn]=Kommander ureÄ‘ivaÄ +Name[sv]=Kommander editor +Name[ta]=Kகடà¯à®Ÿà®³à¯ˆà®¤à¯ திரà¯à®¤à¯à®¤à®¿ +Name[tg]=Муҳаррири Kommander +Name[tr]=Kommander Düzenleyici +Name[uk]=Редактор Kommander +Name[zh_CN]=Kommander 编辑器 +Name[zh_HK]=Kommander 編輯器 +Name[zh_TW]=Kommander 編輯器 +Exec=kmdr-editor %F +Icon=kommander +Type=Application +Comment=Dynamic Dialog Editor +Comment[bg]=Редактор за диалогови прозорци +Comment[ca]=Editor de dià legs dinà mics +Comment[cs]=Editor dynamických dialogů +Comment[da]=Dynamisk dialog-editor +Comment[de]=Editor für dynamische Dialoge +Comment[el]=ΕπεξεÏγαστής δυναμικών διαλόγων +Comment[en_GB]=Dynamic Dialogue Editor +Comment[es]=Editor de cuadros de diálogo dinámicos +Comment[et]=Dünaamiliste dialoogide redaktor +Comment[eu]=Elkarrizketa editore dinamikoa +Comment[fa]=ویرایشگر Ù…Øاورۀ پویا +Comment[fi]=Dynaamisten dialogien editori +Comment[fr]=Éditeur dynamique de boîtes de dialogue +Comment[gl]=Editor de diálogos dinámicos +Comment[hi]=गतिशील संवाद संपादक +Comment[hu]=Párbeszédablak-szerkesztÅ‘ +Comment[is]=Dynamic Dialog ritillinn +Comment[it]=Editor per le maschere dinamiche +Comment[ja]=動的ダイアãƒã‚°ã‚¨ãƒ‡ã‚£ã‚¿ +Comment[ka]=დინáƒáƒ›áƒ˜áƒ£áƒ დიáƒáƒšáƒáƒ’თრრედáƒáƒ¥áƒ¢áƒáƒ ი +Comment[lt]=DinaminÄ— dialogų rengyklÄ— +Comment[ms]=Penyunting Dialog Dinamik +Comment[nds]=Editor för dünaamsch Dialogen +Comment[ne]=गतिशील संवाद समà¥à¤ªà¤¾à¤¦à¤• +Comment[nl]=Dynamische dialoog-editor +Comment[pl]=Edytor do dynamicznych okien dialogowych +Comment[pt]=Editor de diálogos dinâmicos +Comment[pt_BR]=Editor de Diálogo Dinâmico +Comment[ru]=ДинамичеÑкий редактор диалогов +Comment[sk]=Dynamický editor dialógov +Comment[sl]=Urejevalnik dinamiÄnih pogovornih oken +Comment[sr]=Уређивач динамичких дијалога +Comment[sr@Latn]=UreÄ‘ivaÄ dinamiÄkih dijaloga +Comment[sv]=Editor för dynamiska dialogrutor +Comment[ta]=நிகழà¯à®®à¯ உரையாடல௠திரà¯à®¤à¯à®¤à®¿ +Comment[tg]=Муҳаррири диалоги динамика +Comment[tr]=Dinamik Diyalog Düzenleyicisi +Comment[uk]=Динамічний редактор вікон +Comment[zh_CN]=动æ€å¯¹è¯æ¡†ç¼–辑器 +Comment[zh_HK]=å‹•æ…‹å°è©±ç›’編輯器 +Comment[zh_TW]=å‹•æ…‹å°è©±ç›’編輯器 +MimeType=application/x-kommander; +DocPath=kommander/index.html +Categories=Qt;KDE;Development; diff --git a/kommander/editor/kommander-new.xml b/kommander/editor/kommander-new.xml new file mode 100644 index 00000000..deb3d88a --- /dev/null +++ b/kommander/editor/kommander-new.xml @@ -0,0 +1,587 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#%@-]*"> + <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*"> + <!ENTITY word "[^|&;()<>\s]+"> <!-- see man bash --> + <!ENTITY eos "(?=($|\s))"> <!-- eol or space following --> + <!ENTITY noword "(?![\w$+-])"> <!-- no word, $, + or - following --> +]> +<language name="Kommander (new parser)" version="1.0" kateversion="2.4" section="Scripts" extensions="*.kmdr" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl), Andras Mantia (amantia@kde.org)" license="LGPL"> + +<!-- (c) 2004 by Wilbert Berendsen, wilbert@kde.nl + Released under the LGPL, part of kdelibs/kate + + Added Kommander specific highlighting. + (c) 2006 Andras Mantia, amantia@kde.org +--> + + <highlighting> + + <list name="kmdrdcopfunctions"> + <item>addUniqueItem</item> + <item>associatedText</item> + <item>cancel</item> + <item>cellText</item> + <item>clear</item> + <item>checked</item> + <item>children</item> + <item>columnCount</item> + <item>count</item> + <item>currentColumn</item> + <item>currentItem</item> + <item>currentRow</item> + <item>execute</item> + <item>findItem</item> + <item>geometry</item> + <item>global</item> + <item>hasFocus</item> + <item>insertColumn</item> + <item>insertItem</item> + <item>insertItems</item> + <item>insertRow</item> + <item>item</item> + <item>itemDepth</item> + <item>itemPath</item> + <item>removeColumn</item> + <item>removeItem</item> + <item>removeRow</item> + <item>rowCount</item> + <item>selection</item> + <item>setAssociatedText</item> + <item>setChecked</item> + <item>setCellText</item> + <item>setCurrentItem</item> + <item>setColumnCaption</item> + <item>setEnabled</item> + <item>setGlobal</item> + <item>setMaximum</item> + <item>setPixmap</item> + <item>setRowCaption</item> + <item>setSelection</item> + <item>setText</item> + <item>setVisible</item> + <item>text</item> + <item>type</item> + <item>setCellWidget</item> + <item>cellWidget</item> + <item>setEditable</item> + <item>type</item> + <item>insertTab</item> + </list> + + <list name="kmdrfunctions"> + <item>widgetText</item> + <item>selectedWidgetText</item> + <item>null</item> + <item>pid</item> + <item>dcopid</item> + <item>parentPid</item> + <item>debug</item> + <item>echo</item> + <item>env</item> + <item>exec</item> + <item>execBackground</item> + <item>global</item> + <item>i18n</item> + <item>dialog</item> + <item>readSetting</item> + <item>setGlobal</item> + <item>writeSetting</item> + <item>dcop</item> + <item>forBlock</item> + <item>forEachBlock</item> + <item>ifBlock</item> + <item>comment</item> + <item>createWidget</item> + <item>connect</item> + <item>disconnect</item> + <item>return</item> + <item>internalDcop</item> + <item>executeSlot</item> + <item>widgetExists</item> + </list> + + <list name="kmdrarray"> + <item>array_values</item> + <item>array_keys</item> + <item>array_clear</item> + <item>array_count</item> + <item>array_value</item> + <item>array_remove</item> + <item>array_setValue</item> + <item>array_fromString</item> + <item>array_toString</item> + <item>array_indexedFromString</item> + <item>array_indexedRemoveElements</item> + <item>array_indexedInsertElements</item> + <item>array_indexedToString</item> + <item>array_flipCopy</item> + </list> + + <list name="kmdrmatrix"> + <item>matrix_fromString</item> + <item>matrix_toString</item> + <item>matrix_clear</item> + <item>matrix_rows</item> + <item>matrix_columnToArray</item> + <item>matrix_columnToIndexedArray</item> + <item>matrix_rowToArray</item> + <item>matrix_columns</item> + <item>matrix_rowKeys</item> + <item>matrix_columnKeys</item> + <item>matrix_removeRow</item> + <item>matrix_removeColumn</item> + <item>matrix_addRow</item> + <item>matrix_findRow</item> + <!--<item>matrix_addColumn</item> + <item>matrix_indexedCopy</item>--> + </list> + + <list name="kmdrstring"> + <item>str_length</item> + <item>str_contains</item> + <item>str_find</item> + <item>str_findRev</item> + <item>str_left</item> + <item>str_right</item> + <item>str_mid</item> + <item>str_remove</item> + <item>str_replace</item> + <item>str_upper</item> + <item>str_lower</item> + <item>str_compare</item> + <item>str_isEmpty</item> + <item>str_isNumber</item> + <item>str_section</item> + <item>str_args</item> + <item>str_toint</item> + <item>str_todouble</item> + <item>str_round</item> + <item>str_sort</item> + <item>str_trim</item> + <item>str_padLeft</item> + <item>str_padRight</item> + <item>str_count</item> + </list> + + <list name="kmdrfile"> + <item>file_read</item> + <item>file_write</item> + <item>file_append</item> + <item>file_exists</item> + </list> + + <list name="kmdrinput"> + <item>input_color</item> + <item>input_text</item> + <item>input_password</item> + <item>input_value</item> + <item>input_double</item> + <item>input_valueDouble</item> + <item>input_openfile</item> + <item>input_openfiles</item> + <item>input_savefile</item> + <item>input_directory</item> + </list> + + <list name="kmdrmessage"> + <item>message_info</item> + <item>message_error</item> + <item>message_question</item> + <item>message_warning</item> + </list> + + + <list name="keywords"> + <item> else </item> + <item> for </item> + <item> to </item> + <item> function </item> + <item> in </item> + <item> select </item> + <item> while </item> + <item> . </item> + <item> elseif </item> + <item> then </item> + <item> set </item> + <item> foreach </item> + <item> end </item> + <item> endif </item> + <item> do </item> + <item> break </item> + <item> continue </item> + <item> exit </item> + <item> switch </item> + <item> and </item> + <item> or </item> + <item> not </item> + <item> step </item> + <item> with </item> + </list> + + <list name="booleans"> + <item>true</item> + <item>false</item> + </list> + + <contexts> + <context attribute="Normal Text" lineEndContext="#stay" name="Start"> + <IncludeRules context="FindAll" /> + </context> + +<!-- ====== The following rulessets are meant to be included ======== --> + <!-- FindAll tries to interpret everything --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindAll"> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindBlockComments" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- FindComments consumes shell comments till EOL --> + <context attribute="Normal Text" lineEndContext="#pop" name="FindComments"> + <Detect2Chars attribute="Comment" context="Comment" char="/" char1="/" firstNonSpace="true"/> + <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=/)" /> + </context> + <!-- FindBlockComments consumes comments to end of block --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindBlockComments"> + <Detect2Chars attribute="Comment" context="twolinecomment" char="/" char1="*" beginRegion="Comment" /> + </context> + <context name="twolinecomment" attribute="Comment" lineEndContext="#stay"> + <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment" /> + </context> + + <context attribute="Comment" lineEndContext="#pop" name="Comment"> + <IncludeRules context="##Alerts" /> + </context> + + <!-- FindCommands matches many items that can be expected outside strings, substitutions etc. --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindCommands"> + <!-- start expression in double parentheses --> + <Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" /> + <!-- start expression in double brackets --> + <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[&eos;" beginRegion="expression" column="0"/> + <RegExpr attribute="Keyword" context="ExprDblBracket" String="\s\[\[&eos;" beginRegion="expression" /> + <!-- start expression in single brackets --> + <RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression" column="0"/> + <RegExpr attribute="Builtin" context="ExprBracket" String="\s\[&eos;" beginRegion="expression" /> + <!-- start a group command with { --> + <RegExpr attribute="Keyword" context="Group" String="\{&eos;" beginRegion="group" /> + <!-- match do and if blocks --> + <RegExpr attribute="Keyword" context="#stay" String="\bfor&noword;" beginRegion="for" /> + <RegExpr attribute="Keyword" context="#stay" String="\bforeach&noword;" beginRegion="for" /> + <RegExpr attribute="Keyword" context="#stay" String="\bwhile&noword;" beginRegion="for" /> + <RegExpr attribute="Keyword" context="#stay" String="\bend&noword;" endRegion="for" /> + <RegExpr attribute="Keyword" context="#stay" String="\bif&noword;" beginRegion="if" /> + <RegExpr attribute="Keyword" context="#stay" String="\belseif&noword;" beginRegion="if" endRegion="if"/> + <RegExpr attribute="Keyword" context="#stay" String="\belse&noword;" beginRegion="if" endRegion="if"/> + <RegExpr attribute="Keyword" context="#stay" String="\bendif&noword;" endRegion="if"/> + <RegExpr attribute="Keyword" context="#stay" String="\}&eos;" endRegion="group"/> + <!-- handle case as a special case --> + <RegExpr attribute="Keyword" context="Case" String="\bcase&noword;" beginRegion="case" /> + <!-- handle command line options --> + <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+" /> + <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" /> + <!-- handle keywords --> + <keyword attribute="Keyword" context="#stay" String="keywords" /> + <keyword attribute="Builtin" context="#stay" String="booleans" /> + <!-- handle here-string --> + <StringDetect attribute="Redirection" context="#stay" String="<<<" /> + <!-- handle &, &&, | and || --> + <RegExpr attribute="Control" context="#stay" String="([|&])\1?" /> + <!-- Kommander rules --> + <RegExpr attribute="KmdrMethod" context="DetectKmdr" String="\b&varname;[\.|\[]" lookAhead="true"/> + <RegExpr attribute="KmdrMethod" context="DetectKmdrMethod" String="kmdrfunctions\(" /> + <keyword attribute="DCOPMethod" context="#stay" String="kmdrfunctions" /> + <keyword attribute="KmdrArray" context="#stay" String="kmdrarray" /> + <keyword attribute="KmdrMatrix" context="#stay" String="kmdrmatrix" /> + <keyword attribute="KmdrString" context="#stay" String="kmdrstring" /> + <keyword attribute="KmdrFile" context="#stay" String="kmdrfile" /> + <keyword attribute="KmdrInput" context="#stay" String="kmdrinput" /> + <keyword attribute="KmdrMessage" context="#stay" String="kmdrmessage" /> + <!-- handle variable assignments --> + <RegExpr attribute="GlobalVariable" context="#stay" String="\b_&varname;" /> + <RegExpr attribute="Variable" context="#stay" String="\b&varname;" /> + </context> + + <!-- Kommander rules --> + + <context attribute="KmdrVariable" lineEndContext="FindAll" name="DetectKmdr"> + <RegExpr attribute="KmdrMethod" context="#stay" String="&varname;" /> + <DetectChar attribute="Normal Text" context="#pop" char="(" lookAhead="true"/> + <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> + <DetectChar attribute="Normal Text" context="#pop" char="[" lookAhead="true"/> + <DetectChar attribute="Normal Text" context="#pop" char="]" lookAhead="true"/> + <DetectChar attribute="Normal Text" context="#pop" char="{" lookAhead="true"/> + <DetectChar attribute="Normal Text" context="#pop" char="}" lookAhead="true"/> + <DetectChar attribute="KmdrMethod" context="DetectKmdrMethod" char="." lookAhead="true"/> + <RegExpr attribute="Normal Text" context="#pop" String="[\s\=\;\+\-\*\/\%]+" /> + + </context> + <context attribute="DCOPMethod" lineEndContext="FindAll" name="DetectKmdrMethod"> + <DetectChar attribute="Normal Text" context="FindAll" char="(" lookAhead="true"/> + <DetectChar attribute="Normal Text" context="FindAll" char=")" lookAhead="true"/> + <RegExpr attribute="Normal Text" context="FindAll" String="[\s\=\;\+\-\*\/\%]+" /> + </context> + + <!-- FindOthers contains various rules to mark different shell input --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindOthers"> + <RegExpr attribute="Escape" context="#stay" String="\\[][;"\\'$`{}()|&<>* ]" /> + <RegExpr attribute="Keyword" context="#stay" String="\\$" /> + <RegExpr attribute="Escape" context="#stay" String="\{(?!(\s|$))\S*\}" /> + <RegExpr attribute="Path" context="#stay" String="\.?/[\w_@.+-]+(?=([\s/):]|$))" /> + <!-- TODO: shell globs --> + </context> + + <!-- FindStrings looks for single and double quoted strings, also with $-prefix --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings"> + <DetectChar attribute="String SingleQ" context="StringSQ" char="'" /> + <DetectChar attribute="String DoubleQ" context="StringDQ" char=""" /> + <!-- <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" /> --> + <!-- <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1=""" /> --> + </context> + + <!-- FindSubstitutions goes after anything starting with $ and ` and their escapes --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions"> + <!-- <RegExpr attribute="Variable" context="#stay" String="\$[*@#?$!_0-9-]" /> + <RegExpr attribute="Variable" context="Subscript" String="\$&varname;\[" /> + <RegExpr attribute="Variable" context="#stay" String="\$&varname;" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{[*@#?$!_0-9-]\}" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{#&varname;\}" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{!&varname;\*?\}" />--> + <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" /> + <RegExpr attribute="Variable" context="VarBrace" String="\$\{[*@#?$!_0-9-](?=[:#%/])" /> + <StringDetect attribute="Variable" context="ExprDblParenSubst" String="$((" beginRegion="expression" /> + <StringDetect attribute="Redirection" context="SubstFile" String="$(<" /> + <StringDetect attribute="Variable" context="SubstCommand" String="$(" /> + <DetectChar attribute="Backquote" context="SubstBackq" char="`" /> + <RegExpr attribute="Escape" context="#stay" String="\\[`$\\]" /> + </context> + + + + + +<!-- ====== These are the contexts that can be branched to ======= --> + + <!-- ExprDblParen consumes an expression started in command mode till )) --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen"> + <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst"> + <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- ExprSubParen consumes an expression till ) --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubParen"> + <DetectChar attribute="Normal Text" context="#pop" char=")" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- ExprBracket consumes an expression till ] --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket"> + <RegExpr attribute="Builtin" context="#pop" String="\s\](?=($|[\s;|&]))" endRegion="expression" /> + <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&]))" endRegion="expression" column="0"/> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- ExprDblBracket consumes an expression till ]] --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket"> + <RegExpr attribute="Keyword" context="#pop" String="\s\]\](?=($|[\s;|&]))" endRegion="expression" /> + <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&]))" endRegion="expression" column="0"/> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- Group consumes shell input till } --> + <context attribute="Normal Text" lineEndContext="#stay" name="Group"> + <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="group" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- SubShell consumes shell input till ) --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubShell"> + <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- Assign consumes an expression till EOL or whitespace --> + <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthrough="true" fallthroughContext="#pop"> + <DetectChar attribute="Variable" context="AssignArray" char="(" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + <RegExpr attribute="Normal Text" context="#stay" String="[\w:,+_./-]+" /> + </context> + + <!-- AssignArray consumes everything till ), marking assignments --> + <context attribute="Normal Text" lineEndContext="#pop" name="AssignArray"> + <DetectChar attribute="Variable" context="#pop" char=")" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- AssignSubscr first expects a [ then parses subscript and continues with '=value' --> + <context attribute="Normal Text" lineEndContext="#pop" name="AssignSubscr" fallthrough="true" fallthroughContext="#pop"> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- Subscript consumes anything till ], marks as Variable --> + <context attribute="Variable" lineEndContext="#stay" name="Subscript"> + <DetectChar attribute="Variable" context="#pop" char="]" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- FunctionDef consumes a name, possibly with (), marks as Function --> + <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthrough="true" fallthroughContext="#pop"> + <RegExpr attribute="Function" context="#pop" String="\s+&funcname;(\s*\(\))?" /> + </context> + + <!-- VarName consumes spare variable names and assignments --> + <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthrough="true" fallthroughContext="#pop"> + <!-- handle command line options --> + <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+" /> + <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" /> + <RegExpr attribute="Variable" context="#stay" String="\b&varname;" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindAll" /> + <!-- stay here in spaces and other safe characters --> + <RegExpr attribute="Normal Text" context="#stay" String="[^]})|;`&><]" /> + </context> + + <!-- StringSQ consumes anything till ' --> + <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ"> + + <DetectChar attribute="String SingleQ" context="#pop" char="'" /> + </context> + + <!-- StringDQ consumes anything till ", substitutes vars and expressions --> + <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ"> + <DetectChar attribute="String DoubleQ" context="#pop" char=""" /> + <RegExpr attribute="String Escape" context="#stay" String="\\[`"\\$\n]" /> + <IncludeRules context="FindSubstitutions" /> + </context> + + <!-- StringEsc eats till ', but escaping many characters --> + <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc"> + <DetectChar attribute="String SingleQ" context="#pop" char="'" /> + <RegExpr attribute="String Escape" context="#stay" String="\\[abefnrtv\\']" /> + <RegExpr attribute="String Escape" context="#stay" String="\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)" /> + </context> + + <!-- VarBrace is called as soon as ${xxx is encoutered --> + <context attribute="Variable" lineEndContext="#stay" name="VarBrace"> + <DetectChar attribute="Variable" context="#pop" char="}" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <!-- TODO: highlight various special parameter expansions } --> + </context> + + <!-- SubstFile is called after a <( or >( is encoutered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstFile"> + <DetectChar attribute="Redirection" context="#pop" char=")" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- SubstCommand is called after a $( is encountered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand"> + <DetectChar attribute="Variable" context="#pop" char=")" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- SubstBackq is called when a backquote is encountered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstBackq"> + <DetectChar attribute="Keyword" context="#pop" char="`" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- Case is called after the case keyword is encoutered. We handle this because of + the lonely closing parentheses that would otherwise disturb the expr matching --> + <context attribute="Normal Text" lineEndContext="#stay" name="Case"> + <RegExpr attribute="Keyword" context="CaseIn" String="\sin\b" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- CaseIn is called when the construct 'case ... in' has been found. --> + <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn"> + <RegExpr attribute="Keyword" context="#pop#pop" String="\besac(?=$|[\s;)])" endRegion="case" /> + <DetectChar attribute="Keyword" context="CaseExpr" char=")" beginRegion="caseexpr" /> + <AnyChar attribute="Keyword" context="#stay" String="(|" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- CaseExpr eats shell input till ;; --> + <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr"> + <Detect2Chars attribute="Keyword" context="#pop" char=";" char1=";" endRegion="caseexpr" /> + <IncludeRules context="FindAll" /> + </context> + + + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Keyword" defStyleNum="dsKeyword" /> + <itemData name="Control" defStyleNum="dsKeyword" /> + <itemData name="Builtin" defStyleNum="dsKeyword" color="#808" /> + <itemData name="Command" defStyleNum="dsKeyword" color="#c0c" /> + <itemData name="Redirection" defStyleNum="dsKeyword" color="#238" /> + <itemData name="Escape" defStyleNum="dsDataType" /> + <itemData name="String SingleQ" defStyleNum="dsString" /> + <itemData name="String DoubleQ" defStyleNum="dsString" /> + <itemData name="Backquote" defStyleNum="dsKeyword" /> + <itemData name="String Transl." defStyleNum="dsString" /> + <itemData name="String Escape" defStyleNum="dsDataType" /> + <itemData name="Variable" defStyleNum="dsOthers" /> + <itemData name="Expression" defStyleNum="dsOthers" /> + <itemData name="Function" defStyleNum="dsChar" bold="1" /> + <itemData name="Path" defStyleNum="dsNormal" /> + <itemData name="Option" defStyleNum="dsNormal" /> + <itemData name="GlobalVariable" defStyleNum="dsOthers" bold="1" /> + <itemData name="KmdrMethod" defStyleNum="dsKeyword" italic="1" color="#008000" /> + <itemData name="DCOPMethod" defStyleNum="dsKeyword" italic="1" color="#21E52B" /> + <itemData name="KmdrString" defStyleNum="dsKeyword" italic="1" color="#D0D000" /> + <itemData name="KmdrArray" defStyleNum="dsKeyword" italic="1" color="#C0C0FF" /> + <itemData name="KmdrMatrix" defStyleNum="dsKeyword" italic="1" color="#5050AA" /> + <itemData name="KmdrFile" defStyleNum="dsKeyword" italic="1" color="#FF0000" /> + <itemData name="KmdrInput" defStyleNum="dsKeyword" italic="1" color="#FF8000" /> + <itemData name="KmdrMessage" defStyleNum="dsKeyword" italic="1" color="#800000" /> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="//"/> + <comment name="multiLine" start="/*" end="*/" /> + </comments> + <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-" additionalDeliminator="`."/> + </general> +</language> diff --git a/kommander/editor/kommander.xml b/kommander/editor/kommander.xml new file mode 100644 index 00000000..f5880b2f --- /dev/null +++ b/kommander/editor/kommander.xml @@ -0,0 +1,998 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE language SYSTEM "language.dtd" +[ + <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#%@-]*"> + <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*"> + <!ENTITY word "[^|&;()<>\s]+"> <!-- see man bash --> + <!ENTITY eos "(?=($|\s))"> <!-- eol or space following --> + <!ENTITY noword "(?![\w$+-])"> <!-- no word, $, + or - following --> +]> +<language name="Kommander (old parser)" version="2.07" kateversion="2.4" section="Scripts" extensions="*.kmdr" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl), Andras Mantia (amantia@kde.org)" license="LGPL"> + +<!-- (c) 2004 by Wilbert Berendsen, wilbert@kde.nl + Released under the LGPL, part of kdelibs/kate + + Added Kommander specific highlighting. + (c) 2006 Andras Mantia, amantia@kde.org +--> + + <highlighting> + + <list name="kmdrdcopfunctions"> + <item>addUniqueItem</item> + <item>associatedText</item> + <item>cancel</item> + <item>cellText</item> + <item>clear</item> + <item>checked</item> + <item>children</item> + <item>count</item> + <item>currentColumn</item> + <item>currentItem</item> + <item>currentRow</item> + <item>execute</item> + <item>findItem</item> + <item>geometry</item> + <item>global</item> + <item>hasFocus</item> + <item>insertColumn</item> + <item>insertItem</item> + <item>insertItems</item> + <item>insertRow</item> + <item>item</item> + <item>itemDepth</item> + <item>itemPath</item> + <item>removeColumn</item> + <item>removeItem</item> + <item>removeRow</item> + <item>selection</item> + <item>setAssociatedText</item> + <item>setChecked</item> + <item>setCellText</item> + <item>setCurrentItem</item> + <item>setColumnCaption</item> + <item>setEnabled</item> + <item>setGlobal</item> + <item>setMaximum</item> + <item>setPixmap</item> + <item>setRowCaption</item> + <item>setSelection</item> + <item>setText</item> + <item>setVisible</item> + <item>text</item> + <item>type</item> + </list> + + <list name="kmdrfunctions"> + <item>widgetText</item> + <item>selectedWidgetText</item> + <item>null</item> + <item>pid</item> + <item>dcopid</item> + <item>parentPid</item> + <item>debug</item> + <item>echo</item> + <item>env</item> + <item>exec</item> + <item>expr</item> + <item>global</item> + <item>i18n</item> + <item>dialog</item> + <item>readSetting</item> + <item>setGlobal</item> + <item>writeSetting</item> + <item>dcop</item> + <item>switchBlock</item> + <item>execBegin</item> + <item>forBlock</item> + <item>forEachBlock</item> + <item>ifBlock</item> + <item>comment</item> + </list> + + <list name="kmdrarray"> + <item>values</item> + <item>keys</item> + <item>clear</item> + <item>count</item> + <item>value</item> + <item>remove</item> + <item>setValue</item> + <item>fromString</item> + <item>toString</item> + </list> + + <list name="kmdrstring"> + <item>length</item> + <item>contains</item> + <item>find</item> + <item>findRev</item> + <item>left</item> + <item>right</item> + <item>mid</item> + <item>remove</item> + <item>replace</item> + <item>upper</item> + <item>lower</item> + <item>compare</item> + <item>isEmpty</item> + <item>isNumber</item> + <item>section</item> + <item>args</item> + <item>round</item> + </list> + + <list name="kmdrfile"> + <item>read</item> + <item>write</item> + <item>append</item> + <item>exists</item> + </list> + + <list name="kmdrinput"> + <item>color</item> + <item>text</item> + <item>password</item> + <item>value</item> + <item>double</item> + <item>valueDouble</item> + <item>openfile</item> + <item>openfiles</item> + <item>savefile</item> + <item>directory</item> + </list> + + <list name="kmdrmessage"> + <item>info</item> + <item>error</item> + <item>question</item> + <item>warning</item> + </list> + + + <list name="keywords"> + <item> else </item> + <item> for </item> + <item> function </item> + <item> in </item> + <item> select </item> + <item> until </item> + <item> while </item> + <item> . </item> + <item> elif </item> + <item> then </item> + <item> set </item> + <item> foreach </item> + <item> end </item> + </list> + + + <list name="builtins"> + <item> : </item> + <item> . </item> + <item> source </item> + <item> alias </item> + <item> bg </item> + <item> bind </item> + <item> break </item> + <item> builtin </item> + <item> cd </item> + <item> command </item> + <item> compgen </item> + <item> complete </item> + <item> continue </item> + <item> dirs </item> + <item> disown </item> + <item> echo </item> + <item> enable </item> + <item> eval </item> + <item> exec </item> + <item> exit </item> + <item> fc </item> + <item> fg </item> + <item> getopts </item> + <item> hash </item> + <item> help </item> + <item> history </item> + <item> jobs </item> + <item> kill </item> + <item> let </item> + <item> logout </item> + <item> popd </item> + <item> printf </item> + <item> pushd </item> + <item> pwd </item> + <item> return </item> + <item> set </item> + <item> shift </item> + <item> shopt </item> + <item> suspend </item> + <item> test </item> + <item> times </item> + <item> trap </item> + <item> type </item> + <item> ulimit </item> + <item> umask </item> + <item> unalias </item> + <item> wait </item> + </list> + + <list name="builtins_var"> + <item> export </item> + <item> unset </item> + <item> declare </item> + <item> typeset </item> + <item> local </item> + <item> read </item> + <item> readonly </item> + </list> + + <list name="unixcommands"> + <!-- /bin --> + <item> arch </item> + <item> awk </item> + <item> bash </item> + <item> bunzip2 </item> + <item> bzcat </item> + <item> bzcmp </item> + <item> bzdiff </item> + <item> bzegrep </item> + <item> bzfgrep </item> + <item> bzgrep </item> + <item> bzip2 </item> + <item> bzip2recover </item> + <item> bzless </item> + <item> bzmore </item> + <item> cat </item> + <item> chattr </item> + <item> chgrp </item> + <item> chmod </item> + <item> chown </item> + <item> chvt </item> + <item> cp </item> + <item> date </item> + <item> dd </item> + <item> deallocvt </item> + <item> df </item> + <item> dir </item> + <item> dircolors </item> + <item> dmesg </item> + <item> dnsdomainname </item> + <item> domainname </item> + <item> du </item> + <item> dumpkeys </item> + <item> echo </item> + <item> ed </item> + <item> egrep </item> + <item> false </item> + <item> fgconsole </item> + <item> fgrep </item> + <item> fuser </item> + <item> gawk </item> + <item> getkeycodes </item> + <item> gocr </item> + <item> grep </item> + <item> groups </item> + <item> gunzip </item> + <item> gzexe </item> + <item> gzip </item> + <item> hostname </item> + <item> igawk </item> + <item> install </item> + <item> kbd_mode </item> + <item> kbdrate </item> + <item> killall </item> + <item> last </item> + <item> lastb </item> + <item> link </item> + <item> ln </item> + <item> loadkeys </item> + <item> loadunimap </item> + <item> login </item> + <item> ls </item> + <item> lsattr </item> + <item> lsmod </item> + <item> lsmod.old </item> + <item> mapscrn </item> + <item> mesg </item> + <item> mkdir </item> + <item> mkfifo </item> + <item> mknod </item> + <item> mktemp </item> + <item> more </item> + <item> mount </item> + <item> mv </item> + <item> nano </item> + <item> netstat </item> + <item> nisdomainname </item> + <item> openvt </item> + <item> pgawk </item> + <item> pidof </item> + <item> ping </item> + <item> ps </item> + <item> pstree </item> + <item> pwd </item> + <item> rbash </item> + <item> readlink </item> + <item> red </item> + <item> resizecons </item> + <item> rm </item> + <item> rmdir </item> + <item> run-parts </item> + <item> sash </item> + <item> sed </item> + <item> setfont </item> + <item> setkeycodes </item> + <item> setleds </item> + <item> setmetamode </item> + <item> setserial </item> + <item> sh </item> + <item> showkey </item> + <item> shred </item> + <item> sleep </item> + <item> ssed </item> + <item> stat </item> + <item> stty </item> + <item> su </item> + <item> sync </item> + <item> tar </item> + <item> tempfile </item> + <item> touch </item> + <item> true </item> + <item> umount </item> + <item> uname </item> + <item> unicode_start </item> + <item> unicode_stop </item> + <item> unlink </item> + <item> utmpdump </item> + <item> uuidgen </item> + <item> vdir </item> + <item> wall </item> + <item> wc </item> + <item> ypdomainname </item> + <item> zcat </item> + <item> zcmp </item> + <item> zdiff </item> + <item> zegrep </item> + <item> zfgrep </item> + <item> zforce </item> + <item> zgrep </item> + <item> zless </item> + <item> zmore </item> + <item> znew </item> + <item> zsh </item> + + <!-- some from /usr/bin --> + <item> aclocal </item> + <item> aconnect </item> + <item> aplay </item> + <item> apm </item> + <item> apmsleep </item> + <item> apropos </item> + <item> ar </item> + <item> arecord </item> + <item> as </item> + <item> as86 </item> + <item> autoconf </item> + <item> autoheader </item> + <item> automake </item> + <item> awk </item> + <item> basename </item> + <item> bc </item> + <item> bison </item> + <item> c++ </item> + <item> cal </item> + <item> cat </item> + <item> cc </item> + <item> cdda2wav </item> + <item> cdparanoia </item> + <item> cdrdao </item> + <item> cd-read </item> + <item> cdrecord </item> + <item> chfn </item> + <item> chgrp </item> + <item> chmod </item> + <item> chown </item> + <item> chroot </item> + <item> chsh </item> + <item> clear </item> + <item> cmp </item> + <item> co </item> + <item> col </item> + <item> comm </item> + <item> cp </item> + <item> cpio </item> + <item> cpp </item> + <item> cut </item> + <item> dc </item> + <item> dd </item> + <item> df </item> + <item> diff </item> + <item> diff3 </item> + <item> dir </item> + <item> dircolors </item> + <item> directomatic </item> + <item> dirname </item> + <item> du </item> + <item> env </item> + <item> expr </item> + <item> fbset </item> + <item> file </item> + <item> find </item> + <item> flex </item> + <item> flex++ </item> + <item> fmt </item> + <item> free </item> + <item> ftp </item> + <item> funzip </item> + <item> fuser </item> + <item> g++ </item> + <item> gawk </item> + <item> gc </item> + <item> gcc </item> + <item> gdb </item> + <item> getent </item> + <item> getopt </item> + <item> gettext </item> + <item> gettextize </item> + <item> gimp </item> + <item> gimp-remote </item> + <item> gimptool </item> + <item> gmake </item> + <item> gs </item> + <item> head </item> + <item> hexdump </item> + <item> id </item> + <item> install </item> + <item> join </item> + <item> kill </item> + <item> killall </item> + <item> ld </item> + <item> ld86 </item> + <item> ldd </item> + <item> less </item> + <item> lex </item> + <item> ln </item> + <item> locate </item> + <item> lockfile </item> + <item> logname </item> + <item> lp </item> + <item> lpr </item> + <item> ls </item> + <item> lynx </item> + <item> m4 </item> + <item> make </item> + <item> man </item> + <item> mkdir </item> + <item> mknod </item> + <item> msgfmt </item> + <item> mv </item> + <item> namei </item> + <item> nasm </item> + <item> nawk </item> + <item> nice </item> + <item> nl </item> + <item> nm </item> + <item> nm86 </item> + <item> nmap </item> + <item> nohup </item> + <item> nop </item> + <item> od </item> + <item> passwd </item> + <item> patch </item> + <item> pcregrep </item> + <item> pcretest </item> + <item> perl </item> + <item> perror </item> + <item> pidof </item> + <item> pr </item> + <item> printf </item> + <item> procmail </item> + <item> prune </item> + <item> ps2ascii </item> + <item> ps2epsi </item> + <item> ps2frag </item> + <item> ps2pdf </item> + <item> ps2ps </item> + <item> psbook </item> + <item> psmerge </item> + <item> psnup </item> + <item> psresize </item> + <item> psselect </item> + <item> pstops </item> + <item> rcs </item> + <item> rev </item> + <item> rm </item> + <item> scp </item> + <item> sed </item> + <item> seq </item> + <item> setterm </item> + <item> shred </item> + <item> size </item> + <item> size86 </item> + <item> skill </item> + <item> slogin </item> + <item> snice </item> + <item> sort </item> + <item> sox </item> + <item> split </item> + <item> ssh </item> + <item> ssh-add </item> + <item> ssh-agent </item> + <item> ssh-keygen </item> + <item> ssh-keyscan </item> + <item> stat </item> + <item> strings </item> + <item> strip </item> + <item> sudo </item> + <item> suidperl </item> + <item> sum </item> + <item> tac </item> + <item> tail </item> + <item> tee </item> + <item> test </item> + <item> tr </item> + <item> uniq </item> + <item> unlink </item> + <item> unzip </item> + <item> updatedb </item> + <item> updmap </item> + <item> uptime </item> + <item> users </item> + <item> vmstat </item> + <item> w </item> + <item> wc </item> + <item> wget </item> + <item> whatis </item> + <item> whereis </item> + <item> which </item> + <item> who </item> + <item> whoami </item> + <item> write </item> + <item> xargs </item> + <item> yacc </item> + <item> yes </item> + <item> zip </item> + <item> zsoelim </item> + + <!-- others --> + <item> dcop </item> + <item> kdialog </item> + <item> kfile </item> + <item> xhost </item> + <item> xmodmap </item> + <item> xset </item> + </list> + + + <contexts> + <context attribute="Normal Text" lineEndContext="#stay" name="Start"> + <IncludeRules context="FindAll" /> + </context> + +<!-- ====== The following rulessets are meant to be included ======== --> + <!-- FindAll tries to interpret everything --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindAll"> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- FindMost tries to interpret anything except commands --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindMost"> + <IncludeRules context="FindComments" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + + <!-- FindComments consumes shell comments till EOL --> + <context attribute="Normal Text" lineEndContext="#pop" name="FindComments"> + <DetectChar attribute="Comment" context="Comment" char="#" firstNonSpace="true"/> + <RegExpr attribute="Normal Text" context="Comment" String="[\s;](?=#)" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="Comment"> + <IncludeRules context="##Alerts" /> + </context> + + <!-- FindCommentsParen consumes shell comments till EOL or a closing parenthese --> + <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsParen"> + <DetectChar attribute="Comment" context="CommentParen" char="#" firstNonSpace="true"/> + <RegExpr attribute="Normal Text" context="CommentParen" String="[\s;](?=#)" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="CommentParen"> + <RegExpr attribute="Comment" context="#pop" String="[^)](?=\))" /> + <IncludeRules context="##Alerts" /> + </context> + + <!-- FindCommentsBackq consumes shell comments till EOL or a backquote --> + <context attribute="Normal Text" lineEndContext="#pop" name="FindCommentsBackq"> + <DetectChar attribute="Comment" context="CommentBackq" char="#" firstNonSpace="true"/> + <RegExpr attribute="Normal Text" context="CommentBackq" String="[\s;](?=#)" /> + </context> + <context attribute="Comment" lineEndContext="#pop" name="CommentBackq"> + <RegExpr attribute="Comment" context="#pop" String="[^`](?=`)" /> + <IncludeRules context="##Alerts" /> + </context> + + + <!-- FindCommands matches many items that can be expected outside strings, substitutions etc. --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindCommands"> + <!-- start expression in double parentheses --> + <Detect2Chars attribute="Keyword" context="ExprDblParen" char="(" char1="(" beginRegion="expression" /> + <!-- start expression in double brackets --> + <RegExpr attribute="Keyword" context="ExprDblBracket" String="\[\[&eos;" beginRegion="expression" column="0"/> + <RegExpr attribute="Keyword" context="ExprDblBracket" String="\s\[\[&eos;" beginRegion="expression" /> + <!-- start expression in single brackets --> + <RegExpr attribute="Builtin" context="ExprBracket" String="\[&eos;" beginRegion="expression" column="0"/> + <RegExpr attribute="Builtin" context="ExprBracket" String="\s\[&eos;" beginRegion="expression" /> + <!-- start a group command with { --> + <RegExpr attribute="Keyword" context="Group" String="\{&eos;" beginRegion="group" /> + <!-- start a subshell --> + <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell" /> + <!-- match do and if blocks --> + <RegExpr attribute="Keyword" context="#stay" String="\bdo&noword;" beginRegion="do" /> + <RegExpr attribute="Keyword" context="#stay" String="\bdone&noword;" endRegion="do" /> + <RegExpr attribute="Keyword" context="#stay" String="\bif&noword;" beginRegion="if" /> + <RegExpr attribute="Keyword" context="#stay" String="\bfi&noword;" endRegion="if" /> + <!-- handle case as a special case --> + <RegExpr attribute="Keyword" context="Case" String="\bcase&noword;" beginRegion="case" /> + <!-- handle command line options --> + <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+" /> + <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" /> + <!-- handle variable assignments --> + <RegExpr attribute="Variable" context="Assign" String="\b&varname;=" /> + <RegExpr attribute="Variable" context="AssignSubscr" String="\b&varname;(?=\[[^]]+\]=)" /> + <!-- handle functions with function keyword before keywords --> + <StringDetect attribute="Function" context="#stay" String=":()" /> + <RegExpr attribute="Keyword" context="FunctionDef" String="\bfunction\b" /> + <!-- handle keywords --> + <keyword attribute="Keyword" context="#stay" String="keywords" /> + <keyword attribute="Builtin" context="#stay" String="builtins" /> + <keyword attribute="Command" context="#stay" String="unixcommands" /> + <!-- handle commands that have variable names as argument --> + <keyword attribute="Builtin" context="VarName" String="builtins_var" /> + <!-- handle here-string --> + <StringDetect attribute="Redirection" context="#stay" String="<<<" /> + <!-- handle here document --> + <StringDetect attribute="Redirection" context="HereDoc" String="<<" lookAhead="true" /> + <!-- handle process subst --> + <RegExpr attribute="Redirection" context="ProcessSubst" String="[<>]\(" /> + <!-- handle redirection --> + <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(>{1,2}|<)(&[0-9]+-?)?|&>|>&|[0-9]*<>)" /> + <!-- handle &, &&, | and || --> + <RegExpr attribute="Control" context="#stay" String="([|&])\1?" /> + <!-- mark function definitions without function keyword --> + <RegExpr attribute="Function" context="#stay" String="&funcname;\s*\(\)" /> + <!-- Kommander rules --> + <RegExpr attribute="Comment" context="#stay" String="@#.*\s*" /> + <DetectChar attribute="KmdrMethod" context="DetectKmdr" char="@" lookAhead="true"/> + </context> + + <!-- Kommander rules --> + + <context attribute="KmdrMethod" lineEndContext="#pop" name="DetectKmdr"> + <RegExpr attribute="KmdrMethod" context="#stay" String="@&varname;" /> + <DetectChar attribute="Normal Text" context="#pop" char="(" lookAhead="true"/> + <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/> + <RegExpr attribute="Normal Text" context="#pop" String="[\s\=\;\+\-\*\/\%]+" /> + <keyword attribute="DCOPMethod" context="#pop" String="kmdrdcopfunctions" /> + <keyword attribute="KmdrMethod" context="#pop" String="kmdrfunctions" /> + <keyword attribute="KmdrArray" context="#pop" String="kmdrarray" /> + <keyword attribute="KmdrString" context="#pop" String="kmdrstring" /> + <keyword attribute="KmdrFile" context="#pop" String="kmdrfile" /> + <keyword attribute="KmdrInput" context="#pop" String="kmdrinput" /> + <keyword attribute="KmdrMessage" context="#pop" String="kmdrmessage" /> + </context> + + <!-- FindOthers contains various rules to mark different shell input --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindOthers"> + <RegExpr attribute="Escape" context="#stay" String="\\[][;"\\'$`{}()|&<>* ]" /> + <RegExpr attribute="Keyword" context="#stay" String="\\$" /> + <RegExpr attribute="Escape" context="#stay" String="\{(?!(\s|$))\S*\}" /> + <RegExpr attribute="Path" context="#stay" String="\.?/[\w_@.+-]+(?=([\s/):]|$))" /> + <!-- TODO: shell globs --> + </context> + + <!-- FindStrings looks for single and double quoted strings, also with $-prefix --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings"> + <DetectChar attribute="String SingleQ" context="StringSQ" char="'" /> + <DetectChar attribute="String DoubleQ" context="StringDQ" char=""" /> + <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" /> + <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1=""" /> + </context> + + <!-- FindSubstitutions goes after anything starting with $ and ` and their escapes --> + <context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions"> + <RegExpr attribute="Variable" context="#stay" String="\$[*@#?$!_0-9-]" /> + <RegExpr attribute="Variable" context="Subscript" String="\$&varname;\[" /> + <RegExpr attribute="Variable" context="#stay" String="\$&varname;" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{[*@#?$!_0-9-]\}" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{#&varname;\}" /> + <RegExpr attribute="Variable" context="#stay" String="\$\{!&varname;\*?\}" /> + <RegExpr attribute="Variable" context="VarBrace" String="\$\{&varname;" /> + <RegExpr attribute="Variable" context="VarBrace" String="\$\{[*@#?$!_0-9-](?=[:#%/])" /> + <StringDetect attribute="Variable" context="ExprDblParenSubst" String="$((" beginRegion="expression" /> + <StringDetect attribute="Redirection" context="SubstFile" String="$(<" /> + <StringDetect attribute="Variable" context="SubstCommand" String="$(" /> + <DetectChar attribute="Backquote" context="SubstBackq" char="`" /> + <RegExpr attribute="Escape" context="#stay" String="\\[`$\\]" /> + </context> + + + + + +<!-- ====== These are the contexts that can be branched to ======= --> + + <!-- ExprDblParen consumes an expression started in command mode till )) --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen"> + <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst"> + <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- ExprSubParen consumes an expression till ) --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubParen"> + <DetectChar attribute="Normal Text" context="#pop" char=")" /> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- ExprBracket consumes an expression till ] --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket"> + <RegExpr attribute="Builtin" context="#pop" String="\s\](?=($|[\s;|&]))" endRegion="expression" /> + <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&]))" endRegion="expression" column="0"/> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- ExprDblBracket consumes an expression till ]] --> + <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket"> + <RegExpr attribute="Keyword" context="#pop" String="\s\]\](?=($|[\s;|&]))" endRegion="expression" /> + <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&]))" endRegion="expression" column="0"/> + <DetectChar attribute="Normal Text" context="ExprSubParen" char="(" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- Group consumes shell input till } --> + <context attribute="Normal Text" lineEndContext="#stay" name="Group"> + <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="group" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- SubShell consumes shell input till ) --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubShell"> + <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- Assign consumes an expression till EOL or whitespace --> + <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthrough="true" fallthroughContext="#pop"> + <DetectChar attribute="Variable" context="AssignArray" char="(" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + <RegExpr attribute="Normal Text" context="#stay" String="[\w:,+_./-]+" /> + </context> + + <!-- AssignArray consumes everything till ), marking assignments --> + <context attribute="Normal Text" lineEndContext="#pop" name="AssignArray"> + <DetectChar attribute="Variable" context="#pop" char=")" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- AssignSubscr first expects a [ then parses subscript and continues with '=value' --> + <context attribute="Normal Text" lineEndContext="#pop" name="AssignSubscr" fallthrough="true" fallthroughContext="#pop"> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- Subscript consumes anything till ], marks as Variable --> + <context attribute="Variable" lineEndContext="#stay" name="Subscript"> + <DetectChar attribute="Variable" context="#pop" char="]" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- FunctionDef consumes a name, possibly with (), marks as Function --> + <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthrough="true" fallthroughContext="#pop"> + <RegExpr attribute="Function" context="#pop" String="\s+&funcname;(\s*\(\))?" /> + </context> + + <!-- VarName consumes spare variable names and assignments --> + <context attribute="Normal Text" lineEndContext="#pop" name="VarName" fallthrough="true" fallthroughContext="#pop"> + <!-- handle command line options --> + <RegExpr attribute="Option" context="#stay" String="-[A-Za-z0-9]+" /> + <RegExpr attribute="Option" context="#stay" String="--[a-z][A-Za-z0-9_-]*" /> + <RegExpr attribute="Variable" context="#stay" String="\b&varname;" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <DetectChar attribute="Variable" context="Assign" char="=" /> + <IncludeRules context="FindMost" /> + <!-- stay here in spaces and other safe characters --> + <RegExpr attribute="Normal Text" context="#stay" String="[^]})|;`&><]" /> + </context> + + <!-- ProcessSubst handles <(command) and >(command) --> + <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst"> + <DetectChar attribute="Redirection" context="#pop" char=")" /> + <IncludeRules context="FindCommentsParen" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- StringSQ consumes anything till ' --> + <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ"> + + <DetectChar attribute="KmdrMethod" context="DetectKmdr" char="@" lookAhead="true"/> + <DetectChar attribute="String SingleQ" context="#pop" char="'" /> + </context> + + <!-- StringDQ consumes anything till ", substitutes vars and expressions --> + <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ"> + <DetectChar attribute="KmdrMethod" context="DetectKmdr" char="@" lookAhead="true"/> + <DetectChar attribute="String DoubleQ" context="#pop" char=""" /> + <RegExpr attribute="String Escape" context="#stay" String="\\[`"\\$\n]" /> + <IncludeRules context="FindSubstitutions" /> + </context> + + <!-- StringEsc eats till ', but escaping many characters --> + <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc"> + <DetectChar attribute="String SingleQ" context="#pop" char="'" /> + <RegExpr attribute="String Escape" context="#stay" String="\\[abefnrtv\\']" /> + <RegExpr attribute="String Escape" context="#stay" String="\\([0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)" /> + </context> + + <!-- VarBrace is called as soon as ${xxx is encoutered --> + <context attribute="Variable" lineEndContext="#stay" name="VarBrace"> + <DetectChar attribute="Variable" context="#pop" char="}" /> + <DetectChar attribute="Variable" context="Subscript" char="[" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <!-- TODO: highlight various special parameter expansions } --> + </context> + + <!-- SubstFile is called after a <( or >( is encoutered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstFile"> + <DetectChar attribute="Redirection" context="#pop" char=")" /> + <IncludeRules context="FindCommentsParen" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- SubstCommand is called after a $( is encountered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand"> + <DetectChar attribute="Variable" context="#pop" char=")" /> + <IncludeRules context="FindCommentsParen" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- SubstBackq is called when a backquote is encountered --> + <context attribute="Normal Text" lineEndContext="#stay" name="SubstBackq"> + <DetectChar attribute="Keyword" context="#pop" char="`" /> + <IncludeRules context="FindCommentsBackq" /> + <IncludeRules context="FindCommands" /> + <IncludeRules context="FindStrings" /> + <IncludeRules context="FindSubstitutions" /> + <IncludeRules context="FindOthers" /> + </context> + + <!-- Case is called after the case keyword is encoutered. We handle this because of + the lonely closing parentheses that would otherwise disturb the expr matching --> + <context attribute="Normal Text" lineEndContext="#stay" name="Case"> + <RegExpr attribute="Keyword" context="CaseIn" String="\sin\b" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- CaseIn is called when the construct 'case ... in' has been found. --> + <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn"> + <RegExpr attribute="Keyword" context="#pop#pop" String="\besac(?=$|[\s;)])" endRegion="case" /> + <DetectChar attribute="Keyword" context="CaseExpr" char=")" beginRegion="caseexpr" /> + <AnyChar attribute="Keyword" context="#stay" String="(|" /> + <IncludeRules context="FindMost" /> + </context> + + <!-- CaseExpr eats shell input till ;; --> + <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr"> + <Detect2Chars attribute="Keyword" context="#pop" char=";" char1=";" endRegion="caseexpr" /> + <IncludeRules context="FindAll" /> + </context> + + <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. --> + <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc"> + <RegExpr attribute="Redirection" context="HereDocQ" String="(<<\s*"(&word;)")" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocQ" String="(<<\s*'(&word;)')" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocQ" String="(<<\s*\\(&word;))" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocNQ" String="(<<(?!-)\s*(&word;))" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocIQ" String="(<<-\s*"(&word;)")" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocIQ" String="(<<-\s*'(&word;)')" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocIQ" String="(<<-\s*\\(&word;))" lookAhead="true" /> + <RegExpr attribute="Redirection" context="HereDocINQ" String="(<<-\s*(&word;))" lookAhead="true" /> + <StringDetect attribute="Redirection" context="#pop" String="<<" /><!-- always met --> + </context> + + <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder"> + <IncludeRules context="FindAll" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="HereDocQ" dynamic="true"> + <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" /> + <RegExpr attribute="Redirection" context="#pop#pop" String="%2[\s;]*$" dynamic="true" column="0"/> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="HereDocNQ" dynamic="true"> + <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" /> + <RegExpr attribute="Redirection" context="#pop#pop" String="%2[\s;]*$" dynamic="true" column="0"/> + <IncludeRules context="FindSubstitutions" /> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="HereDocIQ" dynamic="true"> + <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" /> + <RegExpr attribute="Redirection" context="#pop#pop" String="\s*%2[\s;]*$" dynamic="true" column="0"/> + </context> + + <context attribute="Normal Text" lineEndContext="#stay" name="HereDocINQ" dynamic="true"> + <RegExpr attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true" /> + <RegExpr attribute="Redirection" context="#pop#pop" String="\s*%2[\s;]*$" dynamic="true" column="0"/> + <IncludeRules context="FindSubstitutions" /> + </context> + + </contexts> + + <itemDatas> + <itemData name="Normal Text" defStyleNum="dsNormal" /> + <itemData name="Comment" defStyleNum="dsComment" /> + <itemData name="Keyword" defStyleNum="dsKeyword" /> + <itemData name="Control" defStyleNum="dsKeyword" /> + <itemData name="Builtin" defStyleNum="dsKeyword" color="#808" /> + <itemData name="Command" defStyleNum="dsKeyword" color="#c0c" /> + <itemData name="Redirection" defStyleNum="dsKeyword" color="#238" /> + <itemData name="Escape" defStyleNum="dsDataType" /> + <itemData name="String SingleQ" defStyleNum="dsString" /> + <itemData name="String DoubleQ" defStyleNum="dsString" /> + <itemData name="Backquote" defStyleNum="dsKeyword" /> + <itemData name="String Transl." defStyleNum="dsString" /> + <itemData name="String Escape" defStyleNum="dsDataType" /> + <itemData name="Variable" defStyleNum="dsOthers" /> + <itemData name="Expression" defStyleNum="dsOthers" /> + <itemData name="Function" defStyleNum="dsChar" bold="1" /> + <itemData name="Path" defStyleNum="dsNormal" /> + <itemData name="Option" defStyleNum="dsNormal" /> + <itemData name="KmdrMethod" defStyleNum="dsKeyword" italic="1" color="#008000" /> + <itemData name="DCOPMethod" defStyleNum="dsKeyword" italic="1" color="#21E52B" /> + <itemData name="KmdrString" defStyleNum="dsKeyword" italic="1" color="#D0D000" /> + <itemData name="KmdrArray" defStyleNum="dsKeyword" italic="1" color="#C0C0FF" /> + <itemData name="KmdrFile" defStyleNum="dsKeyword" italic="1" color="#FF0000" /> + <itemData name="KmdrInput" defStyleNum="dsKeyword" italic="1" color="#FF8000" /> + <itemData name="KmdrMessage" defStyleNum="dsKeyword" italic="1" color="#800000" /> + </itemDatas> + </highlighting> + <general> + <comments> + <comment name="singleLine" start="@#"/> + </comments> + <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-" additionalDeliminator="`."/> + </general> +</language> diff --git a/kommander/editor/kommanderui.rc b/kommander/editor/kommanderui.rc new file mode 100644 index 00000000..13679d7a --- /dev/null +++ b/kommander/editor/kommanderui.rc @@ -0,0 +1,5 @@ +<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> +<kpartgui version="1" name="kommander" > + <MenuBar noMerge="0" > + </MenuBar> +</kpartgui> diff --git a/kommander/editor/layout.cpp b/kommander/editor/layout.cpp new file mode 100644 index 00000000..da4669f1 --- /dev/null +++ b/kommander/editor/layout.cpp @@ -0,0 +1,956 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "formwindow.h" +#include "layout.h" +#include "widgetdatabase.h" +#include "widgetfactory.h" + +#include <qlayout.h> +#include <qevent.h> +#include <qpainter.h> +#include <qpen.h> +#include <qbitmap.h> +#include <qsplitter.h> + +bool operator<( const QGuardedPtr<QWidget> &p1, const QGuardedPtr<QWidget> &p2 ) +{ + return p1.operator->() < p2.operator->(); +} + +/*! + \class Layout layout.h + \brief Baseclass for layouting widgets in the Designer + + Classes derived from this abstract base class are used for layouting + operations in the Designer. + +*/ + +/*! \a p specifies the parent of the layoutBase \a lb. The parent + might be changed in setup(). If the layoutBase is a + container, the parent and the layoutBase are the same. Also they + always have to be a widget known to the designer (e.g. in the case + of the tabwidget parent and layoutBase are the tabwidget and not the + page which actually gets laid out. For actual usage the correct + widget is found later by Layout.) + */ + +Layout::Layout( const QWidgetList &wl, QWidget *p, FormWindow *fw, QWidget *lb, bool doSetup, bool splitter ) + : widgets( wl ), parent( p ), formWindow( fw ), isBreak( !doSetup ), useSplitter( splitter ) +{ + widgets.setAutoDelete( false ); + layoutBase = lb; + if ( !doSetup && layoutBase ) + oldGeometry = layoutBase->geometry(); +} + +/*! The widget list we got in the constructor might contain too much + widgets (like widgets with different parents, already laid out + widgets, etc.). Here we set up the list and so the only the "best" + widgets get laid out. +*/ + +void Layout::setup() +{ + startPoint = QPoint( 32767, 32767 ); + QValueList<QWidgetList> lists; + QWidget *lastParent = 0; + QWidgetList *lastList = 0; + QWidget *w = 0; + + // Go through all widgets of the list we got. As we can only + // layout widgets which have the same parent, we first do some + // sorting which means create a list for each parent containing + // its child here. After that we keep working on the list of + // childs which has the most entries. + // Widgets which are already laid out are thrown away here too + for ( w = widgets.first(); w; w = widgets.next() ) { + if ( w->parentWidget() && WidgetFactory::layoutType( w->parentWidget() ) != WidgetFactory::NoLayout ) + continue; + if ( lastParent != w->parentWidget() ) { + lastList = 0; + lastParent = w->parentWidget(); + QValueList<QWidgetList>::Iterator it = lists.begin(); + for ( ; it != lists.end(); ++it ) { + if ( ( *it ).first()->parentWidget() == w->parentWidget() ) + lastList = &( *it ); + } + if ( !lastList ) { + QWidgetList l; + l.setAutoDelete( false ); + lists.append( l ); + lastList = &lists.last(); + } + } + lastList->append( w ); + } + + // So, now find the list with the most entries + lastList = 0; + QValueList<QWidgetList>::Iterator it = lists.begin(); + for ( ; it != lists.end(); ++it ) { + if ( !lastList || ( *it ).count() > lastList->count() ) + lastList = &( *it ); + } + + // If we found no list (because no widget did fit at all) or the + // best list has only one entry and we do not layout a container, + // we leave here. + if ( !lastList || ( lastList->count() < 2 && + ( !layoutBase || + ( !WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( layoutBase ) ) ) && + layoutBase != formWindow->mainContainer() ) ) + ) ) { + widgets.clear(); + startPoint = QPoint( 0, 0 ); + return; + } + + // Now we have a new and clean widget list, which makes sense + // to layout + widgets = *lastList; + // Also use the only correct parent later, so store it + parent = WidgetFactory::widgetOfContainer( widgets.first()->parentWidget() ); + // Now calculate the position where the layout-meta-widget should + // be placed and connect to widgetDestroyed() signals of the + // widgets to get informed if one gets deleted to be able to + // handle that and do not crash in this case + for ( w = widgets.first(); w; w = widgets.next() ) { + connect( w, SIGNAL( destroyed() ), + this, SLOT( widgetDestroyed() ) ); + startPoint = QPoint( QMIN( startPoint.x(), w->x() ), + QMIN( startPoint.y(), w->y() ) ); + geometries.insert( w, QRect( w->pos(), w->size() ) ); + // Change the Z-order, as saving/loading uses the Z-order for + // writing/creating widgets and this has to be the same as in + // the layout. Else saving + loading will give different results + w->raise(); + } +} + +void Layout::widgetDestroyed() +{ + if ( sender() && sender()->isWidgetType() ) + widgets.removeRef( (QWidget*)sender() ); +} + +bool Layout::prepareLayout( bool &needMove, bool &needReparent ) +{ + if ( !widgets.count() ) + return false; + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) + w->raise(); + needMove = !layoutBase; + needReparent = needMove || layoutBase->inherits( "QLayoutWidget" ) || layoutBase->inherits( "QSplitter" ); + if ( !layoutBase ) { + if ( !useSplitter ) + layoutBase = WidgetFactory::create( WidgetDatabase::idFromClassName( "QLayoutWidget" ), + WidgetFactory::containerOfWidget( parent ) ); + else + layoutBase = WidgetFactory::create( WidgetDatabase::idFromClassName( "QSplitter" ), + WidgetFactory::containerOfWidget( parent ) ); + } else { + WidgetFactory::deleteLayout( layoutBase ); + } + + return true; +} + +void Layout::finishLayout( bool needMove, QLayout *layout ) +{ + if ( needMove ) + layoutBase->move( startPoint ); + QRect g( QRect( layoutBase->pos(), layoutBase->size() ) ); + if ( WidgetFactory::layoutType( layoutBase->parentWidget() ) == WidgetFactory::NoLayout && !isBreak ) + layoutBase->adjustSize(); + else if ( isBreak ) + layoutBase->setGeometry( oldGeometry ); + oldGeometry = g; + layoutBase->show(); + layout->activate(); + formWindow->insertWidget( layoutBase ); + formWindow->selectWidget( layoutBase ); + QString n = layoutBase->name(); + if ( n.find( "qt_dead_widget_" ) != -1 ) { + n.remove( 0, QString( "qt_dead_widget_" ).length() ); + layoutBase->setName( n ); + } +} + +void Layout::undoLayout() +{ + if ( !widgets.count() ) + return; + QMap<QGuardedPtr<QWidget>, QRect>::Iterator it = geometries.begin(); + for ( ; it != geometries.end(); ++it ) { + if ( !it.key() ) + continue; + it.key()->reparent( WidgetFactory::containerOfWidget( parent ), 0, ( *it ).topLeft(), it.key()->isVisibleTo( formWindow ) ); + it.key()->resize( ( *it ).size() ); + } + formWindow->selectWidget( layoutBase, false ); + WidgetFactory::deleteLayout( layoutBase ); + if ( parent != layoutBase && !layoutBase->inherits( "QMainWindow" ) ) { + layoutBase->hide(); + QString n = layoutBase->name(); + n.prepend( "qt_dead_widget_" ); + layoutBase->setName( n ); + } else { + layoutBase->setGeometry( oldGeometry ); + } + if ( widgets.first() ) + formWindow->selectWidget( widgets.first() ); + else + formWindow->selectWidget( formWindow ); +} + +void Layout::breakLayout() +{ + QMap<QWidget*, QRect> rects; + if ( !widgets.isEmpty() ) { + QWidget *w; + for ( w = widgets.first(); w; w = widgets.next() ) + rects.insert( w, w->geometry() ); + } + WidgetFactory::deleteLayout( layoutBase ); + bool needReparent = qstrcmp( layoutBase->className(), "QLayoutWidget" ) == 0 || + qstrcmp( layoutBase->className(), "QSplitter" ) == 0 || + ( !WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( layoutBase ) ) ) && + layoutBase != formWindow->mainContainer() ); + bool needResize = qstrcmp( layoutBase->className(), "QSplitter" ) == 0; + bool add = geometries.isEmpty(); + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + if ( needReparent ) + w->reparent( layoutBase->parentWidget(), 0, + layoutBase->pos() + w->pos(), true ); + if ( needResize ) { + QMap<QWidget*, QRect>::Iterator it = rects.find( w ); + if ( it != rects.end() ) + w->setGeometry( QRect( layoutBase->pos() + (*it).topLeft(), (*it).size() ) ); + } + if ( add ) + geometries.insert( w, QRect( w->pos(), w->size() ) ); + } + if ( needReparent ) { + layoutBase->hide(); + parent = layoutBase->parentWidget(); + QString n = layoutBase->name(); + n.prepend( "qt_dead_widget_" ); + layoutBase->setName( n ); + } else { + parent = layoutBase; + } + if ( widgets.first() && widgets.first()->isVisibleTo( formWindow ) ) + formWindow->selectWidget( widgets.first() ); + else + formWindow->selectWidget( formWindow ); +} + +class HorizontalLayoutList : public QWidgetList +{ +public: + HorizontalLayoutList( const QWidgetList &l ) + : QWidgetList( l ) {} + + int compareItems( QPtrCollection::Item item1, QPtrCollection::Item item2 ) { + QWidget *w1 = (QWidget*)item1; + QWidget *w2 = (QWidget*)item2; + if ( w1->x() == w2->x() ) + return 0; + if ( w1->x() > w2->x() ) + return 1; + return -1; + } + +}; + +HorizontalLayout::HorizontalLayout( const QWidgetList &wl, QWidget *p, FormWindow *fw, QWidget *lb, bool doSetup, bool splitter ) + : Layout( wl, p, fw, lb, doSetup, splitter ) +{ + if ( doSetup ) + setup(); +} + +void HorizontalLayout::setup() +{ + HorizontalLayoutList l( widgets ); + l.sort(); + widgets = l; + Layout::setup(); +} + +void HorizontalLayout::doLayout() +{ + bool needMove, needReparent; + if ( !prepareLayout( needMove, needReparent ) ) + return; + + QHBoxLayout *layout = (QHBoxLayout*)WidgetFactory::createLayout( layoutBase, 0, WidgetFactory::HBox ); + + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + if ( needReparent && w->parent() != layoutBase ) + w->reparent( layoutBase, 0, QPoint( 0, 0 ), false ); + if ( !useSplitter ) { + if ( qstrcmp( w->className(), "Spacer" ) == 0 ) + layout->addWidget( w, 0, ( (Spacer*)w )->alignment() ); + else + layout->addWidget( w ); + if ( w->inherits( "QLayoutWidget" ) ) + ( (QLayoutWidget*)w )->updateSizePolicy(); + } + w->show(); + } + + if ( layoutBase->inherits( "QSplitter" ) ) + ( (QSplitter*)layoutBase )->setOrientation( Qt::Horizontal ); + + finishLayout( needMove, layout ); +} + + + + +class VerticalLayoutList : public QWidgetList +{ +public: + VerticalLayoutList( const QWidgetList &l ) + : QWidgetList( l ) {} + + int compareItems( QPtrCollection::Item item1, QPtrCollection::Item item2 ) { + QWidget *w1 = (QWidget*)item1; + QWidget *w2 = (QWidget*)item2; + if ( w1->y() == w2->y() ) + return 0; + if ( w1->y() > w2->y() ) + return 1; + return -1; + } + +}; + +VerticalLayout::VerticalLayout( const QWidgetList &wl, QWidget *p, FormWindow *fw, QWidget *lb, bool doSetup, bool splitter ) + : Layout( wl, p, fw, lb, doSetup, splitter ) +{ + if ( doSetup ) + setup(); +} + +void VerticalLayout::setup() +{ + VerticalLayoutList l( widgets ); + l.sort(); + widgets = l; + Layout::setup(); +} + +void VerticalLayout::doLayout() +{ + bool needMove, needReparent; + if ( !prepareLayout( needMove, needReparent ) ) + return; + + QVBoxLayout *layout = (QVBoxLayout*)WidgetFactory::createLayout( layoutBase, 0, WidgetFactory::VBox ); + + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + if ( needReparent && w->parent() != layoutBase ) + w->reparent( layoutBase, 0, QPoint( 0, 0 ), false ); + if ( !useSplitter ) { + if ( qstrcmp( w->className(), "Spacer" ) == 0 ) + layout->addWidget( w, 0, ( (Spacer*)w )->alignment() ); + else + layout->addWidget( w ); + if ( w->inherits( "QLayoutWidget" ) ) + ( (QLayoutWidget*)w )->updateSizePolicy(); + } + w->show(); + } + + if ( layoutBase->inherits( "QSplitter" ) ) + ( (QSplitter*)layoutBase )->setOrientation( Qt::Vertical ); + + finishLayout( needMove, layout ); +} + + + + + +class Grid +{ +public: + Grid( int rows, int cols ); + ~Grid(); + + QWidget* cell( int row, int col ) const { return cells[ row * ncols + col]; } + void setCell( int row, int col, QWidget* w ) { cells[ row*ncols + col] = w; } + int numRows() const { return nrows; } + int numCols() const { return ncols; } + + void simplify(); + bool locateWidget( QWidget* w, int& row, int& col, int& rowspan, int& colspan ); + +private: + void merge(); + int countRow( int r, int c ) const; + int countCol( int r, int c ) const; + void setRow( int r, int c, QWidget* w, int count ); + void setCol( int r, int c, QWidget* w, int count ); + bool isWidgetStartCol( int c ) const; + bool isWidgetEndCol( int c ) const; + bool isWidgetStartRow( int r ) const; + bool isWidgetEndRow( int r ) const; + bool isWidgetTopLeft( int r, int c ) const; + void extendLeft(); + void extendRight(); + void extendUp(); + void extendDown(); + QWidget** cells; + bool* cols; + bool* rows; + int nrows, ncols; + +}; + +Grid::Grid( int r, int c ) + : nrows( r ), ncols( c ) +{ + cells = new QWidget*[ r * c ]; + memset( cells, 0, sizeof( cells ) * r * c ); + rows = new bool[ r ]; + cols = new bool[ c ]; + +} + +Grid::~Grid() +{ + delete [] cells; + delete [] cols; + delete [] rows; +} + +int Grid::countRow( int r, int c ) const +{ + QWidget* w = cell( r, c ); + int i = c + 1; + while ( i < ncols && cell( r, i ) == w ) + i++; + return i - c; +} + +int Grid::countCol( int r, int c ) const +{ + QWidget* w = cell( r, c ); + int i = r + 1; + while ( i < nrows && cell( i, c ) == w ) + i++; + return i - r; +} + +void Grid::setCol( int r, int c, QWidget* w, int count ) +{ + for (int i = 0; i < count; i++ ) + setCell( r + i, c, w ); +} + +void Grid::setRow( int r, int c, QWidget* w, int count ) +{ + for (int i = 0; i < count; i++ ) + setCell( r, c + i, w ); +} + +bool Grid::isWidgetStartCol( int c ) const +{ + int r; + for ( r = 0; r < nrows; r++ ) { + if ( cell( r, c ) && ( (c==0) || (cell( r, c) != cell( r, c-1) )) ) { + return true; + } + } + return false; +} + +bool Grid::isWidgetEndCol( int c ) const +{ + int r; + for ( r = 0; r < nrows; r++ ) { + if ( cell( r, c ) && ((c == ncols-1) || (cell( r, c) != cell( r, c+1) )) ) + return true; + } + return false; +} + +bool Grid::isWidgetStartRow( int r ) const +{ + int c; + for ( c = 0; c < ncols; c++ ) { + if ( cell( r, c ) && ( (r==0) || (cell( r, c) != cell( r-1, c) )) ) + return true; + } + return false; +} + +bool Grid::isWidgetEndRow( int r ) const +{ + int c; + for ( c = 0; c < ncols; c++ ) { + if ( cell( r, c ) && ((r == nrows-1) || (cell( r, c) != cell( r+1, c) )) ) + return true; + } + return false; +} + + +bool Grid::isWidgetTopLeft( int r, int c ) const +{ + QWidget* w = cell( r, c ); + if ( !w ) + return false; + return ( !r || cell( r-1, c) != w ) && (!c || cell( r, c-1) != w); +} + +void Grid::extendLeft() +{ + int r,c,i; + for ( c = 1; c < ncols; c++ ) { + for ( r = 0; r < nrows; r++ ) { + QWidget* w = cell( r, c ); + if ( !w ) + continue; + int cc = countCol( r, c); + int stretch = 0; + for ( i = c-1; i >= 0; i-- ) { + if ( cell( r, i ) ) + break; + if ( countCol( r, i ) < cc ) + break; + if ( isWidgetEndCol( i ) ) + break; + if ( isWidgetStartCol( i ) ) { + stretch = c - i; + break; + } + } + if ( stretch ) { + for ( i = 0; i < stretch; i++ ) + setCol( r, c-i-1, w, cc ); + } + } + } +} + + +void Grid::extendRight() +{ + int r,c,i; + for ( c = ncols - 2; c >= 0; c-- ) { + for ( r = 0; r < nrows; r++ ) { + QWidget* w = cell( r, c ); + if ( !w ) + continue; + int cc = countCol( r, c); + int stretch = 0; + for ( i = c+1; i < ncols; i++ ) { + if ( cell( r, i ) ) + break; + if ( countCol( r, i ) < cc ) + break; + if ( isWidgetStartCol( i ) ) + break; + if ( isWidgetEndCol( i ) ) { + stretch = i - c; + break; + } + } + if ( stretch ) { + for ( i = 0; i < stretch; i++ ) + setCol( r, c+i+1, w, cc ); + } + } + } + +} + +void Grid::extendUp() +{ + int r,c,i; + for ( r = 1; r < nrows; r++ ) { + for ( c = 0; c < ncols; c++ ) { + QWidget* w = cell( r, c ); + if ( !w ) + continue; + int cr = countRow( r, c); + int stretch = 0; + for ( i = r-1; i >= 0; i-- ) { + if ( cell( i, c ) ) + break; + if ( countRow( i, c ) < cr ) + break; + if ( isWidgetEndRow( i ) ) + break; + if ( isWidgetStartRow( i ) ) { + stretch = r - i; + break; + } + } + if ( stretch ) { + for ( i = 0; i < stretch; i++ ) + setRow( r-i-1, c, w, cr ); + } + } + } +} + +void Grid::extendDown() +{ + int r,c,i; + for ( r = nrows - 2; r >= 0; r-- ) { + for ( c = 0; c < ncols; c++ ) { + QWidget* w = cell( r, c ); + if ( !w ) + continue; + int cr = countRow( r, c); + int stretch = 0; + for ( i = r+1; i < nrows; i++ ) { + if ( cell( i, c ) ) + break; + if ( countRow( i, c ) < cr ) + break; + if ( isWidgetStartRow( i ) ) + break; + if ( isWidgetEndRow( i ) ) { + stretch = i - r; + break; + } + } + if ( stretch ) { + for ( i = 0; i < stretch; i++ ) + setRow( r+i+1, c, w, cr ); + } + } + } + +} + +void Grid::simplify() +{ + extendLeft(); + extendRight(); + extendUp(); + extendDown(); + merge(); +} + + +void Grid::merge() +{ + int r,c; + for ( c = 0; c < ncols; c++ ) + cols[c] = false; + + for ( r = 0; r < nrows; r++ ) + rows[r] = false; + + for ( c = 0; c < ncols; c++ ) { + for ( r = 0; r < nrows; r++ ) { + if ( isWidgetTopLeft( r, c ) ) { + rows[r] = true; + cols[c] = true; + } + } + } +} + +bool Grid::locateWidget( QWidget* w, int& row, int& col, int& rowspan, int & colspan ) +{ + int r,c, r2, c2; + for ( c = 0; c < ncols; c++ ) { + for ( r = 0; r < nrows; r++ ) { + if ( cell( r, c ) == w ) { + row = 0; + for ( r2 = 1; r2 <= r; r2++ ) { + if ( rows[ r2-1 ] ) + row++; + } + col = 0; + for ( c2 = 1; c2 <= c; c2++ ) { + if ( cols[ c2-1 ] ) + col++; + } + rowspan = 0; + for ( r2 = r ; r2 < nrows && cell( r2, c) == w; r2++ ) { + if ( rows[ r2 ] ) + rowspan++; + } + colspan = 0; + for ( c2 = c; c2 < ncols && cell( r, c2) == w; c2++ ) { + if ( cols[ c2] ) + colspan++; + } + return true; + } + } + } + return false; +} + + + + +GridLayout::GridLayout( const QWidgetList &wl, QWidget *p, FormWindow *fw, QWidget *lb, const QSize &res, bool doSetup ) + : Layout( wl, p, fw, lb, doSetup ), resolution( res ) +{ + grid = 0; + if ( doSetup ) + setup(); +} + +GridLayout::~GridLayout() +{ + delete grid; +} + +void GridLayout::doLayout() +{ + bool needMove, needReparent; + if ( !prepareLayout( needMove, needReparent ) ) + return; + + QDesignerGridLayout *layout = (QDesignerGridLayout*)WidgetFactory::createLayout( layoutBase, 0, WidgetFactory::Grid ); + + if ( !grid ) + buildGrid(); + + QWidget* w; + int r, c, rs, cs; + for ( w = widgets.first(); w; w = widgets.next() ) { + if ( grid->locateWidget( w, r, c, rs, cs) ) { + if ( needReparent && w->parent() != layoutBase ) + w->reparent( layoutBase, 0, QPoint( 0, 0 ), false ); + if ( rs * cs == 1 ) { + layout->addWidget( w, r, c, w->inherits( "Spacer" ) ? ( (Spacer*)w )->alignment() : 0 ); + } else { + layout->addMultiCellWidget( w, r, r+rs-1, c, c+cs-1, w->inherits( "Spacer" ) ? ( (Spacer*)w )->alignment() : 0 ); + } + if ( w->inherits( "QLayoutWidget" ) ) + ( (QLayoutWidget*)w )->updateSizePolicy(); + w->show(); + } else { + qWarning("ooops, widget '%s' does not fit in layout", w->name() ); + } + } + finishLayout( needMove, layout ); +} + +void GridLayout::setup() +{ + Layout::setup(); + buildGrid(); +} + +void GridLayout::buildGrid() +{ + QWidget* w; + QRect br; + for ( w = widgets.first(); w; w = widgets.next() ) + br = br.unite( w->geometry() ); + + delete grid; + grid = new Grid( br.height() / resolution.height() + 1, + br.width() / resolution.width() + 1 ); + + int r,c; + for ( r = 0; r < grid->numRows(); r++ ) { + for ( c = 0; c < grid->numCols(); c++ ) { + QPoint p( br.left() + c * resolution.width(), + br.top() + r* resolution.height() ); + QRect cr( p, resolution ); + for ( w = widgets.first(); w; w = widgets.next() ) { + // check that the overlap is significant + QRect intersect = cr.intersect( w->geometry() ); + if ( intersect.size().width() > resolution.width()/2 && + intersect.size().height() > resolution.height()/2 ) { + grid->setCell( r, c, w ); + } + } + } + } + grid->simplify(); +} + + + + + + + +Spacer::Spacer( QWidget *parent, const char *name ) + : QWidget( parent, name, WMouseNoMask ), + orient( Vertical ), interactive(true), sh( QSize(20,20) ) +{ + setSizeType( Expanding ); + setAutoMask( true ); +} + +void Spacer::paintEvent( QPaintEvent * ) +{ + QPainter p( this ); + p.setPen( Qt::blue ); + + if ( orient == Horizontal ) { + const int dist = 3; + const int amplitude = QMIN( 3, height() / 3 ); + const int base = height() / 2; + int i = 0; + p.setPen( white ); + for ( i = 0; i < width() / 3 +2; ++i ) + p.drawLine( i * dist, base - amplitude, i * dist + dist / 2, base + amplitude ); + p.setPen( blue ); + for ( i = 0; i < width() / 3 +2; ++i ) + p.drawLine( i * dist + dist / 2, base + amplitude, i * dist + dist, base - amplitude ); + p.drawLine( 0, 0, 0, height() ); + p.drawLine( width() - 1, 0, width() - 1, height()); + } else { + const int dist = 3; + const int amplitude = QMIN( 3, width() / 3 ); + const int base = width() / 2; + int i = 0; + p.setPen( white ); + for ( i = 0; i < height() / 3 +2; ++i ) + p.drawLine( base - amplitude, i * dist, base + amplitude,i * dist + dist / 2 ); + p.setPen( blue ); + for ( i = 0; i < height() / 3 +2; ++i ) + p.drawLine( base + amplitude, i * dist + dist / 2, base - amplitude, i * dist + dist ); + p.drawLine( 0, 0, width(), 0 ); + p.drawLine( 0, height() - 1, width(), height() - 1 ); + } +} + +void Spacer::resizeEvent( QResizeEvent* e) +{ + QWidget::resizeEvent( e ); + if ( !parentWidget() || WidgetFactory::layoutType( parentWidget() ) == WidgetFactory::NoLayout ) + sh = size(); +} + +void Spacer::updateMask() +{ + QRegion r( rect() ); + if ( orient == Horizontal ) { + const int amplitude = QMIN( 3, height() / 3 ); + const int base = height() / 2; + r = r.subtract( QRect(1, 0, width() - 2, base - amplitude ) ); + r = r.subtract( QRect(1, base + amplitude, width() - 2, height() - base - amplitude ) ); + } else { + const int amplitude = QMIN( 3, width() / 3 ); + const int base = width() / 2; + r = r.subtract( QRect(0, 1, base - amplitude, height() - 2 ) ); + r = r.subtract( QRect( base + amplitude, 1, width() - base - amplitude, height() - 2 ) ); + } + setMask( r ); +} + +void Spacer::setSizeType( SizeType t ) +{ + QSizePolicy sizeP; + if ( orient == Vertical ) + sizeP = QSizePolicy( QSizePolicy::Minimum, (QSizePolicy::SizeType)t ); + else + sizeP = QSizePolicy( (QSizePolicy::SizeType)t, QSizePolicy::Minimum ); + setSizePolicy( sizeP ); +} + + +Spacer::SizeType Spacer::sizeType() const +{ + if ( orient == Vertical ) + return (SizeType)sizePolicy().verData(); + return (SizeType)sizePolicy().horData(); +} + +int Spacer::alignment() const +{ + if ( orient == Vertical ) + return AlignHCenter; + return AlignVCenter; +} + +QSize Spacer::minimumSize() const +{ + return QSize( 20, 20 ); +} + +QSize Spacer::sizeHint() const +{ + QSize s = sh.expandedTo( QSize(0,0) ); + if ( sizeType() == Expanding ) + if ( orient == Horizontal ) + s.rheight() = 0; + else + s.rwidth() = 0; + return s; +} + + +void Spacer::setSizeHint( const QSize &s ) +{ + sh = s; + if ( !parentWidget() || WidgetFactory::layoutType( parentWidget() ) == WidgetFactory::NoLayout ) + resize( sizeHint() ); + updateGeometry(); +} + +Qt::Orientation Spacer::orientation() const +{ + return orient; +} + +void Spacer::setOrientation( Qt::Orientation o ) +{ + if ( orient == o ) + return; + + SizeType st = sizeType(); + orient = o; + setSizeType( st ); + if ( interactive ) { + sh = QSize( sh.height(), sh.width() ); + if (!parentWidget() || WidgetFactory::layoutType( parentWidget() ) == WidgetFactory::NoLayout ) + resize( height(), width() ); + } + updateMask(); + update(); + updateGeometry(); +} + + +void QDesignerGridLayout::addWidget( QWidget *w, int row, int col, int align_ ) +{ + items.insert( w, Item(row, col, 1, 1) ); + QGridLayout::addWidget( w, row, col, align_ ); +} + +void QDesignerGridLayout::addMultiCellWidget( QWidget *w, int fromRow, int toRow, + int fromCol, int toCol, int align_ ) +{ + items.insert( w, Item(fromRow, fromCol, toRow - fromRow + 1, toCol - fromCol +1) ); + QGridLayout::addMultiCellWidget( w, fromRow, toRow, fromCol, toCol, align_ ); +} +#include "layout.moc" diff --git a/kommander/editor/layout.h b/kommander/editor/layout.h new file mode 100644 index 00000000..06dce7ac --- /dev/null +++ b/kommander/editor/layout.h @@ -0,0 +1,180 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef LAYOUT_H +#define LAYOUT_H + +#include <qwidget.h> +#include <qmap.h> +#include <qguardedptr.h> +#include <qobject.h> +#include <qlayout.h> +#include <qwidgetlist.h> + +class FormWindow; +class QPaintEvent; + +class Layout : public QObject +{ + Q_OBJECT + +public: + Layout( const QWidgetList &wl, QWidget *p, FormWindow *fw, QWidget *lb, bool doSetup = TRUE, bool splitter = FALSE ); + virtual ~Layout() {} + + virtual void doLayout() = 0; + virtual void undoLayout(); + virtual void breakLayout(); + virtual bool prepareLayout( bool &needMove, bool &needReparent ); + virtual void finishLayout( bool needMove, QLayout *layout ); + +protected: + QWidgetList widgets; + QWidget *parent; + QPoint startPoint; + QMap<QGuardedPtr<QWidget>, QRect> geometries; + QWidget *layoutBase; + FormWindow *formWindow; + QRect oldGeometry; + bool isBreak; + bool useSplitter; + +protected: + virtual void setup(); + +protected slots: + void widgetDestroyed(); + +}; + +class HorizontalLayout : public Layout +{ +public: + HorizontalLayout( const QWidgetList &wl, QWidget *p, FormWindow *fw, QWidget *lb, bool doSetup = TRUE, bool splitter = FALSE ); + + void doLayout(); + +protected: + void setup(); + +}; + +class VerticalLayout : public Layout +{ +public: + VerticalLayout( const QWidgetList &wl, QWidget *p, FormWindow *fw, QWidget *lb, bool doSetup = TRUE, bool splitter = FALSE ); + + void doLayout(); + +protected: + void setup(); + +}; + +class Grid; + +class GridLayout : public Layout +{ +public: + GridLayout( const QWidgetList &wl, QWidget *p, FormWindow *fw, QWidget *lb, const QSize &res, bool doSetup = TRUE ); + ~GridLayout(); + + void doLayout(); + +protected: + void setup(); + +protected: + void buildGrid(); + QSize resolution; + Grid* grid; + +}; + +class Spacer : public QWidget +{ + Q_OBJECT + + Q_OVERRIDE( QCString name ) + Q_PROPERTY( Orientation orientation READ orientation WRITE setOrientation ) + Q_ENUMS( SizeType ) + Q_PROPERTY( SizeType sizeType READ sizeType WRITE setSizeType ) + Q_PROPERTY( QSize sizeHint READ sizeHint WRITE setSizeHint DESIGNABLE true STORED true ) + Q_OVERRIDE( QRect geometry DESIGNABLE false ) + +private: + enum { HSize = 6, HMask = 0x3f, VMask = HMask << HSize, + MayGrow = 1, ExpMask = 2, MayShrink = 4 }; + +public: + enum SizeType { Fixed = 0, + Minimum = MayGrow, + Maximum = MayShrink, + Preferred = MayGrow|MayShrink , + MinimumExpanding = Minimum|ExpMask, + Expanding = MinimumExpanding|MayShrink }; + + Spacer( QWidget *parent, const char *name ); + + QSize minimumSize() const; + QSize sizeHint() const; + void setSizeType( SizeType t ); + SizeType sizeType() const; + int alignment() const; + Orientation orientation() const; + void setOrientation( Orientation o ); + void setInteraciveMode( bool b ) { interactive = b; }; + void setSizeHint( const QSize &s ); + +protected: + void paintEvent( QPaintEvent *e ); + void resizeEvent( QResizeEvent* e ); + void updateMask(); + Qt::Orientation orient; + bool interactive; + QSize sh; +}; + +class QDesignerGridLayout : public QGridLayout +{ + Q_OBJECT +public: + QDesignerGridLayout( QWidget *parent ) : QGridLayout( parent ){}; + QDesignerGridLayout( QLayout *parentLayout ) : QGridLayout( parentLayout ){}; + + void addWidget( QWidget *, int row, int col, int align = 0 ); + void addMultiCellWidget( QWidget *, int fromRow, int toRow, + int fromCol, int toCol, int align = 0 ); + + struct Item + { + Item(): row(0), column(0),rowspan(1),colspan(1){} + Item( int r, int c, int rs, int cs): row(r), column(c), rowspan(rs), colspan(cs){} + int row; + int column; + int rowspan; + int colspan; + }; + + QMap<QWidget*, Item> items; +}; + + +#endif diff --git a/kommander/editor/listboxeditor.ui b/kommander/editor/listboxeditor.ui new file mode 100644 index 00000000..2b462987 --- /dev/null +++ b/kommander/editor/listboxeditor.ui @@ -0,0 +1,455 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>ListBoxEditorBase</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>ListBoxEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>461</width> + <height>196</height> + </rect> + </property> + <property name="caption"> + <string>Edit Listbox</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Edit Listbox</b><p>Add, edit or delete items in the listbox.</p><p>Click the <b>New Item</b>-button to create a new listbox entry, then enter text and choose a pixmap.</p><p>Select an item from the list and click the <b>Delete Item</b>-button to remove the item from the list.</p></string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget" row="5" column="0" rowspan="1" colspan="3"> + <property name="name"> + <cstring>Layout1</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>helpButton</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonApply</cstring> + </property> + <property name="text"> + <string>&Apply</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Apply all changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + <widget class="QListBox" row="0" column="0" rowspan="5" colspan="1"> + <property name="name"> + <cstring>preview</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>Delete Item</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The list of items.</string> + </property> + </widget> + <widget class="QGroupBox" row="0" column="2" rowspan="5" colspan="1"> + <property name="name"> + <cstring>GroupBox1</cstring> + </property> + <property name="title"> + <string>&Item Properties</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>Label2</cstring> + </property> + <property name="text"> + <string>&Pixmap:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemChoosePixmap</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="1"> + <property name="name"> + <cstring>itemPixmap</cstring> + </property> + <property name="text"> + <string>Label4</string> + </property> + </widget> + <widget class="QPushButton" row="1" column="2"> + <property name="name"> + <cstring>itemDeletePixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Delete Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Delete the selected item's pixmap.</string> + </property> + </widget> + <widget class="QPushButton" row="1" column="3"> + <property name="name"> + <cstring>itemChoosePixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="toolTip" stdset="0"> + <string>Select a Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Choose a pixmap file for the selected item.</string> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>Label1</cstring> + </property> + <property name="text"> + <string>&Text:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemText</cstring> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1" rowspan="1" colspan="3"> + <property name="name"> + <cstring>itemText</cstring> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="toolTip" stdset="0"> + <string>Change text</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Change the selected item's text.</string> + </property> + </widget> + </grid> + </widget> + <widget class="QPushButton" row="0" column="1"> + <property name="name"> + <cstring>itemNew</cstring> + </property> + <property name="text"> + <string>&New Item</string> + </property> + <property name="toolTip" stdset="0"> + <string>Add an item</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Add a new item.</b><p>New items are appended to the list.</p></string> + </property> + </widget> + <widget class="QPushButton" row="1" column="1"> + <property name="name"> + <cstring>itemDelete</cstring> + </property> + <property name="text"> + <string>&Delete Item</string> + </property> + <property name="toolTip" stdset="0"> + <string>Delete Item</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Delete the selected item</string> + </property> + </widget> + <spacer row="2" column="1"> + <property name="name"> + <cstring>Vertical Spacing1</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton" row="3" column="1"> + <property name="name"> + <cstring>itemUp</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image1</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move up</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Moves the selected item up.</string> + </property> + </widget> + <widget class="QPushButton" row="4" column="1"> + <property name="name"> + <cstring>itemDown</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image2</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move down</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Move the selected item down.</string> + </property> + </widget> + </grid> +</widget> +<images> + <image name="image0"> + <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c6b53006ab440370316528264b4c198450c5808a94d1ed00aac214832b43124b544ec414d34b4c4c441103f11341120831309758313d0cf3b0840b7258d55a73010092c14eca</data> + </image> + <image name="image1"> + <data format="XPM.GZ" length="1040">789c5dcf4d73a2401006e0bbbf82726ed61609ca0c4c6ded0125dfd1985baab6f600338c280a46fc08a6f6bf2f3ddd26abc0619eb7677a9aab9ef3361d3bbdab4ebd4db673e5a83cd9383dbd5bad9adf7f7e7d76ba9e70dacfe78ed7fdd1e9ba8e72265599c17adaae99773df033cb9818225f2cc38132027887f4af8d01ee817dc935720d1c7827d648c1910f969273cd8123e4a93a21d2d95ba0ef098d631864409b6f2c13c195063e210389d55720ef0b8dd56764e021c7c8905acd2c93b66aa71a224389fffb0e14fd4062f51119d290115252ab2391c6585ab653a5f6de033294f8fbf74849175544eacc80c120e478b644267451434c90a9659a78d8aa2066585d00c33425ae80d25702b92352756ea91475ce90ba8f4c80299cb5177d58ea8c5a6d819a67b4595b66865a29602632628e3406b9011a73a26b1f96a40c575f19536dc7d959c6543e5f1466f95fd646aba22cabf5fb57c636f9a24ddaa75e52c6b6f90ea3aada2f313b7ccc1b1b1da3e128a67df09aaa1addb82963dfb3b8b7cdf18e9dcfe70e8b687f91b1fba25acf2eb2a289460f17d9a28c4c7c9e1d8ae8f1e9227b1e4feafa859d9f8de378fa8afbfefeecfc030f08f1a3</data> + </image> + <image name="image2"> + <data format="XPM.GZ" length="1085">789c5dd0cd6ee2301000e03b4f11911b5ad1189290a8da0324a5e90f29941e2aadf6e0d84ea10d1020849ad5befb7a3cceaa29e2e06f663c33ce55cf7a9dcfacde55e758d16acd2cb6a207abc74f9b8dfcf5fbe79f4e97f896fabb8145ba3f3addbec5ac74b715704ed5d9769c01cb73e0423368f80224c190e53e70091c389e83d98366e83942679f0c43cc7e0087c4f3307b63c8b1d559337459c6810f48df137aab49436c750f748917320f78418e4cf65993fa04b33572c4313b067a039f333de80e39e238680ff4d5d2581c69d2c0c3ad8e0db1f30619127cd1dcd00c7a4452824c80a321359d73cd8c129c1b1b0acc726030a414b31299f9989d1952a4d0ccc23073819f861c973c2133d3b904aacf6ceeda9a8c12bc5b219929de21f9005900a99bf9f8e9a8a159728a5477f5d77847367719305373b1788b14668d4c9337d95b2437ef5d03b9c84df10a28fc866fc05c9522fbf0b369c6b8d0c7ffb1fc6db57effb0bfc68acd7657ee0fedba63599dea73d18a7dca525ec6ed3aa16293a81d2bf232beb1bfc578d58a416731ad641da95381b1e3f496ca939432c9f3bb7b8c450f8fb39994b18c93493a36fda2a7b9aa8ae3e4b278b69b192aa822499dc2d6cddc68b94ff697f46c7fdd255ad6f5e2dbdbfac7c3cbd8ecf7f7baf30f538f0154</data> + </image> +</images> +<connections> + <connection> + <sender>itemNew</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>insertNewItem()</slot> + </connection> + <connection> + <sender>itemDelete</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>deleteCurrentItem()</slot> + </connection> + <connection> + <sender>itemText</sender> + <signal>textChanged( const QString & )</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>currentTextChanged(const QString&)</slot> + </connection> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>okClicked()</slot> + </connection> + <connection> + <sender>buttonApply</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>applyClicked()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>cancelClicked()</slot> + </connection> + <connection> + <sender>itemChoosePixmap</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>choosePixmap()</slot> + </connection> + <connection> + <sender>itemDeletePixmap</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>deletePixmap()</slot> + </connection> + <connection> + <sender>itemUp</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>moveItemUp()</slot> + </connection> + <connection> + <sender>itemDown</sender> + <signal>clicked()</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>moveItemDown()</slot> + </connection> + <connection> + <sender>preview</sender> + <signal>selectionChanged(QListBoxItem*)</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>currentItemChanged(QListBoxItem*)</slot> + </connection> + <connection> + <sender>preview</sender> + <signal>currentChanged( QListBoxItem * )</signal> + <receiver>ListBoxEditorBase</receiver> + <slot>currentItemChanged(QListBoxItem*)</slot> + </connection> + <slot access="protected" language="C++" returnType="void">init()</slot> + <slot access="protected" language="C++" returnType="void">destroy()</slot> + <slot access="protected" language="C++" returnType="void">insertNewItem()</slot> + <slot access="protected" language="C++" returnType="void">deleteCurrentItem()</slot> + <slot access="protected" language="C++" returnType="void">currentItemChanged( QListBoxItem * )</slot> + <slot access="protected" language="C++" returnType="void">currentTextChanged( const QString & )</slot> + <slot access="protected" language="C++" returnType="void">okClicked()</slot> + <slot access="protected" language="C++" returnType="void">cancelClicked()</slot> + <slot access="protected" language="C++" returnType="void">applyClicked()</slot> + <slot access="protected" language="C++" returnType="void">choosePixmap()</slot> + <slot access="protected" language="C++" returnType="void">deletePixmap()</slot> + <slot access="protected" language="C++" returnType="void">moveItemUp()</slot> + <slot access="protected" language="C++" returnType="void">moveItemDown()</slot> +</connections> +<tabstops> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> + <tabstop>preview</tabstop> + <tabstop>itemNew</tabstop> + <tabstop>itemDelete</tabstop> + <tabstop>itemUp</tabstop> + <tabstop>itemDown</tabstop> + <tabstop>itemText</tabstop> + <tabstop>itemDeletePixmap</tabstop> + <tabstop>itemChoosePixmap</tabstop> + <tabstop>helpButton</tabstop> + <tabstop>buttonApply</tabstop> +</tabstops> +</UI> diff --git a/kommander/editor/listboxeditorimpl.cpp b/kommander/editor/listboxeditorimpl.cpp new file mode 100644 index 00000000..5a2aac9d --- /dev/null +++ b/kommander/editor/listboxeditorimpl.cpp @@ -0,0 +1,216 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "listboxeditorimpl.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "pixmapchooser.h" +#include "command.h" + +#include <qlineedit.h> +#include <qlabel.h> +#include <qlistbox.h> +#include <qpushbutton.h> +#include <qcheckbox.h> + +#include <klocale.h> + +ListBoxEditor::ListBoxEditor( QWidget *parent, QWidget *editWidget, FormWindow *fw ) + : ListBoxEditorBase( parent, 0, true ), formwindow( fw ) +{ + connect( helpButton, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); + listbox = (QListBox*)editWidget; + + itemText->setText( "" ); + itemText->setEnabled( false ); + itemPixmap->setText( "" ); + itemChoosePixmap->setEnabled( false ); + itemDeletePixmap->setEnabled( false ); + + QListBoxItem *i = 0; + for ( i = listbox->firstItem(); i; i = i->next() ) { + if ( i->pixmap() ) + (void)new QListBoxPixmap( preview, *i->pixmap(), i->text() ); + else + (void)new QListBoxText( preview, i->text() ); + } + + if ( preview->firstItem() ) + preview->setCurrentItem( preview->firstItem() ); +} + +void ListBoxEditor::insertNewItem() +{ + QListBoxItem *i = new QListBoxText( preview, i18n("New Item") ); + preview->setCurrentItem( i ); + preview->setSelected( i, true ); +} + +void ListBoxEditor::deleteCurrentItem() +{ + delete preview->item( preview->currentItem() ); + if ( preview->currentItem() != -1 ) + preview->setSelected( preview->currentItem(), true ); +} + +void ListBoxEditor::currentItemChanged( QListBoxItem *i ) +{ + itemText->blockSignals( true ); + itemText->setText( "" ); + itemPixmap->setText( "" ); + itemText->blockSignals( false ); + + if ( !i ) { + itemText->setEnabled( false ); + itemChoosePixmap->setEnabled( false ); + itemDeletePixmap->setEnabled( false ); + return; + } + + itemText->blockSignals( true ); + itemText->setEnabled( true ); + itemChoosePixmap->setEnabled( true ); + itemDeletePixmap->setEnabled( i->pixmap() && !i->pixmap()->isNull() ); + + itemText->setText( i->text() ); + if ( i->pixmap() ) + itemPixmap->setPixmap( *i->pixmap() ); + itemText->blockSignals( false ); +} + +void ListBoxEditor::currentTextChanged( const QString &txt ) +{ + if ( preview->currentItem() == -1 ) + return; + + preview->blockSignals( true ); + if ( preview->item( preview->currentItem() )->pixmap() ) + preview->changeItem( *preview->item( preview->currentItem() )->pixmap(), txt, preview->currentItem() ); + else + preview->changeItem( txt, preview->currentItem() ); + preview->blockSignals( false ); +} + +void ListBoxEditor::okClicked() +{ + applyClicked(); + accept(); +} + +void ListBoxEditor::cancelClicked() +{ + reject(); +} + +void ListBoxEditor::applyClicked() +{ + QListBoxItem *i = 0; + QValueList<PopulateListBoxCommand::Item> items; + for ( i = preview->firstItem(); i; i = i->next() ) { + PopulateListBoxCommand::Item item; + if ( i->pixmap() ) + item.pix = *i->pixmap(); + item.text = i->text(); + items.append( item ); + } + + PopulateListBoxCommand *cmd = new PopulateListBoxCommand( i18n("Edit Items of '%1'" ).arg( listbox->name() ), + formwindow, listbox, items ); + cmd->execute(); + formwindow->commandHistory()->addCommand( cmd ); +} + +void ListBoxEditor::choosePixmap() +{ + if ( preview->currentItem() == -1 ) + return; + + QPixmap pix; + if ( preview->item( preview->currentItem() )->pixmap() ) + pix = qChoosePixmap( this, formwindow, *preview->item( preview->currentItem() )->pixmap() ); + else + pix = qChoosePixmap( this, formwindow, QPixmap() ); + + if ( pix.isNull() ) + return; + + QString txt = preview->item( preview->currentItem() )->text(); + preview->changeItem( pix, txt, preview->currentItem() ); + itemDeletePixmap->setEnabled( true ); +} + +void ListBoxEditor::moveItemUp() +{ + if ( preview->currentItem() < 1 ) + return; + + QListBoxItem *i = preview->item( preview->currentItem() ); + bool hasPix = (i->pixmap() != 0); + QPixmap pix; + if ( hasPix ) + pix = *i->pixmap(); + QString txt = i->text(); + + QListBoxItem *p = i->prev(); + if ( p->pixmap() ) + preview->changeItem( *p->pixmap(), p->text(), preview->currentItem() ); + else + preview->changeItem( p->text(), preview->currentItem() ); + + if ( hasPix ) + preview->changeItem( pix, txt, preview->currentItem() - 1 ); + else + preview->changeItem( txt, preview->currentItem() - 1 ); +} + +void ListBoxEditor::moveItemDown() +{ + if ( preview->currentItem() == -1 || preview->currentItem() > (int)preview->count() - 2 ) + return; + + QListBoxItem *i = preview->item( preview->currentItem() ); + bool hasPix = (i->pixmap() != 0); + QPixmap pix; + if ( hasPix ) + pix = *i->pixmap(); + QString txt = i->text(); + + QListBoxItem *n = i->next(); + if ( n->pixmap() ) + preview->changeItem( *n->pixmap(), n->text(), preview->currentItem() ); + else + preview->changeItem( n->text(), preview->currentItem() ); + + if ( hasPix ) + preview->changeItem( pix, txt, preview->currentItem() + 1 ); + else + preview->changeItem( txt, preview->currentItem() + 1 ); +} + +void ListBoxEditor::deletePixmap() +{ + if ( preview->currentItem() == -1 ) + return; + + QListBoxItem *i = preview->item( preview->currentItem() ); + preview->changeItem( i->text(), preview->currentItem() ); + itemDeletePixmap->setEnabled( false ); +} +#include "listboxeditorimpl.moc" diff --git a/kommander/editor/listboxeditorimpl.h b/kommander/editor/listboxeditorimpl.h new file mode 100644 index 00000000..294ce33e --- /dev/null +++ b/kommander/editor/listboxeditorimpl.h @@ -0,0 +1,55 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef LISTBOXEDITOR_H +#define LISTBOXEDITOR_H + +class QListBox; +class FormWindow; + +#include "listboxeditor.h" + +class ListBoxEditor : public ListBoxEditorBase +{ + Q_OBJECT + +public: + ListBoxEditor( QWidget *parent, QWidget *editWidget, FormWindow *fw ); + +protected slots: + void insertNewItem(); + void deleteCurrentItem(); + void currentItemChanged( QListBoxItem * ); + void currentTextChanged( const QString & ); + void okClicked(); + void cancelClicked(); + void applyClicked(); + void choosePixmap(); + void moveItemUp(); + void moveItemDown(); + void deletePixmap(); + +private: + QListBox *listbox; + FormWindow *formwindow; + +}; + +#endif diff --git a/kommander/editor/listeditor.ui b/kommander/editor/listeditor.ui new file mode 100644 index 00000000..6cafeed0 --- /dev/null +++ b/kommander/editor/listeditor.ui @@ -0,0 +1,147 @@ +<!DOCTYPE UI><UI version="3.1" stdsetdef="1"> +<class>ListEditor</class> +<widget class="QDialog"> + <property name="name"> + <cstring>ListEditor</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>331</width> + <height>301</height> + </rect> + </property> + <property name="caption"> + <string>Edit</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QListView" row="0" column="0" rowspan="5" colspan="1"> + <column> + <property name="text"> + <string>Column 1</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizable"> + <bool>true</bool> + </property> + </column> + <property name="name"> + <cstring>listview</cstring> + </property> + <property name="selectionMode"> + <enum>Extended</enum> + </property> + <property name="resizeMode"> + <enum>AllColumns</enum> + </property> + </widget> + <widget class="QPushButton" row="0" column="1"> + <property name="name"> + <cstring>PushButton1</cstring> + </property> + <property name="text"> + <string>&Add</string> + </property> + </widget> + <widget class="QPushButton" row="1" column="1"> + <property name="name"> + <cstring>PushButton2</cstring> + </property> + <property name="text"> + <string>&Remove</string> + </property> + </widget> + <widget class="QPushButton" row="2" column="1"> + <property name="name"> + <cstring>PushButton3</cstring> + </property> + <property name="text"> + <string>Re&name</string> + </property> + </widget> + <widget class="QPushButton" row="4" column="1"> + <property name="name"> + <cstring>PushButton4</cstring> + </property> + <property name="text"> + <string>&Close</string> + </property> + </widget> + <spacer row="3" column="1"> + <property name="name"> + <cstring>Spacer1</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </grid> +</widget> +<connections> + <connection> + <sender>PushButton1</sender> + <signal>clicked()</signal> + <receiver>ListEditor</receiver> + <slot>addItem()</slot> + </connection> + <connection> + <sender>PushButton2</sender> + <signal>clicked()</signal> + <receiver>ListEditor</receiver> + <slot>removeItems()</slot> + </connection> + <connection> + <sender>PushButton4</sender> + <signal>clicked()</signal> + <receiver>ListEditor</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>listview</sender> + <signal>itemRenamed(QListViewItem*,int)</signal> + <receiver>ListEditor</receiver> + <slot>renamed(QListViewItem*)</slot> + </connection> + <connection> + <sender>PushButton3</sender> + <signal>clicked()</signal> + <receiver>ListEditor</receiver> + <slot>renameItem()</slot> + </connection> +</connections> +<forwards> + <forward>class QStringList;</forward> +</forwards> +<slots> + <slot>init()</slot> + <slot>setList( const QStringList & l )</slot> + <slot>addItem()</slot> + <slot>renamed( QListViewItem * i )</slot> + <slot>removeItems()</slot> + <slot returnType="QStringList">items()</slot> + <slot>renameItem()</slot> +</slots> +<pixmapinproject/> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kommander/editor/listvieweditor.ui b/kommander/editor/listvieweditor.ui new file mode 100644 index 00000000..32c5f135 --- /dev/null +++ b/kommander/editor/listvieweditor.ui @@ -0,0 +1,936 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>ListViewEditorBase</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>ListViewEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>599</width> + <height>351</height> + </rect> + </property> + <property name="caption"> + <string>Edit Listview</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Edit Listview</b><p>Use the controls on the <b>Items</b>-tab to add, edit or delete items in the listview. Change the column configuration of the listview using the controls on the <b>Columns</b>-tab.</p>Click the <b>New Item</b>-button to create a new item, then enter text and add a pixmap.</p><p>Select an item from the list and click the <b>Delete Item</b>-button to remove the item from the list.</p></string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QTabWidget"> + <property name="name"> + <cstring>tabWidget</cstring> + </property> + <widget class="QWidget"> + <property name="name"> + <cstring>Widget10</cstring> + </property> + <attribute name="title"> + <string>&Items</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton" row="2" column="1"> + <property name="name"> + <cstring>itemDelete</cstring> + </property> + <property name="text"> + <string>&Delete Item</string> + </property> + <property name="toolTip" stdset="0"> + <string>Delete item</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Deletes the selected item.</b><p>Any sub-items are also deleted.</p></string> + </property> + </widget> + <widget class="QGroupBox" row="0" column="2" rowspan="8" colspan="1"> + <property name="name"> + <cstring>GroupBox1</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>5</vsizetype> + </sizepolicy> + </property> + <property name="title"> + <string>Item &Properties</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>Label2</cstring> + </property> + <property name="text"> + <string>Pi&xmap:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemChoosePixmap</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>Label1</cstring> + </property> + <property name="text"> + <string>&Text:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemText</cstring> + </property> + </widget> + <widget class="QLineEdit" row="1" column="1"> + <property name="name"> + <cstring>itemText</cstring> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="toolTip" stdset="0"> + <string>Change text</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Change the text of the item.</b><p>The text will be changed in the current column of the selected item.</p></string> + </property> + </widget> + <widget class="QSpinBox" row="0" column="1"> + <property name="name"> + <cstring>itemColumn</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>Change column</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Select the current column.</b><p>The item's text and pixmap will be changed for the current column</p></string> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>Label4</cstring> + </property> + <property name="text"> + <string>Colu&mn:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemColumn</cstring> + </property> + </widget> + <widget class="QLayoutWidget" row="2" column="1"> + <property name="name"> + <cstring>Layout2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>itemPixmap</cstring> + </property> + <property name="text"> + <string>Label4</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>itemDeletePixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Delete Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Delete the selected item's pixmap.</b><p>The pixmap in the current column of the selected item will be deleted.</p></string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>itemChoosePixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="toolTip" stdset="0"> + <string>Select a Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Select a pixmap file for the item.</b><p>The pixmap will be changed in the current column of the selected item.</p></string> + </property> + </widget> + </hbox> + </widget> + </grid> + </widget> + <widget class="QPushButton" row="0" column="1"> + <property name="name"> + <cstring>itemNew</cstring> + </property> + <property name="text"> + <string>&New Item</string> + </property> + <property name="toolTip" stdset="0"> + <string>Add an item</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Adds a new item to the list.</b><p>The item will be inserted at the top of the list and can be moved using the up- and down-buttons.</p></string> + </property> + </widget> + <widget class="QListView" row="0" column="0" rowspan="8" colspan="1"> + <property name="name"> + <cstring>itemsPreview</cstring> + </property> + <property name="whatsThis" stdset="0"> + <string>The list of items.</string> + </property> + </widget> + <widget class="QPushButton" row="1" column="1"> + <property name="name"> + <cstring>itemNewSub</cstring> + </property> + <property name="text"> + <string>New &Subitem</string> + </property> + <property name="toolTip" stdset="0"> + <string>Add a subitem</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Create a new sub-item for the selected item.</b><p>New sub-items are inserted at the top of the list of sub-items, and new levels are created automatically.</p></string> + </property> + </widget> + <spacer row="3" column="1"> + <property name="name"> + <cstring>Vertical Spacing1</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton" row="4" column="1"> + <property name="name"> + <cstring>itemUp</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image1</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move up</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item up.</b><p>The item will be moved within its level in the hierarchy.</p></string> + </property> + </widget> + <widget class="QPushButton" row="5" column="1"> + <property name="name"> + <cstring>itemDown</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image2</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move down</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item down.</b><p>The item will be moved within its level in the hierarchy.</p></string> + </property> + </widget> + <widget class="QPushButton" row="6" column="1"> + <property name="name"> + <cstring>itemLeft</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image3</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move left</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item one level up.</b><p>This will also change the level of the item's sub-items.</p></string> + </property> + </widget> + <widget class="QPushButton" row="7" column="1"> + <property name="name"> + <cstring>itemRight</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image4</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move right</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item one level down.</b><p>This will also change the level of the item's sub-items.</p></string> + </property> + </widget> + </grid> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>Widget11</cstring> + </property> + <attribute name="title"> + <string>Co&lumns</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QGroupBox" row="0" column="2" rowspan="5" colspan="1"> + <property name="name"> + <cstring>GroupBox1</cstring> + </property> + <property name="title"> + <string>Column Properties</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>Label2</cstring> + </property> + <property name="text"> + <string>&Pixmap:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>colChoosePixmap</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="1"> + <property name="name"> + <cstring>colPixmap</cstring> + </property> + <property name="text"> + <string>Label4</string> + </property> + </widget> + <widget class="QPushButton" row="1" column="2"> + <property name="name"> + <cstring>colDeletePixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Delete Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Delete the pixmap of the selected column.</string> + </property> + </widget> + <widget class="QPushButton" row="1" column="3"> + <property name="name"> + <cstring>colChoosePixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="toolTip" stdset="0"> + <string>Select a Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Select a pixmap file for the selected column.</b><p>The pixmap will be displayed in the header of the listview.</p></string> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>Label1</cstring> + </property> + <property name="text"> + <string>&Text:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>colText</cstring> + </property> + </widget> + <widget class="QLineEdit" row="0" column="1" rowspan="1" colspan="3"> + <property name="name"> + <cstring>colText</cstring> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="toolTip" stdset="0"> + <string>Enter column text</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Enter the text for the selected column.</b><p>The text will be displayed in the header of the listview.</p></string> + </property> + </widget> + <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>colClickable</cstring> + </property> + <property name="text"> + <string>Clicka&ble</string> + </property> + <property name="whatsThis" stdset="0"> + <string>If this option is checked, the selected column will react to mouse clicks on the header.</string> + </property> + </widget> + <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>colResizeable</cstring> + </property> + <property name="text"> + <string>Re&sizable</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The column's width will be resizeable if this option is checked.</string> + </property> + </widget> + </grid> + </widget> + <widget class="QPushButton" row="1" column="1"> + <property name="name"> + <cstring>colDelete</cstring> + </property> + <property name="text"> + <string>&Delete Column</string> + </property> + <property name="toolTip" stdset="0"> + <string>Delete column</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Deletes the selected Column.</string> + </property> + </widget> + <widget class="QPushButton" row="4" column="1"> + <property name="name"> + <cstring>colDown</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image2</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move down</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item down.</b><p>The top-most column will be the first column in the list.</p></string> + </property> + </widget> + <widget class="QPushButton" row="0" column="1"> + <property name="name"> + <cstring>colNew</cstring> + </property> + <property name="text"> + <string>&New Column</string> + </property> + <property name="toolTip" stdset="0"> + <string>Add a Column</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Create a new column.</b><p>New columns are appended at the end of (right of) the list and may be moved using the up- and down-buttons.</p></string> + </property> + </widget> + <widget class="QPushButton" row="3" column="1"> + <property name="name"> + <cstring>colUp</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image1</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move up</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item up.</b><p>The top-most column will be the first column in the list.</p></string> + </property> + </widget> + <widget class="QListBox" row="0" column="0" rowspan="5" colspan="1"> + <property name="name"> + <cstring>colPreview</cstring> + </property> + <property name="whatsThis" stdset="0"> + <string>The list of columns.</string> + </property> + </widget> + <spacer row="2" column="1"> + <property name="name"> + <cstring>Vertical Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </grid> + </widget> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout1</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>helpButton</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>okButton</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>applyButton</cstring> + </property> + <property name="text"> + <string>&Apply</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Apply all changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>cancelButton</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<images> + <image name="image0"> + <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c6b53006ab440370316528264b4c198450c5808a94d1ed00aac214832b43124b544ec414d34b4c4c441103f11341120831309758313d0cf3b0840b7258d55a73010092c14eca</data> + </image> + <image name="image1"> + <data format="XPM.GZ" length="1040">789c5dcf4d73a2401006e0bbbf82726ed61609ca0c4c6ded0125dfd1985baab6f600338c280a46fc08a6f6bf2f3ddd26abc0619eb7677a9aab9ef3361d3bbdab4ebd4db673e5a83cd9383dbd5bad9adf7f7e7d76ba9e70dacfe78ed7fdd1e9ba8e72265599c17adaae99773df033cb9818225f2cc38132027887f4af8d01ee817dc935720d1c7827d648c1910f969273cd8123e4a93a21d2d95ba0ef098d631864409b6f2c13c195063e210389d55720ef0b8dd56764e021c7c8905acd2c93b66aa71a224389fffb0e14fd4062f51119d290115252ab2391c6585ab653a5f6de033294f8fbf74849175544eacc80c120e478b644267451434c90a9659a78d8aa2066585d00c33425ae80d25702b92352756ea91475ce90ba8f4c80299cb5177d58ea8c5a6d819a67b4595b66865a29602632628e3406b9011a73a26b1f96a40c575f19536dc7d959c6543e5f1466f95fd646aba22cabf5fb57c636f9a24ddaa75e52c6b6f90ea3aada2f313b7ccc1b1b1da3e128a67df09aaa1addb82963dfb3b8b7cdf18e9dcfe70e8b687f91b1fba25acf2eb2a289460f17d9a28c4c7c9e1d8ae8f1e9227b1e4feafa859d9f8de378fa8afbfefeecfc030f08f1a3</data> + </image> + <image name="image2"> + <data format="XPM.GZ" length="1085">789c5dd0cd6ee2301000e03b4f11911b5ad1189290a8da0324a5e90f29941e2aadf6e0d84ea10d1020849ad5befb7a3cceaa29e2e06f663c33ce55cf7a9dcfacde55e758d16acd2cb6a207abc74f9b8dfcf5fbe79f4e97f896fabb8145ba3f3addbec5ac74b715704ed5d9769c01cb73e0423368f80224c190e53e70091c389e83d98366e83942679f0c43cc7e0087c4f3307b63c8b1d559337459c6810f48df137aab49436c750f748917320f78418e4cf65993fa04b33572c4313b067a039f333de80e39e238680ff4d5d2581c69d2c0c3ad8e0db1f30619127cd1dcd00c7a4452824c80a321359d73cd8c129c1b1b0acc726030a414b31299f9989d1952a4d0ccc23073819f861c973c2133d3b904aacf6ceeda9a8c12bc5b219929de21f9005900a99bf9f8e9a8a159728a5477f5d77847367719305373b1788b14668d4c9337d95b2437ef5d03b9c84df10a28fc866fc05c9522fbf0b369c6b8d0c7ffb1fc6db57effb0bfc68acd7657ee0fedba63599dea73d18a7dca525ec6ed3aa16293a81d2bf232beb1bfc578d58a416731ad641da95381b1e3f496ca939432c9f3bb7b8c450f8fb39994b18c93493a36fda2a7b9aa8ae3e4b278b69b192aa822499dc2d6cddc68b94ff697f46c7fdd255ad6f5e2dbdbfac7c3cbd8ecf7f7baf30f538f0154</data> + </image> + <image name="image3"> + <data format="XPM.GZ" length="1055">789c65d25f6fa2401000f0773f05913773b1202c422ef7a056ebffda3e5dd2f461d95d2aa2605129dea5dfbdbb336373a7460dbf9961665cbc6b59bf570bab75d7381cf931159658f3d26ac9d36e777e79fdf5b7d174034bbf7dfdddfcd168b62d612d8b5c99eb677d6d3ba12792c47069e83a5ea820fb88f47dcc8e80dfc563a4ef2481e19448d99e61c7f184648603e4a5d5191831863c187a2e6312e60e91818bd90930620eb67a400611666b43dfed52ab059007ae80e215910969f884ec4a2c9e1bb24e20313b4386d4ea1ec8431ad4370c3a5d164371818ca8f80f9047119e4645a441b661d70b23dc2a4772ba774de448098c438983b648eee243c9880a8b37c8b883fc300c3d4d58a3240698e5c098336c951a46bea0ec89486b2440a1b3d0ea0d29a9786f184b457c3714ecc21d504a5a3236944ad192c250058a061d91095101f59dc8f6d5eb3b66f39b188f05bf8a49a192ab3abdc8db5afe17d3f3d24d66b7b9e436dfdaf014762acdb3bcd826fbfdfbbe3cc0911c4f599e57599a7e94ebbc3ec3832f373a545545613e750ffe2a837b1dca87a3c179f8500fc73063329de992b9948b496f395ee02ef3c7baa8681779d979357a9addfcb6fef3d4be3983fef236f6ef597dfe6c7c016080f871</data> + </image> + <image name="image4"> + <data format="XPM.GZ" length="1175">789c65d24b6fda401000e03bbfc2c2375411fc583f54f510d204688040020949d5c37ad7368eb14978242455ff7b3d0f9002960ffe66676647bb3e6b18b3d1c0689cd5d61bb9c994a1e6726534f4b6283e7efff9f1b756b73ca37a856b58f56fb57ad350c67059c6f03dadbecd56cb769304386606c41ed00a1c157bc05ba0dd725c2d8037443788b1d51019ba8af808742c1126583b38103bf7899e20de2143d1521a3822ee57bb4cae7d02ba96d0947c8f944247c809d1b3140e7941f4054df50b286cdfd2c86b62c01bcd90d20f29f99d18685a2d819eed0bda2825865cbb434a9fc7d0c440d0183f89219f46fb40aced10a545cc80be23b9b34446412815f08118f29026515a74471f4c491b29664cad7260e0441ef11959d552f21571bfba6472ab05935b15c0eab63979ce94c418a914275f12b54ddc00a55b113b9f1f88ab095269aefd24c6bcba0546aef6a8768dd49a877c3b109357c498878c804a27bcef2b93575f80904a6c1e3d5f62a63c8d454a9fc4e224d527b5f338d31493cfa6a9cd6653e68b459196185bbebcaed6ebcdf62d5779be78dfe1ad7e16c5bc88cf0b054ffb027fa9cbab5c6559072259daede1efddb9eef607c39b51156af7c7582b7bb777939d9465bb0a4defbfcef2900ea693a3f966fdf1e478e647c83a8a3d95a767b03fab7fdf6bff01e3b51256</data> + </image> +</images> +<connections> + <connection> + <sender>cancelButton</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>reject()</slot> + </connection> + <connection> + <sender>itemNew</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemNewClicked()</slot> + </connection> + <connection> + <sender>itemDelete</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemDeleteClicked()</slot> + </connection> + <connection> + <sender>itemUp</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemUpClicked()</slot> + </connection> + <connection> + <sender>itemDown</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemDownClicked()</slot> + </connection> + <connection> + <sender>itemColumn</sender> + <signal>valueChanged(int)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemColChanged(int)</slot> + </connection> + <connection> + <sender>itemText</sender> + <signal>textChanged(const QString&)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemTextChanged(const QString&)</slot> + </connection> + <connection> + <sender>itemDeletePixmap</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemPixmapDeleted()</slot> + </connection> + <connection> + <sender>itemChoosePixmap</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemPixmapChoosen()</slot> + </connection> + <connection> + <sender>colNew</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>newColumnClicked()</slot> + </connection> + <connection> + <sender>colDelete</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>deleteColumnClicked()</slot> + </connection> + <connection> + <sender>colUp</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>columnUpClicked()</slot> + </connection> + <connection> + <sender>colDown</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>columnDownClicked()</slot> + </connection> + <connection> + <sender>colText</sender> + <signal>textChanged(const QString&)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>columnTextChanged(const QString&)</slot> + </connection> + <connection> + <sender>colDeletePixmap</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>columnPixmapDeleted()</slot> + </connection> + <connection> + <sender>colChoosePixmap</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>columnPixmapChosen()</slot> + </connection> + <connection> + <sender>colResizeable</sender> + <signal>toggled(bool)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>columnResizable(bool)</slot> + </connection> + <connection> + <sender>colClickable</sender> + <signal>toggled(bool)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>columnClickable(bool)</slot> + </connection> + <connection> + <sender>tabWidget</sender> + <signal>selected(const QString&)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>initTabPage(const QString&)</slot> + </connection> + <connection> + <sender>okButton</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>okClicked()</slot> + </connection> + <connection> + <sender>applyButton</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>applyClicked()</slot> + </connection> + <connection> + <sender>colPreview</sender> + <signal>currentChanged(QListBoxItem*)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>currentColumnChanged(QListBoxItem*)</slot> + </connection> + <connection> + <sender>colPreview</sender> + <signal>selectionChanged(QListBoxItem*)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>currentColumnChanged(QListBoxItem*)</slot> + </connection> + <connection> + <sender>itemsPreview</sender> + <signal>currentChanged(QListViewItem*)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>currentItemChanged(QListViewItem*)</slot> + </connection> + <connection> + <sender>itemsPreview</sender> + <signal>selectionChanged(QListViewItem*)</signal> + <receiver>ListViewEditorBase</receiver> + <slot>currentItemChanged(QListViewItem*)</slot> + </connection> + <connection> + <sender>itemNewSub</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemNewSubClicked()</slot> + </connection> + <connection> + <sender>itemLeft</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemLeftClicked()</slot> + </connection> + <connection> + <sender>itemRight</sender> + <signal>clicked()</signal> + <receiver>ListViewEditorBase</receiver> + <slot>itemRightClicked()</slot> + </connection> + <slot access="protected" language="C++" returnType="void">init()</slot> + <slot access="protected" language="C++" returnType="void">destroy()</slot> + <slot access="protected" language="C++" returnType="void">applyClicked()</slot> + <slot access="protected" language="C++" returnType="void">columnClickable(bool)</slot> + <slot access="protected" language="C++" returnType="void">columnDownClicked()</slot> + <slot access="protected" language="C++" returnType="void">columnPixmapChosen()</slot> + <slot access="protected" language="C++" returnType="void">columnPixmapDeleted()</slot> + <slot access="protected" language="C++" returnType="void">columnResizable(bool)</slot> + <slot access="protected" language="C++" returnType="void">columnTextChanged(const QString &)</slot> + <slot access="protected" language="C++" returnType="void">columnUpClicked()</slot> + <slot access="protected" language="C++" returnType="void">currentColumnChanged(QListBoxItem*)</slot> + <slot access="protected" language="C++" returnType="void">currentItemChanged(QListViewItem*)</slot> + <slot access="protected" language="C++" returnType="void">deleteColumnClicked()</slot> + <slot access="protected" language="C++" returnType="void">initTabPage(const QString &)</slot> + <slot access="protected" language="C++" returnType="void">itemColChanged(int)</slot> + <slot access="protected" language="C++" returnType="void">itemDeleteClicked()</slot> + <slot access="protected" language="C++" returnType="void">itemDownClicked()</slot> + <slot access="protected" language="C++" returnType="void">itemLeftClicked()</slot> + <slot access="protected" language="C++" returnType="void">itemNewClicked()</slot> + <slot access="protected" language="C++" returnType="void">itemNewSubClicked()</slot> + <slot access="protected" language="C++" returnType="void">itemPixmapChoosen()</slot> + <slot access="protected" language="C++" returnType="void">itemPixmapDeleted()</slot> + <slot access="protected" language="C++" returnType="void">itemTextChanged(const QString &)</slot> + <slot access="protected" language="C++" returnType="void">itemUpClicked()</slot> + <slot access="protected" language="C++" returnType="void">newColumnClicked()</slot> + <slot access="protected" language="C++" returnType="void">itemRightClicked()</slot> + <slot access="protected" language="C++" returnType="void">okClicked()</slot> +</connections> +<tabstops> + <tabstop>okButton</tabstop> + <tabstop>cancelButton</tabstop> + <tabstop>tabWidget</tabstop> + <tabstop>itemsPreview</tabstop> + <tabstop>itemNew</tabstop> + <tabstop>itemNewSub</tabstop> + <tabstop>itemDelete</tabstop> + <tabstop>itemUp</tabstop> + <tabstop>itemDown</tabstop> + <tabstop>itemLeft</tabstop> + <tabstop>itemRight</tabstop> + <tabstop>itemColumn</tabstop> + <tabstop>itemText</tabstop> + <tabstop>itemDeletePixmap</tabstop> + <tabstop>itemChoosePixmap</tabstop> + <tabstop>helpButton</tabstop> + <tabstop>applyButton</tabstop> + <tabstop>colPreview</tabstop> + <tabstop>colNew</tabstop> + <tabstop>colDelete</tabstop> + <tabstop>colUp</tabstop> + <tabstop>colDown</tabstop> + <tabstop>colText</tabstop> + <tabstop>colDeletePixmap</tabstop> + <tabstop>colChoosePixmap</tabstop> + <tabstop>colClickable</tabstop> + <tabstop>colResizeable</tabstop> +</tabstops> +</UI> diff --git a/kommander/editor/listvieweditorimpl.cpp b/kommander/editor/listvieweditorimpl.cpp new file mode 100644 index 00000000..3f30106a --- /dev/null +++ b/kommander/editor/listvieweditorimpl.cpp @@ -0,0 +1,585 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "formwindow.h" +#include "mainwindow.h" +#include "listvieweditorimpl.h" +#include "pixmapchooser.h" +#include "command.h" + +#include <qlistview.h> +#include <qheader.h> +#include <qlistbox.h> +#include <qlineedit.h> +#include <qcheckbox.h> +#include <qlabel.h> +#include <qtabwidget.h> +#include <qspinbox.h> +#include <qpushbutton.h> +#include <qptrstack.h> + +#include <klocale.h> + +ListViewEditor::ListViewEditor( QWidget *parent, QListView *lv, FormWindow *fw ) + : ListViewEditorBase( parent, 0, true ), listview( lv ), formwindow( fw ) +{ + connect( helpButton, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); + itemText->setEnabled( false ); + itemChoosePixmap->setEnabled( false ); + itemDeletePixmap->setEnabled( false ); + itemColumn->setEnabled( false ); + + setupColumns(); + PopulateListViewCommand::transferItems( listview, itemsPreview ); + setupItems(); + + itemsPreview->setShowSortIndicator( listview->showSortIndicator() ); + itemsPreview->setAllColumnsShowFocus( listview->allColumnsShowFocus() ); + itemsPreview->setRootIsDecorated( listview->rootIsDecorated() ); + + if ( itemsPreview->firstChild() ) { + itemsPreview->setCurrentItem( itemsPreview->firstChild() ); + itemsPreview->setSelected( itemsPreview->firstChild(), true ); + } +} + +void ListViewEditor::applyClicked() +{ + setupItems(); + PopulateListViewCommand *cmd = new PopulateListViewCommand( i18n("Edit Items and Columns of '%1'" ).arg( listview->name() ), + formwindow, listview, itemsPreview ); + cmd->execute(); + formwindow->commandHistory()->addCommand( cmd ); +} + +void ListViewEditor::okClicked() +{ + applyClicked(); + accept(); +} + + + +void ListViewEditor::columnClickable( bool b ) +{ + Column *c = findColumn( colPreview->item( colPreview->currentItem() ) ); + if ( !c ) + return; + c->clickable = b; +} + +void ListViewEditor::columnDownClicked() +{ + if ( colPreview->currentItem() == -1 || + colPreview->currentItem() > (int)colPreview->count() - 2 ) + return; + + colPreview->clearSelection(); + QListBoxItem *i = colPreview->item( colPreview->currentItem() ); + QListBoxItem *below = i->next(); + + colPreview->takeItem( i ); + colPreview->insertItem( i, below ); + + colPreview->setCurrentItem( i ); + colPreview->setSelected( i, true ); +} + +void ListViewEditor::columnPixmapChosen() +{ + Column *c = findColumn( colPreview->item( colPreview->currentItem() ) ); + if ( !c ) + return; + + QPixmap pix; + if ( colPixmap->pixmap() ) + pix = qChoosePixmap( this, formwindow, *colPixmap->pixmap() ); + else + pix = qChoosePixmap( this, formwindow, QPixmap() ); + + if ( pix.isNull() ) + return; + + c->pixmap = pix; + colPreview->blockSignals( true ); + if ( !c->pixmap.isNull() ) + colPreview->changeItem( c->pixmap, c->text, colPreview->index( c->item ) ); + else + colPreview->changeItem( c->text, colPreview->index( c->item ) ); + c->item = colPreview->item( colPreview->currentItem() ); + colPixmap->setPixmap( c->pixmap ); + colPreview->blockSignals( false ); + colDeletePixmap->setEnabled( true ); +} + +void ListViewEditor::columnPixmapDeleted() +{ + Column *c = findColumn( colPreview->item( colPreview->currentItem() ) ); + if ( !c ) + return; + + c->pixmap = QPixmap(); + colPreview->blockSignals( true ); + if ( !c->pixmap.isNull() ) + colPreview->changeItem( c->pixmap, c->text, colPreview->index( c->item ) ); + else + colPreview->changeItem( c->text, colPreview->index( c->item ) ); + c->item = colPreview->item( colPreview->currentItem() ); + colPixmap->setText( "" ); + colPreview->blockSignals( false ); + colDeletePixmap->setEnabled( false ); +} + +void ListViewEditor::columnResizable( bool b ) +{ + Column *c = findColumn( colPreview->item( colPreview->currentItem() ) ); + if ( !c ) + return; + c->resizable = b; +} + +void ListViewEditor::columnTextChanged( const QString &txt ) +{ + Column *c = findColumn( colPreview->item( colPreview->currentItem() ) ); + if ( !c ) + return; + + c->text = txt; + colPreview->blockSignals( true ); + if ( !c->pixmap.isNull() ) + colPreview->changeItem( c->pixmap, c->text, colPreview->index( c->item ) ); + else + colPreview->changeItem( c->text, colPreview->index( c->item ) ); + c->item = colPreview->item( colPreview->currentItem() ); + colPreview->blockSignals( false ); +} + +void ListViewEditor::columnUpClicked() +{ + if ( colPreview->currentItem() <= 0 ) + return; + + colPreview->clearSelection(); + QListBoxItem *i = colPreview->item( colPreview->currentItem() ); + QListBoxItem *above = i->prev(); + + colPreview->takeItem( above ); + colPreview->insertItem( above, i ); + + colPreview->setCurrentItem( i ); + colPreview->setSelected( i, true ); +} + +void ListViewEditor::currentColumnChanged( QListBoxItem *i ) +{ + Column *c = findColumn( i ); + if ( !i || !c ) { + colText->setEnabled( false ); + colPixmap->setEnabled( false ); + colDeletePixmap->setEnabled( false ); + colText->blockSignals( true ); + colText->setText( "" ); + colText->blockSignals( false ); + colClickable->setEnabled( false ); + colResizeable->setEnabled( false ); + return; + } + + colText->setEnabled( true ); + colPixmap->setEnabled( true ); + colDeletePixmap->setEnabled( i->pixmap() && !i->pixmap()->isNull() ); + colClickable->setEnabled( true ); + colResizeable->setEnabled( true ); + + colText->blockSignals( true ); + colText->setText( c->text ); + colText->blockSignals( false ); + if ( !c->pixmap.isNull() ) + colPixmap->setPixmap( c->pixmap ); + else + colPixmap->setText( "" ); + colClickable->setChecked( c->clickable ); + colResizeable->setChecked( c->resizable ); +} + +void ListViewEditor::newColumnClicked() +{ + Column col; + col.text = i18n("New Column" ); + col.pixmap = QPixmap(); + col.clickable = true; + col.resizable = true; + if ( !col.pixmap.isNull() ) + col.item = new QListBoxPixmap( colPreview, col.pixmap, col.text ); + else + col.item = new QListBoxText( colPreview, col.text ); + columns.append( col ); + colPreview->setCurrentItem( col.item ); + colPreview->setSelected( col.item, true ); +} + +void ListViewEditor::deleteColumnClicked() +{ + QListBoxItem *i = colPreview->item( colPreview->currentItem() ); + if ( !i ) + return; + + for ( QValueList<Column>::Iterator it = columns.begin(); it != columns.end(); ++it ) { + if ( ( *it ).item == i ) { + delete (*it).item; + columns.remove( it ); + break; + } + } + + if ( colPreview->currentItem() != -1 ) + colPreview->setSelected( colPreview->currentItem(), true ); +} + + + + + + +void ListViewEditor::currentItemChanged( QListViewItem *i ) +{ + if ( !i ) { + itemText->setEnabled( false ); + itemChoosePixmap->setEnabled( false ); + itemDeletePixmap->setEnabled( false ); + itemColumn->setEnabled( false ); + return; + } + + itemText->setEnabled( true ); + itemChoosePixmap->setEnabled( true ); + itemDeletePixmap->setEnabled( i->pixmap( itemColumn->value() ) && + !i->pixmap( itemColumn->value() )->isNull() ); + itemColumn->setEnabled( true ); + + displayItem( i, itemColumn->value() ); +} + +void ListViewEditor::displayItem( QListViewItem *i, int col ) +{ + itemText->blockSignals( true ); + itemText->setText( i->text( col ) ); + itemText->blockSignals( false ); + + itemPixmap->blockSignals( true ); + if ( i->pixmap( col ) ) + itemPixmap->setPixmap( *i->pixmap( col ) ); + else + itemPixmap->setText( "" ); + itemPixmap->blockSignals( false ); +} + +void ListViewEditor::itemColChanged( int col ) +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + + displayItem( i, col ); + itemDeletePixmap->setEnabled( i->pixmap( col ) && !i->pixmap( col )->isNull() ); +} + +void ListViewEditor::itemDeleteClicked() +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + + delete i; + if ( itemsPreview->firstChild() ) { + itemsPreview->setCurrentItem( itemsPreview->firstChild() ); + itemsPreview->setSelected( itemsPreview->firstChild(), true ); + } +} + +void ListViewEditor::itemDownClicked() +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + + QListViewItemIterator it( i ); + QListViewItem *parent = i->parent(); + it++; + while ( it.current() ) { + if ( it.current()->parent() == parent ) + break; + it++; + } + + if ( !it.current() ) + return; + QListViewItem *other = it.current(); + + i->moveItem( other ); +} + +void ListViewEditor::itemNewClicked() +{ + QListViewItem *item = new QListViewItem( itemsPreview ); + item->setText( 0, "Item" ); + itemsPreview->setCurrentItem( item ); + itemsPreview->setSelected( item, true ); +} + +void ListViewEditor::itemNewSubClicked() +{ + QListViewItem *parent = itemsPreview->currentItem(); + QListViewItem *item = 0; + if ( parent ) { + item = new QListViewItem( parent ); + parent->setOpen( true ); + } else { + item = new QListViewItem( itemsPreview ); + } + item->setText( 0, "Subitem" ); + itemsPreview->setCurrentItem( item ); + itemsPreview->setSelected( item, true ); +} + +void ListViewEditor::itemPixmapChoosen() +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + + QPixmap pix; + if ( itemPixmap->pixmap() ) + pix = qChoosePixmap( this, formwindow, *itemPixmap->pixmap() ); + else + pix = qChoosePixmap( this, formwindow, QPixmap() ); + + if ( pix.isNull() ) + return; + + i->setPixmap( itemColumn->value(), QPixmap( pix ) ); + itemPixmap->setPixmap( pix ); + itemDeletePixmap->setEnabled( true ); +} + +void ListViewEditor::itemPixmapDeleted() +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + + i->setPixmap( itemColumn->value(), QPixmap() ); + itemPixmap->setText( "" ); + itemDeletePixmap->setEnabled( false ); +} + +void ListViewEditor::itemTextChanged( const QString &txt ) +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + i->setText( itemColumn->value(), txt ); +} + +void ListViewEditor::itemUpClicked() +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + + QListViewItemIterator it( i ); + QListViewItem *parent = i->parent(); + --it; + while ( it.current() ) { + if ( it.current()->parent() == parent ) + break; + --it; + } + + if ( !it.current() ) + return; + QListViewItem *other = it.current(); + + other->moveItem( i ); +} + +void ListViewEditor::itemRightClicked() +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + + QListViewItemIterator it( i ); + QListViewItem *parent = i->parent(); + parent = parent ? parent->firstChild() : itemsPreview->firstChild(); + if ( !parent ) + return; + it++; + while ( it.current() ) { + if ( it.current()->parent() == parent ) + break; + it++; + } + + if ( !it.current() ) + return; + QListViewItem *other = it.current(); + + for ( int c = 0; c < itemsPreview->columns(); ++c ) { + QString s = i->text( c ); + i->setText( c, other->text( c ) ); + other->setText( c, s ); + QPixmap pix; + if ( i->pixmap( c ) ) + pix = *i->pixmap( c ); + if ( other->pixmap( c ) ) + i->setPixmap( c, *other->pixmap( c ) ); + else + i->setPixmap( c, QPixmap() ); + other->setPixmap( c, pix ); + } + + itemsPreview->setCurrentItem( other ); + itemsPreview->setSelected( other, true ); +} + +void ListViewEditor::itemLeftClicked() +{ + QListViewItem *i = itemsPreview->currentItem(); + if ( !i ) + return; + + QListViewItemIterator it( i ); + QListViewItem *parent = i->parent(); + if ( !parent ) + return; + parent = parent->parent(); + --it; + while ( it.current() ) { + if ( it.current()->parent() == parent ) + break; + --it; + } + + if ( !it.current() ) + return; + QListViewItem *other = it.current(); + + for ( int c = 0; c < itemsPreview->columns(); ++c ) { + QString s = i->text( c ); + i->setText( c, other->text( c ) ); + other->setText( c, s ); + QPixmap pix; + if ( i->pixmap( c ) ) + pix = *i->pixmap( c ); + if ( other->pixmap( c ) ) + i->setPixmap( c, *other->pixmap( c ) ); + else + i->setPixmap( c, QPixmap() ); + other->setPixmap( c, pix ); + } + + itemsPreview->setCurrentItem( other ); + itemsPreview->setSelected( other, true ); +} + +void ListViewEditor::setupColumns() +{ + QHeader *h = listview->header(); + for ( int i = 0; i < (int)h->count(); ++i ) { + Column col; + col.text = h->label( i ); + col.pixmap = QPixmap(); + if ( h->iconSet( i ) ) + col.pixmap = h->iconSet( i )->pixmap(); + col.clickable = h->isClickEnabled( i ); + col.resizable = h->isResizeEnabled( i ); + if ( !col.pixmap.isNull() ) + col.item = new QListBoxPixmap( colPreview, col.pixmap, col.text ); + else + col.item = new QListBoxText( colPreview, col.text ); + columns.append( col ); + } + + colText->setEnabled( false ); + colPixmap->setEnabled( false ); + colClickable->setEnabled( false ); + colResizeable->setEnabled( false ); + + if ( colPreview->firstItem() ) + colPreview->setCurrentItem( colPreview->firstItem() ); + numColumns = colPreview->count(); +} + +void ListViewEditor::setupItems() +{ + itemColumn->setMinValue( 0 ); + itemColumn->setMaxValue( QMAX( numColumns - 1, 0 ) ); + int i = 0; + QHeader *header = itemsPreview->header(); + for ( QListBoxItem *item = colPreview->firstItem(); item; item = item->next() ) { + Column *col = findColumn( item ); + if ( !col ) + continue; + if ( i >= itemsPreview->columns() ) + itemsPreview->addColumn( col->text ); + header->setLabel( i, col->pixmap, col->text ); + header->setResizeEnabled( col->resizable, i ); + header->setClickEnabled( col->clickable, i ); + ++i; + } + while ( itemsPreview->columns() > i ) + itemsPreview->removeColumn( i ); + + itemColumn->setValue( QMIN( numColumns - 1, itemColumn->value() ) ); +} + +ListViewEditor::Column *ListViewEditor::findColumn( QListBoxItem *i ) +{ + if ( !i ) + return 0; + + for ( QValueList<Column>::Iterator it = columns.begin(); it != columns.end(); ++it ) { + if ( ( *it ).item == i ) + return &( *it ); + } + + return 0; +} + +void ListViewEditor::initTabPage( const QString &page ) +{ + numColumns = colPreview->count(); + if ( page == i18n("&Items" ) ) { + setupItems(); + if ( numColumns == 0 ) { + itemNew->setEnabled( false ); + itemNewSub->setEnabled( false ); + itemText->setEnabled( false ); + itemChoosePixmap->setEnabled( false ); + itemDeletePixmap->setEnabled( false ); + itemColumn->setEnabled( false ); + } else { + itemNew->setEnabled( true ); + itemNewSub->setEnabled( true ); + } + } +} +#include "listvieweditorimpl.moc" diff --git a/kommander/editor/listvieweditorimpl.h b/kommander/editor/listvieweditorimpl.h new file mode 100644 index 00000000..91da67c8 --- /dev/null +++ b/kommander/editor/listvieweditorimpl.h @@ -0,0 +1,94 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef LISTVIEWEDITORIMPL_H +#define LISTVIEWEDITORIMPL_H + +#include "listvieweditor.h" + +#include <qmap.h> +#include <qpixmap.h> +#include <qvaluelist.h> + +class FormWindow; + +class ListViewEditor : public ListViewEditorBase +{ + Q_OBJECT + +public: + ListViewEditor( QWidget *parent, QListView *lv, FormWindow *fw ); + +protected slots: + void applyClicked(); + void columnClickable(bool); + void columnDownClicked(); + void columnPixmapChosen(); + void columnPixmapDeleted(); + void columnResizable(bool); + void columnTextChanged(const QString &); + void columnUpClicked(); + void currentColumnChanged(QListBoxItem*); + void currentItemChanged(QListViewItem*); + void deleteColumnClicked(); + void itemColChanged(int); + void itemDeleteClicked(); + void itemDownClicked(); + void itemNewClicked(); + void itemNewSubClicked(); + void itemPixmapChoosen(); + void itemPixmapDeleted(); + void itemTextChanged(const QString &); + void itemUpClicked(); + void itemLeftClicked(); + void itemRightClicked(); + void newColumnClicked(); + void okClicked(); + void initTabPage( const QString &page ); + +private: + struct Column + { + QListBoxItem *item; + QString text; + QPixmap pixmap; + bool clickable, resizable; +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) + bool operator==( const Column& ) const { return FALSE; } +#endif + }; + +private: + void setupColumns(); + void setupItems(); + Column *findColumn( QListBoxItem *i ); + void transferItems( QListView *from, QListView *to ); + void displayItem( QListViewItem *i, int col ); + +private: + QListView *listview; + QValueList<Column> columns; + int numColumns; + FormWindow *formwindow; + +}; + + +#endif diff --git a/kommander/editor/main.cpp b/kommander/editor/main.cpp new file mode 100644 index 00000000..7be1f31d --- /dev/null +++ b/kommander/editor/main.cpp @@ -0,0 +1,81 @@ +/*************************************************************************** + main.cpp - initialization + ------------------- + copyright : (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +// KDE includes +#include <kaboutdata.h> +#include <kapplication.h> +#include <kcmdlineargs.h> +#include <kconfig.h> +#include <kiconloader.h> +#include <klocale.h> +#include <ksplashscreen.h> + +// Other includes +#include "mainwindow.h" +#include "kommanderwidget.h" +#include "kommanderversion.h" + +static const char *description = + I18N_NOOP("Kommander is a graphical editor of scripted dialogs."); +static const char *text = + I18N_NOOP("Based on Qt Designer, (C) 2000 Trolltech AS."); + +static KCmdLineOptions options[] = +{ + { "+file", I18N_NOOP("Dialog to open"), 0 }, + { 0, 0, 0 } +}; + +int main( int argc, char *argv[] ) +{ + KAboutData aboutData( "kommander", I18N_NOOP("Kommander"), + KOMMANDER_VERSION, description, KAboutData::License_GPL, + "(C) 2002-2005 Kommander authors", text); + aboutData.addAuthor("Eric Laffoon", I18N_NOOP("Project manager"), "eric@kdewebdev.org"); + aboutData.addAuthor("Andras Mantia", I18N_NOOP("Current maintainer"), "amantia@kdewebdev.org"); + aboutData.addAuthor("Michal Rudolf", I18N_NOOP("Previous maintainer"), "mrudolf@kdewebdev.org"); + aboutData.addAuthor("Marc Britton", I18N_NOOP("Original author"), "consume@optusnet.com.au"); + aboutData.setTranslator (I18N_NOOP("_: NAME OF TRANSLATORS\nYour names"), + I18N_NOOP("_: EMAIL OF TRANSLATORS\nYour emails")); + KCmdLineArgs::init(argc, argv, &aboutData); + KCmdLineArgs::addCmdLineOptions(options); + + KommanderWidget::inEditor = true; + + KLocale::setMainCatalogue("kommander"); + KApplication a(true, true); + + KConfig *config = kapp->config(); + config->setGroup("General"); + bool splashScreen = config->readBoolEntry("SplashScreen", true); + KSplashScreen* splash = 0; + if (splashScreen) { + splash = new KSplashScreen(UserIcon("kommandersplash")); + splash->show(); + } + + MainWindow *mw = new MainWindow(false); + a.setMainWidget(mw); + mw->setCaption(i18n("Kommander Dialog Editor")); + mw->show(); + + if (splashScreen) { + splash->finish(mw); + delete splash; + } + + return a.exec(); +} + diff --git a/kommander/editor/mainwindow.cpp b/kommander/editor/mainwindow.cpp new file mode 100644 index 00000000..a90a3b07 --- /dev/null +++ b/kommander/editor/mainwindow.cpp @@ -0,0 +1,1903 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + (C) 2008 Andras Mantia <amantia@kde.org> + +**********************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <sys/stat.h> + +#include "actiondnd.h" +#include "actioneditorimpl.h" +#include "assoctexteditorimpl.h" +#include "defs.h" +#include "dialog.h" +#include "formfile.h" +#include "formwindow.h" +#include "globaldefs.h" +#include "hierarchyview.h" +#include "kommanderfactory.h" +#include "mainwindow.h" +#include "messagelog.h" +#include "metadatabase.h" +#include "multilineeditorimpl.h" +#include "newformimpl.h" +#include "pixmapchooser.h" +#include "propertyeditor.h" +#include "resource.h" +#include "specialinformation.h" +#include "widgetdatabase.h" +#include "widgetfactory.h" +#include "wizardeditorimpl.h" +#include "workspace.h" + +#include <qaccel.h> +#include <qbuffer.h> +#include <qclipboard.h> +#include <qdir.h> +#include <qfeatures.h> +#include <qfile.h> +#include <qlabel.h> +#include <qmetaobject.h> +#include <qpixmap.h> +#include <qregexp.h> +#include <qstylefactory.h> +#include <qstyle.h> +#include <qtimer.h> +#include <qtooltip.h> +#include <qvbox.h> +#include <qwhatsthis.h> +#include <qwidget.h> +#include <qwizard.h> +#include <qworkspace.h> + + +#include "qcompletionedit.h" +#include "assistproc.h" + +#include <kdebug.h> +#include <kaction.h> +#include <kapplication.h> +#include <kcmdlineargs.h> +#include <kconfig.h> +#include <kinputdialog.h> +#include <klocale.h> +#include <kmenubar.h> +#include <kmessagebox.h> +#include <kommanderversion.h> +#include <kommanderwidget.h> +#include <kprocess.h> +#include <kstatusbar.h> +#include <ktoolbar.h> +#include <kurl.h> +#include <kparts/partmanager.h> +#include <kio/netaccess.h> + +extern QMap<QWidget*, QString> *qwf_functions; +extern QMap<QWidget*, QString> *qwf_forms; +extern QString *qwf_language; +extern bool qwf_execute_code; +extern bool qwf_stays_on_top; +extern void set_splash_status(const QString &txt); +/*### static bool tbSettingsRead = false; */ + +MainWindow *MainWindow::self = 0; + +QString assistantPath() +{ + return "assistant"; +} + + +static QString textNoAccel(const QString& text) +{ + QString t = text; + int i; + while ((i = t.find('&'))>= 0) { + t.remove(i,1); + } + return t; +} + + +MainWindow::MainWindow(bool asClient) + : KParts::DockMainWindow(0, "mainwindow", WType_TopLevel | WDestructiveClose | WGroupLeader), + grd(10, 10), sGrid(true), snGrid(true), restoreConfig(true), splashScreen(true), + docPath("$QTDIR/doc/html"), client(asClient), databaseAutoEdit(false), previewing(false) +{ + m_partManager = new KParts::PartManager(this); + //connect(m_partManager, SIGNAL(activePartChanged(KParts::Part * )), this, SLOT(slotActivePartChanged(KParts::Part * ))); + + init_colors(); + inDebugMode = true; //debugging kommander + + setupPlugins(); + + kapp->setMainWidget(this); + self = this; + + prefDia = 0; + windowMenu = 0; + hierarchyView = 0; + actionEditor = 0; + wspace = 0; + + statusBar()->clear(); + statusBar()->addWidget(new QLabel(i18n("Welcome to the Kommander Editor"), statusBar()), 1); + + setupMDI(); + setupFileActions(); + setupEditActions(); + layoutToolBar = new KToolBar(this, "Layout"); + ((KToolBar *) layoutToolBar)->setFullSize(false); + addToolBar(layoutToolBar, i18n("Layout")); + setupToolActions(); + setupLayoutActions(); + setupWorkspace(); + setupHierarchyView(); + setupPropertyEditor(); + setupActionEditor(); + setupMessageLog(); + setupRunActions(); + setupWindowActions(); + setupSettingsActions(); + setupHelpActions(); + setupRMBMenus(); + + emit hasActiveForm(false); + emit hasActiveWindow(false); + + lastPressWidget = 0; + kapp->installEventFilter(this); + + QSize as(kapp->desktop()->size()); + as -= QSize(30, 30); + resize(QSize(1200, 1000).boundedTo(as)); + + connect(kapp->clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardChanged())); + clipboardChanged(); + layoutChilds = false; + layoutSelected = false; + breakLayout = false; + backPix = true; + + readConfig(); + + // hack to make WidgetFactory happy (so it knows QWidget and QDialog for resetting properties) + QWidget *w = WidgetFactory::create(WidgetDatabase::idFromClassName("QWidget"), this, 0, false); + delete w; + w = WidgetFactory::create(WidgetDatabase::idFromClassName("Dialog"), this, 0, false); + + delete w; + w = WidgetFactory::create(WidgetDatabase::idFromClassName("QLabel"), this, 0, false); + delete w; + w = WidgetFactory::create(WidgetDatabase::idFromClassName("QTabWidget"), this, 0, false); + delete w; + w = WidgetFactory::create(WidgetDatabase::idFromClassName("QFrame"), this, 0, false); + delete w; + + assistant = new AssistProc(this, "Internal Assistant", assistantPath()); + statusBar()->setSizeGripEnabled(true); + SpecialInformation::registerSpecials(); + + backupTimer = new QTimer(this); + connect(backupTimer, SIGNAL(timeout()), this, SLOT(slotCreateBackups())); + backupTimer->start(1000*60*5); //fire it every five minutes + //createGUI(0); + +} + +MainWindow::~MainWindow() +{ + MetaDataBase::clearDataBase(); +} + +void MainWindow::setupMDI() +{ + KDockWidget* toolDock = createDockWidget("Workspace", QPixmap(), 0L, "main_workspace"); + QVBox *vbox = new QVBox(toolDock); + vbox->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); + vbox->setMargin(1); + vbox->setLineWidth(1); + + toolDock->setWidget(vbox); + toolDock->setDockSite(KDockWidget::DockCorner); + toolDock->setEnableDocking(KDockWidget::DockNone); + setView(toolDock); + setMainDockWidget(toolDock); + + qworkspace = new QWorkspace(vbox); + qworkspace->setBackgroundMode(PaletteDark); + qworkspace->setBackgroundPixmap(PixmapChooser::loadPixmap("background.png", + PixmapChooser::NoSize)); + qworkspace->setPaletteBackgroundColor(QColor(238, 238, 238)); + qworkspace->setScrollBarsEnabled(true); + connect(qworkspace, SIGNAL(windowActivated(QWidget *)), + this, SLOT(activeWindowChanged(QWidget *))); + lastActiveFormWindow = 0; + qworkspace->setAcceptDrops(true); +} + +void MainWindow::setupPropertyEditor() +{ + KDockWidget *dw = createDockWidget("Property Editor", QPixmap(), 0, i18n("Properties")); + propertyEditor = new PropertyEditor(dw); + //addToolBar(dw, Qt::DockLeft); + dw->setWidget(propertyEditor); + dw->manualDock(getMainDockWidget(), KDockWidget::DockLeft, 20); + dw->setCaption(i18n("Property Editor")); + QWhatsThis::add(propertyEditor, + i18n("<h2>The Property Editor</h2>" + "<p>You can change the appearance and behavior of the selected widget in the " + "property editor.</p>" + "<p>You can set properties for components and forms at design time and see the " + "immediately see the effects of the changes. " + "Each property has its own editor which (depending on the property) can be used " + "to enter " + "new values, open a special dialog, or to select values from a predefined list. " + "Click <b>F1</b> to get detailed help for the selected property.</p>" + "<p>You can resize the columns of the editor by dragging the separators in the " + "list's header.</p>" + "<p><b>Signal Handlers</b></p>" + "<p>In the Signal Handlers tab you can define connections between " + "the signals emitted by widgets and the slots in the form. " + "(These connections can also be made using the connection tool.)")); + +} + + +void MainWindow::setupHierarchyView() +{ + if (hierarchyView) + return; + KDockWidget *dw = createDockWidget("Object Explorer", QPixmap(), 0, i18n("Widgets")); + hierarchyView = new HierarchyView(dw); + dw->setWidget(hierarchyView); + dw->setCaption(i18n("Object Explorer")); + QWhatsThis::add(hierarchyView, + i18n("<h2>The Object Explorer</h2>" + "<p>The Object Explorer provides an overview of the relationships " + "between the widgets in a form. You can use the clipboard functions using " + "a context menu for each item in the view. It is also useful for selecting widgets " + "in forms that have complex layouts.</p>" + "<p>The columns can be resized by dragging the separator in the list's header.</p>" + "<p>The second tab shows all the form's slots, class variables, includes, etc.</p>")); +} + +void MainWindow::setupWorkspace() +{ + KDockWidget *dw = createDockWidget("Dialogs", QPixmap(), 0, i18n("Dialogs")); + QVBox *vbox = new QVBox(dw); + QCompletionEdit *edit = new QCompletionEdit(vbox); + QToolTip::add(edit, i18n("Start typing the buffer you want to switch to here (ALT+B)")); + QAccel *a = new QAccel(this); + a->connectItem(a->insertItem(ALT + Key_B), edit, SLOT(setFocus())); + wspace = new Workspace(vbox, this); + wspace->setBufferEdit(edit); + dw->setWidget(vbox); + dw->setCaption(i18n("Dialogs")); + QWhatsThis::add(wspace, i18n("<h2>The File Overview Window</h2>" + "<p>The File Overview Window displays all open dialogs.</p>")); + +} + +void MainWindow::setupActionEditor() +{ + KDockWidget *dw = createDockWidget("Action Editor", QPixmap(), 0, i18n("Actions")); + actionEditor = new ActionEditor(dw, "ActionEditor"); + //addToolBar(dw, Qt::DockLeft); + dw->setWidget(actionEditor); + dw->setCaption(i18n("Action Editor")); + QWhatsThis::add(actionEditor, i18n("<b>The Action Editor</b>" + "<p>The Action Editor is used to add actions and action groups to " + "a form, and to connect actions to slots. Actions and action " + "groups can be dragged into menus and into toolbars, and may " + "feature keyboard shortcuts and tooltips. If actions have pixmaps " + "these are displayed on toolbar buttons and beside their names in " "menus.</p>")); +} + +void MainWindow::setupMessageLog() +{ + KDockWidget *dw = createDockWidget("Message Log", QPixmap(), 0, i18n("Message Log")); + messageLog = new MessageLog(dw, "MessageLog"); + dw->setWidget(messageLog); + dw->setCaption(i18n("Message Log")); + dw->manualDock(getMainDockWidget(), KDockWidget::DockBottom, 20); +} + +void MainWindow::setupRMBMenus() +{ + rmbWidgets = new QPopupMenu(this); + actionEditCut->plug(rmbWidgets); + actionEditCopy->plug(rmbWidgets); + actionEditPaste->plug(rmbWidgets); + actionEditDelete->plug(rmbWidgets); + + rmbWidgets->insertSeparator(); + actionEditAdjustSize->plug(rmbWidgets); + actionEditHLayout->plug(rmbWidgets); + actionEditVLayout->plug(rmbWidgets); + actionEditGridLayout->plug(rmbWidgets); + actionEditSplitHorizontal->plug(rmbWidgets); + actionEditSplitVertical->plug(rmbWidgets); + actionEditBreakLayout->plug(rmbWidgets); + rmbWidgets->insertSeparator(); + actionEditConnections->plug(rmbWidgets); + rmbFormWindow = new QPopupMenu(this); + actionEditPaste->plug(rmbFormWindow); + actionEditSelectAll->plug(rmbFormWindow); + actionEditAccels->plug(rmbFormWindow); + rmbFormWindow->insertSeparator(); + actionEditAdjustSize->plug(rmbFormWindow); + actionEditHLayout->plug(rmbFormWindow); + actionEditVLayout->plug(rmbFormWindow); + actionEditGridLayout->plug(rmbFormWindow); + actionEditBreakLayout->plug(rmbFormWindow); + rmbFormWindow->insertSeparator(); + actionEditConnections->plug(rmbFormWindow); + rmbFormWindow->insertSeparator(); + actionEditFormSettings->plug(rmbFormWindow); +} + +void MainWindow::toolSelected() +{ + if (!(sender())->inherits("KAction")) + return; + actionCurrentTool = (KAction*)sender(); + emit currentToolChanged(); + if (formWindow()) + formWindow()->commandHistory()->emitUndoRedo(); +} + +int MainWindow::currentTool() const +{ + if (!actionCurrentTool) + return POINTER_TOOL; + return QString::fromLatin1(actionCurrentTool->name()).toInt(); +} + +void MainWindow::slotCreateBackups() +{ +//create a backup of the opened forms + QWidgetList windows = qworkspace->windowList(QWorkspace::StackingOrder); + for (int i = 0; i < (int)windows.count(); ++i) + { + FormWindow* form = dynamic_cast<FormWindow*>(windows.at(i)); + if (!form || !form->formFile()) + continue; + QString fileName = form->formFile()->fileName(); + QString backupName = fileName + ".backup"; + bool modified = form->formFile()->isModified(); + if (form->formFile()->hasTempFileName()) + continue; //no need to create a backup + if (!modified) + continue; + + form->formFile()->setFileName(backupName); + form->formFile()->setModified(true); + if (!form->formFile()->save(false)) + { + KMessageBox::error(this, i18n("<qt>Cannot create backup file <i>%1</i>.</qt>").arg(backupName)); + } + form->formFile()->setFileName(fileName); + form->formFile()->setModified(modified); + } +} + +void MainWindow::runForm() +{ + if (previewing) + { + KMessageBox::information(this, i18n("There is a dialog already running."), i18n("Run")); + return; + } + FormWindow* form = activeForm(); + if (!form || !form->formFile()) + return; + + QObjectList *editors = queryList("AssocTextEditor"); + QObjectListIt it(*editors); + QObject *editor; + + while ((editor = it.current()) != 0L) + { + ++it; + static_cast<AssocTextEditor*>(editor)->save(); + } + delete editors; + + if (form->formFile()->hasTempFileName()) + { + if (!form->formFile()->saveAs()) + return; + } + + m_fileName = form->formFile()->fileName(); + m_backupName = m_fileName + ".running"; + m_modified = form->formFile()->isModified(); + + bool readOnlyFile = !QFileInfo(m_fileName).isWritable(); + struct stat statbuf; + ::stat(m_fileName.local8Bit(), &statbuf); + if (!readOnlyFile && !KIO::NetAccess::file_copy(KURL::fromPathOrURL(m_fileName), KURL::fromPathOrURL(m_backupName), statbuf.st_mode, true)) + { + KMessageBox::error(this, i18n("<qt>Cannot create temporary file <i>%1</i>.</qt>").arg(m_backupName)); + return; + } + form->formFile()->setFileName(m_fileName); + if (!readOnlyFile || m_modified) + form->formFile()->setModified(true); + if (form->formFile()->save(false)) + { + if (!readOnlyFile && !KIO::NetAccess::file_copy(KURL::fromPathOrURL(m_fileName), KURL::fromPathOrURL(m_fileName + ".backup"), statbuf.st_mode, true)) + { + KMessageBox::error(this, i18n("<qt>Cannot create backup file <i>%1</i>.</qt>").arg(m_fileName + ".backup")); + } + ::chmod(m_fileName.local8Bit(), S_IRWXU); + KProcess* process = new KProcess; + process->setUseShell(true); + (*process) << "kmdr-executor" << QString("\"%1\"").arg(form->formFile()->fileName()); + connect(process, SIGNAL(receivedStdout(KProcess*, char*, int)), messageLog, + SLOT(receivedStdout(KProcess*, char*, int))); + connect(process, SIGNAL(receivedStderr(KProcess*, char*, int)), messageLog, + SLOT(receivedStderr(KProcess*, char*, int))); + connect(process, SIGNAL(processExited(KProcess*)), SLOT(closeRunningForm(KProcess*))); + messageLog->clear(MessageLog::All); + previewing = process->start(KProcess::NotifyOnExit, KProcess::AllOutput); + } +} + + +void MainWindow::runForm4() +{ + if (previewing) + { + KMessageBox::information(this, i18n("There is a dialog already running."), i18n("Run")); + return; + } + FormWindow* form = activeForm(); + if (!form || !form->formFile()) + return; + + QObjectList *editors = queryList("AssocTextEditor"); + QObjectListIt it(*editors); + QObject *editor; + + while ((editor = it.current()) != 0L) + { + ++it; + static_cast<AssocTextEditor*>(editor)->save(); + } + delete editors; + + if (form->formFile()->hasTempFileName()) + { + if (!form->formFile()->saveAs()) + return; + } + + m_fileName = form->formFile()->fileName(); + m_backupName = m_fileName + ".running"; + m_modified = form->formFile()->isModified(); + + bool readOnlyFile = !QFileInfo(m_fileName).isWritable(); + struct stat statbuf; + ::stat(m_fileName.local8Bit(), &statbuf); + if (!readOnlyFile && !KIO::NetAccess::file_copy(KURL::fromPathOrURL(m_fileName), KURL::fromPathOrURL(m_backupName), statbuf.st_mode, true)) + { + KMessageBox::error(this, i18n("<qt>Cannot create temporary file <i>%1</i>.</qt>").arg(m_backupName)); + return; + } + form->formFile()->setFileName(m_fileName); + if (!readOnlyFile || m_modified) + form->formFile()->setModified(true); + if (form->formFile()->save(false)) + { + if (!readOnlyFile && !KIO::NetAccess::file_copy(KURL::fromPathOrURL(m_fileName), KURL::fromPathOrURL(m_fileName + ".backup"), statbuf.st_mode, true)) + { + KMessageBox::error(this, i18n("<qt>Cannot create backup file <i>%1</i>.</qt>").arg(m_fileName + ".backup")); + } + ::chmod(m_fileName.local8Bit(), S_IRWXU); + KProcess* process = new KProcess; + process->setUseShell(true); + (*process) << "kommander" << QString("\"%1\"").arg(form->formFile()->fileName()); + connect(process, SIGNAL(receivedStdout(KProcess*, char*, int)), messageLog, + SLOT(receivedStdout(KProcess*, char*, int))); + connect(process, SIGNAL(receivedStderr(KProcess*, char*, int)), messageLog, + SLOT(receivedStderr(KProcess*, char*, int))); + connect(process, SIGNAL(processExited(KProcess*)), SLOT(closeRunningForm(KProcess*))); + messageLog->clear(MessageLog::All); + previewing = process->start(KProcess::NotifyOnExit, KProcess::AllOutput); + } +} + + +void MainWindow::closeRunningForm(KProcess* process) +{ + previewing = false; + delete process; + + if (QFileInfo(m_backupName).exists()) + { + struct stat statbuf; + ::stat(m_fileName.local8Bit(), &statbuf); + FormWindow* form = activeForm(); + KIO::NetAccess::file_move(KURL::fromPathOrURL(m_backupName), KURL::fromPathOrURL(m_fileName), statbuf.st_mode, true); + form->formFile()->setModified(m_modified); + } +} + +void MainWindow::showProperties(QObject *o) +{ + if (!o->isWidgetType()) { + propertyEditor->setWidget(o, lastActiveFormWindow); + if (lastActiveFormWindow) + hierarchyView->setFormWindow(lastActiveFormWindow, lastActiveFormWindow->mainContainer()); + else + hierarchyView->setFormWindow(0, 0); + return; + } + QWidget *w = (QWidget*)o; + setupHierarchyView(); + FormWindow *fw = (FormWindow*)isAFormWindowChild(w); + if (fw) { + propertyEditor->setWidget(w, fw); + hierarchyView->setFormWindow(fw, w); + } else { + propertyEditor->setWidget(0, 0); + hierarchyView->setFormWindow(0, 0); + } + + if (currentTool() == POINTER_TOOL && fw && + (!qworkspace->activeWindow() || !qworkspace->activeWindow()->inherits("SourceEditor"))) + fw->setFocus(); +} + +void MainWindow::resetTool() +{ + actionPointerTool->setChecked(true); + actionCurrentTool = actionPointerTool; + emit currentToolChanged(); +} + +void MainWindow::updateProperties(QObject *) +{ + if (propertyEditor) + propertyEditor->refetchData(); +} + +bool MainWindow::eventFilter(QObject *o, QEvent *e) +{ + if (!o || !e || !o->isWidgetType()) + return QMainWindow::eventFilter(o, e); + + QWidget *w = 0; + bool passiveInteractor = WidgetFactory::isPassiveInteractor(o); + switch (e->type()) { + case QEvent::AccelOverride: + if (((QKeyEvent*)e)->key() == Key_F1 && + (((QKeyEvent*)e)->state() & ShiftButton) != ShiftButton) { + w = (QWidget*)o; + while (w) { + if (w->inherits("PropertyList")) + break; + w = w->parentWidget(true); + } + if (w) { + propertyEditor->propertyList()->showCurrentWhatsThis(); + ((QKeyEvent*)e)->accept(); + return true; + } + } + break; + case QEvent::Accel: + if ((((QKeyEvent*)e)->key() == Key_A || + ((QKeyEvent*)e)->key() == Key_E) && + ((QKeyEvent*)e)->state() & ControlButton) { + if (qWorkspace()->activeWindow() && + qWorkspace()->activeWindow()->inherits("SourceEditor")) { + ((QKeyEvent*)e)->ignore(); + return true; + } + } + break; + case QEvent::MouseButtonPress: + if (((QMouseEvent*)e)->button() == MidButton && dynamic_cast<KommanderWidget *>(o)) + { + AssocTextEditor *editor = new AssocTextEditor((QWidget*)o, formWindow(), propertyEditor, m_partManager, + this, "AssocTextEditor", false); //deletes itself! + editor->show(); + ((QKeyEvent*)e)->accept(); + return true; + } + case QEvent::ContextMenu: + if (o->inherits("QDesignerPopupMenu")) + break; + if (o && currentTool() == POINTER_TOOL && (o->inherits("QDesignerMenuBar") || + o->inherits("QDesignerToolBar") || + (o->inherits("QComboBox") || o->inherits("QToolButton") || o->inherits("QDesignerToolBarSeparator")) && + o->parent() && o->parent()->inherits("QDesignerToolBar"))) { + QWidget *w = (QWidget*)o; + if (w->inherits("QToolButton") || w->inherits("QComboBox") || w->inherits("QDesignerToolBarSeparator")) + w = w->parentWidget(); + QWidget *pw = w->parentWidget(); + while (pw) { + if (pw->inherits("FormWindow")) { + ((FormWindow*)pw)->emitShowProperties(w); + if (!o->inherits("QDesignerToolBar")) + return !o->inherits("QToolButton") && !o->inherits("QMenuBar") && + !o->inherits("QComboBox") && !o->inherits("QDesignerToolBarSeparator"); + } + pw = pw->parentWidget(); + } + } + if (o && (o->inherits("QDesignerToolBar") || o->inherits("QDockWindowHandle")) + && e->type() == QEvent::ContextMenu) + break; + if (isAToolBarChild(o) && currentTool() != CONNECT_TOOL) + break; + if (o && o->inherits("QSizeGrip")) + break; + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) + break; + if (!w->hasFocus()) + w->setFocus(); + if (!passiveInteractor || currentTool() != ORDER_TOOL) { + if(e->type() == QEvent::ContextMenu) { + ((FormWindow*)w)->handleContextMenu((QContextMenuEvent*)e, + ((FormWindow*)w)->designerWidget(o)); + return true; + } else { + ((FormWindow*)w)->handleMousePress((QMouseEvent*)e, + ((FormWindow*)w)->designerWidget(o)); + } + } + lastPressWidget = (QWidget*)o; + if (passiveInteractor) + QTimer::singleShot(0, formWindow(), SLOT(visibilityChanged())); + if (currentTool() == CONNECT_TOOL) + return true; + return !passiveInteractor; + case QEvent::MouseButtonRelease: + lastPressWidget = 0; + if (isAToolBarChild(o) && currentTool() != CONNECT_TOOL) + break; + if (o && o->inherits("QSizeGrip")) + break; + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) + break; + if (!passiveInteractor) + ((FormWindow*)w)->handleMouseRelease((QMouseEvent*)e, ((FormWindow*)w)->designerWidget(o)); + if (passiveInteractor) { + selectionChanged(); + QTimer::singleShot(0, formWindow(), SLOT(visibilityChanged())); + } + return !passiveInteractor; + case QEvent::MouseMove: + if (isAToolBarChild(o) && currentTool() != CONNECT_TOOL) + break; + w = isAFormWindowChild(o); + if (lastPressWidget != (QWidget*)o && w && + !o->inherits("SizeHandle") && !o->inherits("OrderIndicator") && + !o->inherits("QPopupMenu") && !o->inherits("QMenuBar") && + !o->inherits("QSizeGrip")) + return true; + if (o && o->inherits("QSizeGrip")) + break; + if (lastPressWidget != (QWidget*)o || + (!w || o->inherits("SizeHandle") || o->inherits("OrderIndicator"))) + break; + if (!passiveInteractor) + ((FormWindow*)w)->handleMouseMove((QMouseEvent*)e, ((FormWindow*)w)->designerWidget(o)); + return !passiveInteractor; + case QEvent::KeyPress: + if (((QKeyEvent*)e)->key() == Key_Escape && currentTool() != POINTER_TOOL) { + resetTool(); + return false; + } + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) + break; + ((FormWindow*)w)->handleKeyPress((QKeyEvent*)e, ((FormWindow*)w)->designerWidget(o)); + if (((QKeyEvent*)e)->isAccepted()) + return true; + break; + case QEvent::MouseButtonDblClick: + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) { + if (o && o->inherits("QToolButton") && ((QToolButton*)o)->isOn() && + o->parent() && o->parent()->inherits("QToolBar") && formWindow()) + formWindow()->setToolFixed(); + break; + } + if (currentTool() == ORDER_TOOL) { + ((FormWindow*)w)->handleMouseDblClick((QMouseEvent*)e, ((FormWindow*)w)->designerWidget(o)); + return true; + } + if (!WidgetFactory::isPassiveInteractor(o)) + return openEditor(((FormWindow*)w)->designerWidget(o), (FormWindow*)w); + return true; + case QEvent::KeyRelease: + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) + break; + ((FormWindow*)w)->handleKeyRelease((QKeyEvent*)e, ((FormWindow*)w)->designerWidget(o)); + if (((QKeyEvent*)e)->isAccepted()) + return true; + break; + case QEvent::Hide: + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) + break; + if (((FormWindow*)w)->isWidgetSelected((QWidget*)o)) + ((FormWindow*)w)->selectWidget((QWidget*)o, false); + break; + case QEvent::Enter: + case QEvent::Leave: + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator") || o->inherits("QDesignerMenuBar")) + break; + return true; + case QEvent::Resize: + case QEvent::Move: + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) + break; + if (WidgetFactory::layoutType((QWidget*)o->parent()) != WidgetFactory::NoLayout) { + ((FormWindow*)w)->updateSelection((QWidget*)o); + if (e->type() != QEvent::Resize) + ((FormWindow*)w)->updateChildSelections((QWidget*)o); + } + break; + case QEvent::Close: + break; + case QEvent::DragEnter: + if (o == qWorkspace() || o == workspace() || o == workspace()->viewport()) { + workspace()->contentsDragEnterEvent((QDragEnterEvent*)e); + return true; + } + break; + case QEvent::DragMove: + if (o == qWorkspace() || o == workspace() || o == workspace()->viewport()) { + workspace()->contentsDragMoveEvent((QDragMoveEvent*)e); + return true; + } + break; + case QEvent::Drop: + if (o == qWorkspace() || o == workspace() || o == workspace()->viewport()) { + workspace()->contentsDropEvent((QDropEvent*)e); + return true; + } + break; + case QEvent::Show: + if (o != this) + break; + if (((QShowEvent*)e)->spontaneous()) + break; + QApplication::sendPostedEvents(qworkspace, QEvent::ChildInserted); + showEvent((QShowEvent*)e); + checkTempFiles(); + return true; + case QEvent::Wheel: + if (!(w = isAFormWindowChild(o)) || o->inherits("SizeHandle") || o->inherits("OrderIndicator")) + break; + return true; + case QEvent::FocusIn: + if (!o->inherits("FormWindow") && isAFormWindowChild(o)) + return true; + break; + case QEvent::FocusOut: + if (!o->inherits("FormWindow") && isAFormWindowChild(o)) + return true; + break; + default: + return QMainWindow::eventFilter(o, e); + } + + return QMainWindow::eventFilter(o, e); +} + +QWidget *MainWindow::isAFormWindowChild(QObject *o) const +{ + if (o->parent() && o->parent()->inherits("QWizard") && !o->inherits("QPushButton")) + return 0; + while (o) { + if (o->inherits("FormWindow")) + return (QWidget*)o; + o = o->parent(); + } + return 0; +} + +QWidget *MainWindow::isAToolBarChild(QObject *o) const +{ + while (o) { + if (o->inherits("QDesignerToolBar")) + return (QWidget*)o; + if (o->inherits("FormWindow")) + return 0; + o = o->parent(); + } + return 0; +} + +FormWindow *MainWindow::formWindow() +{ + if (qworkspace->activeWindow()) { + FormWindow *fw = 0; + if (qworkspace->activeWindow()->inherits("FormWindow")) + fw = (FormWindow*)qworkspace->activeWindow(); + else if (lastActiveFormWindow && + qworkspace->windowList().find(lastActiveFormWindow) != -1) + fw = lastActiveFormWindow; + return fw; + } + return 0; +} + +void MainWindow::insertFormWindow(FormWindow *fw) +{ + if (fw) + QWhatsThis::add(fw, i18n("<b>The Form Window</b>" + "<p>Use the various tools to add widgets or to change the layout " + "and behavior of the components in the form. Select one or multiple " + "widgets to move them or lay them out. If a single widget is chosen it can " + "be resized using the resize handles.</p>" + "<p>Changes in the <b>Property Editor</b> are visible at design time, " + "and you can preview the form in different styles.</p>" + "<p>You can change the grid resolution, or turn the grid off in the " + "<b>Preferences</b> dialog from the <b>Edit</b> menu." + "<p>You can have several forms open, and all open forms are listed " + "in the <b>Form List</b>.")); + + connect(fw, SIGNAL(showProperties(QObject *)), + this, SLOT(showProperties(QObject *))); + connect(fw, SIGNAL(updateProperties(QObject *)), + this, SLOT(updateProperties(QObject *))); + connect(this, SIGNAL(currentToolChanged()), + fw, SLOT(currentToolChanged())); + connect(fw, SIGNAL(selectionChanged()), + this, SLOT(selectionChanged())); + connect(fw, SIGNAL(undoRedoChanged(bool, bool, const QString &, const QString &)), + this, SLOT(updateUndoRedo(bool, bool, const QString &, const QString &))); + + fw->show(); + fw->currentToolChanged(); + if (fw->caption().isEmpty() && qstrlen(fw->name()) ) + fw->setCaption(fw->name()); + fw->mainContainer()->setCaption(fw->caption()); + WidgetFactory::saveDefaultProperties(fw->mainContainer(), + WidgetDatabase:: + idFromClassName(WidgetFactory::classNameOf(fw->mainContainer()))); + activeWindowChanged(fw); + emit formWindowsChanged(); +} + + + +bool MainWindow::unregisterClient(FormWindow *w) +{ + propertyEditor->closed(w); + objectHierarchy()->closed(w); + if (w == lastActiveFormWindow) + lastActiveFormWindow = 0; + + if (actionEditor->form() == w) + actionEditor->setFormWindow(0); + + return true; +} + +void MainWindow::activeWindowChanged(QWidget *w) +{ + QWidget *old = formWindow(); + if (w && w->inherits("FormWindow")) + { + FormWindow *fw = (FormWindow *) w; + lastActiveFormWindow = fw; + lastActiveFormWindow->updateUndoInfo(); + emit hasActiveForm(true); + if (formWindow()) + { + formWindow()->emitShowProperties(); + emit formModified(formWindow()->commandHistory()->isModified()); + if (currentTool() != POINTER_TOOL) + formWindow()->clearSelection(); + } + workspace()->activeFormChanged(fw); + actionEditor->setFormWindow(lastActiveFormWindow); + emit formWindowChanged(); + + } else if (w == propertyEditor) + { + propertyEditor->resetFocus(); + } else if (!lastActiveFormWindow) + { + emit formWindowChanged(); + emit hasActiveForm(false); + actionEditUndo->setEnabled(false); + actionEditRedo->setEnabled(false); + } + + if (!w) + { + emit formWindowChanged(); + emit hasActiveForm(false); + propertyEditor->clear(); + hierarchyView->clear(); + updateUndoRedo(false, false, QString::null, QString::null); + } + + selectionChanged(); + + if (currentTool() == ORDER_TOOL && w != old) + emit currentToolChanged(); + + emit hasActiveWindow(!!qworkspace->activeWindow()); +} + + +void MainWindow::updateUndoRedo(bool undoAvailable, bool redoAvailable, + const QString &undoCmd, const QString &redoCmd) +{ + actionEditUndo->setEnabled(undoAvailable); + actionEditRedo->setEnabled(redoAvailable); + if (!undoCmd.isEmpty()) + actionEditUndo->setText(i18n("&Undo: %1").arg(undoCmd)); + else + actionEditUndo->setText(i18n("&Undo: Not Available")); + if (!redoCmd.isEmpty()) + actionEditRedo->setText(i18n("&Redo: %1").arg(redoCmd)); + else + actionEditRedo->setText(i18n("&Redo: Not Available")); + + actionEditUndo->setToolTip(textNoAccel(actionEditUndo->text())); + actionEditRedo->setToolTip(textNoAccel(actionEditRedo->text())); + + if (currentTool() == ORDER_TOOL) { + actionEditUndo->setEnabled(false); + actionEditRedo->setEnabled(false); + } +} + +QWorkspace *MainWindow::qWorkspace() const +{ + return qworkspace; +} + +void MainWindow::popupFormWindowMenu(const QPoint & gp, FormWindow *fw) +{ + QValueList<int> ids; + QMap<QString, int> commands; + + setupRMBSpecialCommands(ids, commands, fw); + setupRMBProperties(ids, commands, fw); + + kapp->processEvents(); + int r = rmbFormWindow->exec(gp); + + handleRMBProperties(r, commands, fw); + handleRMBSpecialCommands(r, commands, fw); + + for (QValueList<int>::Iterator i = ids.begin(); i != ids.end(); ++i) + rmbFormWindow->removeItem(*i); +} + +void MainWindow::popupWidgetMenu(const QPoint &gp, FormWindow * /*fw*/, QWidget * w) +{ + QValueList<int> ids; + QMap<QString, int> commands; + + setupRMBSpecialCommands(ids, commands, w); + setupRMBProperties(ids, commands, w); + + kapp->processEvents(); + int r = rmbWidgets->exec(gp); + + handleRMBProperties(r, commands, w); + handleRMBSpecialCommands(r, commands, w); + + for (QValueList<int>::Iterator i = ids.begin(); i != ids.end(); ++i) + rmbWidgets->removeItem(*i); +} + +void MainWindow::setupRMBProperties(QValueList<int> &ids, QMap<QString, int> &props, QWidget *w) +{ + const QMetaProperty* text = w->metaObject()->property(w->metaObject()->findProperty("text", true), true); + if (text && qstrcmp(text->type(), "QString") != 0) + text = 0; + const QMetaProperty* title = w->metaObject()->property(w->metaObject()->findProperty("title", true), true); + if (title && qstrcmp(title->type(), "QString") != 0) + title = 0; + const QMetaProperty* pagetitle = + w->metaObject()->property(w->metaObject()->findProperty("pageTitle", true), true); + if (pagetitle && qstrcmp(pagetitle->type(), "QString") != 0) + pagetitle = 0; + const QMetaProperty* pixmap = + w->metaObject()->property(w->metaObject()->findProperty("pixmap", true), true); + if (pixmap && qstrcmp(pixmap->type(), "QPixmap") != 0) + pixmap = 0; + + if (text && text->designable(w) || + title && title->designable(w) || + pagetitle && pagetitle->designable(w) || + pixmap && pixmap->designable(w)) { + int id = 0; + if (ids.isEmpty()) + ids << rmbWidgets->insertSeparator(0); + if (pixmap && pixmap->designable(w)) { + ids << (id = rmbWidgets->insertItem(i18n("Choose Pixmap..."), -1, 0)); + props.insert("pixmap", id); + } + if (text && text->designable(w) && !w->inherits("QTextEdit")) { + ids << (id = rmbWidgets->insertItem(i18n("Edit Text..."), -1, 0)); + props.insert("text", id); + } + if (title && title->designable(w)) { + ids << (id = rmbWidgets->insertItem(i18n("Edit Title..."), -1, 0)); + props.insert("title", id); + } + if (pagetitle && pagetitle->designable(w)) { + ids << (id = rmbWidgets->insertItem(i18n("Edit Page Title..."), -1, 0)); + props.insert("pagetitle", id); + } + } +} + +void MainWindow::setupRMBSpecialCommands(QValueList<int> &ids, QMap<QString, int> &commands, QWidget *w) +{ + int id; + // KommanderWidget doesn't derive from QObject + KommanderWidget *atw = dynamic_cast<KommanderWidget *>(w); + if(atw) + { + if(ids.isEmpty()) + ids << rmbWidgets->insertSeparator(0); + + ids << (id = rmbWidgets->insertItem(i18n("Edit Kommander Text..."), -1, 0)); + + commands.insert("assoc", id); + } + + if (w->inherits("QTabWidget")) { + if (ids.isEmpty()) + ids << rmbWidgets->insertSeparator(0); + if (((QDesignerTabWidget*)w)->count() > 1) { + ids << (id = rmbWidgets->insertItem(i18n("Delete Page"), -1, 0)); + commands.insert("remove", id); + } + ids << (id = rmbWidgets->insertItem(i18n("Add Page"), -1, 0)); + commands.insert("add", id); + } + if (w->inherits("QToolBox")) { + if (ids.isEmpty()) + ids << rmbWidgets->insertSeparator(0); + if (((QToolBox*)w)->count() > 1) { + ids << (id = rmbWidgets->insertItem(i18n("Delete Page"), -1, 0)); + commands.insert("remove", id); + } + ids << (id = rmbWidgets->insertItem(i18n("Add Page"), -1, 0)); + commands.insert("add", id); + } + if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)))) + { + if (ids.isEmpty()) + ids << rmbWidgets->insertSeparator(0); + ids << (id = rmbWidgets->insertItem(i18n("Edit..."), -1, 0)); + commands.insert("edit", id); + } +} + +void MainWindow::setupRMBSpecialCommands(QValueList<int> &ids, QMap<QString, int> &commands, FormWindow *fw) +{ + int id; + + // KommanderWidget doesn't derive from QObject + KommanderWidget *atw = dynamic_cast<KommanderWidget *>(fw->mainContainer()); + if(atw) + { + if(ids.isEmpty()) + ids << rmbFormWindow->insertSeparator(0); + + ids << (id = rmbFormWindow->insertItem(i18n("Edit Kommander Text..."), -1, 0)); + + commands.insert("assoc", id); + } + + if (fw->mainContainer()->inherits("QWizard")) { + if (ids.isEmpty()) + ids << rmbFormWindow->insertSeparator(0); + + if (((QWizard*)fw->mainContainer())->pageCount() > 1) { + ids << (id = rmbFormWindow->insertItem(i18n("Delete Page"), -1, 0)); + commands.insert("remove", id); + } + + ids << (id = rmbFormWindow->insertItem(i18n("Add Page"), -1, 0)); + commands.insert("add", id); + + ids << (id = rmbFormWindow->insertItem(i18n("Edit Page Title..."), -1, 0)); + commands.insert("rename", id); + + ids << (id = rmbFormWindow->insertItem(i18n("Edit Pages..."), -1, 0)); + commands.insert("edit", id); + + } else if (fw->mainContainer()->inherits("QMainWindow")) { + if (ids.isEmpty()) + ids << rmbFormWindow->insertSeparator(0); + ids << (id = rmbFormWindow->insertItem(i18n("Add Menu Item"), -1, 0)); + commands.insert("add_menu_item", id); + ids << (id = rmbFormWindow->insertItem(i18n("Add Toolbar"), -1, 0)); + commands.insert("add_toolbar", id); + } +} + +void MainWindow::handleRMBProperties(int id, QMap<QString, int> &props, QWidget *w) +{ + if (id == props[ "text" ]) { + bool ok = false; + QString text; + if (w->inherits("QTextView") || w->inherits("QLabel")) { + text = TextEditor::getText(this, w->property("text").toString()); + ok = !text.isEmpty(); + } else { + text = KInputDialog::getText(i18n("Text"), i18n("New text:"), w->property("text").toString(), &ok, this); + } + if (ok) { + QString pn(i18n("Set the 'text' of '%1'").arg(w->name())); + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, + "text", w->property("text"), + text, QString::null, QString::null); + cmd->execute(); + formWindow()->commandHistory()->addCommand(cmd); + MetaDataBase::setPropertyChanged(w, "text", true); + } + } else if (id == props[ "title" ]) { + bool ok = false; + QString title = KInputDialog::getText(i18n("Title"), i18n("New title:"), w->property("title").toString(), &ok, this); + if (ok) { + QString pn(i18n("Set the 'title' of '%1'").arg(w->name())); + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, + "title", w->property("title"), + title, QString::null, QString::null); + cmd->execute(); + formWindow()->commandHistory()->addCommand(cmd); + MetaDataBase::setPropertyChanged(w, "title", true); + } + } else if (id == props[ "pagetitle" ]) { + bool ok = false; + QString text = KInputDialog::getText(i18n("Page Title"), i18n("New page title:"), w->property("pageTitle").toString(), &ok, this); + if (ok) { + QString pn(i18n("Set the 'pageTitle' of '%1'").arg(w->name())); + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, + "pageTitle", w->property("pageTitle"), + text, QString::null, QString::null); + cmd->execute(); + formWindow()->commandHistory()->addCommand(cmd); + MetaDataBase::setPropertyChanged(w, "pageTitle", true); + } + } else if (id == props[ "pixmap" ]) { + QPixmap oldPix = w->property("pixmap").toPixmap(); + QPixmap pix = qChoosePixmap(this, formWindow(), oldPix); + if (!pix.isNull()) { + QString pn(i18n("Set the 'pixmap' of '%1'").arg(w->name())); + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, + "pixmap", w->property("pixmap"), + pix, QString::null, QString::null); + cmd->execute(); + formWindow()->commandHistory()->addCommand(cmd); + MetaDataBase::setPropertyChanged(w, "pixmap", true); + } + } +} + +void MainWindow::handleRMBSpecialCommands(int id, QMap<QString, int> &commands, QWidget *w) +{ + // associated text menu + // we assume all widgets derive from KommanderWidget [MB02] + if(id == commands["assoc"]) + { + AssocTextEditor *editor = new AssocTextEditor(w, formWindow(), propertyEditor, m_partManager, + this, "AssocTextEditor", false); //deletes itself! + editor->show(); + } + + if (w->inherits("QTabWidget")) { + QTabWidget *tw = (QTabWidget*)w; + if (id == commands[ "add" ]) { + AddTabPageCommand *cmd = new AddTabPageCommand(i18n("Add Page to %1").arg(tw->name()), formWindow(), + tw, "Tab"); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } else if (id == commands[ "remove" ]) { + if (tw->currentPage()) { + QDesignerTabWidget *dtw = (QDesignerTabWidget*)tw; + DeleteTabPageCommand *cmd = new DeleteTabPageCommand(i18n("Delete Page %1 of %2"). + arg(dtw->pageTitle()).arg(tw->name()), + formWindow(), tw, tw->currentPage()); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } + } + } + if (w->inherits("QToolBox")) { + QToolBox *tw = (QToolBox*)w; + if (id == commands[ "add" ]) { + AddToolBoxPageCommand *cmd = new AddToolBoxPageCommand(i18n("Add Page to %1").arg(tw->name()), formWindow(), + tw, "Page"); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } else if (id == commands[ "remove" ]) { + if (tw->currentItem()) { + EditorToolBox *dtw = (EditorToolBox*)tw; + DeleteToolBoxPageCommand *cmd = new DeleteToolBoxPageCommand(i18n("Delete Page %1 of %2"). + arg(dtw->pageTitle()).arg(tw->name()), + formWindow(), tw, tw->currentItem()); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } + } + } + if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)))) { + if (id == commands[ "edit" ]) + WidgetFactory::editWidget(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)), this, w, formWindow()); + } +} + +void MainWindow::handleRMBSpecialCommands(int id, QMap<QString, int> &commands, FormWindow *fw) +{ + + if(id == commands["assoc"]) + { + AssocTextEditor *editor = new AssocTextEditor(fw->mainContainer(), formWindow(), propertyEditor, m_partManager, + this, "AssocTextEditor", false); //deletes itself! + editor->show(); + } + + + if (fw->mainContainer()->inherits("QWizard")) { + QWizard *wiz = (QWizard*)fw->mainContainer(); + if (id == commands[ "add" ]) { + AddWizardPageCommand *cmd = new AddWizardPageCommand(i18n("Add Page to %1").arg(wiz->name()), formWindow(), + wiz, "Page"); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } else if (id == commands[ "remove" ]) { + if (wiz->currentPage()) { + QDesignerWizard *dw = (QDesignerWizard*)wiz; + DeleteWizardPageCommand *cmd = new DeleteWizardPageCommand(i18n("Delete Page %1 of %2"). + arg(dw->pageTitle()).arg(wiz->name()), + formWindow(), wiz, wiz->indexOf(wiz->currentPage())); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } + } else if (id == commands[ "edit" ]) { + WizardEditor *e = new WizardEditor(this, wiz, fw); + e->exec(); + delete e; + } else if (id == commands[ "rename" ]) { + + bool ok = false; + QDesignerWizard *dw = (QDesignerWizard*)wiz; + QString text = KInputDialog::getText(i18n("Page Title"), i18n("New page title:"), dw->pageTitle(), &ok, this); + if (ok) { + QString pn(i18n("Rename page %1 of %2").arg(dw->pageTitle()).arg(wiz->name())); + RenameWizardPageCommand *cmd = new RenameWizardPageCommand(pn, formWindow() + , wiz, wiz->indexOf(wiz->currentPage()), text); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } + } + } else if (fw->mainContainer()->inherits("QMainWindow")) { + QMainWindow *mw = (QMainWindow*)fw->mainContainer(); + if (id == commands[ "add_toolbar" ]) { + AddToolBarCommand *cmd = new AddToolBarCommand(i18n("Add Toolbar to '%1'").arg(formWindow()->name()), formWindow(), mw); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } else if (id == commands[ "add_menu_item" ]) { + AddMenuCommand *cmd = new AddMenuCommand(i18n("Add Menu to '%1'").arg(formWindow()->name()), formWindow(), mw); + formWindow()->commandHistory()->addCommand(cmd); + cmd->execute(); + } + } +} + +void MainWindow::clipboardChanged() +{ + QString text(kapp->clipboard()->text()); + QString start("<!DOCTYPE UI-SELECTION>"); + actionEditPaste->setEnabled(text.left(start.length()) == start); +} + +void MainWindow::selectionChanged() +{ + layoutChilds = false; + layoutSelected = false; + breakLayout = false; + if (!formWindow()) { + actionEditCut->setEnabled(false); + actionEditCopy->setEnabled(false); + actionEditDelete->setEnabled(false); + actionEditAdjustSize->setEnabled(false); + actionEditHLayout->setEnabled(false); + actionEditVLayout->setEnabled(false); + actionEditSplitHorizontal->setEnabled(false); + actionEditSplitVertical->setEnabled(false); + actionEditGridLayout->setEnabled(false); + actionEditBreakLayout->setEnabled(false); + actionEditLower->setEnabled(false); + actionEditRaise->setEnabled(false); + actionEditAdjustSize->setEnabled(false); + return; + } + + int selectedWidgets = formWindow()->numSelectedWidgets(); + bool enable = selectedWidgets > 0; + actionEditCut->setEnabled(enable); + actionEditCopy->setEnabled(enable); + actionEditDelete->setEnabled(enable); + actionEditLower->setEnabled(enable); + actionEditRaise->setEnabled(enable); + + actionEditAdjustSize->setEnabled(false); + actionEditSplitHorizontal->setEnabled(false); + actionEditSplitVertical->setEnabled(false); + + enable = false; + QWidgetList widgets = formWindow()->selectedWidgets(); + if (selectedWidgets > 1) { + int unlaidout = 0; + int laidout = 0; + for (QWidget *w = widgets.first(); w; w = widgets.next()) { + if (!w->parentWidget() || WidgetFactory::layoutType(w->parentWidget()) == WidgetFactory::NoLayout) + unlaidout++; + else + laidout++; + } + actionEditHLayout->setEnabled(unlaidout > 1); + actionEditVLayout->setEnabled(unlaidout > 1); + actionEditSplitHorizontal->setEnabled(unlaidout > 1); + actionEditSplitVertical->setEnabled(unlaidout > 1); + actionEditGridLayout->setEnabled(unlaidout > 1); + actionEditBreakLayout->setEnabled(laidout > 0); + actionEditAdjustSize->setEnabled(laidout > 0); + layoutSelected = unlaidout > 1; + breakLayout = laidout > 0; + } else if (selectedWidgets == 1) { + QWidget *w = widgets.first(); + bool isContainer = WidgetDatabase::isContainer(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w))) || + w == formWindow()->mainContainer(); + actionEditAdjustSize->setEnabled(!w->parentWidget() || + WidgetFactory::layoutType(w->parentWidget()) == WidgetFactory::NoLayout); + + if (!isContainer) { + actionEditHLayout->setEnabled(false); + actionEditVLayout->setEnabled(false); + actionEditGridLayout->setEnabled(false); + if (w->parentWidget() && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) { + actionEditBreakLayout->setEnabled(!isAToolBarChild(w)); + breakLayout = true; + } else { + actionEditBreakLayout->setEnabled(false); + } + } else { + if (WidgetFactory::layoutType(w) == WidgetFactory::NoLayout) { + if (!formWindow()->hasInsertedChildren(w)) { + actionEditHLayout->setEnabled(false); + actionEditVLayout->setEnabled(false); + actionEditGridLayout->setEnabled(false); + actionEditBreakLayout->setEnabled(false); + } else { + actionEditHLayout->setEnabled(true); + actionEditVLayout->setEnabled(true); + actionEditGridLayout->setEnabled(true); + actionEditBreakLayout->setEnabled(false); + layoutChilds = true; + } + if (w->parentWidget() && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) { + actionEditBreakLayout->setEnabled(!isAToolBarChild(w)); + breakLayout = true; + } + } else { + actionEditHLayout->setEnabled(false); + actionEditVLayout->setEnabled(false); + actionEditGridLayout->setEnabled(false); + actionEditBreakLayout->setEnabled(!isAToolBarChild(w)); + breakLayout = true; + } + } + } else if (selectedWidgets == 0 && formWindow()) { + actionEditAdjustSize->setEnabled(true); + QWidget *w = formWindow()->mainContainer(); + if (WidgetFactory::layoutType(w) == WidgetFactory::NoLayout) { + if (!formWindow()->hasInsertedChildren(w)) { + actionEditHLayout->setEnabled(false); + actionEditVLayout->setEnabled(false); + actionEditGridLayout->setEnabled(false); + actionEditBreakLayout->setEnabled(false); + } else { + actionEditHLayout->setEnabled(true); + actionEditVLayout->setEnabled(true); + actionEditGridLayout->setEnabled(true); + actionEditBreakLayout->setEnabled(false); + layoutChilds = true; + } + } else { + actionEditHLayout->setEnabled(false); + actionEditVLayout->setEnabled(false); + actionEditGridLayout->setEnabled(false); + actionEditBreakLayout->setEnabled(true); + breakLayout = true; + } + } else { + actionEditHLayout->setEnabled(false); + actionEditVLayout->setEnabled(false); + actionEditGridLayout->setEnabled(false); + actionEditBreakLayout->setEnabled(false); + } +} + +void MainWindow::writeConfig() +{ + KConfig* config = kapp->config(); + + config->setGroup("General"); + config->writeEntry("RestoreWorkspace", restoreConfig); + config->writeEntry("SplashScreen", splashScreen); + config->writeEntry("DocPath", docPath); + config->writeEntry("TemplatePath", templPath); + + config->setGroup("Grid"); + config->writeEntry("Snap", snGrid); + config->writeEntry("Show", sGrid); + config->writeEntry("x", grid().x()); + config->writeEntry("y", grid().y()); + + config->setGroup("Background"); + config->writeEntry("UsePixmap", backPix); + config->writeEntry("Color", qworkspace->backgroundColor().name()); + + /* + config->setGroup("Geometry"); + config->writeEntry("MainWindow", size()); + config->writeEntry("MainWindowMax", isMaximized()); + */ + writeDockConfig(config, "Docks"); + + config->setGroup("View"); + config->writeEntry("TextLabels", usesTextLabel()); + config->writeEntry("BigIcons", usesBigPixmaps()); + + actionCollection()->writeShortcutSettings("Keys", config); + + config->deleteGroup("Recent Files"); + actionRecent->saveEntries(config, "Recent Files"); +} + +void MainWindow::readConfig() +{ + KConfig *config = kapp->config(); + + config->setGroup("General"); + restoreConfig = config->readBoolEntry("RestoreWorkspace", true); + splashScreen = config->readBoolEntry("SplashScreen", true); + docPath = config->readEntry("DocPath", docPath); + templPath = config->readEntry("TemplatePath", QString::null); + + config->setGroup("Grid"); + sGrid = config->readBoolEntry("Snap", true); + snGrid = config->readBoolEntry("Show", true); + grd.setX(config->readNumEntry("x", 10)); + grd.setY(config->readNumEntry("y", 10)); + + config->setGroup("Background"); + if (config->readBoolEntry("UsePixmap", true)) + qworkspace->setBackgroundPixmap(PixmapChooser::loadPixmap("background.png", PixmapChooser::NoSize)); + else + qworkspace->setBackgroundColor(QColor(config->readEntry("Color", "#f0f0f0")).rgb()); + + /* + config->setGroup("Geometry"); + QSize winSize = size(); + resize(config->readSizeEntry("MainWindow", &winSize)); + if (config->readBoolEntry("MainWindowMax", false)) + showMaximized(); + */ + readDockConfig(config, "Docks"); + + + config->setGroup("View"); + setUsesTextLabel(config->readBoolEntry("TextLabels", false)); + setUsesBigPixmaps(config->readBoolEntry("BigIcons", false)); + + actionCollection()->readShortcutSettings("Keys", config); + + actionRecent->loadEntries(config, "Recent Files"); + + KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); + for(int i = 0; i < args->count(); i++) + { + QFileInfo fi(args->url(i).path()); + if (fi.exists() && openFormWindow(args->url(i).path())) + actionRecent->addURL(args->url(i)); + } + args->clear(); +} + + +HierarchyView *MainWindow::objectHierarchy() const +{ + if (!hierarchyView) + ((MainWindow *) this)->setupHierarchyView(); + return hierarchyView; +} + +QPopupMenu *MainWindow::setupNormalHierarchyMenu(QWidget *parent) +{ + QPopupMenu *menu = new QPopupMenu(parent); + + actionEditCut->plug(menu); + actionEditCopy->plug(menu); + actionEditPaste->plug(menu); + actionEditDelete->plug(menu); + + return menu; +} + +QPopupMenu *MainWindow::setupTabWidgetHierarchyMenu(QWidget *parent, const char *addSlot, const char *removeSlot) +{ + QPopupMenu *menu = new QPopupMenu(parent); + + menu->insertItem(i18n("Add Page"), parent, addSlot); + menu->insertItem(i18n("Delete Page"), parent, removeSlot); + menu->insertSeparator(); + actionEditCut->plug(menu); + actionEditCopy->plug(menu); + actionEditPaste->plug(menu); + actionEditDelete->plug(menu); + + return menu; +} + +void MainWindow::closeEvent(QCloseEvent *e) +{ + QWidgetList windows = qWorkspace()->windowList(); + QWidgetListIt wit(windows); + while (wit.current()) + { + QWidget *w = wit.current(); + ++wit; + if (w->inherits("FormWindow")) + { + if (!((FormWindow *) w)->formFile()->close()) + { + e->ignore(); + return; + } + } + } + + writeConfig(); + hide(); + e->accept(); + + if (client) + { + QDir home(QDir::homeDirPath()); + home.remove(".designerpid"); + } +} + +Workspace *MainWindow::workspace() const +{ + if (!wspace) + ((MainWindow*)this)->setupWorkspace(); + return wspace; +} + +PropertyEditor *MainWindow::propertyeditor() const +{ + if (!propertyEditor) + ((MainWindow*)this)->setupPropertyEditor(); + return propertyEditor; +} + +ActionEditor *MainWindow::actioneditor() const +{ + if (!actionEditor) + ((MainWindow*)this)->setupActionEditor(); + return actionEditor; +} + +bool MainWindow::openEditor(QWidget* w, FormWindow*) +{ + if (WidgetFactory::hasSpecialEditor(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)))) { + statusBar()->message(i18n("Edit %1...").arg(w->className())); + WidgetFactory::editWidget(WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)), this, w, formWindow()); + statusBar()->clear(); + return true; + } + + const QMetaProperty* text = w->metaObject()->property(w->metaObject()->findProperty("text", true), true); + const QMetaProperty* title = w->metaObject()->property(w->metaObject()->findProperty("title", true), true); + if (text && text->designable(w)) { + bool ok = false; + QString text; + if (w->inherits("QTextView") || w->inherits("QLabel")) { + text = TextEditor::getText(this, w->property("text").toString()); + ok = !text.isEmpty(); + } else { + text = KInputDialog::getText(i18n("Text"), i18n("New text:"), w->property("text").toString(), &ok, this); + } + if (ok) { + QString pn(i18n("Set the 'text' of '%2'").arg(w->name())); + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, + "text", w->property("text"), + text, QString::null, QString::null); + cmd->execute(); + formWindow()->commandHistory()->addCommand(cmd); + MetaDataBase::setPropertyChanged(w, "text", true); + } + return true; + } + if (title && title->designable(w)) { + bool ok = false; + QString text; + text = KInputDialog::getText(i18n("Title"), i18n("New title:"), w->property("title").toString(), &ok, this); + if (ok) { + QString pn(i18n("Set the 'title' of '%2'").arg(w->name())); + SetPropertyCommand *cmd = new SetPropertyCommand(pn, formWindow(), w, propertyEditor, + "title", w->property("title"), + text, QString::null, QString::null); + cmd->execute(); + formWindow()->commandHistory()->addCommand(cmd); + MetaDataBase::setPropertyChanged(w, "title", true); + } + return true; + } + + return true; +} + +void MainWindow::setGrid(const QPoint &p) +{ + if (p == grd) + return; + grd = p; + QWidgetList windows = qWorkspace()->windowList(); + for (QWidget *w = windows.first(); w; w = windows.next()) { + if (!w->inherits("FormWindow")) + continue; + ((FormWindow*)w)->mainContainer()->update(); + } +} + +void MainWindow::setShowGrid(bool b) +{ + if (b == sGrid) + return; + sGrid = b; + QWidgetList windows = qWorkspace()->windowList(); + for (QWidget *w = windows.first(); w; w = windows.next()) { + if (!w->inherits("FormWindow")) + continue; + ((FormWindow*)w)->mainContainer()->update(); + } +} + +void MainWindow::setSnapGrid(bool b) +{ + if (b == snGrid) + return; + snGrid = b; +} + +QString MainWindow::documentationPath() const +{ + QString result = docPath; + + if (docPath[0] == '$') { + int fs = docPath.find('/'); + if (fs == -1) + fs = docPath.find('\\'); + + if (fs > -1) { + result = docPath.mid(1, fs-1); + } else { + fs=docPath.length(); + result = docPath.right(fs-1); + } + result = getenv(result.latin1()) + docPath.right(docPath.length()-fs); + } + + return result; +} + +void MainWindow::windowsMenuActivated(int id) +{ + QWidget* w = qworkspace->windowList().at(id); + if (w) + w->setFocus(); +} + + + +void MainWindow::checkTempFiles() +{ + QString s = QDir::homeDirPath() + "/.designer"; + QString baseName = s+ "/saved-form-"; + if (!QFile::exists(baseName + "1.kmdr")) + return; + QDir d(s); + d.setNameFilter("*.kmdr"); + QStringList lst = d.entryList(); + QApplication::restoreOverrideCursor(); + bool load = KMessageBox::questionYesNo(this, + i18n("Kommander found some temporary saved files, which were\n" + "written when Kommander crashed last time. Do you want to\n" + "load these files?"), i18n("Restoring Last Session"), i18n("Load"), i18n("Do Not Load")) == KMessageBox::Yes; + QApplication::setOverrideCursor(waitCursor); + for (QStringList::Iterator it = lst.begin(); it != lst.end(); ++it) { + if (load) + openFormWindow(s + "/" + *it, false); + d.remove(*it); + } +} + +void MainWindow::showDialogHelp() +{ + QWidget *w = (QWidget*)sender(); + w = w->topLevelWidget(); + + QString link = "designer-manual-12.html#"; + + if (w->inherits("NewFormBase")) + link += "dialog-file-new"; + else if (w->inherits("CreateTemplate")) + link += "dialog-file-create-template"; + else if (w->inherits("EditSlotsBase")) + link += "dialog-edit-slots"; + else if (w->inherits("ConnectionViewerBase")) + link += "dialog-view-connections"; + else if (w->inherits("FormSettingsBase")) + link += "dialog-edit-form-settings"; + else if (w->inherits("Preferences")) + link += "dialog-edit-preferences"; + else if (w->inherits("PixmapCollectionEditor")) + link += "dialog-image-collection"; + else if (w->inherits("DatabaseConnectionBase")) + link += "dialog-edit-database-connections"; + else if (w->inherits("FindDialog")) + link += "dialog-find-text"; + else if (w->inherits("ReplaceDialog")) + link += "dialog-replace-text"; + else if (w->inherits("GotoLineDialog")) + link += "dialog-go-to-line"; + else if (w->inherits("ConnectionEditorBase")) + link += "dialog-edit-connections"; + else if (w->inherits("PaletteEditorBase")) + link += "dialog-edit-palette"; + else if (w->inherits("ListBoxEditorBase")) + link += "dialog-edit-listbox"; + else if (w->inherits("ListViewEditorBase")) + link += "dialog-edit-listview"; + else if (w->inherits("IconViewEditorBase")) + link += "dialog-edit-iconview"; + else if (w->inherits("TableEditorBase")) + link += "dialog-edit-table"; + + else { + KMessageBox::information(this, + i18n("There is no help available for this dialog at the moment."), i18n("Help")); + return; + } + + if (assistant) + assistant->sendRequest(link+'\n'); +} + + + +void MainWindow::fileOpenRecent(const KURL& filename) +{ + if (!QFile::exists(filename.path())) + { + KMessageBox::error(this, i18n("<qt>Could not open file:<br><b>%1</b><br>File does not exist.</qt>"). + arg(filename.path()), i18n("Open File")); + actionRecent->removeURL(filename); + } + else + fileOpen(filename.path()); +} + +void MainWindow::setupPlugins() +{ + KommanderFactory::loadPlugins(); +} + + + +void MainWindow::setModified(bool b, QWidget *window) +{ + QWidget *w = window; + while (w) + { + if (w->inherits("FormWindow")) + { + ((FormWindow *) w)->modificationChanged(b); + return; + } + w = w->parentWidget(true); + if (w->inherits("FormWindow")) + { + ((FormWindow *) w)->modificationChanged(b); + return; + } + w = w->parentWidget(true); + } +} + + +void MainWindow::updateWorkspace() +{ +} + +QWidget *MainWindow::findRealForm(QWidget *wid) +{ + QWidgetList windows = qWorkspace()->windowList(); + for (QWidget *w = windows.first(); w; w = windows.next()) { + if (QString(w->name()) == QString(wid->name())) + return w; + } + return 0; +} + +void MainWindow::formNameChanged(FormWindow*) +{ +} + + +int MainWindow::currentLayoutDefaultSpacing() const +{ + if (((MainWindow*)this)->formWindow()) + return ((MainWindow*)this)->formWindow()->layoutDefaultSpacing(); + return BOXLAYOUT_DEFAULT_SPACING; +} + +int MainWindow::currentLayoutDefaultMargin() const +{ + if (((MainWindow*)this)->formWindow()) + return ((MainWindow*)this)->formWindow()->layoutDefaultMargin(); + return BOXLAYOUT_DEFAULT_MARGIN; +} + +QString MainWindow::whatsThisFrom(const QString&) +{ + return QString::null; +} + +void MainWindow::slotActivePartChanged(KParts::Part * part) +{ +// kdDebug(24000) << "ActivePartChanged" << part << endl; + if (part) // if part == 0L the pointer m_oldKTextEditor is not useable + { + // guiFactory()->removeClient(part); + } + createGUI(part); + if (part) + { + guiFactory()->addClient(part); + } +} + +#include "mainwindow.moc" + diff --git a/kommander/editor/mainwindow.h b/kommander/editor/mainwindow.h new file mode 100644 index 00000000..7a18438f --- /dev/null +++ b/kommander/editor/mainwindow.h @@ -0,0 +1,317 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include "metadatabase.h" + +#include <kparts/dockmainwindow.h> +#include <kdockwidget.h> + +#include <qmap.h> +#include <qguardedptr.h> +#include <qobjectlist.h> + +class ActionEditor; +class AssistProc; +class FindDialog; +class FormFile; +class FormWindow; +class GotoLineDialog; +class HierarchyView; +class KAction; +class KActionCollection; +class KProcess; +class KRecentFilesAction; +class KToggleAction; +class KToolBar; +class KURL; +class PropertyEditor; +class QCloseEvent; +class QMenuBar; +class QTimer; +class QWidget; +class QWorkspace; +class MessageLog; +class ReplaceDialog; +class Workspace; + +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) +#include <qtoolbar.h> +#else +class QToolBar; +#endif +class Preferences; + +namespace KParts { + class PartManager; +} + + +class MainWindow : public KParts::DockMainWindow +{ + Q_OBJECT + +public: + MainWindow( bool asClient ); + ~MainWindow(); + + HierarchyView *objectHierarchy() const; + Workspace *workspace() const; + PropertyEditor *propertyeditor() const; + ActionEditor *actioneditor() const; + + void resetTool(); + int currentTool() const; + + FormWindow *formWindow(); + + bool unregisterClient( FormWindow *w ); + QWidget *isAFormWindowChild( QObject *o ) const; + QWidget *isAToolBarChild( QObject *o ) const; + + void insertFormWindow( FormWindow *fw ); + QWorkspace *qWorkspace() const; + + void popupFormWindowMenu( const QPoint &gp, FormWindow *fw ); + void popupWidgetMenu( const QPoint &gp, FormWindow *fw, QWidget *w ); + + QPopupMenu *setupNormalHierarchyMenu( QWidget *parent ); + QPopupMenu *setupTabWidgetHierarchyMenu( QWidget *parent, const char *addSlot, const char *removeSlot ); + + FormWindow *openFormWindow( const QString &fn, bool validFileName = TRUE, FormFile *ff = 0 ); + + void setGrid( const QPoint &p ); + void setShowGrid( bool b ); + void setSnapGrid( bool b ); + QPoint grid() const { return grd; } + bool showGrid() const { return sGrid; } + bool snapGrid() const { return snGrid && sGrid; } + + QString documentationPath() const; + + static MainWindow *self; + void saveAllTemp(); + + QString templatePath() const { return templPath; } + + bool isPreviewing() const { return previewing; } + + FormWindow *activeForm() const { return lastActiveFormWindow; } + + void setModified( bool b, QWidget *window ); + void updateWorkspace(); + + void formNameChanged( FormWindow *fw ); + + int currentLayoutDefaultSpacing() const; + int currentLayoutDefaultMargin() const; + + +public slots: + void showProperties( QObject *w ); + void updateProperties( QObject *w ); + void showDialogHelp(); + void slotActivePartChanged(KParts::Part * ); + +signals: + void addedFormFile(FormFile *); + void removedFormFile(FormFile *); + void currentToolChanged(); + void hasActiveForm( bool ); + void hasActiveWindow( bool ); + + void formModified( bool ); + void formWindowsChanged(); + void formWindowChanged(); + +protected: + bool eventFilter( QObject *o, QEvent *e ); + void closeEvent( QCloseEvent *e ); + +public slots: + void fileNew(); + void fileClose(); + void fileOpen(); + void fileOpen(const QString &filename); + void fileOpenRecent(const KURL& name); + bool fileSave(); + bool fileSaveForm(); // not visible in menu, called from fileSave + bool fileSaveAs(); + void fileSaveAll(); + void fileCreateTemplate(); + + void editUndo(); + void editRedo(); + void editCut(); + void editCopy(); + void editPaste(); + void editDelete(); + void editSelectAll(); + void editLower(); + void editRaise(); + void editAdjustSize(); + void editLayoutHorizontal(); + void editLayoutVertical(); + void editLayoutHorizontalSplit(); + void editLayoutVerticalSplit(); + void editLayoutGrid(); + void editLayoutContainerHorizontal(); + void editLayoutContainerVertical(); + void editLayoutContainerGrid(); + void editBreakLayout(); + void editAccels(); + void editConnections(); + void editFindGlobal(); + + void editFormSettings(); + void editPreferences(); + void editShortcuts(); + void editPlugins(); + void editExternalTool(int id); + void editToolExited(KProcess*); + void editToolOutput(KProcess*, char*, int); + void configureEditor(); + + void runForm(); + void runForm4(); + +private slots: + void activeWindowChanged( QWidget *w ); + void updateUndoRedo( bool, bool, const QString &, const QString & ); + + void toolSelected(); + + void clipboardChanged(); + void selectionChanged(); + + void chooseDocPath(); + void windowsMenuActivated( int id ); + void setupWindowActions(); + void createNewTemplate(); + + void closeRunningForm(KProcess* process); + void slotCreateBackups(); + +private: + void setupMDI(); + void setupEditActions(); + void setupToolActions(); + void setupLayoutActions(); + void setupFileActions(); + void setupSettingsActions(); + void setupRunActions(); + void setupHelpActions(); + void setupRMBMenus(); + + void setupPropertyEditor(); + void setupHierarchyView(); + void setupWorkspace(); + void setupActionEditor(); + void setupMessageLog(); + void setupPlugins(); + + QWidget* previewFormInternal( QStyle* style = 0, QPalette* pal = 0 ); + + void writeConfig(); + void readConfig(); + + void setupRMBProperties( QValueList<int> &ids, QMap<QString, int> &props, QWidget *w ); + void handleRMBProperties( int id, QMap<QString, int> &props, QWidget *w ); + void setupRMBSpecialCommands( QValueList<int> &ids, QMap<QString, int> &commands, QWidget *w ); + void handleRMBSpecialCommands( int id, QMap<QString, int> &commands, QWidget *w ); + void setupRMBSpecialCommands( QValueList<int> &ids, QMap<QString, int> &commands, FormWindow *w ); + void handleRMBSpecialCommands( int id, QMap<QString, int> &commands, FormWindow *w ); + bool openEditor( QWidget *w, FormWindow *fw ); + void checkTempFiles(); + + void addRecentlyOpened(const QString &fn); + QWidget *findRealForm( QWidget *w ); + + QString whatsThisFrom( const QString &key ); + +private: + PropertyEditor *propertyEditor; + HierarchyView *hierarchyView; + Workspace *wspace; + QWidget *lastPressWidget; + QWorkspace *qworkspace; + KMenuBar *menubar; + FormWindow *lastActiveFormWindow; + bool breakLayout, layoutChilds, layoutSelected; + QPoint grd; + bool sGrid, snGrid; + bool restoreConfig; + bool backPix; + bool splashScreen; + QString docPath; + + KAction *actionEditUndo, *actionEditRedo, *actionEditCut, *actionEditCopy, + *actionEditPaste, *actionEditDelete, *actionEditAdjustSize, + *actionEditHLayout, *actionEditVLayout, *actionEditGridLayout, + *actionEditSplitHorizontal, *actionEditSplitVertical, + *actionEditSelectAll, *actionEditBreakLayout, *actionEditConnections, + *actionEditLower, *actionEditRaise, *actionEditFindGlobal; + + KToggleAction* actionPointerTool, *actionConnectTool, *actionOrderTool; + KAction* actionCurrentTool; + KAction *actionEditFormSettings, *actionEditAccels; + KRecentFilesAction* actionRecent; + + QPopupMenu *rmbWidgets; + QPopupMenu *rmbFormWindow; + QPopupMenu *windowMenu, *fileMenu; + + QToolBar *layoutToolBar; + KToolBar *fileTb; + + Preferences *prefDia; + QMap<QString,QString> propertyDocumentation; + bool client; + QString templPath; + ActionEditor *actionEditor; + + bool databaseAutoEdit; + QTimer *updateSlotsTimer; + QTimer *backupTimer; + bool inDebugMode; + QObjectList debuggingForms; + QString lastOpenFilter; + QString menuHelpFile; + AssistProc *assistant; + + bool previewing; + MessageLog* messageLog; + + // Paths of external Kommander tools for Editor + QStringList m_editorTools; + QString m_toolOutput; + KParts::PartManager *m_partManager; + + QString m_fileName; + QString m_backupName; + bool m_modified; + +public: + QString lastSaveFilter; + +}; + +#endif diff --git a/kommander/editor/mainwindowactions.cpp b/kommander/editor/mainwindowactions.cpp new file mode 100644 index 00000000..f7657d26 --- /dev/null +++ b/kommander/editor/mainwindowactions.cpp @@ -0,0 +1,1201 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#include "mainwindow.h" + +#include <qapplication.h> +#include <qclipboard.h> +#include <qfileinfo.h> +#include <qlineedit.h> +#include <qlistbox.h> +#include <qsignalmapper.h> +#include <qspinbox.h> +#include <qstatusbar.h> +#include <qstylefactory.h> +#include <qtooltip.h> +#include <qwhatsthis.h> +#include <qworkspace.h> + +#include "defs.h" +#include "widgetdatabase.h" +#include "widgetfactory.h" +#include "preferences.h" +#include "formwindow.h" +#include "newformimpl.h" +#include "resource.h" +#include "workspace.h" +#include "createtemplate.h" +#include "hierarchyview.h" +#include "formsettingsimpl.h" +#include "styledbutton.h" +#include "connectioneditorimpl.h" +#include "actioneditorimpl.h" +#include "formfile.h" +#ifndef QT_NO_SQL +#include "dbconnectionsimpl.h" +#include "dbconnectionimpl.h" +#endif +#include "command.h" + + +#include <kaction.h> +#include <kapplication.h> +#include <kfiledialog.h> +#include <kglobal.h> +#include <kiconloader.h> +#include <kkeydialog.h> +#include <klocale.h> +#include <kmenubar.h> +#include <kmessagebox.h> +#include <kpopupmenu.h> +#include <kprocess.h> +#include <kstandarddirs.h> +#include <kstatusbar.h> +#include <kstdguiitem.h> +#include <kurl.h> + +#include <ktexteditor/document.h> +#include <ktexteditor/view.h> +#include <ktexteditor/configinterface.h> + +#include <stdlib.h> + +const QString toolbarHelp = "<p>Toolbars contain a number of buttons to " +"provide quick access to often used functions.%1" +"<br>Click on the toolbar handle to hide the toolbar, " +"or drag and place the toolbar to a different location.</p>"; + +static QIconSet createIconSet( const QString &name ) +{ + QIconSet ic( PixmapChooser::loadPixmap( name, PixmapChooser::Small ) ); + ic.setPixmap( PixmapChooser::loadPixmap( name, PixmapChooser::Disabled ), QIconSet::Small, QIconSet::Disabled ); + return ic; +} + +int forms = 0; + +void MainWindow::setupEditActions() +{ + actionEditUndo = KStdAction::undo(this, SLOT(editUndo()), actionCollection()); + actionEditUndo->setText(i18n("&Undo: Not Available")); + actionEditUndo->setToolTip(i18n("Undoes the last action")); + actionEditUndo->setWhatsThis(whatsThisFrom("Edit|Undo")); + actionEditUndo->setEnabled(false); + + actionEditRedo = KStdAction::redo(this, SLOT(editRedo()), actionCollection()); + actionEditRedo->setText(i18n("&Redo: Not Available")); + actionEditRedo->setToolTip(i18n("Redoes the last undone operation")); + actionEditRedo->setWhatsThis(whatsThisFrom("Edit|Redo")); + actionEditRedo->setEnabled(false); + + actionEditCut = KStdAction::cut(this, SLOT(editCut()), actionCollection()); + actionEditCut->setToolTip(i18n("Cuts the selected widgets and puts them on the clipboard")); + actionEditCut->setWhatsThis(whatsThisFrom("Edit|Cut")); + actionEditCut->setEnabled(false); + + actionEditCopy = KStdAction::copy(this, SLOT(editCopy()), actionCollection()); + actionEditCopy->setToolTip(i18n("Copies the selected widgets to the clipboard")); + actionEditCopy->setWhatsThis(whatsThisFrom("Edit|Copy")); + actionEditCopy->setEnabled(false); + + actionEditPaste = KStdAction::paste(this, SLOT(editPaste()), actionCollection()); + actionEditPaste->setToolTip(i18n("Pastes the clipboard's contents")); + actionEditPaste->setWhatsThis(whatsThisFrom("Edit|Paste")); + actionEditPaste->setEnabled(false); + + actionEditDelete = new KAction(i18n("Delete"), Key_Delete, this, SLOT(editDelete()), + actionCollection(), "edit_delete"); + actionEditDelete->setToolTip(i18n("Deletes the selected widgets")); + actionEditDelete->setWhatsThis(whatsThisFrom("Edit|Delete")); + actionEditDelete->setEnabled(false); + + actionEditSelectAll = KStdAction::selectAll(this, SLOT(editSelectAll()), actionCollection()); + actionEditSelectAll->setToolTip(i18n("Selects all widgets")); + actionEditSelectAll->setWhatsThis(whatsThisFrom("Edit|Select All")); + + actionEditRaise = new KAction(i18n("Bring to Front"), createIconSet("editraise.xpm"), + KShortcut::null(), this, SLOT(editRaise()), actionCollection(), "edit_raise"); + actionEditRaise->setToolTip(i18n("Raises the selected widgets")); + actionEditRaise->setEnabled(false); + + actionEditLower = new KAction(i18n("Send to Back"), createIconSet("editlower.xpm"), + KShortcut::null(), this, SLOT(editLower()), actionCollection(), "edit_lower"); + actionEditLower->setToolTip(i18n("Lowers the selected widgets")); + actionEditLower->setWhatsThis(i18n("Lowers the selected widgets")); + actionEditLower->setEnabled(false); + + actionEditFindGlobal = new KAction(i18n("Find in Form..."), CTRL + ALT + Key_F, this, SLOT(editFindGlobal()), actionCollection(), "edit_find_global"); + actionEditFindGlobal->setToolTip(i18n("Search for a text in the whole form.")); + actionEditFindGlobal->setWhatsThis(whatsThisFrom("Edit|Find in Form")); + connect(this, SIGNAL(hasActiveForm(bool)), actionEditFindGlobal, SLOT(setEnabled(bool))); + + actionEditAccels = new KAction(i18n("Check Accelerators"), ALT + Key_R, this, SLOT(editAccels()), + actionCollection(), "edit_check_accel"); + actionEditAccels->setToolTip(i18n("Checks if the accelerators used in the form are unique")); + actionEditAccels->setWhatsThis(whatsThisFrom("Edit|Check Accelerator")); + connect(this, SIGNAL(hasActiveForm(bool)), actionEditAccels, SLOT(setEnabled(bool))); + + actionEditConnections = new KAction(i18n("Connections"), createIconSet("connecttool.xpm"), + KShortcut::null(), this, SLOT(editConnections()), actionCollection(), + "edit_connections"); + actionEditConnections->setToolTip(i18n("Opens a dialog for editing connections")); + actionEditConnections->setWhatsThis(whatsThisFrom("Edit|Connections")); + connect(this, SIGNAL(hasActiveForm(bool)), actionEditConnections, SLOT(setEnabled(bool))); + + actionEditFormSettings = new KAction(i18n("Form Settings..."), KShortcut::null(), + this, SLOT(editFormSettings()), actionCollection(), "edit_form"); + actionEditFormSettings->setToolTip(i18n("Opens a dialog to change the form's settings")); + actionEditFormSettings->setWhatsThis(whatsThisFrom("Edit|Form Settings")); + connect(this, SIGNAL(hasActiveForm(bool)), actionEditFormSettings, SLOT(setEnabled(bool))); + + KToolBar *tb = new KToolBar(this, "Edit"); + tb->setFullSize(false); + QWhatsThis::add(tb, i18n("<b>The Edit toolbar</b>%1").arg(toolbarHelp)); + addToolBar(tb, i18n("Edit")); + actionEditUndo->plug(tb); + actionEditRedo->plug(tb); + tb->addSeparator(); + actionEditCut->plug(tb); + actionEditCopy->plug(tb); + actionEditPaste->plug(tb); + + QPopupMenu *menu = new QPopupMenu(this, "Edit"); + menuBar()->insertItem(i18n("&Edit"), menu); + actionEditUndo->plug(menu); + actionEditRedo->plug(menu); + menu->insertSeparator(); + actionEditCut->plug(menu); + actionEditCopy->plug(menu); + actionEditPaste->plug(menu); + actionEditDelete->plug(menu); + actionEditSelectAll->plug(menu); + actionEditAccels->plug(menu); + menu->insertSeparator(); +// actionEditFindGlobal->plug(menu); //enable when implemented + actionEditConnections->plug(menu); + actionEditFormSettings->plug(menu); + menu->insertSeparator(); + +} + + +void MainWindow::setupLayoutActions() +{ + actionEditAdjustSize = new KAction(i18n("Adjust Size"), createIconSet("adjustsize.xpm"), + CTRL + Key_J, this, SLOT(editAdjustSize()), actionCollection(), "edit_adjust_size"); + actionEditAdjustSize->setToolTip(i18n("Adjusts the size of the selected widget")); + actionEditAdjustSize->setWhatsThis(whatsThisFrom("Layout|Adjust Size")); + actionEditAdjustSize->setEnabled(false); + + actionEditHLayout = new KAction(i18n("Lay Out Horizontally"), createIconSet("edithlayout.xpm"), + CTRL + Key_H, this, SLOT(editLayoutHorizontal()), actionCollection(), "edit_layout_h"); + actionEditHLayout->setToolTip(i18n("Lays out the selected widgets horizontally")); + actionEditHLayout->setWhatsThis(whatsThisFrom("Layout|Lay Out Horizontally")); + actionEditHLayout->setEnabled(false); + + actionEditVLayout = new KAction(i18n("Lay Out Vertically"), createIconSet("editvlayout.xpm"), + CTRL + Key_L, this, SLOT(editLayoutVertical()), actionCollection(), "edit_layout_v"); + actionEditVLayout->setToolTip(i18n("Lays out the selected widgets vertically")); + actionEditVLayout->setWhatsThis(whatsThisFrom("Layout|Lay Out Vertically")); + actionEditVLayout->setEnabled(false); + + actionEditGridLayout = new KAction(i18n("Lay Out in a Grid"), createIconSet("editgrid.xpm"), + CTRL + Key_G, this, SLOT(editLayoutGrid()), actionCollection(), "edit_layout_grid"); + actionEditGridLayout->setToolTip(i18n("Lays out the selected widgets in a grid")); + actionEditGridLayout->setWhatsThis(whatsThisFrom("Layout|Lay Out in a Grid")); + actionEditGridLayout->setEnabled(false); + + actionEditSplitHorizontal = new KAction(i18n("Lay Out Horizontally in Splitter"), createIconSet("editvlayoutsplit.xpm"), + KShortcut::null(), this, SLOT(editLayoutHorizontalSplit()), actionCollection(), + "edit_split_h"); + actionEditSplitHorizontal->setToolTip(i18n("Lays out the selected widgets horizontally in a splitter")); + actionEditSplitHorizontal->setWhatsThis(whatsThisFrom("Layout|Lay Out Horizontally in Splitter")); + actionEditSplitHorizontal->setEnabled(false); + + actionEditSplitVertical = new KAction(i18n("Lay Out Vertically in Splitter"), createIconSet("edithlayoutsplit.xpm"), + KShortcut::null(), this, SLOT(editLayoutVerticalSplit()), actionCollection(), + "edit_split_v"); + actionEditSplitVertical->setToolTip(i18n("Lays out the selected widgets vertically in a splitter")); + actionEditSplitVertical->setWhatsThis(whatsThisFrom("Layout|Lay Out Vertically (in Splitter)")); + actionEditSplitVertical->setEnabled(false); + + actionEditBreakLayout = new KAction(i18n("Break Layout"), createIconSet("editbreaklayout.xpm"), + CTRL + Key_B, this, SLOT(editBreakLayout()), actionCollection(), "edit_break_layout"); + actionEditBreakLayout->setToolTip(i18n("Breaks the selected layout")); + actionEditBreakLayout->setWhatsThis(whatsThisFrom("Layout|Break Layout")); + + int id = WidgetDatabase::idFromClassName("Spacer"); + KToggleAction *a = new KToggleAction(i18n("Spacer"), createIconSet("spacer.xpm"), KShortcut::null(), this, SLOT(toolSelected()), + actionCollection(), QString::number(id).latin1()); + a->setExclusiveGroup("tool"); + a->setText(i18n("Add ") + WidgetDatabase::className(id)); + a->setToolTip(i18n("Insert a %1").arg(WidgetDatabase::toolTip(id))); + a->setWhatsThis(i18n("<b>A %1</b><p>%2</p>" + "<p>Click to insert a single %3," + "or double click to keep the tool selected.").arg(WidgetDatabase::toolTip(id)). + arg(WidgetDatabase::whatsThis(id)).arg(WidgetDatabase::toolTip(id))); + + QWhatsThis::add(layoutToolBar, i18n("<b>The Layout toolbar</b>%1").arg(toolbarHelp)); + actionEditAdjustSize->plug(layoutToolBar); + layoutToolBar->addSeparator(); + actionEditHLayout->plug(layoutToolBar); + actionEditVLayout->plug(layoutToolBar); + actionEditGridLayout->plug(layoutToolBar); + actionEditSplitHorizontal->plug(layoutToolBar); + actionEditSplitVertical->plug(layoutToolBar); + actionEditBreakLayout->plug(layoutToolBar); + layoutToolBar->addSeparator(); + a->plug(layoutToolBar); + + QPopupMenu *menu = new QPopupMenu(this, "Layout"); + menuBar()->insertItem(i18n("&Layout"), menu); + actionEditAdjustSize->plug(menu); + menu->insertSeparator(); + actionEditHLayout->plug(menu); + actionEditVLayout->plug(menu); + actionEditGridLayout->plug(menu); + actionEditSplitHorizontal->plug(menu); + actionEditSplitVertical->plug(menu); + actionEditBreakLayout->plug(menu); + menu->insertSeparator(); + a->plug(menu); +} + +void MainWindow::setupToolActions() +{ + actionPointerTool = new KToggleAction(i18n("Pointer"), "arrow", Key_F2, + this, SLOT(toolSelected()), actionCollection(), + QString::number(POINTER_TOOL).latin1()); + actionPointerTool->setToolTip(i18n("Selects the pointer tool")); + actionPointerTool->setWhatsThis(whatsThisFrom("Tools|Pointer")); + actionPointerTool->setExclusiveGroup("tool"); + + actionConnectTool = new KToggleAction(i18n("Connect Signal/Slots"), createIconSet("connecttool.xpm"), + Key_F3, this, SLOT(toolSelected()), actionCollection(), + QString::number(CONNECT_TOOL).latin1()); + actionConnectTool->setToolTip(i18n("Selects the connection tool")); + actionConnectTool->setWhatsThis(whatsThisFrom("Tools|Connect Signals and Slots")); + actionConnectTool->setExclusiveGroup("tool"); + + actionOrderTool = new KToggleAction(i18n("Tab Order"), createIconSet("ordertool.xpm"), + Key_F4, this, SLOT(toolSelected()), actionCollection(), + QString::number(ORDER_TOOL).latin1()); + actionOrderTool->setToolTip(i18n("Selects the tab order tool")); + actionOrderTool->setWhatsThis(whatsThisFrom("Tools|Tab Order")); + actionOrderTool->setExclusiveGroup("tool"); + + KToolBar *tb = new KToolBar(this, "Tools"); + tb->setFullSize(false); + QWhatsThis::add(tb, i18n("<b>The Tools toolbar</b>%1").arg(toolbarHelp)); + + addToolBar(tb, i18n("Tools"), QMainWindow::DockTop, true); + actionPointerTool->plug(tb); + actionConnectTool->plug(tb); + actionOrderTool->plug(tb); + + QPopupMenu *mmenu = new QPopupMenu(this, "Tools"); + menuBar()->insertItem(i18n("&Tools"), mmenu); + actionPointerTool->plug(mmenu); + actionConnectTool->plug(mmenu); + actionOrderTool->plug(mmenu); + mmenu->insertSeparator(); + + for (int j = 0; j < WidgetDatabase::numWidgetGroups(); ++j) + { + QString grp = WidgetDatabase::widgetGroup(j); + if (!WidgetDatabase::isGroupVisible(grp) || WidgetDatabase::isGroupEmpty(grp)) + continue; + KToolBar *tb = new KToolBar(this, grp.latin1()); + tb->setFullSize(false); + bool plural = grp[(int) grp.length() - 1] == 's'; + if (plural) + { + QWhatsThis::add(tb, i18n("<b>The %1</b>%2").arg(grp).arg(toolbarHelp). + arg(i18n(" Click on a button to insert a single widget, " + "or double click to insert multiple %1.")).arg(grp)); + } else + { + QWhatsThis::add(tb, i18n("<b>The %1 Widgets</b>%2").arg(grp).arg(toolbarHelp). + arg(i18n(" Click on a button to insert a single %1 widget, " + "or double click to insert multiple widgets.")).arg(grp)); + } + addToolBar(tb, grp); + QPopupMenu *menu = new QPopupMenu(this, grp.latin1()); + mmenu->insertItem(grp, menu); + + for (int i = 0; i < WidgetDatabase::count(); ++i) + { + if (WidgetDatabase::group(i) != grp) + continue; // only widgets, i.e. not forms and temp stuff + KToggleAction *a = new KToggleAction(WidgetDatabase::className(i), KShortcut::null(), + this, SLOT(toolSelected()), actionCollection(), QString::number(i).latin1()); + a->setExclusiveGroup("tool"); + QString atext = WidgetDatabase::className(i); + if (atext[0] == 'Q') + atext = atext.mid(1); + while (atext.length() && atext[0] >= 'a' && atext[0] <= 'z') + atext = atext.mid(1); + if (atext.isEmpty()) + atext = WidgetDatabase::className(i); + a->setText(atext); + QString ttip = WidgetDatabase::toolTip(i); + a->setIconSet(WidgetDatabase::iconSet(i)); + a->setToolTip(ttip); + if (!WidgetDatabase::isWhatsThisLoaded()) + WidgetDatabase::loadWhatsThis(documentationPath()); + a->setToolTip(i18n("Insert a %1").arg(WidgetDatabase::className(i))); + + QString whats = i18n("<b>A %1</b>").arg(WidgetDatabase::className(i)); + if (!WidgetDatabase::whatsThis(i).isEmpty()) + whats += QString("<p>%1</p>").arg(WidgetDatabase::whatsThis(i)); + a->setWhatsThis(whats + i18n("<p>Double click on this tool to keep it selected.</p>")); + + if (grp != "KDE") + a->plug(tb); + a->plug(menu); + } + } + + // add external Kommander dialogs for Editor + m_editorTools.clear(); + QPopupMenu* editMenu = new QPopupMenu(this); + QStringList searchPaths = KGlobal::dirs()->findDirs("data", "kmdr-editor/editor"); + for (QStringList::ConstIterator it = searchPaths.begin(); it != searchPaths.end(); ++it) + { + if (!QFile::exists(*it)) + continue; + QDir dir(*it); + const QFileInfoList* fileList = dir.entryInfoList(QDir::DefaultFilter, QDir::DirsFirst | QDir::Name); + if (fileList) + for (QFileInfoListIterator fit(*fileList); fit.current(); ++fit) + { + QFileInfo* fi = fit.current(); + if (!fi->isFile() || fi->extension() != "kmdr") + continue; + QString name = fi->baseName(); + name = name.replace("_", " "); + editMenu->insertItem(name, this, SLOT(editExternalTool(int)), 0, m_editorTools.count()); + m_editorTools.append(fi->filePath()); + } + } + if (editMenu->count()) + mmenu->insertItem(i18n("Editor"), editMenu); + + resetTool(); +} + +void MainWindow::setupFileActions() +{ + fileTb = new KToolBar(this, "File"); + fileTb->setFullSize(false); + + QWhatsThis::add(fileTb, i18n("<b>The File toolbar</b>%1").arg(toolbarHelp)); + addToolBar(fileTb, i18n("File")); + fileMenu = new QPopupMenu(this, "File"); + menuBar()->insertItem(i18n("&File"), fileMenu); + + KAction *a = KStdAction::openNew(this, SLOT(fileNew()), actionCollection()); + a->setToolTip(i18n("Creates a new dialog")); + a->setWhatsThis(whatsThisFrom("File|New")); + a->plug(fileTb); + a->plug(fileMenu); + + a = KStdAction::open(this, SLOT(fileOpen()), actionCollection()); + a->setToolTip(i18n("Opens an existing dialog")); + a->setWhatsThis(whatsThisFrom("File|Open")); + a->plug(fileTb); + a->plug(fileMenu); + + actionRecent = KStdAction::openRecent(this, SLOT(fileOpenRecent(const KURL&)), actionCollection()); + actionRecent->setToolTip(i18n("Opens recently open file")); + actionRecent->plug(fileMenu); + + fileMenu->insertSeparator(); + a = KStdAction::close(this, SLOT(fileClose()), actionCollection()); + a->setToolTip(i18n("Closes the current dialog")); + a->setWhatsThis(whatsThisFrom("File|Close")); + connect(this, SIGNAL(hasActiveWindow(bool)), a, SLOT(setEnabled(bool))); + a->plug(fileMenu); + + fileMenu->insertSeparator(); + + a = KStdAction::save(this, SLOT(fileSave()), actionCollection()); + a->setToolTip(i18n("Saves the current dialog")); + a->setWhatsThis(whatsThisFrom("File|Save")); + connect(this, SIGNAL(hasActiveWindow(bool)), a, SLOT(setEnabled(bool))); + a->plug(fileTb); + a->plug(fileMenu); + + a = KStdAction::saveAs(this, SLOT(fileSaveAs()), actionCollection()); + a->setToolTip(i18n("Saves the current dialog with a new filename")); + a->setWhatsThis(whatsThisFrom("File|Save As")); + connect(this, SIGNAL(hasActiveWindow(bool)), a, SLOT(setEnabled(bool))); + a->plug(fileMenu); + + a = new KAction(i18n("Save All"), "save_all", KShortcut::null(), this, SLOT(fileSaveAll()), + actionCollection(), "file_close_all"); + a->setToolTip(i18n("Saves all open dialogs")); + a->setWhatsThis(whatsThisFrom("File|Save All")); + connect(this, SIGNAL(hasActiveWindow(bool)), a, SLOT(setEnabled(bool))); + a->plug(fileMenu); + + fileMenu->insertSeparator(); + + a = KStdAction::quit(kapp, SLOT(closeAllWindows()), actionCollection()); + a->setToolTip(i18n("Quits the application and prompts to save any changed dialogs")); + a->setWhatsThis(whatsThisFrom("File|Exit")); + a->plug(fileMenu); +} + + +void MainWindow::setupRunActions() +{ + QPopupMenu *menu = new QPopupMenu(this, "Run"); + menuBar()->insertItem(i18n("&Run"), menu); + + KAction* a = new KAction(i18n("Run Dialog"), "run", CTRL + Key_R, + this, SLOT(runForm()), actionCollection(), "run"); + a->setToolTip(i18n("Executes dialog")); + a->setWhatsThis(whatsThisFrom("Run|Run dialog")); + connect(this, SIGNAL(hasActiveForm(bool)), a, SLOT(setEnabled(bool))); + a->plug(fileTb); + a->plug(menu); + // add KDE4 executor + + KAction* b = new KAction(i18n("Run Dialog K4"), "launch", CTRL + SHIFT + Qt::Key_R, + this, SLOT(runForm4()), actionCollection(), "run4"); + b->setToolTip(i18n("Executes dialog in KDE4")); + b->setWhatsThis(whatsThisFrom("Run|Run dialog")); + connect(this, SIGNAL(hasActiveForm(bool)), b, SLOT(setEnabled(bool))); + b->plug(menu); +} + +void MainWindow::setupWindowActions() +{ + static bool windowActionsSetup = false; + if (!windowActionsSetup) + { + windowActionsSetup = true; + + KAction* actionWindowTile = new KAction(i18n("Tile"), KShortcut::null(), qworkspace, SLOT(tile()), + actionCollection(), "window_tile"); + actionWindowTile->setToolTip(i18n("Tiles the windows so that they are all visible")); + actionWindowTile->setWhatsThis(whatsThisFrom("Window|Tile")); + + KAction* actionWindowCascade = new KAction(i18n("Cascade"), KShortcut::null(), qworkspace, SLOT(cascade()), + actionCollection(), "window_cascade"); + actionWindowCascade->setToolTip(i18n("Cascades the windows so that all their title bars are visible")); + actionWindowCascade->setWhatsThis(whatsThisFrom("Window|Cascade")); + + KAction* actionWindowClose = new KAction(i18n("Cascade"), KShortcut::null(), qworkspace, SLOT(closeActiveWindow()), + actionCollection(), "window_close"); + actionWindowClose->setToolTip(i18n("Closes the active window")); + actionWindowClose->setWhatsThis(whatsThisFrom("Window|Close")); + + KAction* actionWindowCloseAll = new KAction(i18n("Close All"), KShortcut::null(), qworkspace, + SLOT(closeAllWindows()), actionCollection(), "window_close_all"); + actionWindowCloseAll->setToolTip(i18n("Closes all form windows")); + actionWindowCloseAll->setWhatsThis(whatsThisFrom("Window|Close All")); + + KAction* actionWindowNext = new KAction(i18n("Next"), Key_F6, qworkspace, + SLOT(activateNextWindow()), actionCollection(), "window_next"); + actionWindowNext->setToolTip(i18n("Activates the next window")); + actionWindowNext->setWhatsThis(whatsThisFrom("Window|Next")); + + KAction* actionWindowPrevious = new KAction(i18n("Previous"), CTRL + SHIFT + Key_F6, qworkspace, + SLOT(activatePreviousWindow()), actionCollection(), "window_prev"); + actionWindowPrevious->setToolTip(i18n("Activates the previous window")); + actionWindowPrevious->setWhatsThis(whatsThisFrom("Window|Previous")); + + windowMenu = new KPopupMenu(this, "Window"); + menuBar()->insertItem(i18n("&Window"), windowMenu); + connect(windowMenu, SIGNAL(aboutToShow()), this, SLOT(setupWindowActions())); + + actionWindowClose->plug(windowMenu); + actionWindowCloseAll->plug(windowMenu); + windowMenu->insertSeparator(); + actionWindowNext->plug(windowMenu); + actionWindowPrevious->plug(windowMenu); + windowMenu->insertSeparator(); + actionWindowTile->plug(windowMenu); + actionWindowCascade->plug(windowMenu); + windowMenu->insertSeparator(); + windowMenu->insertItem(i18n("Vie&ws"), dockHideShowMenu()); + windowMenu->insertItem(i18n("Tool&bars"), createDockWindowMenu(OnlyToolBars)); + } + + //FIXME find a better way to remove only menu items linked to dialogs/forms + while (windowMenu->count() > 11) + windowMenu->removeItemAt(windowMenu->count() - 1); + + QWidgetList windows = qworkspace->windowList(); + if (windows.count() && formWindow()) + windowMenu->insertSeparator(); + int j = 0; + for (int i = 0; i < int (windows.count()); ++i) + { + QWidget *w = windows.at(i); + if (!w->inherits("FormWindow") && !w->inherits("SourceEditor")) + continue; + j++; + QString itemText; + if (j < 10) + itemText = QString("&%1 ").arg(j); + if (w->inherits("FormWindow")) + itemText += w->name(); + else + itemText += w->caption(); + + int id = windowMenu->insertItem(itemText, this, SLOT(windowsMenuActivated(int))); + windowMenu->setItemParameter(id, i); + windowMenu->setItemChecked(id, qworkspace->activeWindow() == windows.at(i)); + } +} + + +void MainWindow::setupSettingsActions() +{ + KPopupMenu *settings = new KPopupMenu(this, "Settings"); + KAction* a = KStdAction::keyBindings(this, SLOT(editShortcuts()), actionCollection()); + a->setToolTip(i18n("Opens a dialog to change shortcuts")); + a->plug(settings); + + a = new KAction(i18n("Configure &Plugins..."), KShortcut::null(), this, SLOT(editPlugins()), + actionCollection(), "configure_plugins"); + a->setToolTip(i18n("Opens a dialog to configure plugins")); + a->plug(settings); + + a = new KAction(i18n("&Configure Editor..."), KShortcut::null(), this, SLOT(configureEditor()), + actionCollection(), "configure_editor"); + a->setToolTip(i18n("Configure various aspects of this editor.")); + a->plug(settings); + + a = KStdAction::preferences(this, SLOT(editPreferences()), actionCollection()); + a->setToolTip(i18n("Opens a dialog to change preferences")); + a->setWhatsThis(whatsThisFrom("Edit|Preferences")); + a->plug(settings); + + menuBar()->insertItem( i18n("&Settings"), settings); +} + +void MainWindow::setupHelpActions() +{ + KPopupMenu *help = helpMenu(); + menuBar()->insertItem( i18n("&Help"), help); +} + + +void MainWindow::fileNew() +{ + statusBar()->message(i18n("Create a new dialog...")); + NewForm dlg(this, QString::null); + dlg.exec(); + statusBar()->clear(); +} + +void MainWindow::fileClose() +{ + QWidget *w = qworkspace->activeWindow(); + if (w->inherits("FormWindow")) + { + emit removedFormFile(((FormWindow *) w)->formFile()); + ((FormWindow *) w)->formFile()->close(); + } +} + +void MainWindow::fileOpen() // as called by the menu +{ + fileOpen(""); +} + +void MainWindow::fileOpen(const QString & fn) +{ + statusBar()->message(i18n("Open a file...")); + QStringList additionalSources; + + QStringList filenames; + if (fn.isEmpty()) + filenames = KFileDialog::getOpenFileNames(QString::null, i18n("*.kmdr|Kommander Files"), this, i18n("Open Files")); + else + filenames << fn; + for (QStringList::ConstIterator fit = filenames.constBegin(); fit != filenames.constEnd(); ++fit) + { + QString filename = *fit; + if (!filename.isEmpty()) + { + QFileInfo fi(filename); + if (fi.exists() && openFormWindow(filename)) + actionRecent->addURL(filename); + } + } +} + + + +FormWindow *MainWindow::openFormWindow(const QString &filename, bool validFileName, FormFile *ff) +{ + if (filename.isEmpty()) + return 0; + + bool makeNew = false; + + if (!QFile::exists(filename)) + { + makeNew = true; + } else + { + QFile f(filename); + f.open(IO_ReadOnly); + QTextStream ts(&f); + makeNew = ts.read().length() < 2; + } + if (!makeNew) + { + statusBar()->message(i18n("Reading file '%1'...").arg(filename)); + if (QFile::exists(filename)) + { + QApplication::setOverrideCursor(WaitCursor); + Resource resource(this); + if (!ff) + ff = new FormFile(filename, false); + bool b = resource.load(ff) && (FormWindow *) resource.widget(); + if (!validFileName && resource.widget()) + ((FormWindow *) resource.widget())->setFileName(QString::null); + QApplication::restoreOverrideCursor(); + if (b) + { + statusBar()->message(i18n("Loaded file '%1'").arg(filename), 3000); + } else + { + emit removedFormFile(ff); + ff->close(); + delete ff; + statusBar()->message(i18n("Could not load file '%1'").arg(filename), 5000); + KMessageBox::information(this, i18n("Could not load file '%1'").arg(filename), i18n("Load File")); + } + return (FormWindow *) resource.widget(); + } else + { + statusBar()->clear(); + } + } else + { + fileNew(); + if (formWindow()) + formWindow()->setFileName(filename); + return formWindow(); + } + return 0; +} + +bool MainWindow::fileSave() +{ + return fileSaveForm(); +} + +bool MainWindow::fileSaveForm() +{ + FormWindow* fw = 0; + if (!fw) + fw = formWindow(); + if (!fw || !fw->formFile()->save()) + return false; + QApplication::restoreOverrideCursor(); + return true; +} + +bool MainWindow::fileSaveAs() +{ + statusBar()->message(i18n("Enter a filename...")); + + QWidget *w = qworkspace->activeWindow(); + if (!w) + return true; + if (w->inherits("FormWindow")) + return ((FormWindow *) w)->formFile()->saveAs(); + return false; +} + +void MainWindow::fileSaveAll() +{ + QWidgetList windows = qworkspace->windowList(QWorkspace::StackingOrder); + for (int i = 0; i < (int)windows.count(); ++i) + { + FormWindow* fw = dynamic_cast<FormWindow*>(windows.at(i)); + if (fw) + fw->formFile()->save(); + } +} + +static bool inSaveAllTemp = false; + +void MainWindow::saveAllTemp() +{ + if (inSaveAllTemp) + return; + inSaveAllTemp = true; + statusBar()->message(i18n("Qt Designer is crashing. Attempting to save files...")); + QWidgetList windows = qWorkspace()->windowList(); + QString baseName = QDir::homeDirPath() + "/.designer/saved-form-"; + int i = 1; + for (QWidget * w = windows.first(); w; w = windows.next()) + { + if (!w->inherits("FormWindow")) + continue; + + QString fn = baseName + QString::number(i++) + ".kmdr"; + ((FormWindow *) w)->setFileName(fn); + ((FormWindow *) w)->formFile()->save(); + } + inSaveAllTemp = false; +} + +void MainWindow::fileCreateTemplate() +{ + CreateTemplate dia(this, 0, true); + + int i = 0; + for (i = 0; i < WidgetDatabase::count(); ++i) + { + if (WidgetDatabase::isForm(i) && WidgetDatabase::widgetGroup(i) != "Temp") + { + dia.listClass->insertItem(WidgetDatabase::className(i)); + } + } + for (i = 0; i < WidgetDatabase::count(); ++i) + { + if (WidgetDatabase::isContainer(i) && !WidgetDatabase::isForm(i) && + WidgetDatabase::className(i) != "QTabWidget" && WidgetDatabase::widgetGroup(i) != "Temp") + { + dia.listClass->insertItem(WidgetDatabase::className(i)); + } + } + + dia.editName->setText(i18n("NewTemplate")); + connect(dia.buttonCreate, SIGNAL(clicked()), this, SLOT(createNewTemplate())); + dia.exec(); +} + +void MainWindow::createNewTemplate() +{ + CreateTemplate *dia = (CreateTemplate *) sender()->parent(); + QString fn = dia->editName->text(); + QString cn = dia->listClass->currentText(); + if (fn.isEmpty() || cn.isEmpty()) + { + KMessageBox::information(this, i18n("Could not create the template"), i18n("Create Template")); + return; + } + + QStringList templRoots; + const char *qtdir = getenv("QTDIR"); + if (qtdir) + templRoots << qtdir; +#ifdef QT_INSTALL_PREFIX + templRoots << QT_INSTALL_PREFIX; +#endif +#ifdef QT_INSTALL_DATA + templRoots << QT_INSTALL_DATA; +#endif + if (qtdir) //try the tools/designer directory last! + templRoots << QString(qtdir) + "/tools/designer"; + QFile f; + for (QStringList::Iterator it = templRoots.begin(); it != templRoots.end(); ++it) + { + if (QFile::exists((*it) + "/templates/")) + { + QString tmpfn = (*it) + "/templates/" + fn + ".kmdr"; + f.setName(tmpfn); + if (f.open(IO_WriteOnly)) + break; + } + } + if (!f.isOpen()) + { + KMessageBox::information(this, i18n("Could not create the template"), i18n("Create Template")); + return; + } + QTextStream ts(&f); + + ts << "<!DOCTYPE UI><UI>" << endl; + ts << "<widget>" << endl; + ts << "<class>" << cn << "</class>" << endl; + ts << "<property stdset=\"1\">" << endl; + ts << " <name>name</name>" << endl; + ts << " <cstring>" << cn << "Form</cstring>" << endl; + ts << "</property>" << endl; + ts << "<property stdset=\"1\">" << endl; + ts << " <name>geometry</name>" << endl; + ts << " <rect>" << endl; + ts << " <width>300</width>" << endl; + ts << " <height>400</height>" << endl; + ts << " </rect>" << endl; + ts << "</property>" << endl; + ts << "</widget>" << endl; + ts << "</UI>" << endl; + + dia->editName->setText(i18n("NewTemplate")); + + f.close(); +} + +void MainWindow::editUndo() +{ + if (formWindow()) + formWindow()->undo(); +} + +void MainWindow::editRedo() +{ + if (formWindow()) + formWindow()->redo(); +} + +void MainWindow::editCut() +{ + editCopy(); + editDelete(); +} + +void MainWindow::editCopy() +{ + if (formWindow()) + qApp->clipboard()->setText(formWindow()->copy()); +} + +void MainWindow::editPaste() +{ + if (!formWindow()) + return; + + QWidget *w = formWindow()->mainContainer(); + QWidgetList l(formWindow()->selectedWidgets()); + if (l.count() == 1) + { + w = l.first(); + if (WidgetFactory::layoutType(w) != WidgetFactory::NoLayout || + (!WidgetDatabase::isContainer(WidgetDatabase::idFromClassName(WidgetFactory:: + classNameOf(w))) && w != formWindow()->mainContainer())) + w = formWindow()->mainContainer(); + } + + if (w && WidgetFactory::layoutType(w) == WidgetFactory::NoLayout) + { + formWindow()->paste(qApp->clipboard()->text(), WidgetFactory::containerOfWidget(w)); + hierarchyView->widgetInserted(0); + formWindow()->commandHistory()->setModified(true); + } else + { + KMessageBox::information(this, i18n("Cannot paste widgets. Designer could not find a container\n" + "to paste into which does not contain a layout. Break the layout\n" + "of the container you want to paste into and select this container\n" + "and then paste again."), i18n("Paste Error")); + } +} + +void MainWindow::editDelete() +{ + if (formWindow()) + formWindow()->deleteWidgets(); +} + +void MainWindow::editSelectAll() +{ + if (formWindow()) + formWindow()->selectAll(); +} + +void MainWindow::editLower() +{ + if (formWindow()) + formWindow()->lowerWidgets(); +} + +void MainWindow::editRaise() +{ + if (formWindow()) + formWindow()->raiseWidgets(); +} + +void MainWindow::editAdjustSize() +{ + if (formWindow()) + formWindow()->editAdjustSize(); +} + +void MainWindow::editLayoutHorizontal() +{ + if (layoutChilds) + editLayoutContainerHorizontal(); + else if (layoutSelected && formWindow()) + formWindow()->layoutHorizontal(); +} + +void MainWindow::editLayoutVertical() +{ + if (layoutChilds) + editLayoutContainerVertical(); + else if (layoutSelected && formWindow()) + formWindow()->layoutVertical(); +} + +void MainWindow::editLayoutHorizontalSplit() +{ + if (layoutChilds) + ; // no way to do that + else if (layoutSelected && formWindow()) + formWindow()->layoutHorizontalSplit(); +} + +void MainWindow::editLayoutVerticalSplit() +{ + if (layoutChilds) + ; // no way to do that + else if (layoutSelected && formWindow()) + formWindow()->layoutVerticalSplit(); +} + +void MainWindow::editLayoutGrid() +{ + if (layoutChilds) + editLayoutContainerGrid(); + else if (layoutSelected && formWindow()) + formWindow()->layoutGrid(); +} + +void MainWindow::editLayoutContainerVertical() +{ + if (!formWindow()) + return; + QWidget *w = formWindow()->mainContainer(); + QWidgetList l(formWindow()->selectedWidgets()); + if (l.count() == 1) + w = l.first(); + if (w) + formWindow()->layoutVerticalContainer(w); +} + +void MainWindow::editLayoutContainerHorizontal() +{ + if (!formWindow()) + return; + QWidget *w = formWindow()->mainContainer(); + QWidgetList l(formWindow()->selectedWidgets()); + if (l.count() == 1) + w = l.first(); + if (w) + formWindow()->layoutHorizontalContainer(w); +} + +void MainWindow::editLayoutContainerGrid() +{ + if (!formWindow()) + return; + QWidget *w = formWindow()->mainContainer(); + QWidgetList l(formWindow()->selectedWidgets()); + if (l.count() == 1) + w = l.first(); + if (w) + formWindow()->layoutGridContainer(w); +} + + +void MainWindow::editBreakLayout() +{ + if (!formWindow() || !breakLayout) + { + return; + } + QWidget *w = formWindow()->mainContainer(); + if (formWindow()->currentWidget()) + w = formWindow()->currentWidget(); + if (WidgetFactory::layoutType(w) != WidgetFactory::NoLayout || + w->parentWidget() && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) + { + formWindow()->breakLayout(w); + return; + } + else + { + QWidgetList widgets = formWindow()->selectedWidgets(); + for (w = widgets.first(); w; w = widgets.next()) + { + if (WidgetFactory::layoutType(w) != WidgetFactory::NoLayout || + w->parentWidget() + && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) + break; + } + if (w) + { + formWindow()->breakLayout(w); + return; + } + } + + w = formWindow()->mainContainer(); + if (WidgetFactory::layoutType(w) != WidgetFactory::NoLayout || + w->parentWidget() && WidgetFactory::layoutType(w->parentWidget()) != WidgetFactory::NoLayout) + { + formWindow()->breakLayout(w); + } +} + +void MainWindow::editAccels() +{ + if (formWindow()) + formWindow()->checkAccels(); +} + + +void MainWindow::editConnections() +{ + if (!formWindow()) + return; + + statusBar()->message(i18n("Edit connections...")); + ConnectionEditor editor(this, 0, 0, formWindow()); + editor.exec(); + statusBar()->clear(); +} + +void MainWindow::editFindGlobal() +{ + if (!formWindow()) + return; + +} + + +void MainWindow::editFormSettings() +{ + if (!formWindow()) + return; + + statusBar()->message(i18n("Edit the current form's settings...")); + FormSettings dlg(this, formWindow()); + dlg.exec(); + statusBar()->clear(); +} + +void MainWindow::editPreferences() +{ + statusBar()->message(i18n("Edit preferences...")); + Preferences *dia = new Preferences(this, 0, true); + prefDia = dia; + connect(dia->helpButton, SIGNAL(clicked()), MainWindow::self, SLOT(showDialogHelp())); + dia->buttonColor->setEditor(StyledButton::ColorEditor); + dia->buttonPixmap->setEditor(StyledButton::PixmapEditor); + dia->checkBoxShowGrid->setChecked(sGrid); + dia->checkBoxGrid->setChecked(snGrid); + dia->spinGridX->setValue(grid().x()); + dia->spinGridY->setValue(grid().y()); + dia->checkBoxWorkspace->setChecked(restoreConfig); + dia->checkBoxBigIcons->setChecked(usesBigPixmaps()); + dia->checkBoxBigIcons->hide(); // ##### disabled for now + dia->checkBoxTextLabels->setChecked(usesTextLabel()); + dia->buttonColor->setColor(qworkspace->backgroundColor()); + if (qworkspace->backgroundPixmap()) + dia->buttonPixmap->setPixmap(*qworkspace->backgroundPixmap()); + if (backPix) + dia->radioPixmap->setChecked(true); + else + dia->radioColor->setChecked(true); + dia->checkBoxSplash->setChecked(splashScreen); + dia->editDocPath->setText(docPath); + dia->checkAutoEdit->setChecked(!databaseAutoEdit); + connect(dia->buttonDocPath, SIGNAL(clicked()), this, SLOT(chooseDocPath())); + + if (dia->exec() == QDialog::Accepted) + { + setSnapGrid(dia->checkBoxGrid->isChecked()); + setShowGrid(dia->checkBoxShowGrid->isChecked()); + setGrid(QPoint(dia->spinGridX->value(), dia->spinGridY->value())); + restoreConfig = dia->checkBoxWorkspace->isChecked(); + setUsesBigPixmaps(false /*dia->checkBoxBigIcons->isChecked() */ ); // ### disable for now + setUsesTextLabel(dia->checkBoxTextLabels->isChecked()); + if (dia->radioPixmap->isChecked() && dia->buttonPixmap->pixmap()) + { + qworkspace->setBackgroundPixmap(*dia->buttonPixmap->pixmap()); + backPix = true; + } else + { + qworkspace->setBackgroundColor(dia->buttonColor->color()); + backPix = false; + } + splashScreen = dia->checkBoxSplash->isChecked(); + docPath = dia->editDocPath->text(); + databaseAutoEdit = !dia->checkAutoEdit->isChecked(); + } + delete dia; + prefDia = 0; + statusBar()->clear(); +} + +void MainWindow::editShortcuts() +{ + KKeyDialog K(false); + K.configure(actionCollection()); +} + +void MainWindow::editPlugins() +{ + KProcess process; + process << "kmdr-plugins"; + process.start(KProcess::Block); +} + +void MainWindow::configureEditor() +{ + KTextEditor::Document *doc = KTextEditor::createDocument ("libkatepart", 0L, "KTextEditor::Document"); + KTextEditor::View *view = doc->createView(0); + KTextEditor::ConfigInterface *configIf = KTextEditor::configInterface(doc); + configIf->configDialog(); + delete doc; +} + +void MainWindow::editExternalTool(int id) +{ + KProcess* process = new KProcess; + (*process) << "kmdr-executor" << m_editorTools[id]; + connect(process, SIGNAL(processExited(KProcess*)), SLOT(editToolExited(KProcess*))); + connect(process, SIGNAL(receivedStdout(KProcess*, char*, int)), SLOT(editToolOutput(KProcess*, char*, int))); + m_toolOutput = '\0'; + process->start(KProcess::NotifyOnExit, KProcess::Stdout); +} + +void MainWindow::editToolExited(KProcess* process) +{ + delete process; +} + +void MainWindow::editToolOutput(KProcess*, char* buffer, int buflen) +{ + m_toolOutput += QString::fromLocal8Bit(buffer, buflen); +} + +void MainWindow::chooseDocPath() +{ + if (!prefDia) + return; + QString fn = KFileDialog::getExistingDirectory(QString::null, this); + if (!fn.isEmpty()) + prefDia->editDocPath->setText(fn); +} + + diff --git a/kommander/editor/messagelog.cpp b/kommander/editor/messagelog.cpp new file mode 100644 index 00000000..952dd19f --- /dev/null +++ b/kommander/editor/messagelog.cpp @@ -0,0 +1,149 @@ +/*************************************************************************** + messagelog.cpp - Kommander dialog output + ------------------- + copyright : (C) 2004 Michal Rudolf <mrudolf@kdewebdwev.org> + + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "messagelog.h" + +#include <kapplication.h> +#include <kfiledialog.h> +#include <kiconloader.h> +#include <klistbox.h> +#include <kmessagebox.h> +#include <kpopupmenu.h> +#include <kprocess.h> + +#include <qclipboard.h> +#include <qfile.h> +#include <qtextstream.h> + +MessageLog::MessageLog(QWidget* parent, const char* name) : QTabWidget(parent, name) +{ + m_popupMenu = new KPopupMenu(this); + m_popupMenu->insertItem(SmallIconSet("editcopy"), i18n("Copy Current &Line"), this, SLOT(copyLine())); + m_popupMenu->insertItem(SmallIconSet("editcopy"), i18n("&Copy Content"), this, SLOT(copyContent())); + m_popupMenu->insertItem(SmallIconSet("filesaveas"), i18n("&Save As..."), this, SLOT(saveToFile())); + m_popupMenu->insertSeparator(); + m_popupMenu->insertItem(SmallIconSet("editclear"), i18n("Clear"), this, SLOT(clearContent())); + + for (int i = 0; i < m_listCount; i++) + { + m_lists[i] = new KListBox(this); + addTab(m_lists[i], m_listNames[i]); + m_seenEOL[i] = false; + connect(m_lists[i], SIGNAL(contextMenuRequested(QListBoxItem*, const QPoint&)), + this, SLOT(showMenu(QListBoxItem*, const QPoint&))); + } +} + +MessageLog::~MessageLog() +{ +} + +void MessageLog::insertItem(InfoType i, QString text) +{ + bool seenEOL = text.endsWith("\n"); + if (seenEOL) + text.truncate(text.length() - 1); + QStringList items(QStringList::split('\n', text)); + for (QStringList::ConstIterator it = items.begin(); it != items.end(); ++it ) + { + if (!m_seenEOL[i] && m_lists[i]->count() && it == items.begin()) + m_lists[i]->changeItem(m_lists[i]->text(m_lists[i]->count() - 1) + *it, m_lists[i]->count() - 1); + else + m_lists[i]->insertItem(*it); + } + m_seenEOL[i] = seenEOL; + m_lists[i]->setCurrentItem(m_lists[i]->count()-1); + m_lists[i]->ensureCurrentVisible(); +} + +QString MessageLog::content() +{ + QString p_content; + KListBox* list = m_lists[currentPageIndex()]; + for (uint i=0; i < list->count(); i++) + p_content.append(list->text(i) + "\n"); + return p_content; +} + +void MessageLog::clear(InfoType i) +{ + if (i != All) + { + m_lists[(int)i]->clear(); + m_seenEOL[i] = false; + } + else + for (int i = 0; i < m_listCount; i++) + clear((InfoType)i); +} + +void MessageLog::receivedStdout(KProcess*, char* buffer, int buflen) +{ + insertItem(Stdout, QString::fromLocal8Bit(buffer, buflen)); +} + +void MessageLog::receivedStderr(KProcess*, char* buffer, int buflen) +{ + insertItem(Stderr, QString::fromLocal8Bit(buffer, buflen)); +} + +void MessageLog::clearContent() +{ + clear((InfoType)currentPageIndex()); +} + +void MessageLog::copyLine() +{ + if (m_lists[currentPageIndex()]->count()) + kapp->clipboard()->setText(m_lists[currentPageIndex()]->currentText(), QClipboard::Clipboard); +} + +void MessageLog::copyContent() +{ + kapp->clipboard()->setText(content(), QClipboard::Clipboard); +} + +void MessageLog::saveToFile() +{ + KURL url=KFileDialog::getSaveURL(QDir::currentDirPath(), + i18n("*.log|Log Files (*.log)\n*|All Files"), this, i18n("Save Log File")); + if (url.isEmpty()) + return; + QFileInfo fileinfo(url.path()); + if (fileinfo.exists() && KMessageBox::warningContinueCancel(0, + i18n("<qt>File<br><b>%1</b><br>already exists. Overwrite it?</qt>") + .arg(url.path()), QString::null, i18n("Overwrite")) == KMessageBox::Cancel) + return; + QFile file(url.path()); + if (!file.open(IO_WriteOnly)) { + KMessageBox::error(0, i18n("<qt>Cannot save log file<br><b>%1</b></qt>") + .arg(url.url())); + return; + } + QTextStream textfile(&file); + textfile << content(); + file.close(); +} + +void MessageLog::showMenu(QListBoxItem*, const QPoint& l_point) +{ + m_popupMenu->exec(l_point); +} + +QString MessageLog::m_listNames[m_listCount] = {i18n("Stdout"), i18n("Stderr")}; + +#include "messagelog.moc" + diff --git a/kommander/editor/messagelog.h b/kommander/editor/messagelog.h new file mode 100644 index 00000000..6b071cf4 --- /dev/null +++ b/kommander/editor/messagelog.h @@ -0,0 +1,55 @@ +/*************************************************************************** + messagelog.h - Kommander dialog output + ------------------- + copyright : (C) 2004 Michal Rudolf <mrudolf@kdewebdwev.org> + + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef MESSAGELOG_H +#define MESSAGELOG_H + +#include <qtabwidget.h> + +#include <klocale.h> + +class KListBox; +class KProcess; +class KPopupMenu; +class QListBoxItem; + +class MessageLog : public QTabWidget +{ + Q_OBJECT +public: + enum InfoType {Stdout, Stderr, All}; + MessageLog(QWidget* parent = 0, const char* name = 0); + ~MessageLog(); + virtual void insertItem(InfoType i, QString text); + virtual void clear(InfoType i = All); + QString content(); +public slots: + void receivedStdout(KProcess *proc, char *buffer, int buflen); + void receivedStderr(KProcess *proc, char *buffer, int buflen); + void clearContent(); + void copyLine(); + void copyContent(); + void saveToFile(); + void showMenu(QListBoxItem*, const QPoint& l_point); +private: + static const int m_listCount = 2; + static QString m_listNames[m_listCount]; + KListBox* m_lists[m_listCount]; + bool m_seenEOL[m_listCount]; + KPopupMenu* m_popupMenu; +}; + +#endif diff --git a/kommander/editor/metadatabase.cpp b/kommander/editor/metadatabase.cpp new file mode 100644 index 00000000..b902f2f4 --- /dev/null +++ b/kommander/editor/metadatabase.cpp @@ -0,0 +1,1219 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#include "metadatabase.h" +#include "widgetfactory.h" +#include "formwindow.h" +#include "parser.h" +#include "widgetdatabase.h" +#include "formfile.h" + +#include <qapplication.h> +#include <qobject.h> +#include <qlayout.h> +#include <qptrdict.h> +#include <qobjectlist.h> +#include <qstrlist.h> +#include <qmetaobject.h> +#include <qwidgetlist.h> +#include <qmainwindow.h> +#include <qregexp.h> +#include <private/qpluginmanager_p.h> +#include <qdatetime.h> +#include <qfile.h> +#include <qfileinfo.h> +#include <qtextstream.h> + +#include <stdlib.h> + + +class MetaDataBaseRecord +{ +public: + QObject *object; + QStringList changedProperties; + QMap<QString,QVariant> fakeProperties; + QMap<QString, QString> propertyComments; + int spacing, margin; + QValueList<MetaDataBase::Connection> connections; + QValueList<MetaDataBase::Slot> slotList; + QValueList<MetaDataBase::Include> includes; + QStringList forwards, variables, sigs; + QWidgetList tabOrder; + MetaDataBase::MetaInfo metaInfo; + QCursor cursor; + QMap<int, QString> pixmapArguments; + QMap<int, QString> pixmapKeys; + QMap<QString, QString> columnFields; + QMap<QString, QStringList> eventFunctions; + QMap<QString, QString> functionBodies; + QMap<QString, QString> functionComments; + QValueList<int> breakPoints; + QString exportMacro; +}; + +static QPtrDict<MetaDataBaseRecord> *db = 0; +static QPtrList<MetaDataBase::CustomWidget> *cWidgets = 0; +static bool doUpdate = true; +static QStringList langList; +static QStringList editorLangList; + +/*! + \class MetaDataBase metadatabase.h + \brief Database which stores meta data of widgets + + The MetaDataBase stores meta information of widgets, which are not + stored directly in widgets (properties). This is e.g. the + information which properties have been modified. +*/ + +MetaDataBase::MetaDataBase() +{ +} + +inline void setupDataBase() +{ + if ( !db || !cWidgets ) { + db = new QPtrDict<MetaDataBaseRecord>( 1481 ); + db->setAutoDelete( true ); + cWidgets = new QPtrList<MetaDataBase::CustomWidget>; + cWidgets->setAutoDelete( true ); + } +} + +void MetaDataBase::clearDataBase() +{ + delete db; + db = 0; + delete cWidgets; + cWidgets = 0; +} + +void MetaDataBase::addEntry( QObject *o ) +{ + if ( !o ) + return; + setupDataBase(); + if ( db->find( o ) ) + return; + MetaDataBaseRecord *r = new MetaDataBaseRecord; + r->object = o; + r->spacing = r->margin = -1; + db->insert( (void*)o, r ); + + WidgetFactory::initChangedProperties( o ); +} + +void MetaDataBase::removeEntry( QObject *o ) +{ + setupDataBase(); + db->remove( o ); +} + +void MetaDataBase::setPropertyChanged( QObject *o, const QString &property, bool changed ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + if ( changed ) { + if ( r->changedProperties.findIndex( property ) == -1 ) + r->changedProperties.append( property ); + } else { + if ( r->changedProperties.findIndex( property ) != -1 ) + r->changedProperties.remove( property ); + } + + if ( doUpdate && + ( property == "hAlign" || property == "vAlign" || property == "wordwrap" ) ) { + doUpdate = false; + setPropertyChanged( o, "alignment", changed || + isPropertyChanged( o, "hAlign" ) || + isPropertyChanged( o, "vAlign" ) || + isPropertyChanged( o, "wordwrap" ) ); + doUpdate = true; + } + + if ( doUpdate && property == "alignment" ) { + doUpdate = false; + setPropertyChanged( o, "hAlign", changed ); + setPropertyChanged( o, "vAlign", changed ); + setPropertyChanged( o, "wordwrap", changed ); + doUpdate = true; + } +} + +bool MetaDataBase::isPropertyChanged( QObject *o, const QString &property ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return false; + } + + return r->changedProperties.findIndex( property ) != -1; +} + +QStringList MetaDataBase::changedProperties( QObject *o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QStringList(); + } + + QStringList lst( r->changedProperties ); + return lst; +} + +void MetaDataBase::setPropertyComment( QObject *o, const QString &property, const QString &comment ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->propertyComments.insert( property, comment ); +} + +QString MetaDataBase::propertyComment( QObject *o, const QString &property ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QString::null; + } + + return *r->propertyComments.find( property ); +} + +void MetaDataBase::setFakeProperty( QObject *o, const QString &property, const QVariant& value ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + r->fakeProperties[property] = value; +} + +QVariant MetaDataBase::fakeProperty( QObject * o, const QString &property) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QVariant(); + } + QMap<QString, QVariant>::Iterator it = r->fakeProperties.find( property ); + if ( it != r->fakeProperties.end() ) + return r->fakeProperties[property]; + return WidgetFactory::defaultValue( o, property ); + +} + +QMap<QString,QVariant>* MetaDataBase::fakeProperties( QObject* o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return 0; + } + return &r->fakeProperties; +} + +void MetaDataBase::setSpacing( QObject *o, int spacing ) +{ + if ( !o ) + return; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r || !o->isWidgetType() ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->spacing = spacing; + QLayout * layout = 0; + WidgetFactory::layoutType( (QWidget*)o, layout ); + if ( layout ) + layout->setSpacing( spacing ); +} + +int MetaDataBase::spacing( QObject *o ) +{ + if ( !o ) + return -1; + setupDataBase(); + if ( o->inherits( "QMainWindow" ) ) + o = ( (QMainWindow*)o )->centralWidget(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r || !o->isWidgetType() ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return -1; + } + + return r->spacing; +} + +void MetaDataBase::setMargin( QObject *o, int margin ) +{ + if ( !o ) + return; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r || !o->isWidgetType() ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->margin = margin; + QLayout * layout = 0; + WidgetFactory::layoutType( (QWidget*)o, layout ); + if ( margin < 1 ) + margin = 1; + if ( layout ) + layout->setMargin( margin ); +} + +int MetaDataBase::margin( QObject *o ) +{ + if ( !o ) + return -1; + setupDataBase(); + if ( o->inherits( "QMainWindow" ) ) + o = ( (QMainWindow*)o )->centralWidget(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r || !o->isWidgetType() ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return -1; + } + + return r->margin; +} + +void MetaDataBase::addConnection( QObject *o, QObject *sender, const QCString &signal, + QObject *receiver, const QCString &slot ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + Connection conn; + conn.sender = sender; + conn.signal = signal; + conn.receiver = receiver; + conn.slot = slot; + r->connections.append( conn ); +} + +void MetaDataBase::removeConnection( QObject *o, QObject *sender, const QCString &signal, + QObject *receiver, const QCString &slot ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + for ( QValueList<Connection>::Iterator it = r->connections.begin(); it != r->connections.end(); ++it ) { + Connection conn = *it; + if ( conn.sender == sender && + conn.signal == signal && + conn.receiver == receiver && + conn.slot == slot ) { + r->connections.remove( it ); + break; + } + } +} + +QValueList<MetaDataBase::Connection> MetaDataBase::connections( QObject *o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QValueList<Connection>(); + } + return r->connections; +} + +QValueList<MetaDataBase::Connection> MetaDataBase::connections( QObject *o, QObject *sender, + QObject *receiver ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QValueList<Connection>(); + } + QValueList<Connection>::Iterator it = r->connections.begin(); + QValueList<Connection> ret; + QValueList<Connection>::Iterator conn; + while ( ( conn = it ) != r->connections.end() ) { + ++it; + if ( (*conn).sender == sender && + (*conn).receiver == receiver ) + ret << *conn; + } + + return ret; +} + +QValueList<MetaDataBase::Connection> MetaDataBase::connections( QObject *o, QObject *object ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QValueList<Connection>(); + } + QValueList<Connection>::Iterator it = r->connections.begin(); + QValueList<Connection> ret; + QValueList<Connection>::Iterator conn; + while ( ( conn = it ) != r->connections.end() ) { + ++it; + if ( (*conn).sender == object || + (*conn).receiver == object ) + ret << *conn; + } + return ret; +} + +void MetaDataBase::doConnections( QObject *o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + QObject *sender = 0, *receiver = 0; + QObjectList *l = 0; + QValueList<Connection>::Iterator it = r->connections.begin(); + for ( ; it != r->connections.end(); ++it ) { + Connection conn = *it; + if ( qstrcmp( conn.sender->name(), o->name() ) == 0 ) { + sender = o; + } else { + l = o->queryList( 0, conn.sender->name(), false ); + if ( !l || !l->first() ) { + delete l; + continue; + } + sender = l->first(); + delete l; + } + if ( qstrcmp( conn.receiver->name(), o->name() ) == 0 ) { + receiver = o; + } else { + l = o->queryList( 0, conn.receiver->name(), false ); + if ( !l || !l->first() ) { + delete l; + continue; + } + receiver = l->first(); + delete l; + } + QString s = "2""%1"; + s = s.arg( conn.signal ); + QString s2 = "1""%1"; + s2 = s2.arg( conn.slot ); + + QStrList signalList = sender->metaObject()->signalNames( true ); + QStrList slotList = receiver->metaObject()->slotNames( true ); + + // avoid warnings + if ( signalList.find( conn.signal ) == -1 || + slotList.find( conn.slot ) == -1 ) + continue; + + QObject::connect( sender, s, receiver, s2 ); + } +} + +void MetaDataBase::addSlot( QObject *o, const QCString &slot, const QString& specifier, + const QString &access, const QString &language, const QString &returnType ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + Slot s; + s.slot = slot; + s.specifier = specifier; + s.access = access; + s.language = language; + s.returnType = returnType; + QValueList<MetaDataBase::Slot>::Iterator it = r->slotList.find( s ); + if ( it != r->slotList.end() ) + r->slotList.remove( it ); + r->slotList.append( s ); +#ifndef KOMMANDER + ( (FormWindow*)o )->formFile()->addSlotCode( s ); +#endif +} + +void MetaDataBase::setSlotList( QObject *o, const QValueList<Slot> &slotList ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + r->slotList = slotList; +} + +void MetaDataBase::removeSlot( QObject *o, const QCString &slot, const QString& specifier, + const QString &access, const QString &language, const QString &returnType ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { + Slot s = *it; + if ( s.slot == slot && + s.specifier == specifier && + s.access == access && + ( language.isEmpty() || s.language == language ) && + ( returnType.isEmpty() || s.returnType == returnType ) ) { + r->slotList.remove( it ); + break; + } + } +} + +void MetaDataBase::removeSlot( QObject *o, const QString &slot ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { + Slot s = *it; + if ( normalizeSlot( s.slot ) == normalizeSlot( slot ) ) { + r->slotList.remove( it ); + break; + } + } +} + +QValueList<MetaDataBase::Slot> MetaDataBase::slotList( QObject *o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QValueList<Slot>(); + } + + return r->slotList; +} + +bool MetaDataBase::isSlotUsed( QObject *o, const QCString &slot ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return false; + } + + QValueList<Connection> conns = connections( o ); + for ( QValueList<Connection>::Iterator it = conns.begin(); it != conns.end(); ++it ) { + if ( (*it).slot == slot ) + return true; + } + return false; +} + +void MetaDataBase::changeSlot( QObject *o, const QCString &slot, const QCString &newName ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { + Slot s = *it; + if ( normalizeSlot( s.slot ) == normalizeSlot( slot ) ) { + (*it).slot = newName; + return; + } + } +} + +void MetaDataBase::changeSlotAttributes( QObject *o, const QCString &slot, + const QString& specifier, const QString &access, + const QString &language, const QString &returnType ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { + Slot s = *it; + if ( normalizeSlot( s.slot ) == normalizeSlot( slot ) ) { + (*it).specifier = specifier; + (*it).access = access; + (*it).language = language; + (*it).returnType = returnType; + return; + } + } +} + +bool MetaDataBase::hasSlot( QObject *o, const QCString &slot, bool onlyCustom ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return false; + } + + if ( !onlyCustom ) { + QStrList slotList = o->metaObject()->slotNames( true ); + if ( slotList.find( slot ) != -1 ) + return true; + + if ( o->inherits( "FormWindow" ) ) { + o = ( (FormWindow*)o )->mainContainer(); + slotList = o->metaObject()->slotNames( true ); + if ( slotList.find( slot ) != -1 ) + return true; + } + + if ( o->inherits( "CustomWidget" ) ) { + MetaDataBase::CustomWidget *w = ( (::CustomWidget*)o )->customWidget(); + for ( QValueList<Slot>::Iterator it = w->lstSlots.begin(); it != w->lstSlots.end(); ++it ) { + QCString s = (*it).slot; + if ( !s.data() ) + continue; + if ( s == slot ) + return true; + } + } + } + + for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { + Slot s = *it; + if ( normalizeSlot( s.slot ) == normalizeSlot( slot ) ) + return true; + } + + return false; +} + +QString MetaDataBase::languageOfSlot( QObject *o, const QCString &slot ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QString::null; + } + + QString sl = slot; + sl = normalizeSlot( sl ); + for ( QValueList<Slot>::Iterator it = r->slotList.begin(); it != r->slotList.end(); ++it ) { + Slot s = *it; + QString sl2 = s.slot; + sl2 = normalizeSlot( sl2 ); + if ( sl == sl2 ) + return s.language; + } + return QString::null; +} + +bool MetaDataBase::addCustomWidget( CustomWidget *wid ) +{ + setupDataBase(); + + for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) { + if ( *wid == *w ) { + for ( QValueList<QCString>::ConstIterator it = wid->lstSignals.begin(); it != wid->lstSignals.end(); ++it ) { + if ( !w->hasSignal( *it ) ) + w->lstSignals.append( *it ); + } + for ( QValueList<Slot>::ConstIterator it2 = wid->lstSlots.begin(); it2 != wid->lstSlots.end(); ++it2 ) { + if ( !w->hasSlot( MetaDataBase::normalizeSlot( (*it2).slot ).latin1() ) ) + w->lstSlots.append( *it2 ); + } + for ( QValueList<Property>::ConstIterator it3 = wid->lstProperties.begin(); it3 != wid->lstProperties.end(); ++it3 ) { + if ( !w->hasProperty( (*it3).property ) ) + w->lstProperties.append( *it3 ); + } + delete wid; + return false; + } + } + + + WidgetDatabaseRecord *r = new WidgetDatabaseRecord; + r->name = wid->className; + r->group = WidgetDatabase::widgetGroup( "Custom" ); + r->toolTip = wid->className; + r->iconSet = new QIconSet( *wid->pixmap, *wid->pixmap ); + r->isContainer = wid->isContainer; + wid->id = WidgetDatabase::addCustomWidget( r ); + cWidgets->append( wid ); + return true; +} + +void MetaDataBase::removeCustomWidget( CustomWidget *w ) +{ + cWidgets->removeRef( w ); +} + +QPtrList<MetaDataBase::CustomWidget> *MetaDataBase::customWidgets() +{ + setupDataBase(); + return cWidgets; +} + +MetaDataBase::CustomWidget *MetaDataBase::customWidget( int id ) +{ + for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) { + if ( id == w->id ) + return w; + } + return 0; +} + +bool MetaDataBase::isWidgetNameUsed( CustomWidget *wid ) +{ + for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) { + if ( w == wid ) + continue; + if ( wid->className == w->className ) + return true; + } + return false; +} + +bool MetaDataBase::hasCustomWidget( const QString &className ) +{ + for ( CustomWidget *w = cWidgets->first(); w; w = cWidgets->next() ) { + if ( w->className == className ) + return true; + } + return false; +} + +void MetaDataBase::setTabOrder( QWidget *w, const QWidgetList &order ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*) w ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + w, w->name(), w->className() ); + return; + } + + r->tabOrder = order; +} + +QWidgetList MetaDataBase::tabOrder( QWidget *w ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*) w ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + w, w->name(), w->className() ); + return QWidgetList(); + } + + return r->tabOrder; +} + +void MetaDataBase::setIncludes( QObject *o, const QValueList<Include> &incs ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->includes = incs; +} + +QValueList<MetaDataBase::Include> MetaDataBase::includes( QObject *o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QValueList<Include>(); + } + + return r->includes; +} + +void MetaDataBase::setForwards( QObject *o, const QStringList &fwds ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->forwards = fwds; +} + +QStringList MetaDataBase::forwards( QObject *o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QStringList(); + } + + return r->forwards; +} + +void MetaDataBase::setSignalList( QObject *o, const QStringList &sigs ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->sigs.clear(); + + for ( QStringList::ConstIterator it = sigs.begin(); it != sigs.end(); ++it ) { + QString s = (*it).simplifyWhiteSpace(); + bool hasSemicolon = s.endsWith( ";" ); + if ( hasSemicolon ) + s = s.left( s.length() - 1 ); + int p = s.find( '(' ); + if ( p < 0 ) + p = s.length(); + int sp = s.find( ' ' ); + if ( sp >= 0 && sp < p ) { + s = s.mid( sp+1 ); + p -= sp + 1; + } + if ( p == (int) s.length() ) + s += "()"; + if ( hasSemicolon ) + s += ";"; + r->sigs << s; + } +} + +QStringList MetaDataBase::signalList( QObject *o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QStringList(); + } + + return r->sigs; +} + +void MetaDataBase::setMetaInfo( QObject *o, MetaInfo mi ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->metaInfo = mi; +} + +MetaDataBase::MetaInfo MetaDataBase::metaInfo( QObject *o ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return MetaInfo(); + } + + return r->metaInfo; +} + + + + +MetaDataBase::CustomWidget::CustomWidget() +{ + className = "MyCustomWidget"; + includeFile = "mywidget.h"; + includePolicy = Local; + sizeHint = QSize( -1, -1 ); + pixmap = new QPixmap( PixmapChooser::loadPixmap( "customwidget.xpm" ) ); + id = -1; + sizePolicy = QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); + isContainer = false; +} + +MetaDataBase::CustomWidget::CustomWidget( const CustomWidget &w ) +{ + className = w.className; + includeFile = w.includeFile; + includePolicy = w.includePolicy; + sizeHint = w.sizeHint; + if ( w.pixmap ) + pixmap = new QPixmap( *w.pixmap ); + else + pixmap = 0; + id = w.id; + isContainer = w.isContainer; +} + +void MetaDataBase::setCursor( QWidget *w, const QCursor &c ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)w ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + w, w->name(), w->className() ); + return; + } + + r->cursor = c; +} + +QCursor MetaDataBase::cursor( QWidget *w ) +{ + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)w ); + if ( !r ) { + w->unsetCursor(); + return w->cursor(); + } + + return r->cursor; +} + +bool MetaDataBase::CustomWidget::operator==( const CustomWidget &w ) const +{ + return className == w.className; +} + +MetaDataBase::CustomWidget &MetaDataBase::CustomWidget::operator=( const CustomWidget &w ) +{ + delete pixmap; + className = w.className; + includeFile = w.includeFile; + includePolicy = w.includePolicy; + sizeHint = w.sizeHint; + if ( w.pixmap ) + pixmap = new QPixmap( *w.pixmap ); + else + pixmap = 0; + lstSignals = w.lstSignals; + lstSlots = w.lstSlots; + lstProperties = w.lstProperties; + id = w.id; + isContainer = w.isContainer; + return *this; +} + +bool MetaDataBase::CustomWidget::hasSignal( const QCString &signal ) const +{ + QStrList sigList = QWidget::staticMetaObject()->signalNames( true ); + if ( sigList.find( signal ) != -1 ) + return true; + for ( QValueList<QCString>::ConstIterator it = lstSignals.begin(); it != lstSignals.end(); ++it ) { + if ( normalizeSlot( *it ) == normalizeSlot( signal ) ) + return true; + } + return false; +} + +bool MetaDataBase::CustomWidget::hasSlot( const QCString &slot ) const +{ + QStrList slotList = QWidget::staticMetaObject()->slotNames( true ); + if ( slotList.find( normalizeSlot( slot ) ) != -1 ) + return true; + + for ( QValueList<MetaDataBase::Slot>::ConstIterator it = lstSlots.begin(); it != lstSlots.end(); ++it ) { + if ( normalizeSlot( (*it).slot ) == normalizeSlot( slot ) ) + return true; + } + return false; +} + +bool MetaDataBase::CustomWidget::hasProperty( const QCString &prop ) const +{ + QStrList propList = QWidget::staticMetaObject()->propertyNames( true ); + if ( propList.find( prop ) != -1 ) + return true; + + for ( QValueList<MetaDataBase::Property>::ConstIterator it = lstProperties.begin(); it != lstProperties.end(); ++it ) { + if ( (*it).property == prop ) + return true; + } + return false; +} + +void MetaDataBase::setPixmapArgument( QObject *o, int pixmap, const QString &arg ) +{ + if ( !o ) + return; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->pixmapArguments.remove( pixmap ); + r->pixmapArguments.insert( pixmap, arg ); +} + +QString MetaDataBase::pixmapArgument( QObject *o, int pixmap ) +{ + if ( !o ) + return QString::null; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QString::null; + } + + return *r->pixmapArguments.find( pixmap ); +} + +void MetaDataBase::clearPixmapArguments( QObject *o ) +{ + if ( !o ) + return; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->pixmapArguments.clear(); +} + + +void MetaDataBase::setPixmapKey( QObject *o, int pixmap, const QString &arg ) +{ + if ( !o ) + return; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->pixmapKeys.remove( pixmap ); + r->pixmapKeys.insert( pixmap, arg ); +} + +QString MetaDataBase::pixmapKey( QObject *o, int pixmap ) +{ + if ( !o ) + return QString::null; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QString::null; + } + + return *r->pixmapKeys.find( pixmap ); +} + +void MetaDataBase::clearPixmapKeys( QObject *o ) +{ + if ( !o ) + return; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->pixmapKeys.clear(); +} + + + +void MetaDataBase::setColumnFields( QObject *o, const QMap<QString, QString> &columnFields ) +{ + if ( !o ) + return; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->columnFields = columnFields; +} + +QMap<QString, QString> MetaDataBase::columnFields( QObject *o ) +{ + if ( !o ) + return QMap<QString, QString>(); + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return QMap<QString, QString>(); + } + + return r->columnFields; +} + +QString MetaDataBase::normalizeSlot( const QString &s ) +{ + return Parser::cleanArgs( s ); +} + +void MetaDataBase::clear( QObject *o ) +{ + if ( !o ) + return; + setupDataBase(); + db->remove( (void*)o ); + for ( QPtrDictIterator<QWidget> it( *( (FormWindow*)o )->widgets() ); it.current(); ++it ) + db->remove( (void*)it.current() ); +} + +void MetaDataBase::setExportMacro( QObject *o, const QString ¯o ) +{ + if ( !o ) + return; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return; + } + + r->exportMacro = macro; +} + +QString MetaDataBase::exportMacro( QObject *o ) +{ + if ( !o ) + return ""; + setupDataBase(); + MetaDataBaseRecord *r = db->find( (void*)o ); + if ( !r ) { + qWarning( "No entry for %p (%s, %s) found in MetaDataBase", + o, o->name(), o->className() ); + return ""; + } + + return r->exportMacro; +} + +bool MetaDataBase::hasObject( QObject *o ) +{ + return !!db->find( o ); +} + diff --git a/kommander/editor/metadatabase.h b/kommander/editor/metadatabase.h new file mode 100644 index 00000000..8bb79c38 --- /dev/null +++ b/kommander/editor/metadatabase.h @@ -0,0 +1,222 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef METADATABASE_H +#define METADATABASE_H + +#include <qvariant.h> +#include <qstring.h> +#include <qstringlist.h> +#include <qmap.h> +#include <qptrlist.h> +#include <qsizepolicy.h> +#include <qsize.h> +#include <qwidgetlist.h> +#include <qcursor.h> + +#include "pixmapchooser.h" + +class QObject; +class QPixmap; + +class MetaDataBase +{ +public: + struct Connection + { + QObject *sender, *receiver; + QCString signal, slot; + bool operator==( const Connection &c ) const { + return sender == c.sender && receiver == c.receiver && + signal == c.signal && slot == c.slot ; + } + }; + + struct Slot + { + QString returnType; + QCString slot; + QString specifier; + QString access; + QString language; + bool operator==( const Slot &s ) const { + return ( returnType == s.returnType && + slot == s.slot && + access == s.access && + specifier == s.specifier && + language == s.language + ); + } + }; + + struct Property + { + QCString property; + QString type; + bool operator==( const Property &p ) const { + return property == p.property && + type == p.type; + } + }; + + struct CustomWidget + { + CustomWidget(); + CustomWidget( const CustomWidget &w ); + ~CustomWidget() { delete pixmap; } // inlined to work around 2.7.2.3 bug + bool operator==( const CustomWidget &w ) const; + CustomWidget &operator=( const CustomWidget &w ); + + bool hasSignal( const QCString &signal ) const; + bool hasSlot( const QCString &slot ) const; + bool hasProperty( const QCString &prop ) const; + + enum IncludePolicy { Global, Local }; + QString className; + QString includeFile; + IncludePolicy includePolicy; + QSize sizeHint; + QSizePolicy sizePolicy; + QPixmap *pixmap; + QValueList<QCString> lstSignals; + QValueList<Slot> lstSlots; + QValueList<Property> lstProperties; + int id; + bool isContainer; + }; + + struct Include + { + Include() : header(), location(), implDecl( "in implementation" ) {} + QString header; + QString location; + bool operator==( const Include &i ) const { + return header == i.header && location == i.location; + } + QString implDecl; + }; + + struct MetaInfo + { + QString license; + QString version; + QString comment; + QString author; + }; + + struct EventDescription + { + QString name; + QStringList args; +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) + bool operator==( const EventDescription& ) const { return FALSE; } +#endif + }; + + MetaDataBase(); + static void clearDataBase(); + + static void addEntry( QObject *o ); + static void removeEntry( QObject *o ); + static void setPropertyChanged( QObject *o, const QString &property, bool changed ); + static bool isPropertyChanged( QObject *o, const QString &property ); + static void setPropertyComment( QObject *o, const QString &property, const QString &comment ); + static QString propertyComment( QObject *o, const QString &property ); + static QStringList changedProperties( QObject *o ); + + static void setFakeProperty( QObject *o, const QString &property, const QVariant& value ); + static QVariant fakeProperty( QObject * o, const QString &property ); + static QMap<QString,QVariant>* fakeProperties( QObject* o ); + + static void setSpacing( QObject *o, int spacing ); + static int spacing( QObject *o ); + static void setMargin( QObject *o, int margin ); + static int margin( QObject *o ); + + static void addConnection( QObject *o, QObject *sender, const QCString &signal, + QObject *receiver, const QCString &slot ); + static void removeConnection( QObject *o, QObject *sender, const QCString &signal, + QObject *receiver, const QCString &slot ); + static QValueList<Connection> connections( QObject *o ); + static QValueList<Connection> connections( QObject *o, QObject *sender, QObject *receiver ); + static QValueList<Connection> connections( QObject *o, QObject *object ); + static void doConnections( QObject *o ); + + static void addSlot( QObject *o, const QCString &slot, const QString& specifier, const QString &access, const QString &language, const QString &returnType ); + static void removeSlot( QObject *o, const QCString &slot, const QString& specifier, const QString &access, const QString &language, const QString &returnType ); + static void removeSlot( QObject *o, const QString &slot ); + static QValueList<Slot> slotList( QObject *o ); + static bool isSlotUsed( QObject *o, const QCString &slot ); + static bool hasSlot( QObject *o, const QCString &slot, bool onlyCustom = FALSE ); + static void changeSlot( QObject *o, const QCString &slot, const QCString &newName ); + static void changeSlotAttributes( QObject *o, const QCString &slot, + const QString& specifier, const QString &access, + const QString &language, const QString &returnType ); + static QString languageOfSlot( QObject *o, const QCString &slot ); + static void setSlotList( QObject *o, const QValueList<Slot> &slotList ); + + static bool addCustomWidget( CustomWidget *w ); + static void removeCustomWidget( CustomWidget *w ); + static QPtrList<CustomWidget> *customWidgets(); + static CustomWidget *customWidget( int id ); + static bool isWidgetNameUsed( CustomWidget *w ); + static bool hasCustomWidget( const QString &className ); + + static void setTabOrder( QWidget *w, const QWidgetList &order ); + static QWidgetList tabOrder( QWidget *w ); + + static void setIncludes( QObject *o, const QValueList<Include> &incs ); + static QValueList<Include> includes( QObject *o ); + + static void setForwards( QObject *o, const QStringList &fwds ); + static QStringList forwards( QObject *o ); + + static void setSignalList( QObject *o, const QStringList &sigs ); + static QStringList signalList( QObject *o ); + + static void setMetaInfo( QObject *o, MetaInfo mi ); + static MetaInfo metaInfo( QObject *o ); + + static void setCursor( QWidget *w, const QCursor &c ); + static QCursor cursor( QWidget *w ); + + static void setPixmapArgument( QObject *o, int pixmap, const QString &arg ); + static QString pixmapArgument( QObject *o, int pixmap ); + static void clearPixmapArguments( QObject *o ); + + static void setPixmapKey( QObject *o, int pixmap, const QString &arg ); + static QString pixmapKey( QObject *o, int pixmap ); + static void clearPixmapKeys( QObject *o ); + + static void setColumnFields( QObject *o, const QMap<QString, QString> &columnFields ); + static QMap<QString, QString> columnFields( QObject *o ); + + static QString normalizeSlot( const QString &slot ); + + static void clear( QObject *o ); + + static void setExportMacro( QObject *o, const QString ¯o ); + static QString exportMacro( QObject *o ); + + static bool hasObject( QObject *o ); + +}; + +#endif diff --git a/kommander/editor/multilineeditor.ui b/kommander/editor/multilineeditor.ui new file mode 100644 index 00000000..9b9cbe9f --- /dev/null +++ b/kommander/editor/multilineeditor.ui @@ -0,0 +1,225 @@ +<!DOCTYPE UI><UI> +<class>MultiLineEditorBase</class><comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget> + <class>QDialog</class> + <property stdset="1"> + <name>name</name> + <cstring>MultiLineEditorBase</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>0</x> + <y>0</y> + <width>421</width> + <height>275</height> + </rect> + </property> + <property stdset="1"> + <name>caption</name> + <string>Edit Multiline Edit</string> + </property> + <property stdset="1"> + <name>sizeGripEnabled</name> + <bool>true</bool> + </property> + <property> + <name>whatsThis</name> + <string><b>Edit Multiline Edit</b><p>Enter the text and click the <b>OK</b>-Button to apply the changes.</p></string> + </property> + <vbox> + <property stdset="1"> + <name>margin</name> + <number>11</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Text:</string> + </property> + <property> + <name>buddy</name> + <cstring>preview</cstring> + </property> + </widget> + <widget> + <class>QMultiLineEdit</class> + <property stdset="1"> + <name>name</name> + <cstring>preview</cstring> + </property> + <property stdset="1"> + <name>wordWrap</name> + <enum>WidgetWidth</enum> + </property> + <property> + <name>whatsThis</name> + <string>Enter your text here.</string> + </property> + </widget> + <widget> + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout1</cstring> + </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>buttonHelp</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Help</string> + </property> + <property stdset="1"> + <name>autoDefault</name> + <bool>true</bool> + </property> + </widget> + <spacer> + <property> + <name>name</name> + <cstring>Horizontal Spacing2</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>buttonOk</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&OK</string> + </property> + <property stdset="1"> + <name>autoDefault</name> + <bool>true</bool> + </property> + <property stdset="1"> + <name>default</name> + <bool>true</bool> + </property> + <property> + <name>whatsThis</name> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>buttonApply</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Apply</string> + </property> + <property stdset="1"> + <name>autoDefault</name> + <bool>true</bool> + </property> + <property> + <name>whatsThis</name> + <string>Apply all changes.</string> + </property> + </widget> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>buttonCancel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Cancel</string> + </property> + <property stdset="1"> + <name>autoDefault</name> + <bool>true</bool> + </property> + <property> + <name>whatsThis</name> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<connections> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>MultiLineEditorBase</receiver> + <slot>reject()</slot> + </connection> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>MultiLineEditorBase</receiver> + <slot>okClicked()</slot> + </connection> + <connection> + <sender>buttonApply</sender> + <signal>clicked()</signal> + <receiver>MultiLineEditorBase</receiver> + <slot>applyClicked()</slot> + </connection> + <slot access="protected">applyClicked()</slot> + <slot access="protected">okClicked()</slot> +</connections> +</UI> diff --git a/kommander/editor/multilineeditorimpl.cpp b/kommander/editor/multilineeditorimpl.cpp new file mode 100644 index 00000000..1b823d3f --- /dev/null +++ b/kommander/editor/multilineeditorimpl.cpp @@ -0,0 +1,98 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "multilineeditorimpl.h" +#include "formwindow.h" +#include "command.h" +#include "mainwindow.h" + +#include <qmultilineedit.h> +#include <qpushbutton.h> + +#include <klocale.h> + +MultiLineEditor::MultiLineEditor( QWidget *parent, QWidget *editWidget, FormWindow *fw ) + : MultiLineEditorBase( parent, 0, true ), formwindow( fw ) +{ + connect( buttonHelp, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); + mlined = (QMultiLineEdit*)editWidget; + // #### complete list of properties here + preview->setAlignment( mlined->alignment() ); + preview->setMaxLines( mlined->maxLines() ); + preview->setWordWrap( mlined->wordWrap() ); + preview->setWrapColumnOrWidth( mlined->wrapColumnOrWidth() ); + preview->setWrapPolicy( mlined->wrapPolicy() ); + //preview->setTextFormat( mlined->textFormat() ); + preview->setText( mlined->text() ); + preview->setFocus(); + preview->selectAll(); +} + +void MultiLineEditor::okClicked() +{ + applyClicked(); + accept(); +} + +void MultiLineEditor::applyClicked() +{ + PopulateMultiLineEditCommand *cmd = new PopulateMultiLineEditCommand( i18n("Set Text of '%1'" ).arg( mlined->name() ), + formwindow, mlined, preview->text() ); + cmd->execute(); + formwindow->commandHistory()->addCommand( cmd ); + preview->setFocus(); +} + + +TextEditor::TextEditor( QWidget *parent, const QString &text ) + : MultiLineEditorBase( parent, 0, true ) +{ + buttonApply->hide(); + setCaption( i18n("Text" ) ); + preview->setText( text ); + preview->setFocus(); + preview->selectAll(); +} + +QString TextEditor::getText( QWidget *parent, const QString &text ) +{ + TextEditor dlg( parent, text ); + if ( dlg.exec() == QDialog::Accepted ) { + QString txt = dlg.preview->text(); + int i = txt.length() - 1; + while ( i >= 0 && + ( txt[ i ] == '\n' || txt[ i ] == ' ' || txt[ i ] == '\t' || txt[ i ].isSpace() ) ) { + txt.remove( i, 1 ); + i--; + } + return txt; + } + return QString::null; +} + +void TextEditor::okClicked() +{ + accept(); +} + +void TextEditor::applyClicked() +{ +} +#include "multilineeditorimpl.moc" diff --git a/kommander/editor/multilineeditorimpl.h b/kommander/editor/multilineeditorimpl.h new file mode 100644 index 00000000..16314b2a --- /dev/null +++ b/kommander/editor/multilineeditorimpl.h @@ -0,0 +1,61 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef MULTILINEEDITORIMPL_H +#define MULTILINEEDITORIMPL_H + +#include "multilineeditor.h" + +class FormWindow; +class QMultiLineEdit; + +class MultiLineEditor : public MultiLineEditorBase +{ + Q_OBJECT + +public: + MultiLineEditor( QWidget *parent, QWidget *editWidget, FormWindow *fw ); + +protected slots: + void okClicked(); + void applyClicked(); + +private: + QMultiLineEdit *mlined; + FormWindow *formwindow; + +}; + +class TextEditor : public MultiLineEditorBase +{ + Q_OBJECT + +public: + TextEditor( QWidget *parent, const QString &text ); + + static QString getText( QWidget *parent, const QString &text ); + +protected slots: + void okClicked(); + void applyClicked(); + +}; + +#endif diff --git a/kommander/editor/newform.ui b/kommander/editor/newform.ui new file mode 100644 index 00000000..16bb0365 --- /dev/null +++ b/kommander/editor/newform.ui @@ -0,0 +1,210 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>NewFormBase</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>NewFormBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>557</width> + <height>436</height> + </rect> + </property> + <property name="caption"> + <string>New File</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string><b>New Form</b><p>Select a template for the new form and click the <b>OK</b>-button to create it.</p></string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="3"> + <property name="name"> + <cstring>Layout1</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>helpButton</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>0</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Create a new form using the selected template.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog without creating a new form.</string> + </property> + </widget> + </hbox> + </widget> + <widget class="QIconView" row="1" column="0" rowspan="1" colspan="3"> + <property name="name"> + <cstring>templateView</cstring> + </property> + <property name="gridX"> + <number>120</number> + </property> + <property name="resizeMode"> + <enum>Adjust</enum> + </property> + <property name="itemsMovable"> + <bool>false</bool> + </property> + <property name="wordWrapIconText"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Displays a list of the available templates.</string> + </property> + </widget> + <spacer row="0" column="2"> + <property name="name"> + <cstring>Spacer2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>0</height> + </size> + </property> + </spacer> + </grid> +</widget> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>NewFormBase</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>NewFormBase</receiver> + <slot>reject()</slot> + </connection> + <connection> + <sender>templateView</sender> + <signal>currentChanged(QIconViewItem*)</signal> + <receiver>NewFormBase</receiver> + <slot>itemChanged(QIconViewItem*)</slot> + </connection> + <connection> + <sender>templateView</sender> + <signal>doubleClicked(QIconViewItem*)</signal> + <receiver>NewFormBase</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>templateView</sender> + <signal>returnPressed(QIconViewItem*)</signal> + <receiver>NewFormBase</receiver> + <slot>accept()</slot> + </connection> +</connections> +<tabstops> + <tabstop>templateView</tabstop> + <tabstop>helpButton</tabstop> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> +</tabstops> +<slots> + <slot access="protected">itemChanged( QIconViewItem * )</slot> + <slot access="protected">projectChanged( const QString & )</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kommander/editor/newformimpl.cpp b/kommander/editor/newformimpl.cpp new file mode 100644 index 00000000..70e7b1df --- /dev/null +++ b/kommander/editor/newformimpl.cpp @@ -0,0 +1,202 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. �All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#include "newformimpl.h" +#include "mainwindow.h" +#include "pixmapchooser.h" +#include "metadatabase.h" +#include "formwindow.h" +#include "widgetfactory.h" +#include "widgetdatabase.h" +#include "actioneditorimpl.h" +#include "hierarchyview.h" +#include "resource.h" +#include "formfile.h" + +#include <qiconview.h> +#include <qlabel.h> +#include <qfileinfo.h> +#include <qdir.h> +#include <qregexp.h> +#include <qpushbutton.h> +#include <stdlib.h> +#include <qcombobox.h> +#include <qworkspace.h> +#include <qmessagebox.h> + +#include <klocale.h> +#include <kglobal.h> +#include <kstandarddirs.h> + +#include "dialog.h" + +static int _forms = 0; + +FormItem::FormItem(QIconView *view, const QString &text) : NewItem(view, text) +{ +} + +void FormItem::insert() +{ + QString n = "Form" + QString::number(++_forms); + FormWindow *fw = 0; + FormFile *ff = new FormFile(FormFile::createUnnamedFileName(), true); + fw = new FormWindow(ff, MainWindow::self, MainWindow::self->qWorkspace(), n); + MetaDataBase::addEntry(fw); + QWidget *w = 0L; + if (fType == Dialog) + { + w = WidgetFactory::create(WidgetDatabase::idFromClassName("Dialog"), fw, n.latin1()); + fw->setMainContainer(w); + } + else if (fType == Wizard) + { + w = WidgetFactory::create(WidgetDatabase::idFromClassName("Wizard"), fw, n.latin1()); + fw->setMainContainer(w); + } + if (w) + { + w->setProperty("useInternalParser", true); + MetaDataBase::setPropertyChanged(w, "useInternalParser", true); + } + fw->setCaption(n); + fw->resize(600, 480); + MainWindow::self->insertFormWindow(fw); + + // the wizard might have changed a lot, lets update everything + MainWindow::self->actioneditor()->setFormWindow(fw); + MainWindow::self->objectHierarchy()->setFormWindow(fw, fw); + fw->killAccels(fw); + fw->setFocus(); +} + + + +CustomFormItem::CustomFormItem(QIconView *view, const QString &text) + : NewItem(view, text) +{ +} + +static void unifyFormName(FormWindow *fw, QWorkspace *qworkspace) +{ + QStringList lst; + QWidgetList windows = qworkspace->windowList(); + for (QWidget* w = windows.first(); w; w = windows.next()) + if (w != fw) + lst << w->name(); + + if (lst.findIndex(fw->name()) == -1) + return; + QString origName = fw->name(); + QString n = origName; + int i = 1; + while (lst.findIndex(n) != -1) + n = origName + QString::number(i++); + fw->setName(n); + fw->setCaption(n); +} + +void CustomFormItem::insert() +{ + QString filename = templateFileName(); + if (!filename.isEmpty() && QFile::exists(filename)) + { + Resource resource(MainWindow::self); + FormFile *ff = new FormFile(filename, true); + if (!resource.load(ff)) + { + QMessageBox::information(MainWindow::self, i18n("Load Template"), + i18n("Could not load form description from template '%1'").arg(filename)); + delete ff; + return; + } + ff->setFileName(QString::null); + if (MainWindow::self->formWindow()) + { + MainWindow::self->formWindow()->setFileName(QString::null); + unifyFormName(MainWindow::self->formWindow(), MainWindow::self->qWorkspace()); + } + } +} + + +NewForm::NewForm(QWidget *parent, const QString &templatePath) + : NewFormBase(parent, 0, true) +{ + connect(helpButton, SIGNAL(clicked()), MainWindow::self, SLOT(showDialogHelp())); + + QIconViewItem *cur = 0; + FormItem *fi = new FormItem(templateView, i18n("Dialog")); + allItems.append(fi); + fi->setFormType(FormItem::Dialog); + fi->setPixmap(PixmapChooser::loadPixmap("newform.xpm")); + fi->setDragEnabled(false); + cur = fi; + fi = new FormItem(templateView, i18n("Wizard")); + allItems.append(fi); + fi->setFormType(FormItem::Wizard); + fi->setPixmap(PixmapChooser::loadPixmap("newform.xpm")); + fi->setDragEnabled(false); + + + QStringList searchPaths = KGlobal::dirs()->findDirs("data", "kmdr-editor/templates"); + if (!templatePath.isEmpty()) + searchPaths.append(templatePath); + + + // search each path + for (QStringList::ConstIterator it = searchPaths.begin(); it != searchPaths.end(); ++it) + { + if (!QFile::exists(*it)) + continue; + QDir dir(*it); + const QFileInfoList* fileList = dir.entryInfoList(QDir::DefaultFilter, QDir::DirsFirst | QDir::Name); + if (fileList) + for (QFileInfoListIterator fit(*fileList); fit.current(); ++fit) + { + QFileInfo* fi = fit.current(); + if (!fi->isFile() || fi->extension() != "kmdr") + continue; + QString name = fi->baseName(); + name = name.replace("_", " "); + CustomFormItem *ci = new CustomFormItem(templateView, name); + allItems.append(ci); + ci->setDragEnabled(false); + ci->setPixmap(PixmapChooser::loadPixmap("newform.xpm")); + ci->setTemplateFile(fi->absFilePath()); + } + } + templateView->viewport()->setFocus(); + templateView->setCurrentItem(cur); +} + +void NewForm::accept() +{ + if (!templateView->currentItem()) + return; + ((NewItem *) templateView->currentItem())->insert(); + NewFormBase::accept(); +} + + +void NewForm::itemChanged(QIconViewItem *item) +{ + Q_UNUSED(item); +} + +#include "newformimpl.moc" diff --git a/kommander/editor/newformimpl.h b/kommander/editor/newformimpl.h new file mode 100644 index 00000000..12fec22c --- /dev/null +++ b/kommander/editor/newformimpl.h @@ -0,0 +1,73 @@ +/********************************************************************** + This file is based on Qt Designer, Copyright (C) 2000 Trolltech AS. All rights reserved. + + This file may be distributed and/or modified under the terms of the + GNU General Public License version 2 as published by the Free Software + Foundation and appearing in the file LICENSE.GPL included in the + packaging of this file. + + This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + See http://www.trolltech.com/gpl/ for GPL licensing information. + + Modified for Kommander: + (C) 2004 Michal Rudolf <mrudolf@kdewebdev.org> + +**********************************************************************/ + +#ifndef NEWFORMIMPL_H +#define NEWFORMIMPL_H + +#include "newform.h" +#include <qiconview.h> + +class FormFile; + + +class NewItem : public QIconViewItem +{ +public: + enum Type {Form, CustomForm}; + NewItem( QIconView *view, const QString &text ) : QIconViewItem( view, text ) {} + virtual void insert( ) = 0; +}; + +class FormItem : public NewItem +{ +public: + enum FormType {Dialog, Wizard, MainWindow}; + FormItem( QIconView *view, const QString &text); + void insert(); + int rtti() const {return (int)Form;} + void setFormType(FormType ft) {fType = ft;} + FormType formType() const {return fType;} +private: + FormType fType; +}; + +class CustomFormItem : public NewItem +{ +public: + CustomFormItem( QIconView *view, const QString &text ); + void insert(); + int rtti() const {return (int)CustomForm; } + void setTemplateFile(const QString &tf) {templFile = tf;} + QString templateFileName() const {return templFile;} +private: + QString templFile; +}; + +class NewForm : public NewFormBase +{ + Q_OBJECT +public: + NewForm( QWidget *parent, const QString &templatePath ); + void accept(); +protected slots: + void itemChanged(QIconViewItem *item); +private: + QPtrList<QIconViewItem> allItems; +}; + +#endif diff --git a/kommander/editor/orderindicator.cpp b/kommander/editor/orderindicator.cpp new file mode 100644 index 00000000..31450bbf --- /dev/null +++ b/kommander/editor/orderindicator.cpp @@ -0,0 +1,107 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qvariant.h> // HP-UX compiler need this here + +#include "orderindicator.h" +#include "formwindow.h" + +#include <qpainter.h> +#include <qbitmap.h> +#include <qapplication.h> + +OrderIndicator::OrderIndicator( int i, QWidget* w, FormWindow *fw ) + : QWidget( fw, "order_indicator", WMouseNoMask ), formWindow( fw ) +{ + order = -1; + widget = w; + setBackgroundMode( NoBackground ); + setAutoMask( true ); + setOrder( i, w ); +} + + +OrderIndicator::~OrderIndicator() +{ +} + + +void OrderIndicator::setOrder( int i, QWidget* wid ) +{ + if ( widget != wid ) + return; + if ( !wid->isVisibleTo( formWindow ) ) { + hide(); + return; + } + + if ( order == i ) { + show(); + raise(); + return; + } + order = i; + int w = fontMetrics().width( QString::number( i ) ) + 10; + int h = fontMetrics().lineSpacing() * 3 / 2; + QFont f( font() ); + f.setBold( true ); + setFont( f ); + resize( QMAX( w, h ), h ); + update(); // in case the size didn't change + reposition(); + show(); + raise(); +} + +void OrderIndicator::reposition() +{ + QPoint p =parentWidget()->mapFromGlobal( widget->mapToGlobal( widget->rect().topLeft() ) ); + move( p - QPoint( width()/3, height()/3 ) ); +} + + +void OrderIndicator::paintEvent( QPaintEvent * ) +{ + QPainter p( this ); + p.setPen( white ); + p.setBrush( blue ); + p.drawEllipse( rect() ); + p.drawText( rect(), AlignCenter, QString::number( order ) ); +} + + +void OrderIndicator::updateMask() +{ + QBitmap bm( size() ); + bm.fill( color0 ); + { + QPainter p( &bm, this ); + p.setPen( color1 ); + p.setBrush( color1 ); + p.drawEllipse( rect() ); + } + setMask( bm ); +} + +void OrderIndicator::mousePressEvent( QMouseEvent *e ) +{ + QApplication::sendEvent( widget, e ); +} +#include "orderindicator.moc" diff --git a/kommander/editor/orderindicator.h b/kommander/editor/orderindicator.h new file mode 100644 index 00000000..28cc7816 --- /dev/null +++ b/kommander/editor/orderindicator.h @@ -0,0 +1,52 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef ORDER_INDICATOR_H +#define ORDER_INDICATOR_H + +#include <qwidget.h> + +class FormWindow; + +class OrderIndicator : public QWidget +{ + Q_OBJECT + +public: + OrderIndicator( int i, QWidget* w, FormWindow* fw ); + ~OrderIndicator(); + + void setOrder( int i, QWidget* w ); + void reposition(); + +protected: + void paintEvent( QPaintEvent * ); + void mousePressEvent( QMouseEvent *e ); + void updateMask(); + +private: + int order; + QWidget* widget; + FormWindow *formWindow; + +}; + + +#endif diff --git a/kommander/editor/paletteeditor.ui b/kommander/editor/paletteeditor.ui new file mode 100644 index 00000000..31a4cd8a --- /dev/null +++ b/kommander/editor/paletteeditor.ui @@ -0,0 +1,518 @@ +<!DOCTYPE UI><UI version="3.1" stdsetdef="1"> +<class>PaletteEditorBase</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>PaletteEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>449</width> + <height>443</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="caption"> + <string>Edit Palette</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QGroupBox"> + <property name="name"> + <cstring>groupAutoPalette</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>4</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Build Palette</string> + </property> + <property name="alignment"> + <set>AlignAuto</set> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>labelMainColor</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>50</width> + <height>0</height> + </size> + </property> + <property name="lineWidth"> + <number>1</number> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="midLineWidth"> + <number>0</number> + </property> + <property name="text"> + <string>&3D effects:</string> + </property> + <property name="alignment"> + <set>AlignVCenter</set> + </property> + <property name="buddy" stdset="0"> + <cstring>buttonMainColor</cstring> + </property> + </widget> + <widget class="StyledButton"> + <property name="name"> + <cstring>buttonMainColor</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>StrongFocus</enum> + </property> + <property name="scale" stdset="0"> + <bool>false</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Choose a color</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Choose the effect-color for the generated palette.</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>labelMainColor2</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>50</width> + <height>0</height> + </size> + </property> + <property name="lineWidth"> + <number>1</number> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="midLineWidth"> + <number>0</number> + </property> + <property name="text"> + <string>Back&ground:</string> + </property> + <property name="alignment"> + <set>AlignVCenter</set> + </property> + <property name="buddy" stdset="0"> + <cstring>buttonMainColor2</cstring> + </property> + </widget> + <widget class="StyledButton"> + <property name="name"> + <cstring>buttonMainColor2</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>StrongFocus</enum> + </property> + <property name="scale" stdset="0"> + <bool>false</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Choose a color</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Choose the background color for the generated palette.</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Spacer1</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>btnAdvanced</cstring> + </property> + <property name="text"> + <string>&Tune Palette...</string> + </property> + </widget> + </hbox> + </widget> + <widget class="QGroupBox"> + <property name="name"> + <cstring>GroupBox126</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Preview</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>TextLabel1</cstring> + </property> + <property name="text"> + <string>Select &palette:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>paletteCombo</cstring> + </property> + </widget> + <widget class="QComboBox"> + <item> + <property name="text"> + <string>Active Palette</string> + </property> + </item> + <item> + <property name="text"> + <string>Inactive Palette</string> + </property> + </item> + <item> + <property name="text"> + <string>Disabled Palette</string> + </property> + </item> + <property name="name"> + <cstring>paletteCombo</cstring> + </property> + </widget> + </hbox> + </widget> + <widget class="PreviewFrame"> + <property name="name"> + <cstring>previewFrame</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </vbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing11</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<customwidgets> + <customwidget> + <class>StyledButton</class> + <header location="local">styledbutton.h</header> + <sizehint> + <width>40</width> + <height>25</height> + </sizehint> + <container>0</container> + <sizepolicy> + <hordata>5</hordata> + <verdata>5</verdata> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + <pixmap>image0</pixmap> + <signal>clicked()</signal> + <signal>changed()</signal> + <property type="Color">color</property> + <property type="Pixmap">pixmap</property> + <property type="Bool">scale</property> + </customwidget> + <customwidget> + <class>PreviewFrame</class> + <header location="local">previewframe.h</header> + <sizehint> + <width>200</width> + <height>200</height> + </sizehint> + <container>0</container> + <sizepolicy> + <hordata>5</hordata> + <verdata>5</verdata> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + <pixmap>image1</pixmap> + </customwidget> +</customwidgets> +<images> + <image name="image0"> + <data format="XPM.GZ" length="1112">789c9dd2cb8e9b301406e07d9e0225bba89a09601350d505302c5b7559a9eac23e6672b363620c0ca9faeef53949da2e2a55eab123f9e38f2f217e5e475f3e7f8cd6cf8bde0b7f8008f6c2456b3518337ffdf6e1fb62992451e8691ac5cb778be55304d1277b6e71fc12c6ab0d157222e61bd8e4c812196f6216535a13f318624a6764b2495842e99558249014c81e99c6294b69d3376291424ae9806431638cd28628183081f4489e70ce13e4852878c129ad905992f18cd291283295517a466ed32ddfa64847945bb595c80e99a739cf29d54499ab9c528b2c58c10b86344428540148400a26b8a0541241b482d215523299494a0551c9562ae409091c32e0c82351410b942aa4e22a53941e882d36e41ed966d8903b2215f215f99a6143b6442afaafff5aff485658622584a091941256948443d1cabbdd6ebf3f28753c09a9e9cdc1fe703c9e4ea19f689a0430fa4c8908082be093d08d016bbb0bbd5e7ceafade5b30de19d083b3fa9e008cd39b9fafd69495b473af7fcfb15325c1d61eea0afaf005ddf97b5295c658a866338f97591babef7340fa396c6c5ca9e7fe650807d0bf566b4262299986ba335a3b4a2cc84b69ac85b1b673037d8fabf95b023a9c09cc7530e104dd5419ed6e27083fb09a7c752db5a9bd31cde4ec634ed8a39aebbe337618c3f6fdc5dee6d8b0bb0d6b5b8b1fad43d78fe4e14e3f6aace8e29d9d736777fea3c686eee0138c9726d4d00c548df7a315ff750f7ebc5ffc04a0e5308d</data> + </image> + <image name="image1"> + <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> + </image> +</images> +<connections> + <connection> + <sender>buttonMainColor2</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorBase</receiver> + <slot>onChoose2ndMainColor()</slot> + </connection> + <connection> + <sender>paletteCombo</sender> + <signal>activated(int)</signal> + <receiver>PaletteEditorBase</receiver> + <slot>paletteSelected(int)</slot> + </connection> + <connection> + <sender>btnAdvanced</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorBase</receiver> + <slot>onTune()</slot> + </connection> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorBase</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorBase</receiver> + <slot>reject()</slot> + </connection> + <connection> + <sender>buttonMainColor</sender> + <signal>changed()</signal> + <receiver>PaletteEditorBase</receiver> + <slot>onChooseMainColor()</slot> + </connection> + <connection> + <sender>buttonMainColor</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorBase</receiver> + <slot>onChooseMainColor()</slot> + </connection> + <connection> + <sender>buttonMainColor2</sender> + <signal>changed()</signal> + <receiver>PaletteEditorBase</receiver> + <slot>onChoose2ndMainColor()</slot> + </connection> +</connections> +<tabstops> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> + <tabstop>buttonMainColor</tabstop> + <tabstop>buttonMainColor2</tabstop> + <tabstop>btnAdvanced</tabstop> + <tabstop>paletteCombo</tabstop> + <tabstop>buttonHelp</tabstop> +</tabstops> +<slots> + <slot access="protected">init()</slot> + <slot access="protected">destroy()</slot> + <slot access="protected">onTune()</slot> + <slot access="protected">onChoose2ndMainColor()</slot> + <slot access="protected">onChooseMainColor()</slot> + <slot access="protected">paletteSelected(int)</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>styledbutton.h</includehint> + <includehint>styledbutton.h</includehint> + <includehint>previewframe.h</includehint> +</includehints> +</UI> diff --git a/kommander/editor/paletteeditoradvanced.ui b/kommander/editor/paletteeditoradvanced.ui new file mode 100644 index 00000000..cf868b69 --- /dev/null +++ b/kommander/editor/paletteeditoradvanced.ui @@ -0,0 +1,766 @@ +<!DOCTYPE UI><UI version="3.1" stdsetdef="1"> +<class>PaletteEditorAdvancedBase</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>PaletteEditorAdvancedBase</cstring> + </property> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>430</width> + <height>368</height> + </rect> + </property> + <property name="caption"> + <string>Tune Palette</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Edit Palette</b><p>Change the current widget or form's palette.</p><p>Use a generated palette or select colors for each color group and each color role.</p><p>The palette can be tested with different widget layouts in the preview section.</p></string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout14</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>TextLabel1</cstring> + </property> + <property name="frameShape"> + <enum>MShape</enum> + </property> + <property name="frameShadow"> + <enum>MShadow</enum> + </property> + <property name="text"> + <string>Select &palette:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>paletteCombo</cstring> + </property> + </widget> + <widget class="QComboBox"> + <item> + <property name="text"> + <string>Active Palette</string> + </property> + </item> + <item> + <property name="text"> + <string>Inactive Palette</string> + </property> + </item> + <item> + <property name="text"> + <string>Disabled Palette</string> + </property> + </item> + <property name="name"> + <cstring>paletteCombo</cstring> + </property> + </widget> + </hbox> + </widget> + <widget class="QButtonGroup"> + <property name="name"> + <cstring>ButtonGroup1</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>4</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Auto</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkBuildInactive</cstring> + </property> + <property name="text"> + <string>Build the inactive palette from the active palette.</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkBuildDisabled</cstring> + </property> + <property name="text"> + <string>Build the disabled palette from the active palette.</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </vbox> + </widget> + <widget class="QGroupBox"> + <property name="name"> + <cstring>groupCentral</cstring> + </property> + <property name="title"> + <string>Central Color &Roles</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QComboBox"> + <item> + <property name="text"> + <string>Background</string> + </property> + </item> + <item> + <property name="text"> + <string>Foreground</string> + </property> + </item> + <item> + <property name="text"> + <string>Button</string> + </property> + </item> + <item> + <property name="text"> + <string>Base</string> + </property> + </item> + <item> + <property name="text"> + <string>Text</string> + </property> + </item> + <item> + <property name="text"> + <string>BrightText</string> + </property> + </item> + <item> + <property name="text"> + <string>ButtonText</string> + </property> + </item> + <item> + <property name="text"> + <string>Highlight</string> + </property> + </item> + <item> + <property name="text"> + <string>HighlightText</string> + </property> + </item> + <item> + <property name="text"> + <string>Link</string> + </property> + </item> + <item> + <property name="text"> + <string>LinkVisited</string> + </property> + </item> + <property name="name"> + <cstring>comboCentral</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>Choose the central color role</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Select a color role.</b><p>Available central color roles are: <ul> <li>Background - general background color.</li> <li>Foreground - general foreground color. </li> <li>Base - used as the background color for example, for text entry widgets; it is usually white or another light color. </li> <li>Text - the forground color used with Base. Usually this is the same as the Foreground, in which case it must provide good contrast both with the Background and with the Base. </li> <li>Button - general button background color; useful where buttons need a background different from Background, as in the Macintosh style. </li> <li>ButtonText - a foreground color used with the Button color. </li> <li>Highlight - a color used to indicate a selected or highlighted item. </li> <li>HighlightedText - a text color that contrasts to Highlight. </li> <li>BrightText - a text color that is very different from Foreground and contrasts well with, for example, black. </li> </ul> </p></string> + </property> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout32_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <spacer> + <property name="name"> + <cstring>Horizontal_Spacing1</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QLabel"> + <property name="name"> + <cstring>labelPixmap</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Choose pi&xmap:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>buttonPixmap</cstring> + </property> + </widget> + <widget class="StyledButton"> + <property name="name"> + <cstring>buttonPixmap</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>TabFocus</enum> + </property> + <property name="scale" stdset="0"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Select a pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Choose a pixmap file for the selected central color role.</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>labelCentral</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>&Select color:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>buttonCentral</cstring> + </property> + </widget> + <widget class="StyledButton"> + <property name="name"> + <cstring>buttonCentral</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>TabFocus</enum> + </property> + <property name="scale" stdset="0"> + <bool>false</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Choose a color</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Choose a color for the selected central color role.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> + </widget> + <widget class="QGroupBox"> + <property name="name"> + <cstring>groupEffect</cstring> + </property> + <property name="title"> + <string>3D Shadow &Effects</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout32_3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkBuildEffect</cstring> + </property> + <property name="text"> + <string>Build &from button color:</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Generate shadings</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Check to let 3D-effect colors be calculated from the button-color.</string> + </property> + </widget> + <widget class="QComboBox"> + <item> + <property name="text"> + <string>Light</string> + </property> + </item> + <item> + <property name="text"> + <string>Midlight</string> + </property> + </item> + <item> + <property name="text"> + <string>Mid</string> + </property> + </item> + <item> + <property name="text"> + <string>Dark</string> + </property> + </item> + <item> + <property name="text"> + <string>Shadow</string> + </property> + </item> + <property name="name"> + <cstring>comboEffect</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>Choose 3D-effect color role</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Select a color effect role.</b><p>Available effect roles are: <ul> <li>Light - lighter than Button color. </li> <li>Midlight - between Button and Light. </li> <li>Mid - between Button and Dark. </li> <li>Dark - darker than Button. </li> <li>Shadow - a very dark color. </li> </ul></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout31_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <spacer> + <property name="name"> + <cstring>Horizontal_Spacing3</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QLabel"> + <property name="name"> + <cstring>labelEffect</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="text"> + <string>Select co&lor:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>buttonEffect</cstring> + </property> + </widget> + <widget class="StyledButton"> + <property name="name"> + <cstring>buttonEffect</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>TabFocus</enum> + </property> + <property name="scale" stdset="0"> + <bool>false</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Choose a color</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Choose a color for the selected effect color role.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal_Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<customwidgets> + <customwidget> + <class>StyledButton</class> + <header location="local">styledbutton.h</header> + <sizehint> + <width>40</width> + <height>25</height> + </sizehint> + <container>0</container> + <sizepolicy> + <hordata>5</hordata> + <verdata>5</verdata> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + <pixmap>image0</pixmap> + <signal>clicked()</signal> + <signal>changed()</signal> + <property type="Color">color</property> + <property type="Pixmap">pixmap</property> + <property type="Bool">scale</property> + </customwidget> +</customwidgets> +<images> + <image name="image0"> + <data format="XPM.GZ" length="1112">789c9dd2cb8e9b301406e07d9e0225bba89a09601350d505302c5b7559a9eac23e6672b363620c0ca9faeef53949da2e2a55eab123f9e38f2f217e5e475f3e7f8cd6cf8bde0b7f8008f6c2456b3518337ffdf6e1fb62992451e8691ac5cb778be55304d1277b6e71fc12c6ab0d157222e61bd8e4c812196f6216535a13f318624a6764b2495842e99558249014c81e99c6294b69d3376291424ae9806431638cd28628183081f4489e70ce13e4852878c129ad905992f18cd291283295517a466ed32ddfa64847945bb595c80e99a739cf29d54499ab9c528b2c58c10b86344428540148400a26b8a0541241b482d215523299494a0551c9562ae409091c32e0c82351410b942aa4e22a53941e882d36e41ed966d8903b2215f215f99a6143b6442afaafff5aff485658622584a091941256948443d1cabbdd6ebf3f28753c09a9e9cdc1fe703c9e4ea19f689a0430fa4c8908082be093d08d016bbb0bbd5e7ceafade5b30de19d083b3fa9e008cd39b9fafd69495b473af7fcfb15325c1d61eea0afaf005ddf97b5295c658a866338f97591babef7340fa396c6c5ca9e7fe650807d0bf566b4262299986ba335a3b4a2cc84b69ac85b1b673037d8fabf95b023a9c09cc7530e104dd5419ed6e27083fb09a7c752db5a9bd31cde4ec634ed8a39aebbe337618c3f6fdc5dee6d8b0bb0d6b5b8b1fad43d78fe4e14e3f6aace8e29d9d736777fea3c686eee0138c9726d4d00c548df7a315ff750f7ebc5ffc04a0e5308d</data> + </image> +</images> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>reject()</slot> + </connection> + <connection> + <sender>paletteCombo</sender> + <signal>activated(int)</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>paletteSelected(int)</slot> + </connection> + <connection> + <sender>comboCentral</sender> + <signal>activated(int)</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>onCentral(int)</slot> + </connection> + <connection> + <sender>buttonPixmap</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>onChoosePixmap()</slot> + </connection> + <connection> + <sender>buttonCentral</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>onChooseCentralColor()</slot> + </connection> + <connection> + <sender>buttonEffect</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>onChooseEffectColor()</slot> + </connection> + <connection> + <sender>comboEffect</sender> + <signal>activated(int)</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>onEffect(int)</slot> + </connection> + <connection> + <sender>checkBuildEffect</sender> + <signal>toggled(bool)</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>onToggleBuildEffects(bool)</slot> + </connection> + <connection> + <sender>buttonHelp</sender> + <signal>clicked()</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>showHelp()</slot> + </connection> + <connection> + <sender>checkBuildEffect</sender> + <signal>toggled(bool)</signal> + <receiver>comboEffect</receiver> + <slot>setDisabled(bool)</slot> + </connection> + <connection> + <sender>checkBuildEffect</sender> + <signal>toggled(bool)</signal> + <receiver>buttonEffect</receiver> + <slot>setDisabled(bool)</slot> + </connection> + <connection> + <sender>checkBuildInactive</sender> + <signal>toggled(bool)</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>onToggleBuildInactive(bool)</slot> + </connection> + <connection> + <sender>checkBuildDisabled</sender> + <signal>toggled(bool)</signal> + <receiver>PaletteEditorAdvancedBase</receiver> + <slot>onToggleBuildDisabled(bool)</slot> + </connection> +</connections> +<tabstops> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> + <tabstop>paletteCombo</tabstop> + <tabstop>checkBuildInactive</tabstop> + <tabstop>checkBuildDisabled</tabstop> + <tabstop>comboCentral</tabstop> + <tabstop>buttonPixmap</tabstop> + <tabstop>buttonCentral</tabstop> + <tabstop>checkBuildEffect</tabstop> + <tabstop>comboEffect</tabstop> + <tabstop>buttonEffect</tabstop> + <tabstop>buttonHelp</tabstop> +</tabstops> +<slots> + <slot access="protected">init()</slot> + <slot access="protected">destroy()</slot> + <slot access="protected">onToggleBuildDisabled(bool)</slot> + <slot access="protected">onCentral(int)</slot> + <slot access="protected">onChooseCentralColor()</slot> + <slot access="protected">onChooseEffectColor()</slot> + <slot access="protected">onChoosePixmap()</slot> + <slot access="protected">onEffect(int)</slot> + <slot access="protected">onToggleBuildEffects(bool)</slot> + <slot access="protected">onToggleBuildInactive(bool)</slot> + <slot access="protected">paletteSelected(int)</slot> + <slot>showHelp()</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>styledbutton.h</includehint> + <includehint>styledbutton.h</includehint> + <includehint>styledbutton.h</includehint> +</includehints> +</UI> diff --git a/kommander/editor/paletteeditoradvancedimpl.cpp b/kommander/editor/paletteeditoradvancedimpl.cpp new file mode 100644 index 00000000..3b5ccffd --- /dev/null +++ b/kommander/editor/paletteeditoradvancedimpl.cpp @@ -0,0 +1,638 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "paletteeditoradvancedimpl.h" +#include "styledbutton.h" +#include "mainwindow.h" +#include "formwindow.h" + +#include <qcheckbox.h> +#include <qcombobox.h> +#include <qapplication.h> +#include <qpushbutton.h> +#include <qlistbox.h> +#include <qpainter.h> +#include <qgroupbox.h> + +/*! + Class used by PaletteEditor for bold combobox items +*/ + +class BoldListBoxText : public QListBoxText +{ +public: + BoldListBoxText( QString text, QListBox* lb = 0 ); + +protected: + virtual void paint( QPainter* ); +}; + +BoldListBoxText::BoldListBoxText( QString text, QListBox* lb ) + : QListBoxText( lb ) +{ + setText( text ); +} + +void BoldListBoxText::paint( QPainter* painter ) +{ + QFont f = painter->font(); + f.setBold( true ); + painter->setFont( f ); + + QListBoxText::paint( painter ); +} + +PaletteEditorAdvanced::PaletteEditorAdvanced( FormWindow *fw, QWidget * parent, + const char * name, bool modal, WFlags f ) + : PaletteEditorAdvancedBase( parent, name, modal, f ), formWindow( fw ), selectedPalette(0) +{ + connect( buttonHelp, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); + + buttonPixmap->setEditor( StyledButton::PixmapEditor ); + + editPalette = QApplication::palette(); + setPreviewPalette( editPalette ); + + buttonPixmap->setFormWindow( formWindow ); + + // force toggle event + checkBuildEffect->setChecked(false); + checkBuildEffect->setChecked(true); +} + +PaletteEditorAdvanced::~PaletteEditorAdvanced() +{ +} + +void PaletteEditorAdvanced::onToggleBuildInactive( bool v ) +{ + if (selectedPalette == 1) { + groupCentral->setDisabled(v); + groupEffect->setDisabled(v); + } + + if (v) { + buildInactive(); + updateStyledButtons(); + } +} + +void PaletteEditorAdvanced::onToggleBuildDisabled( bool v ) +{ + if (selectedPalette == 2) { + groupCentral->setDisabled(v); + groupEffect->setDisabled(v); + } + + if (v) { + buildDisabled(); + updateStyledButtons(); + } +} + +void PaletteEditorAdvanced::paletteSelected(int p) +{ + selectedPalette = p; + + if(p == 1) { // inactive + groupCentral->setDisabled(checkBuildInactive->isChecked()); + groupEffect->setDisabled(checkBuildInactive->isChecked()); + } + else if (p == 2) { // disabled + groupCentral->setDisabled(checkBuildDisabled->isChecked()); + groupEffect->setDisabled(checkBuildDisabled->isChecked()); + } + else { + groupCentral->setEnabled(true); + groupEffect->setEnabled(true); + } + updateStyledButtons(); +} + +void PaletteEditorAdvanced::onChooseCentralColor() +{ + switch(selectedPalette) { + case 0: + default: + mapToActiveCentralRole( buttonCentral->color() ); + break; + case 1: + mapToInactiveCentralRole( buttonCentral->color() ); + break; + case 2: + mapToDisabledCentralRole( buttonCentral->color() ); + break; + } + updateStyledButtons(); +} + +void PaletteEditorAdvanced::onChooseEffectColor() +{ + switch(selectedPalette) { + case 0: + default: + mapToActiveEffectRole( buttonEffect->color() ); + break; + case 1: + mapToInactiveEffectRole( buttonEffect->color() ); + break; + case 2: + mapToDisabledEffectRole( buttonEffect->color() ); + break; + } + updateStyledButtons(); +} + +void PaletteEditorAdvanced::onChoosePixmap() +{ + if (buttonPixmap->pixmap()) { + switch(selectedPalette) { + case 0: + default: + mapToActivePixmapRole( *buttonPixmap->pixmap() ); + break; + case 1: + mapToInactivePixmapRole( *buttonPixmap->pixmap() ); + break; + case 2: + mapToDisabledPixmapRole( *buttonPixmap->pixmap() ); + break; + } + } + updateStyledButtons(); +} + +void PaletteEditorAdvanced::onToggleBuildEffects( bool on ) +{ + if (!on) return; + buildActiveEffect(); + buildInactiveEffect(); + buildDisabledEffect(); +} + +QColorGroup::ColorRole PaletteEditorAdvanced::centralFromItem( int item ) +{ + switch( item ) { + case 0: + return QColorGroup::Background; + case 1: + return QColorGroup::Foreground; + case 2: + return QColorGroup::Button; + case 3: + return QColorGroup::Base; + case 4: + return QColorGroup::Text; + case 5: + return QColorGroup::BrightText; + case 6: + return QColorGroup::ButtonText; + case 7: + return QColorGroup::Highlight; + case 8: + return QColorGroup::HighlightedText; + case 9: + return QColorGroup::Link; + case 10: + return QColorGroup::LinkVisited; + default: + return QColorGroup::NColorRoles; + } +} + +QColorGroup::ColorRole PaletteEditorAdvanced::effectFromItem( int item ) +{ + switch( item ) { + case 0: + return QColorGroup::Light; + case 1: + return QColorGroup::Midlight; + case 2: + return QColorGroup::Mid; + case 3: + return QColorGroup::Dark; + case 4: + return QColorGroup::Shadow; + default: + return QColorGroup::NColorRoles; + } +} + +void PaletteEditorAdvanced::onCentral( int item ) +{ + QPixmap* p = 0; + QColor c; + + switch(selectedPalette) { + case 0: + default: + c = editPalette.active().color( centralFromItem(item) ); + p = editPalette.active().brush( centralFromItem(item) ).pixmap(); + break; + case 1: + c = editPalette.inactive().color( centralFromItem(item) ); + p = editPalette.inactive().brush( centralFromItem(item) ).pixmap(); + break; + case 2: + c = editPalette.disabled().color( centralFromItem(item) ); + p = editPalette.disabled().brush( centralFromItem(item) ).pixmap(); + break; + } + + buttonCentral->setColor(c); + + if (p) + buttonPixmap->setPixmap( *p ); + else + buttonPixmap->setPixmap( QPixmap() ); +} + +void PaletteEditorAdvanced::onEffect( int item ) +{ + QColor c; + switch(selectedPalette) { + case 0: + default: + c = editPalette.active().color( effectFromItem(item) ); + break; + case 1: + editPalette.inactive().color( effectFromItem(item) ); + break; + case 2: + editPalette.disabled().color( effectFromItem(item) ); + break; + } + buttonEffect->setColor(c); +} + +void PaletteEditorAdvanced::mapToActiveCentralRole( const QColor& c ) +{ + QColorGroup cg = editPalette.active(); + cg.setColor( centralFromItem(comboCentral->currentItem()), c ); + editPalette.setActive( cg ); + + buildActiveEffect(); + if(checkBuildInactive->isChecked()) + buildInactive(); + if(checkBuildDisabled->isChecked()) + buildDisabled(); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::mapToActiveEffectRole( const QColor& c ) +{ + QColorGroup cg = editPalette.active(); + cg.setColor( effectFromItem(comboEffect->currentItem()), c ); + editPalette.setActive( cg ); + + if(checkBuildInactive->isChecked()) + buildInactive(); + if(checkBuildDisabled->isChecked()) + buildDisabled(); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::mapToActivePixmapRole( const QPixmap& pm ) +{ + QColorGroup::ColorRole role = centralFromItem(comboCentral->currentItem()); + QColorGroup cg = editPalette.active(); + if ( !pm.isNull() ) + cg.setBrush( role, QBrush( cg.color( role ), pm ) ); + else + cg.setBrush( role, QBrush( cg.color( role ) ) ); + editPalette.setActive( cg ); + + + buildActiveEffect(); + if(checkBuildInactive->isChecked()) + buildInactive(); + if(checkBuildDisabled->isChecked()) + buildDisabled(); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::mapToInactiveCentralRole( const QColor& c ) +{ + QColorGroup cg = editPalette.inactive(); + cg.setColor( centralFromItem(comboCentral->currentItem()), c ); + editPalette.setInactive( cg ); + + buildInactiveEffect(); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::mapToInactiveEffectRole( const QColor& c ) +{ + QColorGroup cg = editPalette.inactive(); + cg.setColor( effectFromItem(comboEffect->currentItem()), c ); + editPalette.setInactive( cg ); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::mapToInactivePixmapRole( const QPixmap& pm ) +{ + QColorGroup::ColorRole role = centralFromItem(comboCentral->currentItem()); + QColorGroup cg = editPalette.inactive(); + if ( !pm.isNull() ) + cg.setBrush( role, QBrush( cg.color( role ), pm ) ); + else + cg.setBrush( role, QBrush( cg.color( role ) ) ); + editPalette.setInactive( cg ); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::mapToDisabledCentralRole( const QColor& c ) +{ + QColorGroup cg = editPalette.disabled(); + cg.setColor( centralFromItem(comboCentral->currentItem()), c ); + editPalette.setDisabled( cg ); + + buildDisabledEffect(); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::mapToDisabledEffectRole( const QColor& c ) +{ + QColorGroup cg = editPalette.disabled(); + cg.setColor( effectFromItem(comboEffect->currentItem()), c ); + editPalette.setDisabled( cg ); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::mapToDisabledPixmapRole( const QPixmap& pm ) +{ + QColorGroup::ColorRole role = centralFromItem(comboCentral->currentItem()); + QColorGroup cg = editPalette.disabled(); + if ( !pm.isNull() ) + cg.setBrush( role, QBrush( cg.color( role ), pm ) ); + else + cg.setBrush( role, QBrush( cg.color( role ) ) ); + + editPalette.setDisabled( cg ); + + setPreviewPalette( editPalette ); +} + +void PaletteEditorAdvanced::buildActiveEffect() +{ + QColorGroup cg = editPalette.active(); + QColor btn = cg.color( QColorGroup::Button ); + + QPalette temp( btn, btn ); + + for (int i = 0; i<5; i++) + cg.setColor( effectFromItem(i), temp.active().color( effectFromItem(i) ) ); + + editPalette.setActive( cg ); + setPreviewPalette( editPalette ); + + updateStyledButtons(); +} + +void PaletteEditorAdvanced::buildInactive() +{ + editPalette.setInactive( editPalette.active() ); + buildInactiveEffect(); +} + +void PaletteEditorAdvanced::buildInactiveEffect() +{ + QColorGroup cg = editPalette.inactive(); + + QColor light, midlight, mid, dark, shadow; + QColor btn = cg.color( QColorGroup::Button ); + + light = btn.light(150); + midlight = btn.light(115); + mid = btn.dark(150); + dark = btn.dark(); + shadow = black; + + cg.setColor( QColorGroup::Light, light ); + cg.setColor( QColorGroup::Midlight, midlight ); + cg.setColor( QColorGroup::Mid, mid ); + cg.setColor( QColorGroup::Dark, dark ); + cg.setColor( QColorGroup::Shadow, shadow ); + + editPalette.setInactive( cg ); + setPreviewPalette( editPalette ); + updateStyledButtons(); +} + +void PaletteEditorAdvanced::buildDisabled() +{ + QColorGroup cg = editPalette.active(); + cg.setColor( QColorGroup::ButtonText, darkGray ); + cg.setColor( QColorGroup::Foreground, darkGray ); + editPalette.setDisabled( cg ); + + buildDisabledEffect(); +} + +void PaletteEditorAdvanced::buildDisabledEffect() +{ + QColorGroup cg = editPalette.disabled(); + + QColor light, midlight, mid, dark, shadow; + QColor btn = cg.color( QColorGroup::Button ); + + light = btn.light(150); + midlight = btn.light(115); + mid = btn.dark(150); + dark = btn.dark(); + shadow = black; + + cg.setColor( QColorGroup::Light, light ); + cg.setColor( QColorGroup::Midlight, midlight ); + cg.setColor( QColorGroup::Mid, mid ); + cg.setColor( QColorGroup::Dark, dark ); + cg.setColor( QColorGroup::Shadow, shadow ); + + editPalette.setDisabled( cg ); + setPreviewPalette( editPalette ); + updateStyledButtons(); +} + +void PaletteEditorAdvanced::setPreviewPalette( const QPalette& pal ) +{ + QColorGroup cg; + + switch (selectedPalette) { + case 0: + default: + cg = pal.active(); + break; + case 1: + cg = pal.inactive(); + break; + case 2: + cg = pal.disabled(); + break; + } + previewPalette.setActive( cg ); + previewPalette.setInactive( cg ); + previewPalette.setDisabled( cg ); +} + +void PaletteEditorAdvanced::updateStyledButtons() +{ + QColor central, effect; + QPixmap *pm = 0; + switch (selectedPalette) { + case 0: + default: + central = editPalette.active().color( centralFromItem( comboCentral->currentItem() ) ); + effect = editPalette.active().color( effectFromItem( comboEffect->currentItem() ) ); + pm = editPalette.active().brush( centralFromItem( comboCentral->currentItem() ) ).pixmap(); + break; + case 1: + central = editPalette.inactive().color( centralFromItem( comboCentral->currentItem() ) ); + effect = editPalette.inactive().color( effectFromItem( comboEffect->currentItem() ) ); + pm = editPalette.inactive().brush( centralFromItem( comboCentral->currentItem() ) ).pixmap(); + break; + case 2: + central = editPalette.disabled().color( centralFromItem( comboCentral->currentItem() ) ); + effect = editPalette.disabled().color( effectFromItem( comboEffect->currentItem() ) ); + pm = editPalette.disabled().brush( centralFromItem( comboCentral->currentItem() ) ).pixmap(); + break; + } + + buttonCentral->setColor(central); + buttonEffect->setColor(effect); + if ( pm && !pm->isNull() ) + buttonPixmap->setPixmap( *pm ); + else + buttonPixmap->setPixmap(QPixmap()); +} + +void PaletteEditorAdvanced::setPal( const QPalette& pal ) +{ + editPalette = pal; + setPreviewPalette( pal ); + updateStyledButtons(); +} + +QPalette PaletteEditorAdvanced::pal() const +{ + return editPalette; +} + +void PaletteEditorAdvanced::setupBackgroundMode( BackgroundMode mode ) +{ + int initRole = 0; + + switch( mode ) { + case PaletteBackground: + initRole = 0; + break; + case PaletteForeground: + initRole = 1; + break; + case PaletteButton: + initRole = 2; + break; + case PaletteBase: + initRole = 3; + break; + case PaletteText: + initRole = 4; + break; + case PaletteBrightText: + initRole = 5; + break; + case PaletteButtonText: + initRole = 6; + break; + case PaletteHighlight: + initRole = 7; + break; + case PaletteHighlightedText: + initRole = 8; + break; + case PaletteLight: + initRole = 9; + break; + case PaletteMidlight: + initRole = 10; + break; + case PaletteDark: + initRole = 11; + break; + case PaletteMid: + initRole = 12; + break; + case PaletteShadow: + initRole = 13; + break; + default: + initRole = -1; + break; + } + + if ( initRole <= -1 ) return; + + if (initRole > 8 ) { + comboEffect->setCurrentItem( initRole - 9 ); + if ( comboEffect->listBox() ) { + QString text = comboEffect->currentText(); + comboEffect->listBox()->changeItem( new BoldListBoxText( text ), initRole - 9 ); + } + } + else { + comboCentral->setCurrentItem( initRole ); + if ( comboCentral->listBox() ) { + QString text = comboCentral->currentText(); + comboCentral->listBox()->changeItem( new BoldListBoxText( text ), initRole ); + } + } +} + +QPalette PaletteEditorAdvanced::getPalette( bool *ok, const QPalette &init, + BackgroundMode mode, QWidget* parent, + const char* name, FormWindow *fw ) +{ + PaletteEditorAdvanced* dlg = new PaletteEditorAdvanced( fw, parent, name, true ); + dlg->setupBackgroundMode( mode ); + + if ( init != QPalette() ) + dlg->setPal( init ); + int resultCode = dlg->exec(); + + QPalette result = init; + if ( resultCode == QDialog::Accepted ) { + if ( ok ) + *ok = true; + result = dlg->pal(); + } else { + if ( ok ) + *ok = false; + } + delete dlg; + return result; +} +#include "paletteeditoradvancedimpl.moc" diff --git a/kommander/editor/paletteeditoradvancedimpl.h b/kommander/editor/paletteeditoradvancedimpl.h new file mode 100644 index 00000000..a1b56c06 --- /dev/null +++ b/kommander/editor/paletteeditoradvancedimpl.h @@ -0,0 +1,90 @@ +#ifndef PALETTEEDITORADVANCEDIMPL_H +#define PALETTEEDITORADVANCEDIMPL_H + +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "paletteeditoradvanced.h" + +class FormWindow; + +class PaletteEditorAdvanced : public PaletteEditorAdvancedBase +{ + Q_OBJECT +public: + PaletteEditorAdvanced( FormWindow *fw, QWidget * parent=0, const char * name=0, + bool modal=FALSE, WFlags f=0 ); + ~PaletteEditorAdvanced(); + + static QPalette getPalette( bool *ok, const QPalette &pal, BackgroundMode mode = PaletteBackground, + QWidget* parent = 0, const char* name = 0, FormWindow *fw = 0 ); + +protected slots: + void paletteSelected(int); + + void onCentral( int ); + void onEffect( int ); + + void onChooseCentralColor(); + void onChooseEffectColor(); + void onChoosePixmap(); + + void onToggleBuildEffects( bool ); + void onToggleBuildInactive( bool ); + void onToggleBuildDisabled( bool ); + +protected: + void mapToActiveCentralRole( const QColor& ); + void mapToActiveEffectRole( const QColor& ); + void mapToActivePixmapRole( const QPixmap& ); + void mapToInactiveCentralRole( const QColor& ); + void mapToInactiveEffectRole( const QColor& ); + void mapToInactivePixmapRole( const QPixmap& ); + void mapToDisabledCentralRole( const QColor& ); + void mapToDisabledEffectRole( const QColor& ); + void mapToDisabledPixmapRole( const QPixmap& ); + + + void buildPalette(); + void buildActiveEffect(); + void buildInactive(); + void buildInactiveEffect(); + void buildDisabled(); + void buildDisabledEffect(); + +private: + void setPreviewPalette( const QPalette& ); + void updateStyledButtons(); + void setupBackgroundMode( BackgroundMode ); + + QPalette pal() const; + void setPal( const QPalette& ); + + QColorGroup::ColorRole centralFromItem( int ); + QColorGroup::ColorRole effectFromItem( int ); + QPalette editPalette; + QPalette previewPalette; + + FormWindow *formWindow; + + int selectedPalette; +}; + +#endif diff --git a/kommander/editor/paletteeditorimpl.cpp b/kommander/editor/paletteeditorimpl.cpp new file mode 100644 index 00000000..9264c810 --- /dev/null +++ b/kommander/editor/paletteeditorimpl.cpp @@ -0,0 +1,299 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "paletteeditorimpl.h" +#include "paletteeditoradvancedimpl.h" +#include "previewframe.h" +#include "styledbutton.h" +#include "mainwindow.h" +#include "formwindow.h" + +#include <qcheckbox.h> +#include <qcombobox.h> +#include <qapplication.h> +#include <qpushbutton.h> + +PaletteEditor::PaletteEditor( FormWindow *fw, QWidget * parent, const char * name, bool modal, WFlags f ) + : PaletteEditorBase( parent, name, modal, f ), formWindow( fw ) +{ + connect( buttonHelp, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); + + editPalette = QApplication::palette(); + setPreviewPalette( editPalette ); + + buttonMainColor->setColor( editPalette.active().color( QColorGroup::Button ) ); + buttonMainColor2->setColor( editPalette.active().color( QColorGroup::Background ) ); +} + +PaletteEditor::~PaletteEditor() +{ +} + +void PaletteEditor::onTune() +{ + bool ok; + QPalette pal = PaletteEditorAdvanced::getPalette( &ok, editPalette, backgroundMode, this, "tune_palette", formWindow); + if (!ok) return; + + editPalette = pal; + setPreviewPalette( editPalette ); +} + +void PaletteEditor::onChooseMainColor() +{ + buildPalette(); +} + +void PaletteEditor::onChoose2ndMainColor() +{ + buildPalette(); +} + +void PaletteEditor::paletteSelected(int) +{ + setPreviewPalette(editPalette); +} + +QColorGroup::ColorRole PaletteEditor::centralFromItem( int item ) +{ + switch( item ) + { + case 0: + return QColorGroup::Background; + case 1: + return QColorGroup::Foreground; + case 2: + return QColorGroup::Button; + case 3: + return QColorGroup::Base; + case 4: + return QColorGroup::Text; + case 5: + return QColorGroup::BrightText; + case 6: + return QColorGroup::ButtonText; + case 7: + return QColorGroup::Highlight; + case 8: + return QColorGroup::HighlightedText; + default: + return QColorGroup::NColorRoles; + } +} + +QColorGroup::ColorRole PaletteEditor::effectFromItem( int item ) +{ + switch( item ) + { + case 0: + return QColorGroup::Light; + case 1: + return QColorGroup::Midlight; + case 2: + return QColorGroup::Mid; + case 3: + return QColorGroup::Dark; + case 4: + return QColorGroup::Shadow; + default: + return QColorGroup::NColorRoles; + } +} + +void PaletteEditor::buildPalette() +{ + int i; + QColorGroup cg; + QColor btn = buttonMainColor->color(); + QColor back = buttonMainColor2->color(); + QPalette automake( btn, back ); + + for (i = 0; i<9; i++) + cg.setColor( centralFromItem(i), automake.active().color( centralFromItem(i) ) ); + + editPalette.setActive( cg ); + buildActiveEffect(); + + cg = editPalette.inactive(); + + QPalette temp( editPalette.active().color( QColorGroup::Button ), + editPalette.active().color( QColorGroup::Background ) ); + + for (i = 0; i<9; i++) + cg.setColor( centralFromItem(i), temp.inactive().color( centralFromItem(i) ) ); + + editPalette.setInactive( cg ); + buildInactiveEffect(); + + cg = editPalette.disabled(); + + for (i = 0; i<9; i++) + cg.setColor( centralFromItem(i), temp.disabled().color( centralFromItem(i) ) ); + + editPalette.setDisabled( cg ); + buildDisabledEffect(); + + updateStyledButtons(); +} + +void PaletteEditor::buildActiveEffect() +{ + QColorGroup cg = editPalette.active(); + QColor btn = cg.color( QColorGroup::Button ); + + QPalette temp( btn, btn ); + + for (int i = 0; i<5; i++) + cg.setColor( effectFromItem(i), temp.active().color( effectFromItem(i) ) ); + + editPalette.setActive( cg ); + setPreviewPalette( editPalette ); + + updateStyledButtons(); +} + +void PaletteEditor::buildInactive() +{ + editPalette.setInactive( editPalette.active() ); + buildInactiveEffect(); +} + +void PaletteEditor::buildInactiveEffect() +{ + QColorGroup cg = editPalette.inactive(); + + QColor light, midlight, mid, dark, shadow; + QColor btn = cg.color( QColorGroup::Button ); + + light = btn.light(150); + midlight = btn.light(115); + mid = btn.dark(150); + dark = btn.dark(); + shadow = black; + + cg.setColor( QColorGroup::Light, light ); + cg.setColor( QColorGroup::Midlight, midlight ); + cg.setColor( QColorGroup::Mid, mid ); + cg.setColor( QColorGroup::Dark, dark ); + cg.setColor( QColorGroup::Shadow, shadow ); + + editPalette.setInactive( cg ); + setPreviewPalette( editPalette ); + updateStyledButtons(); +} + +void PaletteEditor::buildDisabled() +{ + QColorGroup cg = editPalette.active(); + cg.setColor( QColorGroup::ButtonText, darkGray ); + cg.setColor( QColorGroup::Foreground, darkGray ); + editPalette.setDisabled( cg ); + + buildDisabledEffect(); +} + +void PaletteEditor::buildDisabledEffect() +{ + QColorGroup cg = editPalette.disabled(); + + QColor light, midlight, mid, dark, shadow; + QColor btn = cg.color( QColorGroup::Button ); + + light = btn.light(150); + midlight = btn.light(115); + mid = btn.dark(150); + dark = btn.dark(); + shadow = black; + + cg.setColor( QColorGroup::Light, light ); + cg.setColor( QColorGroup::Midlight, midlight ); + cg.setColor( QColorGroup::Mid, mid ); + cg.setColor( QColorGroup::Dark, dark ); + cg.setColor( QColorGroup::Shadow, shadow ); + + editPalette.setDisabled( cg ); + setPreviewPalette( editPalette ); + updateStyledButtons(); +} + +void PaletteEditor::setPreviewPalette( const QPalette& pal ) +{ + QColorGroup cg; + + switch (paletteCombo->currentItem()) { + case 0: + default: + cg = pal.active(); + break; + case 1: + cg = pal.inactive(); + break; + case 2: + cg = pal.disabled(); + break; + } + previewPalette.setActive( cg ); + previewPalette.setInactive( cg ); + previewPalette.setDisabled( cg ); + + previewFrame->setPreviewPalette(previewPalette); +} + +void PaletteEditor::updateStyledButtons() +{ + buttonMainColor->setColor( editPalette.active().color( QColorGroup::Button )); + buttonMainColor2->setColor( editPalette.active().color( QColorGroup::Background )); +} + +void PaletteEditor::setPal( const QPalette& pal ) +{ + editPalette = pal; + setPreviewPalette( pal ); + updateStyledButtons(); +} + +QPalette PaletteEditor::pal() const +{ + return editPalette; +} + +QPalette PaletteEditor::getPalette( bool *ok, const QPalette &init, BackgroundMode mode, + QWidget* parent, const char* name, FormWindow *fw ) +{ + PaletteEditor* dlg = new PaletteEditor( fw, parent, name, true ); + dlg->setupBackgroundMode( mode ); + + if ( init != QPalette() ) + dlg->setPal( init ); + int resultCode = dlg->exec(); + + QPalette result = init; + if ( resultCode == QDialog::Accepted ) { + if ( ok ) + *ok = true; + result = dlg->pal(); + } else { + if ( ok ) + *ok = false; + } + delete dlg; + return result; +} +#include "paletteeditorimpl.moc" diff --git a/kommander/editor/paletteeditorimpl.h b/kommander/editor/paletteeditorimpl.h new file mode 100644 index 00000000..258d0978 --- /dev/null +++ b/kommander/editor/paletteeditorimpl.h @@ -0,0 +1,70 @@ +#ifndef PALETTEEDITORIMPL_H +#define PALETTEEDITORIMPL_H + +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "paletteeditor.h" + +class FormWindow; + +class PaletteEditor : public PaletteEditorBase +{ + Q_OBJECT + +public: + PaletteEditor( FormWindow *fw, QWidget * parent=0, const char * name=0, bool modal=FALSE, WFlags f=0 ); + ~PaletteEditor(); + + static QPalette getPalette( bool *ok, const QPalette &pal, BackgroundMode mode = PaletteBackground, + QWidget* parent = 0, const char* name = 0, FormWindow *fw = 0 ); + +protected slots: + void onChooseMainColor(); + void onChoose2ndMainColor(); + void onTune(); + void paletteSelected(int); + +protected: + void buildPalette(); + void buildActiveEffect(); + void buildInactive(); + void buildInactiveEffect(); + void buildDisabled(); + void buildDisabledEffect(); + +private: + void setPreviewPalette( const QPalette& ); + void updateStyledButtons(); + void setupBackgroundMode( BackgroundMode mode ) { backgroundMode = mode; } + + QPalette pal() const; + void setPal( const QPalette& ); + + QColorGroup::ColorRole centralFromItem( int ); + QColorGroup::ColorRole effectFromItem( int ); + QPalette editPalette; + QPalette previewPalette; + + FormWindow *formWindow; + BackgroundMode backgroundMode; +}; + +#endif diff --git a/kommander/editor/parser.cpp b/kommander/editor/parser.cpp new file mode 100644 index 00000000..4fc13c5f --- /dev/null +++ b/kommander/editor/parser.cpp @@ -0,0 +1,66 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "parser.h" +#include <qobject.h> +#include <qstringlist.h> + +class NormalizeObject : public QObject +{ +public: + NormalizeObject() : QObject() {} + static QCString normalizeSignalSlot( const char *signalSlot ) { return QObject::normalizeSignalSlot( signalSlot ); } +}; + +QString Parser::cleanArgs( const QString &func ) +{ + QString slot( func ); + int begin = slot.find( "(" ) + 1; + QString args = slot.mid( begin ); + args = args.left( args.find( ")" ) ); + QStringList lst = QStringList::split( ',', args ); + QString res = slot.left( begin ); + for ( QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) { + if ( it != lst.begin() ) + res += ","; + QString arg = *it; + int pos = 0; + if ( ( pos = arg.find( "&" ) ) != -1 ) { + arg = arg.left( pos + 1 ); + } else if ( ( pos = arg.find( "*" ) ) != -1 ) { + arg = arg.left( pos + 1 ); + } else { + arg = arg.simplifyWhiteSpace(); + if ( ( pos = arg.find( ':' ) ) != -1 ) + arg = arg.left( pos ).simplifyWhiteSpace() + ":" + arg.mid( pos + 1 ).simplifyWhiteSpace(); + QStringList l = QStringList::split( ' ', arg ); + if ( l.count() == 2 ) { + if ( l[ 0 ] != "const" && l[ 0 ] != "unsigned" && l[ 0 ] != "var" ) + arg = l[ 0 ]; + } else if ( l.count() == 3 ) { + arg = l[ 0 ] + " " + l[ 1 ]; + } + } + res += arg; + } + res += ")"; + + return QString::fromLatin1( NormalizeObject::normalizeSignalSlot( res.latin1() ) ); +} diff --git a/kommander/editor/parser.h b/kommander/editor/parser.h new file mode 100644 index 00000000..5a5671ad --- /dev/null +++ b/kommander/editor/parser.h @@ -0,0 +1,33 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef PARSER_H +#define PARSER_H + +#include <qstring.h> + +class Parser +{ +public: + static QString cleanArgs( const QString &func ); + +}; + +#endif diff --git a/kommander/editor/pics/Makefile.am b/kommander/editor/pics/Makefile.am new file mode 100644 index 00000000..2306b047 --- /dev/null +++ b/kommander/editor/pics/Makefile.am @@ -0,0 +1,5 @@ +kmdr_editordir = ${kde_datadir}/kommander/pics + +kmdr_editor_DATA = kommandersplash.png toolbox.png kfontcombo.png + + diff --git a/kommander/editor/pics/arrow.xbm b/kommander/editor/pics/arrow.xbm new file mode 100644 index 00000000..076875d4 --- /dev/null +++ b/kommander/editor/pics/arrow.xbm @@ -0,0 +1,10 @@ +#define arrow_width 25 +#define arrow_height 25 +static unsigned char arrow_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x01,0x00, + 0x00,0x80,0x02,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x08,0x00,0x00,0x80,0x10, + 0x00,0x00,0x80,0x20,0x00,0x00,0x80,0x40,0x00,0x00,0x80,0x80,0x00,0x00,0x80, + 0x00,0x01,0x00,0x80,0x00,0x02,0x00,0x80,0xc0,0x07,0x00,0x80,0x48,0x00,0x00, + 0x80,0x4c,0x00,0x00,0x80,0x92,0x00,0x00,0x80,0x91,0x00,0x00,0x80,0x20,0x01, + 0x00,0x00,0x20,0x01,0x00,0x00,0x40,0x02,0x00,0x00,0x40,0x02,0x00,0x00,0x80, + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/background.png b/kommander/editor/pics/background.png Binary files differnew file mode 100644 index 00000000..d2102bac --- /dev/null +++ b/kommander/editor/pics/background.png diff --git a/kommander/editor/pics/cross.xbm b/kommander/editor/pics/cross.xbm new file mode 100644 index 00000000..e6334a16 --- /dev/null +++ b/kommander/editor/pics/cross.xbm @@ -0,0 +1,10 @@ +#define cross_width 25 +#define cross_height 25 +static unsigned char cross_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10, + 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x10,0x00,0x00,0xf0,0xff,0x1f,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00, + 0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/hand.xbm b/kommander/editor/pics/hand.xbm new file mode 100644 index 00000000..19513f38 --- /dev/null +++ b/kommander/editor/pics/hand.xbm @@ -0,0 +1,10 @@ +#define hand_width 25 +#define hand_height 25 +static unsigned char hand_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00, + 0x00,0x80,0x04,0x00,0x00,0x80,0x04,0x00,0x00,0x80,0x1c,0x00,0x00,0x80,0xe4, + 0x00,0x00,0x80,0x24,0x03,0x00,0x80,0x24,0x05,0x00,0xb8,0x24,0x09,0x00,0xc8, + 0x00,0x09,0x00,0x88,0x00,0x08,0x00,0x90,0x00,0x08,0x00,0xa0,0x00,0x08,0x00, + 0x20,0x00,0x08,0x00,0x40,0x00,0x08,0x00,0x40,0x00,0x04,0x00,0x80,0x00,0x04, + 0x00,0x80,0x00,0x04,0x00,0x00,0x01,0x02,0x00,0x00,0x01,0x02,0x00,0x00,0xff, + 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/hsplit.xbm b/kommander/editor/pics/hsplit.xbm new file mode 100644 index 00000000..8d053797 --- /dev/null +++ b/kommander/editor/pics/hsplit.xbm @@ -0,0 +1,10 @@ +#define hsplit_width 25 +#define hsplit_height 25 +static unsigned char hsplit_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00, + 0x00,0x00,0x1c,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0xf0, + 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x07,0x00, + 0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00, + 0x00,0x00,0x08,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x08, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/ibeam.xbm b/kommander/editor/pics/ibeam.xbm new file mode 100644 index 00000000..479c5134 --- /dev/null +++ b/kommander/editor/pics/ibeam.xbm @@ -0,0 +1,10 @@ +#define ibeam_width 25 +#define ibeam_height 25 +static unsigned char ibeam_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0xee,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10, + 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00, + 0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/images.h b/kommander/editor/pics/images.h new file mode 100644 index 00000000..adec0936 --- /dev/null +++ b/kommander/editor/pics/images.h @@ -0,0 +1,10979 @@ +#ifndef _QEMBED_1804289383 +#define _QEMBED_1804289383 +static const unsigned int arrow_xbm_len = 601; +static const unsigned char arrow_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x61,0x72,0x72,0x6f,0x77,0x5f, + 0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69, + 0x6e,0x65,0x20,0x61,0x72,0x72,0x6f,0x77,0x5f,0x68,0x65,0x69,0x67,0x68, + 0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e, + 0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x61,0x72, + 0x72,0x6f,0x77,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30, + 0x31,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30, + 0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x38,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x38,0x30,0x2c,0x30,0x78,0x32,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x34,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30, + 0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x63,0x30,0x2c,0x30,0x78, + 0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30, + 0x78,0x34,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x34,0x63,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30, + 0x78,0x39,0x32,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x39,0x31,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x32, + 0x30,0x2c,0x30,0x78,0x30,0x31,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x32,0x30,0x2c,0x30,0x78,0x30,0x31, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x34, + 0x30,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x34,0x30,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +/* Generated by qembed */ +static const unsigned int cross_xbm_len = 601; +static const unsigned char cross_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x63,0x72,0x6f,0x73,0x73,0x5f, + 0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69, + 0x6e,0x65,0x20,0x63,0x72,0x6f,0x73,0x73,0x5f,0x68,0x65,0x69,0x67,0x68, + 0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e, + 0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x63,0x72, + 0x6f,0x73,0x73,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x31,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x66,0x30, + 0x2c,0x30,0x78,0x66,0x66,0x2c,0x30,0x78,0x31,0x66,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int hand_xbm_len = 598; +static const unsigned char hand_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x68,0x61,0x6e,0x64,0x5f,0x77, + 0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69,0x6e, + 0x65,0x20,0x68,0x61,0x6e,0x64,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20, + 0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e,0x73,0x69, + 0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x68,0x61,0x6e,0x64, + 0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x33, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38, + 0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38, + 0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c, + 0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x65,0x34,0x2c,0x0a,0x20,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c, + 0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30,0x33,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30, + 0x35,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x62,0x38,0x2c,0x30,0x78, + 0x32,0x34,0x2c,0x30,0x78,0x30,0x39,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x63,0x38,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x39,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x38,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x39,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x61,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30, + 0x78,0x32,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x34,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x34, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x34,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x31,0x2c,0x30, + 0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x66,0x66,0x2c,0x0a,0x20,0x30, + 0x78,0x30,0x33,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int hsplit_xbm_len = 604; +static const unsigned char hsplit_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x68,0x73,0x70,0x6c,0x69,0x74, + 0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66, + 0x69,0x6e,0x65,0x20,0x68,0x73,0x70,0x6c,0x69,0x74,0x5f,0x68,0x65,0x69, + 0x67,0x68,0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, + 0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20, + 0x68,0x73,0x70,0x6c,0x69,0x74,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20, + 0x3d,0x20,0x7b,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x63,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x33,0x65,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x38,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x66,0x30,0x2c,0x0a,0x20,0x30,0x78, + 0x66,0x66,0x2c,0x30,0x78,0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x66, + 0x30,0x2c,0x30,0x78,0x66,0x66,0x2c,0x30,0x78,0x30,0x37,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x33,0x65,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x38,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d, + 0x3b,0x0a +}; + +static const unsigned int ibeam_xbm_len = 601; +static const unsigned char ibeam_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x69,0x62,0x65,0x61,0x6d,0x5f, + 0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69, + 0x6e,0x65,0x20,0x69,0x62,0x65,0x61,0x6d,0x5f,0x68,0x65,0x69,0x67,0x68, + 0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e, + 0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x69,0x62, + 0x65,0x61,0x6d,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x65,0x65,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x31,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x65,0x65,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int no_xbm_len = 592; +static const unsigned char no_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x6e,0x6f,0x5f,0x77,0x69,0x64, + 0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20, + 0x6e,0x6f,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20,0x32,0x35,0x0a,0x73, + 0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64, + 0x20,0x63,0x68,0x61,0x72,0x20,0x6e,0x6f,0x5f,0x62,0x69,0x74,0x73,0x5b, + 0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x37,0x65,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x66,0x66, + 0x2c,0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x63, + 0x30,0x2c,0x30,0x78,0x63,0x33,0x2c,0x30,0x78,0x30,0x33,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x65,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x66,0x30,0x2c, + 0x30,0x78,0x30,0x31,0x2c,0x0a,0x20,0x30,0x78,0x30,0x65,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x62,0x30,0x2c,0x30,0x78,0x30,0x33,0x2c,0x30, + 0x78,0x30,0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x33,0x38,0x2c, + 0x30,0x78,0x30,0x37,0x2c,0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x31,0x38,0x2c,0x30,0x78,0x30,0x65,0x2c,0x30,0x78,0x31, + 0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x38,0x2c,0x0a,0x20, + 0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x31,0x38,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x31,0x38,0x2c,0x30,0x78,0x33,0x38,0x2c,0x30,0x78,0x31, + 0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x38,0x2c,0x30,0x78, + 0x37,0x30,0x2c,0x30,0x78,0x31,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x33,0x38,0x2c,0x30,0x78,0x65,0x30,0x2c,0x30,0x78,0x31,0x63,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x33,0x30,0x2c,0x30,0x78, + 0x63,0x30,0x2c,0x30,0x78,0x30,0x64,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x37,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x66,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x65,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x63, + 0x30,0x2c,0x30,0x78,0x63,0x33,0x2c,0x30,0x78,0x30,0x33,0x2c,0x0a,0x20, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x66,0x66, + 0x2c,0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x37,0x65,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int sizeall_xbm_len = 607; +static const unsigned char sizeall_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x61,0x6c, + 0x6c,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65, + 0x66,0x69,0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x61,0x6c,0x6c,0x5f,0x68, + 0x65,0x69,0x67,0x68,0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69, + 0x63,0x20,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61, + 0x72,0x20,0x73,0x69,0x7a,0x65,0x61,0x6c,0x6c,0x5f,0x62,0x69,0x74,0x73, + 0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a, + 0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x33, + 0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x37,0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x66,0x65,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x31,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x34,0x30, + 0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x36,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78, + 0x30,0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x37,0x30,0x2c,0x0a, + 0x20,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x66,0x38,0x2c,0x30,0x78,0x66,0x66,0x2c,0x30,0x78, + 0x33,0x66,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x37,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x36,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x63, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x34,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x66,0x65,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a, + 0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x37, + 0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x33,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int sizeb_xbm_len = 601; +static const unsigned char sizeb_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x62,0x5f, + 0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69, + 0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x62,0x5f,0x68,0x65,0x69,0x67,0x68, + 0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e, + 0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x73,0x69, + 0x7a,0x65,0x62,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x63,0x30,0x2c,0x30,0x78,0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x63,0x30,0x2c,0x30,0x78,0x30,0x33,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x63,0x30,0x2c,0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x63,0x30,0x2c,0x30,0x78,0x30,0x32,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x34,0x30, + 0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x38,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x32,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x34,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78, + 0x30,0x36,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x37, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x63, + 0x30,0x2c,0x30,0x78,0x30,0x37,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int sizef_xbm_len = 601; +static const unsigned char sizef_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x66,0x5f, + 0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69, + 0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x66,0x5f,0x68,0x65,0x69,0x67,0x68, + 0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e, + 0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x73,0x69, + 0x7a,0x65,0x66,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x65,0x30,0x2c,0x30,0x78,0x30,0x33,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x63,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x33,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x33,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x34,0x30,0x2c, + 0x30,0x78,0x30,0x33,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x32,0x30,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x31,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x32,0x30,0x2c,0x30, + 0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x36,0x30,0x2c,0x30,0x78,0x30,0x31,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x65,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x65,0x30,0x2c,0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x65,0x30,0x2c,0x30,0x78,0x30, + 0x33,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int sizeh_xbm_len = 601; +static const unsigned char sizeh_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x68,0x5f, + 0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69, + 0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x68,0x5f,0x68,0x65,0x69,0x67,0x68, + 0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e, + 0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x73,0x69, + 0x7a,0x65,0x68,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x34,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x36,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x37,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x66,0x38,0x2c,0x0a,0x20,0x30,0x78,0x66,0x66,0x2c, + 0x30,0x78,0x33,0x66,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x37,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x36,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x34,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int sizev_xbm_len = 601; +static const unsigned char sizev_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x76,0x5f, + 0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69, + 0x6e,0x65,0x20,0x73,0x69,0x7a,0x65,0x76,0x5f,0x68,0x65,0x69,0x67,0x68, + 0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e, + 0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x73,0x69, + 0x7a,0x65,0x76,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x63,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x33, + 0x65,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x37,0x66,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x38,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x37, + 0x66,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x33,0x65,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int uparrow_xbm_len = 607; +static const unsigned char uparrow_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x75,0x70,0x61,0x72,0x72,0x6f, + 0x77,0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65, + 0x66,0x69,0x6e,0x65,0x20,0x75,0x70,0x61,0x72,0x72,0x6f,0x77,0x5f,0x68, + 0x65,0x69,0x67,0x68,0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69, + 0x63,0x20,0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61, + 0x72,0x20,0x75,0x70,0x61,0x72,0x72,0x6f,0x77,0x5f,0x62,0x69,0x74,0x73, + 0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a, + 0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x33,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x37,0x63,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x66,0x65,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a, + 0x20,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a, + 0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x31,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int vsplit_xbm_len = 604; +static const unsigned char vsplit_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x76,0x73,0x70,0x6c,0x69,0x74, + 0x5f,0x77,0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66, + 0x69,0x6e,0x65,0x20,0x76,0x73,0x70,0x6c,0x69,0x74,0x5f,0x68,0x65,0x69, + 0x67,0x68,0x74,0x20,0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20, + 0x75,0x6e,0x73,0x69,0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20, + 0x76,0x73,0x70,0x6c,0x69,0x74,0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20, + 0x3d,0x20,0x7b,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x32,0x34,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x32,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x31,0x30,0x2c,0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30,0x38,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x38,0x2c,0x0a,0x20,0x30,0x78, + 0x32,0x34,0x2c,0x30,0x78,0x31,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x66,0x63,0x2c,0x30,0x78,0x65,0x37,0x2c,0x30,0x78,0x33,0x66,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31,0x38,0x2c,0x30,0x78,0x32,0x34, + 0x2c,0x30,0x78,0x31,0x38,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x31, + 0x30,0x2c,0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30,0x38,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x32,0x34, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x32,0x34,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x32,0x34,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x32,0x34,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d, + 0x3b,0x0a +}; + +static const unsigned int wait_xbm_len = 598; +static const unsigned char wait_xbm_data[] = { + 0x23,0x64,0x65,0x66,0x69,0x6e,0x65,0x20,0x77,0x61,0x69,0x74,0x5f,0x77, + 0x69,0x64,0x74,0x68,0x20,0x32,0x35,0x0a,0x23,0x64,0x65,0x66,0x69,0x6e, + 0x65,0x20,0x77,0x61,0x69,0x74,0x5f,0x68,0x65,0x69,0x67,0x68,0x74,0x20, + 0x32,0x35,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x75,0x6e,0x73,0x69, + 0x67,0x6e,0x65,0x64,0x20,0x63,0x68,0x61,0x72,0x20,0x77,0x61,0x69,0x74, + 0x5f,0x62,0x69,0x74,0x73,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x20,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x63,0x30,0x2c,0x30,0x78,0x66,0x66, + 0x2c,0x30,0x78,0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x63, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x36,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x63,0x30,0x2c,0x30,0x78,0x66,0x66,0x2c,0x30, + 0x78,0x30,0x37,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c, + 0x30,0x78,0x35,0x34,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x32,0x38,0x2c,0x0a,0x20,0x30, + 0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c, + 0x30,0x78,0x31,0x31,0x2c,0x30,0x78,0x30,0x33,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x33,0x2c,0x30,0x78,0x30, + 0x31,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x64,0x36,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x0a,0x20,0x30,0x78,0x36,0x63,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78, + 0x36,0x63,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30, + 0x78,0x30,0x30,0x2c,0x30,0x78,0x63,0x36,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x39,0x33, + 0x2c,0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x30,0x2c,0x0a,0x20,0x30, + 0x78,0x38,0x30,0x2c,0x30,0x78,0x30,0x31,0x2c,0x30,0x78,0x30,0x33,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x31,0x30, + 0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38, + 0x30,0x2c,0x30,0x78,0x32,0x38,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x38,0x30,0x2c,0x30,0x78,0x35,0x34,0x2c,0x30, + 0x78,0x30,0x32,0x2c,0x0a,0x20,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x38, + 0x30,0x2c,0x30,0x78,0x61,0x61,0x2c,0x30,0x78,0x30,0x32,0x2c,0x30,0x78, + 0x30,0x30,0x2c,0x30,0x78,0x63,0x30,0x2c,0x30,0x78,0x66,0x66,0x2c,0x30, + 0x78,0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x63,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x36,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x63,0x30,0x2c,0x30,0x78,0x66,0x66,0x2c,0x0a,0x20,0x30, + 0x78,0x30,0x37,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c, + 0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30, + 0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30,0x30,0x2c,0x30,0x78,0x30, + 0x30,0x2c,0x30,0x78,0x30,0x30,0x20,0x7d,0x3b,0x0a +}; + +static const unsigned int small_book_xpm_len = 767; +static const unsigned char small_book_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x2f,0x2a,0x20,0x44, + 0x72,0x61,0x77,0x6e,0x20,0x20,0x62,0x79,0x20,0x4d,0x61,0x72,0x6b,0x20, + 0x44,0x6f,0x6e,0x6f,0x68,0x6f,0x65,0x20,0x66,0x6f,0x72,0x20,0x74,0x68, + 0x65,0x20,0x4b,0x20,0x44,0x65,0x73,0x6b,0x74,0x6f,0x70,0x20,0x45,0x6e, + 0x76,0x69,0x72,0x6f,0x6e,0x6d,0x65,0x6e,0x74,0x20,0x2a,0x2f,0x0a,0x2f, + 0x2a,0x20,0x53,0x65,0x65,0x20,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77, + 0x77,0x77,0x2e,0x6b,0x64,0x65,0x2e,0x6f,0x72,0x67,0x20,0x2a,0x2f,0x0a, + 0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x2a,0x6f,0x70, + 0x65,0x6e,0x62,0x6f,0x6f,0x6b,0x5b,0x5d,0x3d,0x7b,0x0a,0x22,0x32,0x32, + 0x20,0x32,0x32,0x20,0x34,0x20,0x31,0x22,0x2c,0x0a,0x22,0x23,0x20,0x63, + 0x20,0x23,0x30,0x30,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x61,0x20, + 0x63,0x20,0x23,0x38,0x30,0x38,0x30,0x38,0x30,0x22,0x2c,0x0a,0x22,0x62, + 0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x2e,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x22,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x23,0x23,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c, + 0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x23,0x61,0x62,0x23,0x2e,0x2e,0x2e,0x2e, + 0x23,0x23,0x23,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22, + 0x2e,0x2e,0x2e,0x2e,0x23,0x61,0x62,0x62,0x23,0x2e,0x23,0x23,0x62,0x62, + 0x23,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e, + 0x2e,0x2e,0x23,0x61,0x62,0x62,0x62,0x23,0x61,0x62,0x62,0x62,0x23,0x23, + 0x23,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e, + 0x23,0x61,0x62,0x62,0x62,0x23,0x62,0x62,0x62,0x62,0x23,0x61,0x23,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x23,0x61, + 0x62,0x62,0x62,0x23,0x61,0x62,0x62,0x62,0x23,0x61,0x23,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x23,0x61,0x62,0x62, + 0x62,0x23,0x62,0x62,0x62,0x62,0x23,0x61,0x23,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x23,0x61,0x62,0x62,0x62,0x23, + 0x61,0x62,0x62,0x62,0x23,0x61,0x23,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c, + 0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x23,0x61,0x62,0x62,0x62,0x23,0x62,0x62, + 0x62,0x62,0x23,0x61,0x23,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x23,0x61,0x62,0x62,0x23,0x61,0x62,0x62,0x23, + 0x23,0x61,0x23,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x23,0x61,0x62,0x23,0x62,0x23,0x23,0x62,0x62,0x61, + 0x23,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x23,0x61,0x23,0x23,0x61,0x61,0x61,0x61,0x61,0x23,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x23,0x23,0x61,0x23,0x23,0x23,0x23,0x23,0x23,0x23,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x23,0x23,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c, + 0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x7d,0x3b,0x0a,0x0a +}; + +static const unsigned int small_databrowser_xpm_len = 3100; +static const unsigned char small_databrowser_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x32,0x38,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x63, + 0x20,0x23,0x63,0x32,0x63,0x32,0x64,0x33,0x22,0x2c,0x0a,0x22,0x2e,0x20, + 0x20,0x63,0x20,0x23,0x39,0x36,0x39,0x36,0x61,0x33,0x22,0x2c,0x0a,0x22, + 0x58,0x20,0x20,0x63,0x20,0x23,0x61,0x62,0x61,0x62,0x62,0x62,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x20,0x63,0x20,0x23,0x64,0x62,0x64,0x62,0x65,0x66, + 0x22,0x2c,0x0a,0x22,0x4f,0x20,0x20,0x63,0x20,0x47,0x68,0x6f,0x73,0x74, + 0x57,0x68,0x69,0x74,0x65,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x20,0x63,0x20, + 0x23,0x37,0x64,0x37,0x64,0x38,0x39,0x22,0x2c,0x0a,0x22,0x40,0x20,0x20, + 0x63,0x20,0x23,0x37,0x65,0x37,0x65,0x38,0x39,0x22,0x2c,0x0a,0x22,0x23, + 0x20,0x20,0x63,0x20,0x23,0x36,0x31,0x36,0x31,0x36,0x61,0x22,0x2c,0x0a, + 0x22,0x24,0x20,0x20,0x63,0x20,0x23,0x34,0x31,0x34,0x31,0x34,0x37,0x22, + 0x2c,0x0a,0x22,0x25,0x20,0x20,0x63,0x20,0x23,0x64,0x61,0x64,0x61,0x65, + 0x65,0x22,0x2c,0x0a,0x22,0x26,0x20,0x20,0x63,0x20,0x23,0x64,0x38,0x64, + 0x38,0x65,0x63,0x22,0x2c,0x0a,0x22,0x2a,0x20,0x20,0x63,0x20,0x23,0x37, + 0x31,0x37,0x31,0x37,0x62,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x20,0x63,0x20, + 0x23,0x34,0x36,0x34,0x36,0x34,0x63,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x20, + 0x63,0x20,0x23,0x34,0x37,0x34,0x37,0x34,0x65,0x22,0x2c,0x0a,0x22,0x3b, + 0x20,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x66,0x65,0x22,0x2c,0x0a, + 0x22,0x3a,0x20,0x20,0x63,0x20,0x23,0x61,0x63,0x61,0x63,0x62,0x63,0x22, + 0x2c,0x0a,0x22,0x3e,0x20,0x20,0x63,0x20,0x23,0x63,0x31,0x63,0x31,0x64, + 0x33,0x22,0x2c,0x0a,0x22,0x2c,0x20,0x20,0x63,0x20,0x23,0x64,0x39,0x64, + 0x39,0x65,0x64,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x20,0x63,0x20,0x23,0x64, + 0x64,0x64,0x64,0x66,0x31,0x22,0x2c,0x0a,0x22,0x31,0x20,0x20,0x63,0x20, + 0x23,0x66,0x36,0x66,0x36,0x66,0x66,0x22,0x2c,0x0a,0x22,0x32,0x20,0x20, + 0x63,0x20,0x23,0x64,0x64,0x64,0x64,0x66,0x30,0x22,0x2c,0x0a,0x22,0x33, + 0x20,0x20,0x63,0x20,0x23,0x66,0x34,0x66,0x34,0x66,0x66,0x22,0x2c,0x0a, + 0x22,0x34,0x20,0x20,0x63,0x20,0x23,0x61,0x31,0x61,0x31,0x61,0x64,0x22, + 0x2c,0x0a,0x22,0x35,0x20,0x20,0x63,0x20,0x23,0x36,0x30,0x36,0x30,0x36, + 0x39,0x22,0x2c,0x0a,0x22,0x36,0x20,0x20,0x63,0x20,0x23,0x38,0x32,0x38, + 0x32,0x38,0x65,0x22,0x2c,0x0a,0x22,0x37,0x20,0x20,0x63,0x20,0x23,0x39, + 0x38,0x39,0x37,0x61,0x33,0x22,0x2c,0x0a,0x22,0x38,0x20,0x20,0x63,0x20, + 0x23,0x63,0x32,0x63,0x32,0x63,0x61,0x22,0x2c,0x0a,0x22,0x39,0x20,0x20, + 0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x61,0x31,0x22,0x2c,0x0a,0x22,0x30, + 0x20,0x20,0x63,0x20,0x23,0x64,0x35,0x64,0x35,0x65,0x39,0x22,0x2c,0x0a, + 0x22,0x71,0x20,0x20,0x63,0x20,0x23,0x36,0x31,0x36,0x31,0x36,0x62,0x22, + 0x2c,0x0a,0x22,0x77,0x20,0x20,0x63,0x20,0x23,0x66,0x31,0x66,0x31,0x66, + 0x65,0x22,0x2c,0x0a,0x22,0x65,0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61, + 0x64,0x62,0x63,0x22,0x2c,0x0a,0x22,0x72,0x20,0x20,0x63,0x20,0x23,0x66, + 0x32,0x66,0x32,0x66,0x66,0x22,0x2c,0x0a,0x22,0x74,0x20,0x20,0x63,0x20, + 0x23,0x39,0x66,0x39,0x66,0x61,0x62,0x22,0x2c,0x0a,0x22,0x79,0x20,0x20, + 0x63,0x20,0x23,0x39,0x35,0x39,0x35,0x61,0x33,0x22,0x2c,0x0a,0x22,0x75, + 0x20,0x20,0x63,0x20,0x23,0x36,0x30,0x36,0x30,0x36,0x38,0x22,0x2c,0x0a, + 0x22,0x69,0x20,0x20,0x63,0x20,0x23,0x62,0x30,0x62,0x30,0x62,0x61,0x22, + 0x2c,0x0a,0x22,0x70,0x20,0x20,0x63,0x20,0x23,0x37,0x30,0x36,0x66,0x37, + 0x37,0x22,0x2c,0x0a,0x22,0x61,0x20,0x20,0x63,0x20,0x23,0x34,0x35,0x34, + 0x35,0x34,0x62,0x22,0x2c,0x0a,0x22,0x73,0x20,0x20,0x63,0x20,0x23,0x65, + 0x35,0x65,0x35,0x66,0x34,0x22,0x2c,0x0a,0x22,0x64,0x20,0x20,0x63,0x20, + 0x23,0x66,0x65,0x66,0x65,0x66,0x66,0x22,0x2c,0x0a,0x22,0x66,0x20,0x20, + 0x63,0x20,0x23,0x39,0x61,0x39,0x61,0x61,0x37,0x22,0x2c,0x0a,0x22,0x67, + 0x20,0x20,0x63,0x20,0x23,0x39,0x37,0x39,0x37,0x61,0x35,0x22,0x2c,0x0a, + 0x22,0x68,0x20,0x20,0x63,0x20,0x23,0x66,0x35,0x66,0x35,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x6a,0x20,0x20,0x63,0x20,0x23,0x35,0x63,0x35,0x63,0x36, + 0x30,0x22,0x2c,0x0a,0x22,0x6b,0x20,0x20,0x63,0x20,0x23,0x33,0x66,0x33, + 0x66,0x34,0x35,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x20,0x63,0x20,0x23,0x33, + 0x64,0x33,0x64,0x34,0x33,0x22,0x2c,0x0a,0x22,0x7a,0x20,0x20,0x63,0x20, + 0x23,0x35,0x31,0x35,0x31,0x35,0x37,0x22,0x2c,0x0a,0x22,0x78,0x20,0x20, + 0x63,0x20,0x23,0x38,0x32,0x38,0x31,0x38,0x34,0x22,0x2c,0x0a,0x22,0x63, + 0x20,0x20,0x63,0x20,0x23,0x33,0x38,0x33,0x38,0x33,0x64,0x22,0x2c,0x0a, + 0x22,0x76,0x20,0x20,0x63,0x20,0x23,0x34,0x30,0x34,0x30,0x34,0x36,0x22, + 0x2c,0x0a,0x22,0x62,0x20,0x20,0x63,0x20,0x23,0x39,0x61,0x39,0x61,0x61, + 0x39,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x20,0x63,0x20,0x23,0x64,0x61,0x64, + 0x61,0x65,0x64,0x22,0x2c,0x0a,0x22,0x6d,0x20,0x20,0x63,0x20,0x23,0x37, + 0x65,0x37,0x65,0x38,0x61,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x20,0x63,0x20, + 0x23,0x34,0x31,0x34,0x31,0x34,0x36,0x22,0x2c,0x0a,0x22,0x4e,0x20,0x20, + 0x63,0x20,0x23,0x34,0x62,0x34,0x62,0x35,0x30,0x22,0x2c,0x0a,0x22,0x42, + 0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x35,0x30,0x22,0x2c,0x0a, + 0x22,0x56,0x20,0x20,0x63,0x20,0x23,0x66,0x31,0x66,0x31,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x43,0x20,0x20,0x63,0x20,0x23,0x64,0x63,0x64,0x63,0x66, + 0x30,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x20,0x63,0x20,0x23,0x39,0x65,0x39, + 0x65,0x61,0x62,0x22,0x2c,0x0a,0x22,0x41,0x20,0x20,0x63,0x20,0x23,0x66, + 0x33,0x66,0x33,0x66,0x66,0x22,0x2c,0x0a,0x22,0x53,0x20,0x20,0x63,0x20, + 0x23,0x66,0x39,0x66,0x39,0x66,0x66,0x22,0x2c,0x0a,0x22,0x44,0x20,0x20, + 0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x62,0x30,0x22,0x2c,0x0a,0x22,0x46, + 0x20,0x20,0x63,0x20,0x23,0x35,0x39,0x35,0x39,0x35,0x66,0x22,0x2c,0x0a, + 0x22,0x47,0x20,0x20,0x63,0x20,0x23,0x65,0x38,0x65,0x38,0x65,0x62,0x22, + 0x2c,0x0a,0x22,0x48,0x20,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x66, + 0x66,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x20,0x63,0x20,0x23,0x36,0x32,0x36, + 0x32,0x36,0x62,0x22,0x2c,0x0a,0x22,0x4b,0x20,0x20,0x63,0x20,0x23,0x61, + 0x64,0x61,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x4c,0x20,0x20,0x63,0x20, + 0x23,0x39,0x36,0x39,0x36,0x61,0x34,0x22,0x2c,0x0a,0x22,0x50,0x20,0x20, + 0x63,0x20,0x23,0x30,0x30,0x30,0x30,0x37,0x62,0x22,0x2c,0x0a,0x22,0x49, + 0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x55, + 0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x22, + 0x54,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x52,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x45,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x57,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x51,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x21,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x7e,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x5e,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2f,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x28,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x29,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x5f,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x60,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x27,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x5d,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x5b,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x7b,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x7d,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x7c,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x20,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2e,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x58,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x6f,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x4f,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2b,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x40,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x23,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x24,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x25,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x26,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2a,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3d,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2d,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3b,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3a,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3e,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2c,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3c,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x31,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x32,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x33,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x34,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x35,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x36,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x37,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x38,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x39,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x30,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x71,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x77,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x65,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x72,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x74,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x79,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x75,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x2f, + 0x2a,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x59, + 0x20,0x59,0x20,0x6f,0x20,0x6f,0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b, + 0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x20,0x20,0x62,0x20,0x2e,0x20,0x40, + 0x20,0x40,0x20,0x4a,0x20,0x4a,0x20,0x4a,0x20,0x4a,0x20,0x4a,0x20,0x4a, + 0x20,0x4a,0x20,0x4a,0x20,0x4a,0x20,0x70,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x58, + 0x20,0x20,0x20,0x20,0x20,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x2b,0x20,0x2b, + 0x20,0x2b,0x20,0x23,0x20,0x23,0x20,0x23,0x20,0x24,0x20,0x63,0x20,0x4d, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22, + 0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x4f,0x20,0x3c, + 0x20,0x58,0x20,0x58,0x20,0x58,0x20,0x2e,0x20,0x40,0x20,0x71,0x20,0x23, + 0x20,0x2d,0x20,0x24,0x20,0x42,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x4f,0x20,0x4f,0x20,0x32,0x20,0x20,0x20,0x58, + 0x20,0x2e,0x20,0x6d,0x20,0x4a,0x20,0x2d,0x20,0x24,0x20,0x4e,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x53, + 0x20,0x3c,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49, + 0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49, + 0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x4f,0x20,0x32,0x20,0x49,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59, + 0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x4f,0x20,0x43, + 0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x50,0x20,0x55, + 0x20,0x50,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59, + 0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x48,0x20,0x6f,0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x50,0x20,0x50,0x20,0x55,0x20,0x50,0x20,0x50,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x31,0x20,0x6f,0x20,0x49, + 0x20,0x55,0x20,0x55,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x55,0x20,0x50, + 0x20,0x50,0x20,0x50,0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22, + 0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x31,0x20,0x6f,0x20,0x49,0x20,0x55,0x20,0x50,0x20,0x50,0x20,0x50, + 0x20,0x50,0x20,0x55,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x55, + 0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x68,0x20,0x25,0x20,0x49,0x20,0x55, + 0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x55,0x20,0x50,0x20,0x50, + 0x20,0x50,0x20,0x50,0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x33, + 0x20,0x25,0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x50,0x20,0x50,0x20,0x50, + 0x20,0x55,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x55,0x20,0x55,0x20,0x49, + 0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x33,0x20,0x25,0x20,0x49,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x50,0x20,0x50,0x20,0x55,0x20,0x50,0x20,0x50,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59, + 0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x41,0x20,0x6e, + 0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x50,0x20,0x55, + 0x20,0x50,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59, + 0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x72,0x20,0x2c,0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x56,0x20,0x2c,0x20,0x49, + 0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49, + 0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x59,0x20,0x22, + 0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x77,0x20,0x26,0x20,0x3e,0x20,0x3a,0x20,0x4c,0x20,0x40,0x20,0x35, + 0x20,0x3d,0x20,0x6b,0x20,0x6a,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x3b,0x20,0x26,0x20,0x3e,0x20,0x65, + 0x20,0x4c,0x20,0x40,0x20,0x35,0x20,0x3d,0x20,0x76,0x20,0x7a,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x64,0x20,0x3b, + 0x20,0x26,0x20,0x20,0x20,0x3a,0x20,0x4c,0x20,0x2b,0x20,0x75,0x20,0x61, + 0x20,0x6c,0x20,0x46,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x44,0x20,0x34,0x20,0x69, + 0x20,0x38,0x20,0x47,0x20,0x73,0x20,0x30,0x20,0x20,0x20,0x58,0x20,0x4c, + 0x20,0x36,0x20,0x2a,0x20,0x2a,0x20,0x2a,0x20,0x78,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59, + 0x20,0x59,0x20,0x74,0x20,0x34,0x20,0x5a,0x20,0x66,0x20,0x67,0x20,0x4c, + 0x20,0x4c,0x20,0x4c,0x20,0x4c,0x20,0x79,0x20,0x39,0x20,0x37,0x20,0x2e, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_datatable_xpm_len = 3100; +static const unsigned char small_datatable_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x32,0x38,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x63, + 0x20,0x23,0x63,0x32,0x63,0x32,0x64,0x33,0x22,0x2c,0x0a,0x22,0x2e,0x20, + 0x20,0x63,0x20,0x23,0x39,0x36,0x39,0x36,0x61,0x33,0x22,0x2c,0x0a,0x22, + 0x58,0x20,0x20,0x63,0x20,0x23,0x61,0x62,0x61,0x62,0x62,0x62,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x20,0x63,0x20,0x23,0x64,0x62,0x64,0x62,0x65,0x66, + 0x22,0x2c,0x0a,0x22,0x4f,0x20,0x20,0x63,0x20,0x47,0x68,0x6f,0x73,0x74, + 0x57,0x68,0x69,0x74,0x65,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x20,0x63,0x20, + 0x23,0x37,0x64,0x37,0x64,0x38,0x39,0x22,0x2c,0x0a,0x22,0x40,0x20,0x20, + 0x63,0x20,0x23,0x37,0x65,0x37,0x65,0x38,0x39,0x22,0x2c,0x0a,0x22,0x23, + 0x20,0x20,0x63,0x20,0x23,0x36,0x31,0x36,0x31,0x36,0x61,0x22,0x2c,0x0a, + 0x22,0x24,0x20,0x20,0x63,0x20,0x23,0x34,0x31,0x34,0x31,0x34,0x37,0x22, + 0x2c,0x0a,0x22,0x25,0x20,0x20,0x63,0x20,0x23,0x64,0x61,0x64,0x61,0x65, + 0x65,0x22,0x2c,0x0a,0x22,0x26,0x20,0x20,0x63,0x20,0x23,0x64,0x38,0x64, + 0x38,0x65,0x63,0x22,0x2c,0x0a,0x22,0x2a,0x20,0x20,0x63,0x20,0x23,0x37, + 0x31,0x37,0x31,0x37,0x62,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x20,0x63,0x20, + 0x23,0x34,0x36,0x34,0x36,0x34,0x63,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x20, + 0x63,0x20,0x23,0x34,0x37,0x34,0x37,0x34,0x65,0x22,0x2c,0x0a,0x22,0x3b, + 0x20,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x66,0x65,0x22,0x2c,0x0a, + 0x22,0x3a,0x20,0x20,0x63,0x20,0x23,0x61,0x63,0x61,0x63,0x62,0x63,0x22, + 0x2c,0x0a,0x22,0x3e,0x20,0x20,0x63,0x20,0x23,0x63,0x31,0x63,0x31,0x64, + 0x33,0x22,0x2c,0x0a,0x22,0x2c,0x20,0x20,0x63,0x20,0x23,0x64,0x39,0x64, + 0x39,0x65,0x64,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x20,0x63,0x20,0x23,0x64, + 0x64,0x64,0x64,0x66,0x31,0x22,0x2c,0x0a,0x22,0x31,0x20,0x20,0x63,0x20, + 0x23,0x66,0x36,0x66,0x36,0x66,0x66,0x22,0x2c,0x0a,0x22,0x32,0x20,0x20, + 0x63,0x20,0x23,0x64,0x64,0x64,0x64,0x66,0x30,0x22,0x2c,0x0a,0x22,0x33, + 0x20,0x20,0x63,0x20,0x23,0x66,0x34,0x66,0x34,0x66,0x66,0x22,0x2c,0x0a, + 0x22,0x34,0x20,0x20,0x63,0x20,0x23,0x61,0x31,0x61,0x31,0x61,0x64,0x22, + 0x2c,0x0a,0x22,0x35,0x20,0x20,0x63,0x20,0x23,0x36,0x30,0x36,0x30,0x36, + 0x39,0x22,0x2c,0x0a,0x22,0x36,0x20,0x20,0x63,0x20,0x23,0x38,0x32,0x38, + 0x32,0x38,0x65,0x22,0x2c,0x0a,0x22,0x37,0x20,0x20,0x63,0x20,0x23,0x39, + 0x38,0x39,0x37,0x61,0x33,0x22,0x2c,0x0a,0x22,0x38,0x20,0x20,0x63,0x20, + 0x23,0x63,0x32,0x63,0x32,0x63,0x61,0x22,0x2c,0x0a,0x22,0x39,0x20,0x20, + 0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x61,0x31,0x22,0x2c,0x0a,0x22,0x30, + 0x20,0x20,0x63,0x20,0x23,0x64,0x35,0x64,0x35,0x65,0x39,0x22,0x2c,0x0a, + 0x22,0x71,0x20,0x20,0x63,0x20,0x23,0x36,0x31,0x36,0x31,0x36,0x62,0x22, + 0x2c,0x0a,0x22,0x77,0x20,0x20,0x63,0x20,0x23,0x66,0x31,0x66,0x31,0x66, + 0x65,0x22,0x2c,0x0a,0x22,0x65,0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61, + 0x64,0x62,0x63,0x22,0x2c,0x0a,0x22,0x72,0x20,0x20,0x63,0x20,0x23,0x66, + 0x32,0x66,0x32,0x66,0x66,0x22,0x2c,0x0a,0x22,0x74,0x20,0x20,0x63,0x20, + 0x23,0x39,0x66,0x39,0x66,0x61,0x62,0x22,0x2c,0x0a,0x22,0x79,0x20,0x20, + 0x63,0x20,0x23,0x39,0x35,0x39,0x35,0x61,0x33,0x22,0x2c,0x0a,0x22,0x75, + 0x20,0x20,0x63,0x20,0x23,0x36,0x30,0x36,0x30,0x36,0x38,0x22,0x2c,0x0a, + 0x22,0x69,0x20,0x20,0x63,0x20,0x23,0x62,0x30,0x62,0x30,0x62,0x61,0x22, + 0x2c,0x0a,0x22,0x70,0x20,0x20,0x63,0x20,0x23,0x37,0x30,0x36,0x66,0x37, + 0x37,0x22,0x2c,0x0a,0x22,0x61,0x20,0x20,0x63,0x20,0x23,0x34,0x35,0x34, + 0x35,0x34,0x62,0x22,0x2c,0x0a,0x22,0x73,0x20,0x20,0x63,0x20,0x23,0x65, + 0x35,0x65,0x35,0x66,0x34,0x22,0x2c,0x0a,0x22,0x64,0x20,0x20,0x63,0x20, + 0x23,0x66,0x65,0x66,0x65,0x66,0x66,0x22,0x2c,0x0a,0x22,0x66,0x20,0x20, + 0x63,0x20,0x23,0x39,0x61,0x39,0x61,0x61,0x37,0x22,0x2c,0x0a,0x22,0x67, + 0x20,0x20,0x63,0x20,0x23,0x39,0x37,0x39,0x37,0x61,0x35,0x22,0x2c,0x0a, + 0x22,0x68,0x20,0x20,0x63,0x20,0x23,0x66,0x35,0x66,0x35,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x6a,0x20,0x20,0x63,0x20,0x23,0x35,0x63,0x35,0x63,0x36, + 0x30,0x22,0x2c,0x0a,0x22,0x6b,0x20,0x20,0x63,0x20,0x23,0x33,0x66,0x33, + 0x66,0x34,0x35,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x20,0x63,0x20,0x23,0x33, + 0x64,0x33,0x64,0x34,0x33,0x22,0x2c,0x0a,0x22,0x7a,0x20,0x20,0x63,0x20, + 0x23,0x35,0x31,0x35,0x31,0x35,0x37,0x22,0x2c,0x0a,0x22,0x78,0x20,0x20, + 0x63,0x20,0x23,0x38,0x32,0x38,0x31,0x38,0x34,0x22,0x2c,0x0a,0x22,0x63, + 0x20,0x20,0x63,0x20,0x23,0x33,0x38,0x33,0x38,0x33,0x64,0x22,0x2c,0x0a, + 0x22,0x76,0x20,0x20,0x63,0x20,0x23,0x34,0x30,0x34,0x30,0x34,0x36,0x22, + 0x2c,0x0a,0x22,0x62,0x20,0x20,0x63,0x20,0x23,0x39,0x61,0x39,0x61,0x61, + 0x39,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x20,0x63,0x20,0x23,0x64,0x61,0x64, + 0x61,0x65,0x64,0x22,0x2c,0x0a,0x22,0x6d,0x20,0x20,0x63,0x20,0x23,0x37, + 0x65,0x37,0x65,0x38,0x61,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x20,0x63,0x20, + 0x23,0x34,0x31,0x34,0x31,0x34,0x36,0x22,0x2c,0x0a,0x22,0x4e,0x20,0x20, + 0x63,0x20,0x23,0x34,0x62,0x34,0x62,0x35,0x30,0x22,0x2c,0x0a,0x22,0x42, + 0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x35,0x30,0x22,0x2c,0x0a, + 0x22,0x56,0x20,0x20,0x63,0x20,0x23,0x66,0x31,0x66,0x31,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x43,0x20,0x20,0x63,0x20,0x23,0x64,0x63,0x64,0x63,0x66, + 0x30,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x20,0x63,0x20,0x23,0x39,0x65,0x39, + 0x65,0x61,0x62,0x22,0x2c,0x0a,0x22,0x41,0x20,0x20,0x63,0x20,0x23,0x66, + 0x33,0x66,0x33,0x66,0x66,0x22,0x2c,0x0a,0x22,0x53,0x20,0x20,0x63,0x20, + 0x23,0x66,0x39,0x66,0x39,0x66,0x66,0x22,0x2c,0x0a,0x22,0x44,0x20,0x20, + 0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x62,0x30,0x22,0x2c,0x0a,0x22,0x46, + 0x20,0x20,0x63,0x20,0x23,0x35,0x39,0x35,0x39,0x35,0x66,0x22,0x2c,0x0a, + 0x22,0x47,0x20,0x20,0x63,0x20,0x23,0x65,0x38,0x65,0x38,0x65,0x62,0x22, + 0x2c,0x0a,0x22,0x48,0x20,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x66, + 0x66,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x20,0x63,0x20,0x23,0x36,0x32,0x36, + 0x32,0x36,0x62,0x22,0x2c,0x0a,0x22,0x4b,0x20,0x20,0x63,0x20,0x23,0x61, + 0x64,0x61,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x4c,0x20,0x20,0x63,0x20, + 0x23,0x39,0x36,0x39,0x36,0x61,0x34,0x22,0x2c,0x0a,0x22,0x50,0x20,0x20, + 0x63,0x20,0x23,0x38,0x36,0x38,0x36,0x39,0x32,0x22,0x2c,0x0a,0x22,0x49, + 0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x55, + 0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x22, + 0x54,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x52,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x45,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x57,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x51,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x21,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x7e,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x5e,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2f,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x28,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x29,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x5f,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x60,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x27,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x5d,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x5b,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x7b,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x7d,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x7c,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x20,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2e,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x58,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x6f,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x4f,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2b,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x40,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x23,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x24,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x25,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x26,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2a,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3d,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2d,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3b,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3a,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3e,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x2c,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x3c,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x31,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x32,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x33,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x34,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x35,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x36,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x37,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x38,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x39,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x30,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x71,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x77,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x65,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x72,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x74,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x79,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x75,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x2f, + 0x2a,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x59, + 0x20,0x59,0x20,0x6f,0x20,0x6f,0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b, + 0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b,0x20,0x4b, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x20,0x20,0x62,0x20,0x2e,0x20,0x40, + 0x20,0x40,0x20,0x4a,0x20,0x4a,0x20,0x4a,0x20,0x4a,0x20,0x4a,0x20,0x4a, + 0x20,0x4a,0x20,0x4a,0x20,0x4a,0x20,0x70,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x58, + 0x20,0x20,0x20,0x20,0x20,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x2b,0x20,0x2b, + 0x20,0x2b,0x20,0x23,0x20,0x23,0x20,0x23,0x20,0x24,0x20,0x63,0x20,0x4d, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22, + 0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x4f,0x20,0x3c, + 0x20,0x58,0x20,0x58,0x20,0x58,0x20,0x2e,0x20,0x40,0x20,0x71,0x20,0x23, + 0x20,0x2d,0x20,0x24,0x20,0x42,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x4f,0x20,0x4f,0x20,0x32,0x20,0x20,0x20,0x58, + 0x20,0x2e,0x20,0x6d,0x20,0x4a,0x20,0x2d,0x20,0x24,0x20,0x4e,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x53, + 0x20,0x3c,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49, + 0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49, + 0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x4f,0x20,0x32,0x20,0x49,0x20,0x55,0x20,0x55, + 0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59, + 0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x4f,0x20,0x43, + 0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59, + 0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x48,0x20,0x6f,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49, + 0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49, + 0x20,0x49,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x31,0x20,0x6f,0x20,0x49, + 0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22, + 0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x31,0x20,0x6f,0x20,0x49,0x20,0x50,0x20,0x50,0x20,0x49,0x20,0x50, + 0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50, + 0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x68,0x20,0x25,0x20,0x49,0x20,0x55, + 0x20,0x55,0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x33, + 0x20,0x25,0x20,0x49,0x20,0x50,0x20,0x50,0x20,0x49,0x20,0x50,0x20,0x50, + 0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x49, + 0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x33,0x20,0x25,0x20,0x49,0x20,0x55,0x20,0x55, + 0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59, + 0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x41,0x20,0x6e, + 0x20,0x49,0x20,0x50,0x20,0x50,0x20,0x49,0x20,0x50,0x20,0x50,0x20,0x50, + 0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x50,0x20,0x49,0x20,0x59, + 0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x72,0x20,0x2c,0x20,0x49,0x20,0x55,0x20,0x55,0x20,0x49, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x55,0x20,0x49,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x56,0x20,0x2c,0x20,0x49, + 0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49, + 0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x49,0x20,0x59,0x20,0x22, + 0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x55, + 0x20,0x77,0x20,0x26,0x20,0x3e,0x20,0x3a,0x20,0x4c,0x20,0x40,0x20,0x35, + 0x20,0x3d,0x20,0x6b,0x20,0x6a,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4c,0x20,0x55, + 0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x3b,0x20,0x26,0x20,0x3e,0x20,0x65, + 0x20,0x4c,0x20,0x40,0x20,0x35,0x20,0x3d,0x20,0x76,0x20,0x7a,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x4c,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x64,0x20,0x3b, + 0x20,0x26,0x20,0x20,0x20,0x3a,0x20,0x4c,0x20,0x2b,0x20,0x75,0x20,0x61, + 0x20,0x6c,0x20,0x46,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59,0x20,0x44,0x20,0x34,0x20,0x69, + 0x20,0x38,0x20,0x47,0x20,0x73,0x20,0x30,0x20,0x20,0x20,0x58,0x20,0x4c, + 0x20,0x36,0x20,0x2a,0x20,0x2a,0x20,0x2a,0x20,0x78,0x20,0x59,0x20,0x59, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x22,0x2c,0x0a,0x22,0x59, + 0x20,0x59,0x20,0x74,0x20,0x34,0x20,0x5a,0x20,0x66,0x20,0x67,0x20,0x4c, + 0x20,0x4c,0x20,0x4c,0x20,0x4c,0x20,0x79,0x20,0x39,0x20,0x37,0x20,0x2e, + 0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59,0x20,0x59, + 0x20,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_dataview_xpm_len = 3164; +static const unsigned char small_dataview_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x32,0x38,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x63, + 0x20,0x23,0x61,0x62,0x61,0x62,0x62,0x62,0x22,0x2c,0x0a,0x22,0x2e,0x20, + 0x20,0x63,0x20,0x23,0x39,0x36,0x39,0x36,0x61,0x33,0x22,0x2c,0x0a,0x22, + 0x58,0x20,0x20,0x63,0x20,0x23,0x63,0x32,0x63,0x32,0x64,0x33,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x20,0x63,0x20,0x23,0x37,0x65,0x37,0x65,0x38,0x39, + 0x22,0x2c,0x0a,0x22,0x4f,0x20,0x20,0x63,0x20,0x23,0x37,0x64,0x37,0x64, + 0x38,0x39,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x20,0x63,0x20,0x47,0x68,0x6f, + 0x73,0x74,0x57,0x68,0x69,0x74,0x65,0x22,0x2c,0x0a,0x22,0x40,0x20,0x20, + 0x63,0x20,0x23,0x64,0x62,0x64,0x62,0x65,0x66,0x22,0x2c,0x0a,0x22,0x23, + 0x20,0x20,0x63,0x20,0x23,0x36,0x31,0x36,0x31,0x36,0x61,0x22,0x2c,0x0a, + 0x22,0x24,0x20,0x20,0x63,0x20,0x23,0x37,0x31,0x37,0x31,0x37,0x62,0x22, + 0x2c,0x0a,0x22,0x25,0x20,0x20,0x63,0x20,0x23,0x64,0x61,0x64,0x61,0x65, + 0x65,0x22,0x2c,0x0a,0x22,0x26,0x20,0x20,0x63,0x20,0x23,0x34,0x31,0x34, + 0x31,0x34,0x37,0x22,0x2c,0x0a,0x22,0x2a,0x20,0x20,0x63,0x20,0x23,0x64, + 0x38,0x64,0x38,0x65,0x63,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x20,0x63,0x20, + 0x47,0x72,0x61,0x79,0x35,0x36,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x20,0x63, + 0x20,0x23,0x64,0x39,0x64,0x39,0x65,0x64,0x22,0x2c,0x0a,0x22,0x3b,0x20, + 0x20,0x63,0x20,0x23,0x64,0x64,0x64,0x64,0x66,0x30,0x22,0x2c,0x0a,0x22, + 0x3a,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x39,0x34,0x22,0x2c,0x0a, + 0x22,0x3e,0x20,0x20,0x63,0x20,0x23,0x63,0x31,0x63,0x31,0x64,0x33,0x22, + 0x2c,0x0a,0x22,0x2c,0x20,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x66, + 0x65,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x20,0x63,0x20,0x23,0x34,0x36,0x34, + 0x36,0x34,0x63,0x22,0x2c,0x0a,0x22,0x31,0x20,0x20,0x63,0x20,0x23,0x61, + 0x31,0x61,0x31,0x61,0x64,0x22,0x2c,0x0a,0x22,0x32,0x20,0x20,0x63,0x20, + 0x23,0x61,0x63,0x61,0x63,0x62,0x63,0x22,0x2c,0x0a,0x22,0x33,0x20,0x20, + 0x63,0x20,0x23,0x34,0x37,0x34,0x37,0x34,0x65,0x22,0x2c,0x0a,0x22,0x34, + 0x20,0x20,0x63,0x20,0x23,0x66,0x34,0x66,0x34,0x66,0x66,0x22,0x2c,0x0a, + 0x22,0x35,0x20,0x20,0x63,0x20,0x23,0x66,0x36,0x66,0x36,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x36,0x20,0x20,0x63,0x20,0x23,0x36,0x30,0x36,0x30,0x36, + 0x39,0x22,0x2c,0x0a,0x22,0x37,0x20,0x20,0x63,0x20,0x23,0x64,0x64,0x64, + 0x64,0x66,0x31,0x22,0x2c,0x0a,0x22,0x38,0x20,0x20,0x63,0x20,0x23,0x62, + 0x32,0x62,0x32,0x62,0x32,0x22,0x2c,0x0a,0x22,0x39,0x20,0x20,0x63,0x20, + 0x23,0x62,0x63,0x62,0x63,0x62,0x63,0x22,0x2c,0x0a,0x22,0x30,0x20,0x20, + 0x63,0x20,0x67,0x61,0x69,0x6e,0x73,0x62,0x6f,0x72,0x6f,0x22,0x2c,0x0a, + 0x22,0x71,0x20,0x20,0x63,0x20,0x23,0x33,0x38,0x33,0x38,0x33,0x64,0x22, + 0x2c,0x0a,0x22,0x77,0x20,0x20,0x63,0x20,0x23,0x39,0x35,0x39,0x35,0x61, + 0x33,0x22,0x2c,0x0a,0x22,0x65,0x20,0x20,0x63,0x20,0x23,0x61,0x35,0x61, + 0x35,0x62,0x30,0x22,0x2c,0x0a,0x22,0x72,0x20,0x20,0x63,0x20,0x23,0x37, + 0x31,0x37,0x31,0x37,0x31,0x22,0x2c,0x0a,0x22,0x74,0x20,0x20,0x63,0x20, + 0x23,0x30,0x32,0x30,0x32,0x30,0x32,0x22,0x2c,0x0a,0x22,0x79,0x20,0x20, + 0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x75, + 0x20,0x20,0x63,0x20,0x23,0x33,0x65,0x33,0x65,0x33,0x65,0x22,0x2c,0x0a, + 0x22,0x69,0x20,0x20,0x63,0x20,0x23,0x62,0x30,0x62,0x30,0x62,0x61,0x22, + 0x2c,0x0a,0x22,0x70,0x20,0x20,0x63,0x20,0x23,0x39,0x61,0x39,0x61,0x61, + 0x37,0x22,0x2c,0x0a,0x22,0x61,0x20,0x20,0x63,0x20,0x23,0x66,0x65,0x66, + 0x65,0x66,0x66,0x22,0x2c,0x0a,0x22,0x73,0x20,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x36,0x22,0x2c,0x0a,0x22,0x64,0x20,0x20,0x63,0x20,0x23,0x33, + 0x66,0x33,0x66,0x34,0x35,0x22,0x2c,0x0a,0x22,0x66,0x20,0x20,0x63,0x20, + 0x23,0x36,0x32,0x36,0x32,0x36,0x32,0x22,0x2c,0x0a,0x22,0x67,0x20,0x20, + 0x63,0x20,0x23,0x37,0x65,0x37,0x65,0x38,0x61,0x22,0x2c,0x0a,0x22,0x68, + 0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x35,0x33,0x22,0x2c,0x0a,0x22, + 0x6a,0x20,0x20,0x63,0x20,0x23,0x34,0x36,0x34,0x36,0x34,0x36,0x22,0x2c, + 0x0a,0x22,0x6b,0x20,0x20,0x63,0x20,0x23,0x37,0x63,0x37,0x63,0x37,0x63, + 0x22,0x2c,0x0a,0x22,0x6c,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31, + 0x35,0x22,0x2c,0x0a,0x22,0x7a,0x20,0x20,0x63,0x20,0x23,0x64,0x35,0x64, + 0x35,0x65,0x39,0x22,0x2c,0x0a,0x22,0x78,0x20,0x20,0x63,0x20,0x23,0x64, + 0x64,0x64,0x64,0x64,0x64,0x22,0x2c,0x0a,0x22,0x63,0x20,0x20,0x63,0x20, + 0x23,0x64,0x63,0x64,0x63,0x66,0x30,0x22,0x2c,0x0a,0x22,0x76,0x20,0x20, + 0x63,0x20,0x23,0x38,0x32,0x38,0x31,0x38,0x34,0x22,0x2c,0x0a,0x22,0x62, + 0x20,0x20,0x63,0x20,0x23,0x33,0x64,0x33,0x64,0x34,0x33,0x22,0x2c,0x0a, + 0x22,0x6e,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x39,0x22,0x2c,0x0a, + 0x22,0x6d,0x20,0x20,0x63,0x20,0x23,0x65,0x39,0x65,0x39,0x65,0x39,0x22, + 0x2c,0x0a,0x22,0x4d,0x20,0x20,0x63,0x20,0x23,0x35,0x39,0x35,0x39,0x35, + 0x66,0x22,0x2c,0x0a,0x22,0x4e,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79, + 0x34,0x22,0x2c,0x0a,0x22,0x42,0x20,0x20,0x63,0x20,0x23,0x33,0x35,0x33, + 0x35,0x33,0x35,0x22,0x2c,0x0a,0x22,0x56,0x20,0x20,0x63,0x20,0x23,0x39, + 0x37,0x39,0x37,0x61,0x35,0x22,0x2c,0x0a,0x22,0x43,0x20,0x20,0x63,0x20, + 0x23,0x35,0x63,0x35,0x63,0x36,0x30,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x20, + 0x63,0x20,0x47,0x72,0x61,0x79,0x38,0x30,0x22,0x2c,0x0a,0x22,0x41,0x20, + 0x20,0x63,0x20,0x23,0x39,0x38,0x39,0x37,0x61,0x33,0x22,0x2c,0x0a,0x22, + 0x53,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x39,0x33,0x22,0x2c,0x0a, + 0x22,0x44,0x20,0x20,0x63,0x20,0x23,0x30,0x62,0x30,0x62,0x30,0x62,0x22, + 0x2c,0x0a,0x22,0x46,0x20,0x20,0x63,0x20,0x23,0x38,0x30,0x38,0x30,0x38, + 0x30,0x22,0x2c,0x0a,0x22,0x47,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79, + 0x39,0x35,0x22,0x2c,0x0a,0x22,0x48,0x20,0x20,0x63,0x20,0x23,0x66,0x37, + 0x66,0x37,0x66,0x66,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x20,0x63,0x20,0x23, + 0x34,0x35,0x34,0x35,0x34,0x62,0x22,0x2c,0x0a,0x22,0x4b,0x20,0x20,0x63, + 0x20,0x23,0x34,0x30,0x34,0x30,0x34,0x36,0x22,0x2c,0x0a,0x22,0x4c,0x20, + 0x20,0x63,0x20,0x23,0x63,0x31,0x63,0x31,0x63,0x31,0x22,0x2c,0x0a,0x22, + 0x50,0x20,0x20,0x63,0x20,0x23,0x66,0x33,0x66,0x33,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x49,0x20,0x20,0x63,0x20,0x23,0x35,0x38,0x35,0x38,0x35,0x38, + 0x22,0x2c,0x0a,0x22,0x55,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x38, + 0x34,0x22,0x2c,0x0a,0x22,0x59,0x20,0x20,0x63,0x20,0x23,0x39,0x30,0x39, + 0x30,0x39,0x30,0x22,0x2c,0x0a,0x22,0x54,0x20,0x20,0x63,0x20,0x23,0x32, + 0x61,0x32,0x61,0x32,0x61,0x22,0x2c,0x0a,0x22,0x52,0x20,0x20,0x63,0x20, + 0x23,0x34,0x62,0x34,0x62,0x35,0x30,0x22,0x2c,0x0a,0x22,0x45,0x20,0x20, + 0x63,0x20,0x47,0x72,0x61,0x79,0x32,0x33,0x22,0x2c,0x0a,0x22,0x57,0x20, + 0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x39,0x36,0x22,0x2c,0x0a,0x22,0x51, + 0x20,0x20,0x63,0x20,0x23,0x34,0x34,0x34,0x34,0x34,0x34,0x22,0x2c,0x0a, + 0x22,0x21,0x20,0x20,0x63,0x20,0x23,0x66,0x39,0x66,0x39,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x7e,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x33,0x35, + 0x22,0x2c,0x0a,0x22,0x5e,0x20,0x20,0x63,0x20,0x23,0x31,0x31,0x31,0x31, + 0x31,0x31,0x22,0x2c,0x0a,0x22,0x2f,0x20,0x20,0x63,0x20,0x47,0x72,0x61, + 0x79,0x33,0x34,0x22,0x2c,0x0a,0x22,0x28,0x20,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x34,0x34,0x22,0x2c,0x0a,0x22,0x29,0x20,0x20,0x63,0x20,0x23, + 0x65,0x38,0x65,0x38,0x65,0x62,0x22,0x2c,0x0a,0x22,0x5f,0x20,0x20,0x63, + 0x20,0x23,0x65,0x35,0x65,0x35,0x66,0x34,0x22,0x2c,0x0a,0x22,0x60,0x20, + 0x20,0x63,0x20,0x23,0x63,0x32,0x63,0x32,0x63,0x61,0x22,0x2c,0x0a,0x22, + 0x27,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x34,0x22,0x2c,0x0a, + 0x22,0x5d,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x35,0x32,0x22,0x2c, + 0x0a,0x22,0x5b,0x20,0x20,0x63,0x20,0x23,0x39,0x65,0x39,0x65,0x61,0x62, + 0x22,0x2c,0x0a,0x22,0x7b,0x20,0x20,0x63,0x20,0x23,0x66,0x31,0x66,0x31, + 0x66,0x65,0x22,0x2c,0x0a,0x22,0x7d,0x20,0x20,0x63,0x20,0x23,0x66,0x65, + 0x66,0x65,0x66,0x65,0x22,0x2c,0x0a,0x22,0x7c,0x20,0x20,0x63,0x20,0x23, + 0x66,0x39,0x66,0x39,0x66,0x39,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x20,0x63, + 0x20,0x23,0x34,0x31,0x34,0x31,0x34,0x36,0x22,0x2c,0x0a,0x22,0x2e,0x2e, + 0x20,0x63,0x20,0x23,0x66,0x31,0x66,0x31,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x58,0x2e,0x20,0x63,0x20,0x23,0x39,0x66,0x39,0x66,0x61,0x62,0x22,0x2c, + 0x0a,0x22,0x6f,0x2e,0x20,0x63,0x20,0x23,0x66,0x32,0x66,0x32,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x4f,0x2e,0x20,0x63,0x20,0x23,0x35,0x31,0x35,0x31, + 0x35,0x37,0x22,0x2c,0x0a,0x22,0x2b,0x2e,0x20,0x63,0x20,0x23,0x34,0x61, + 0x34,0x61,0x35,0x30,0x22,0x2c,0x0a,0x22,0x40,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x35,0x22,0x2c,0x0a,0x22,0x23,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x31,0x22,0x2c,0x0a,0x22,0x24,0x2e,0x20,0x63,0x20,0x23, + 0x36,0x30,0x36,0x30,0x36,0x38,0x22,0x2c,0x0a,0x22,0x25,0x2e,0x20,0x63, + 0x20,0x23,0x64,0x61,0x64,0x61,0x65,0x64,0x22,0x2c,0x0a,0x22,0x26,0x2e, + 0x20,0x63,0x20,0x23,0x36,0x38,0x36,0x38,0x36,0x38,0x22,0x2c,0x0a,0x22, + 0x2a,0x2e,0x20,0x63,0x20,0x23,0x37,0x30,0x36,0x66,0x37,0x37,0x22,0x2c, + 0x0a,0x22,0x3d,0x2e,0x20,0x63,0x20,0x23,0x39,0x61,0x39,0x61,0x61,0x39, + 0x22,0x2c,0x0a,0x22,0x2d,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64, + 0x62,0x63,0x22,0x2c,0x0a,0x22,0x3b,0x2e,0x20,0x63,0x20,0x23,0x66,0x35, + 0x66,0x35,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3a,0x2e,0x20,0x63,0x20,0x23, + 0x39,0x34,0x39,0x34,0x61,0x31,0x22,0x2c,0x0a,0x22,0x3e,0x2e,0x20,0x63, + 0x20,0x23,0x36,0x31,0x36,0x31,0x36,0x62,0x22,0x2c,0x0a,0x22,0x2c,0x2e, + 0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x37,0x22,0x2c,0x0a,0x22,0x3c, + 0x2e,0x20,0x63,0x20,0x23,0x38,0x32,0x38,0x32,0x38,0x65,0x22,0x2c,0x0a, + 0x22,0x31,0x2e,0x20,0x63,0x20,0x23,0x36,0x32,0x36,0x32,0x36,0x62,0x22, + 0x2c,0x0a,0x22,0x32,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x62, + 0x64,0x22,0x2c,0x0a,0x22,0x33,0x2e,0x20,0x63,0x20,0x23,0x39,0x36,0x39, + 0x36,0x61,0x34,0x22,0x2c,0x0a,0x22,0x34,0x2e,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x35,0x2e,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x20,0x63,0x20, + 0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x22,0x37,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x38,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x39,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x30,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x71,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x77,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x65,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x72,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x74,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x79,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x75,0x2e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65, + 0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x36,0x2e,0x36,0x2e,0x40,0x20,0x40, + 0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x36,0x2e,0x36,0x2e,0x36, + 0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36, + 0x2e,0x58,0x20,0x3d,0x2e,0x2e,0x20,0x6f,0x20,0x6f,0x20,0x31,0x2e,0x31, + 0x2e,0x31,0x2e,0x31,0x2e,0x31,0x2e,0x31,0x2e,0x31,0x2e,0x31,0x2e,0x31, + 0x2e,0x2a,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36, + 0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x20,0x20,0x58,0x20,0x58,0x20,0x2e, + 0x20,0x2e,0x20,0x4f,0x20,0x4f,0x20,0x4f,0x20,0x4f,0x20,0x23,0x20,0x23, + 0x20,0x23,0x20,0x26,0x20,0x71,0x20,0x20,0x2e,0x36,0x2e,0x36,0x2e,0x36, + 0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33, + 0x2e,0x35,0x2e,0x35,0x2e,0x2b,0x20,0x37,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x2e,0x20,0x6f,0x20,0x3e,0x2e,0x23,0x20,0x33,0x20,0x26,0x20,0x2b, + 0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x22, + 0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x2b, + 0x20,0x2b,0x20,0x3b,0x20,0x58,0x20,0x20,0x20,0x2e,0x20,0x67,0x20,0x31, + 0x2e,0x33,0x20,0x26,0x20,0x52,0x20,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36, + 0x2e,0x36,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x21,0x20,0x37,0x20,0x34,0x2e,0x34, + 0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34, + 0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x36,0x2e,0x22,0x2c,0x0a, + 0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x2b, + 0x20,0x3b,0x20,0x34,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x34, + 0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x2b,0x20,0x63,0x20,0x34,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x34,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36, + 0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x48,0x20,0x40, + 0x20,0x34,0x2e,0x55,0x20,0x46,0x20,0x6a,0x20,0x6c,0x20,0x54,0x20,0x7e, + 0x20,0x59,0x20,0x78,0x20,0x3a,0x20,0x53,0x20,0x35,0x2e,0x34,0x2e,0x36, + 0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x20,0x40,0x20,0x34,0x2e,0x4e,0x20,0x44,0x20,0x40, + 0x2e,0x34,0x2e,0x34,0x2e,0x75,0x20,0x2f,0x20,0x6e,0x20,0x3d,0x20,0x2c, + 0x2e,0x6d,0x20,0x34,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x20,0x40,0x20,0x34, + 0x2e,0x34,0x2e,0x51,0x20,0x66,0x20,0x34,0x2e,0x34,0x2e,0x73,0x20,0x5e, + 0x20,0x28,0x20,0x3a,0x20,0x5d,0x20,0x38,0x20,0x34,0x2e,0x36,0x2e,0x22, + 0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x3b,0x2e,0x25,0x20,0x34,0x2e,0x23,0x2e,0x49,0x20,0x4c,0x20,0x45, + 0x20,0x34,0x2e,0x74,0x20,0x42,0x20,0x30,0x20,0x35,0x2e,0x39,0x20,0x3d, + 0x20,0x34,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x34,0x20,0x25,0x20,0x34,0x2e,0x27, + 0x20,0x72,0x20,0x6b,0x20,0x68,0x20,0x26,0x2e,0x79,0x20,0x5a,0x20,0x57, + 0x20,0x7c,0x20,0x47,0x20,0x7d,0x20,0x34,0x2e,0x36,0x2e,0x22,0x2c,0x0a, + 0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x34, + 0x20,0x25,0x20,0x34,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x34, + 0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x50,0x20,0x25,0x2e,0x34,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x34,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36, + 0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x6f,0x2e,0x2d, + 0x20,0x34,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x34,0x2e,0x36, + 0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x35,0x2e,0x2e,0x2e,0x2d,0x20,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34, + 0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34,0x2e,0x34, + 0x2e,0x34,0x2e,0x34,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33, + 0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x7b,0x20,0x2a,0x20,0x3e, + 0x20,0x32,0x20,0x33,0x2e,0x6f,0x20,0x36,0x20,0x3c,0x20,0x64,0x20,0x43, + 0x20,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x22, + 0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35,0x2e,0x35,0x2e,0x35,0x2e,0x35, + 0x2e,0x2c,0x20,0x2a,0x20,0x3e,0x20,0x2d,0x2e,0x33,0x2e,0x6f,0x20,0x36, + 0x20,0x3c,0x20,0x4b,0x20,0x4f,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36, + 0x2e,0x36,0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x33,0x2e,0x35, + 0x2e,0x35,0x2e,0x35,0x2e,0x61,0x20,0x2c,0x20,0x2a,0x20,0x58,0x20,0x32, + 0x20,0x33,0x2e,0x4f,0x20,0x24,0x2e,0x4a,0x20,0x62,0x20,0x4d,0x20,0x36, + 0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x22,0x2c,0x0a, + 0x22,0x36,0x2e,0x65,0x20,0x31,0x20,0x69,0x20,0x60,0x20,0x29,0x20,0x5f, + 0x20,0x7a,0x20,0x58,0x20,0x20,0x20,0x33,0x2e,0x3c,0x2e,0x24,0x20,0x24, + 0x20,0x24,0x20,0x76,0x20,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36, + 0x2e,0x36,0x2e,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x36,0x2e,0x58,0x2e,0x31, + 0x20,0x5b,0x20,0x70,0x20,0x56,0x20,0x33,0x2e,0x33,0x2e,0x33,0x2e,0x33, + 0x2e,0x77,0x20,0x3a,0x2e,0x41,0x20,0x2e,0x20,0x36,0x2e,0x36,0x2e,0x36, + 0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x36,0x2e,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_editdelete_xpm_len = 4330; +static const unsigned char small_editdelete_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x20,0x65,0x64,0x69,0x74, + 0x64,0x65,0x6c,0x65,0x74,0x65,0x5f,0x78,0x70,0x6d,0x5b,0x5d,0x20,0x3d, + 0x20,0x7b,0x0a,0x22,0x32,0x32,0x20,0x32,0x32,0x20,0x32,0x30,0x31,0x20, + 0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x09,0x63,0x20,0x4e,0x6f,0x6e,0x65, + 0x22,0x2c,0x0a,0x22,0x2e,0x20,0x09,0x63,0x20,0x23,0x34,0x35,0x34,0x35, + 0x34,0x35,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x09,0x63,0x20,0x23,0x38,0x42, + 0x38,0x42,0x38,0x42,0x22,0x2c,0x0a,0x22,0x40,0x20,0x09,0x63,0x20,0x23, + 0x32,0x38,0x32,0x38,0x32,0x38,0x22,0x2c,0x0a,0x22,0x23,0x20,0x09,0x63, + 0x20,0x23,0x34,0x36,0x34,0x36,0x34,0x36,0x22,0x2c,0x0a,0x22,0x24,0x20, + 0x09,0x63,0x20,0x23,0x36,0x46,0x36,0x46,0x36,0x46,0x22,0x2c,0x0a,0x22, + 0x25,0x20,0x09,0x63,0x20,0x23,0x46,0x37,0x46,0x37,0x46,0x37,0x22,0x2c, + 0x0a,0x22,0x26,0x20,0x09,0x63,0x20,0x23,0x46,0x44,0x46,0x44,0x46,0x44, + 0x22,0x2c,0x0a,0x22,0x2a,0x20,0x09,0x63,0x20,0x23,0x35,0x41,0x35,0x41, + 0x35,0x41,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x09,0x63,0x20,0x23,0x43,0x32, + 0x43,0x32,0x43,0x32,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x09,0x63,0x20,0x23, + 0x34,0x32,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x09,0x63, + 0x20,0x23,0x46,0x30,0x46,0x30,0x46,0x30,0x22,0x2c,0x0a,0x22,0x3e,0x20, + 0x09,0x63,0x20,0x23,0x44,0x37,0x44,0x37,0x44,0x37,0x22,0x2c,0x0a,0x22, + 0x2c,0x20,0x09,0x63,0x20,0x23,0x43,0x44,0x43,0x44,0x43,0x44,0x22,0x2c, + 0x0a,0x22,0x27,0x20,0x09,0x63,0x20,0x23,0x45,0x42,0x45,0x42,0x45,0x42, + 0x22,0x2c,0x0a,0x22,0x29,0x20,0x09,0x63,0x20,0x23,0x43,0x46,0x43,0x46, + 0x43,0x46,0x22,0x2c,0x0a,0x22,0x21,0x20,0x09,0x63,0x20,0x23,0x41,0x41, + 0x41,0x41,0x41,0x41,0x22,0x2c,0x0a,0x22,0x7e,0x20,0x09,0x63,0x20,0x23, + 0x45,0x35,0x45,0x35,0x45,0x35,0x22,0x2c,0x0a,0x22,0x7b,0x20,0x09,0x63, + 0x20,0x23,0x36,0x38,0x36,0x38,0x36,0x38,0x22,0x2c,0x0a,0x22,0x5d,0x20, + 0x09,0x63,0x20,0x23,0x46,0x35,0x46,0x35,0x46,0x35,0x22,0x2c,0x0a,0x22, + 0x5e,0x20,0x09,0x63,0x20,0x23,0x43,0x39,0x43,0x39,0x43,0x39,0x22,0x2c, + 0x0a,0x22,0x2f,0x20,0x09,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x33,0x31, + 0x22,0x2c,0x0a,0x22,0x28,0x20,0x09,0x63,0x20,0x23,0x46,0x34,0x46,0x34, + 0x46,0x34,0x22,0x2c,0x0a,0x22,0x5f,0x20,0x09,0x63,0x20,0x23,0x44,0x43, + 0x44,0x43,0x44,0x43,0x22,0x2c,0x0a,0x22,0x3a,0x20,0x09,0x63,0x20,0x23, + 0x45,0x30,0x45,0x30,0x45,0x30,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x09,0x63, + 0x20,0x23,0x45,0x33,0x45,0x33,0x45,0x33,0x22,0x2c,0x0a,0x22,0x5b,0x20, + 0x09,0x63,0x20,0x23,0x44,0x30,0x44,0x30,0x44,0x30,0x22,0x2c,0x0a,0x22, + 0x7d,0x20,0x09,0x63,0x20,0x23,0x36,0x35,0x36,0x33,0x36,0x33,0x22,0x2c, + 0x0a,0x22,0x7c,0x20,0x09,0x63,0x20,0x23,0x42,0x35,0x42,0x35,0x42,0x35, + 0x22,0x2c,0x0a,0x22,0x31,0x20,0x09,0x63,0x20,0x23,0x41,0x38,0x41,0x38, + 0x41,0x38,0x22,0x2c,0x0a,0x22,0x32,0x20,0x09,0x63,0x20,0x23,0x32,0x35, + 0x32,0x35,0x32,0x35,0x22,0x2c,0x0a,0x22,0x33,0x20,0x09,0x63,0x20,0x23, + 0x46,0x31,0x46,0x31,0x46,0x31,0x22,0x2c,0x0a,0x22,0x34,0x20,0x09,0x63, + 0x20,0x23,0x42,0x38,0x42,0x38,0x42,0x38,0x22,0x2c,0x0a,0x22,0x35,0x20, + 0x09,0x63,0x20,0x23,0x45,0x37,0x45,0x37,0x45,0x37,0x22,0x2c,0x0a,0x22, + 0x36,0x20,0x09,0x63,0x20,0x23,0x42,0x39,0x42,0x39,0x42,0x39,0x22,0x2c, + 0x0a,0x22,0x37,0x20,0x09,0x63,0x20,0x23,0x44,0x32,0x44,0x32,0x44,0x32, + 0x22,0x2c,0x0a,0x22,0x38,0x20,0x09,0x63,0x20,0x23,0x42,0x33,0x42,0x33, + 0x42,0x33,0x22,0x2c,0x0a,0x22,0x39,0x20,0x09,0x63,0x20,0x23,0x45,0x38, + 0x45,0x38,0x45,0x38,0x22,0x2c,0x0a,0x22,0x30,0x20,0x09,0x63,0x20,0x23, + 0x39,0x45,0x39,0x44,0x39,0x44,0x22,0x2c,0x0a,0x22,0x61,0x20,0x09,0x63, + 0x20,0x23,0x37,0x41,0x37,0x39,0x37,0x41,0x22,0x2c,0x0a,0x22,0x62,0x20, + 0x09,0x63,0x20,0x23,0x36,0x37,0x36,0x37,0x36,0x37,0x22,0x2c,0x0a,0x22, + 0x63,0x20,0x09,0x63,0x20,0x23,0x34,0x45,0x34,0x45,0x34,0x45,0x22,0x2c, + 0x0a,0x22,0x64,0x20,0x09,0x63,0x20,0x23,0x31,0x36,0x31,0x36,0x31,0x36, + 0x22,0x2c,0x0a,0x22,0x65,0x20,0x09,0x63,0x20,0x23,0x41,0x35,0x41,0x34, + 0x41,0x34,0x22,0x2c,0x0a,0x22,0x66,0x20,0x09,0x63,0x20,0x23,0x42,0x34, + 0x42,0x34,0x42,0x34,0x22,0x2c,0x0a,0x22,0x67,0x20,0x09,0x63,0x20,0x23, + 0x44,0x46,0x44,0x46,0x44,0x46,0x22,0x2c,0x0a,0x22,0x68,0x20,0x09,0x63, + 0x20,0x23,0x38,0x46,0x38,0x45,0x38,0x45,0x22,0x2c,0x0a,0x22,0x69,0x20, + 0x09,0x63,0x20,0x23,0x39,0x46,0x39,0x46,0x39,0x45,0x22,0x2c,0x0a,0x22, + 0x6a,0x20,0x09,0x63,0x20,0x23,0x46,0x32,0x46,0x30,0x45,0x45,0x22,0x2c, + 0x0a,0x22,0x6b,0x20,0x09,0x63,0x20,0x23,0x45,0x37,0x45,0x32,0x44,0x46, + 0x22,0x2c,0x0a,0x22,0x6c,0x20,0x09,0x63,0x20,0x23,0x44,0x31,0x43,0x42, + 0x43,0x36,0x22,0x2c,0x0a,0x22,0x6d,0x20,0x09,0x63,0x20,0x23,0x41,0x43, + 0x41,0x33,0x39,0x44,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x09,0x63,0x20,0x23, + 0x32,0x31,0x31,0x46,0x31,0x45,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x09,0x63, + 0x20,0x23,0x46,0x32,0x46,0x32,0x46,0x32,0x22,0x2c,0x0a,0x22,0x70,0x20, + 0x09,0x63,0x20,0x23,0x43,0x31,0x43,0x31,0x43,0x31,0x22,0x2c,0x0a,0x22, + 0x71,0x20,0x09,0x63,0x20,0x23,0x44,0x38,0x44,0x37,0x44,0x37,0x22,0x2c, + 0x0a,0x22,0x72,0x20,0x09,0x63,0x20,0x23,0x42,0x45,0x42,0x45,0x42,0x45, + 0x22,0x2c,0x0a,0x22,0x73,0x20,0x09,0x63,0x20,0x23,0x45,0x45,0x45,0x45, + 0x45,0x45,0x22,0x2c,0x0a,0x22,0x74,0x20,0x09,0x63,0x20,0x23,0x44,0x31, + 0x44,0x31,0x44,0x31,0x22,0x2c,0x0a,0x22,0x75,0x20,0x09,0x63,0x20,0x23, + 0x43,0x38,0x43,0x36,0x43,0x35,0x22,0x2c,0x0a,0x22,0x76,0x20,0x09,0x63, + 0x20,0x23,0x43,0x43,0x43,0x38,0x43,0x34,0x22,0x2c,0x0a,0x22,0x77,0x20, + 0x09,0x63,0x20,0x23,0x44,0x31,0x43,0x42,0x43,0x35,0x22,0x2c,0x0a,0x22, + 0x78,0x20,0x09,0x63,0x20,0x23,0x44,0x43,0x44,0x32,0x43,0x41,0x22,0x2c, + 0x0a,0x22,0x79,0x20,0x09,0x63,0x20,0x23,0x45,0x34,0x44,0x37,0x43,0x44, + 0x22,0x2c,0x0a,0x22,0x7a,0x20,0x09,0x63,0x20,0x23,0x32,0x45,0x32,0x42, + 0x32,0x39,0x22,0x2c,0x0a,0x22,0x41,0x20,0x09,0x63,0x20,0x23,0x45,0x46, + 0x45,0x45,0x45,0x45,0x22,0x2c,0x0a,0x22,0x42,0x20,0x09,0x63,0x20,0x23, + 0x45,0x32,0x44,0x45,0x44,0x43,0x22,0x2c,0x0a,0x22,0x43,0x20,0x09,0x63, + 0x20,0x23,0x44,0x37,0x44,0x32,0x43,0x45,0x22,0x2c,0x0a,0x22,0x44,0x20, + 0x09,0x63,0x20,0x23,0x44,0x36,0x43,0x45,0x43,0x38,0x22,0x2c,0x0a,0x22, + 0x45,0x20,0x09,0x63,0x20,0x23,0x44,0x42,0x44,0x31,0x43,0x38,0x22,0x2c, + 0x0a,0x22,0x46,0x20,0x09,0x63,0x20,0x23,0x45,0x34,0x44,0x36,0x43,0x43, + 0x22,0x2c,0x0a,0x22,0x47,0x20,0x09,0x63,0x20,0x23,0x45,0x36,0x44,0x36, + 0x43,0x38,0x22,0x2c,0x0a,0x22,0x48,0x20,0x09,0x63,0x20,0x23,0x32,0x45, + 0x32,0x41,0x32,0x37,0x22,0x2c,0x0a,0x22,0x49,0x20,0x09,0x63,0x20,0x23, + 0x45,0x43,0x45,0x43,0x45,0x43,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x09,0x63, + 0x20,0x23,0x41,0x34,0x41,0x33,0x41,0x33,0x22,0x2c,0x0a,0x22,0x4b,0x20, + 0x09,0x63,0x20,0x23,0x43,0x44,0x43,0x44,0x43,0x43,0x22,0x2c,0x0a,0x22, + 0x4c,0x20,0x09,0x63,0x20,0x23,0x41,0x31,0x41,0x30,0x39,0x46,0x22,0x2c, + 0x0a,0x22,0x4d,0x20,0x09,0x63,0x20,0x23,0x42,0x45,0x42,0x42,0x42,0x39, + 0x22,0x2c,0x0a,0x22,0x4e,0x20,0x09,0x63,0x20,0x23,0x45,0x34,0x44,0x45, + 0x44,0x38,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x09,0x63,0x20,0x23,0x42,0x41, + 0x42,0x33,0x41,0x44,0x22,0x2c,0x0a,0x22,0x50,0x20,0x09,0x63,0x20,0x23, + 0x39,0x44,0x39,0x35,0x38,0x45,0x22,0x2c,0x0a,0x22,0x51,0x20,0x09,0x63, + 0x20,0x23,0x42,0x36,0x41,0x43,0x41,0x32,0x22,0x2c,0x0a,0x22,0x52,0x20, + 0x09,0x63,0x20,0x23,0x42,0x41,0x41,0x43,0x41,0x31,0x22,0x2c,0x0a,0x22, + 0x53,0x20,0x09,0x63,0x20,0x23,0x45,0x33,0x44,0x30,0x43,0x30,0x22,0x2c, + 0x0a,0x22,0x54,0x20,0x09,0x63,0x20,0x23,0x32,0x44,0x32,0x39,0x32,0x36, + 0x22,0x2c,0x0a,0x22,0x55,0x20,0x09,0x63,0x20,0x23,0x39,0x33,0x39,0x32, + 0x39,0x31,0x22,0x2c,0x0a,0x22,0x56,0x20,0x09,0x63,0x20,0x23,0x43,0x35, + 0x43,0x32,0x43,0x30,0x22,0x2c,0x0a,0x22,0x57,0x20,0x09,0x63,0x20,0x23, + 0x39,0x35,0x39,0x31,0x38,0x45,0x22,0x2c,0x0a,0x22,0x58,0x20,0x09,0x63, + 0x20,0x23,0x39,0x45,0x39,0x38,0x39,0x33,0x22,0x2c,0x0a,0x22,0x59,0x20, + 0x09,0x63,0x20,0x23,0x42,0x38,0x41,0x46,0x41,0x37,0x22,0x2c,0x0a,0x22, + 0x5a,0x20,0x09,0x63,0x20,0x23,0x38,0x46,0x38,0x36,0x37,0x46,0x22,0x2c, + 0x0a,0x22,0x60,0x20,0x09,0x63,0x20,0x23,0x39,0x37,0x38,0x44,0x38,0x33, + 0x22,0x2c,0x0a,0x22,0x20,0x2e,0x09,0x63,0x20,0x23,0x43,0x46,0x42,0x45, + 0x41,0x46,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x09,0x63,0x20,0x23,0x45,0x31, + 0x43,0x43,0x42,0x39,0x22,0x2c,0x0a,0x22,0x2b,0x2e,0x09,0x63,0x20,0x23, + 0x32,0x44,0x32,0x38,0x32,0x34,0x22,0x2c,0x0a,0x22,0x40,0x2e,0x09,0x63, + 0x20,0x23,0x46,0x33,0x46,0x33,0x46,0x33,0x22,0x2c,0x0a,0x22,0x23,0x2e, + 0x09,0x63,0x20,0x23,0x44,0x31,0x44,0x30,0x43,0x46,0x22,0x2c,0x0a,0x22, + 0x24,0x2e,0x09,0x63,0x20,0x23,0x44,0x46,0x44,0x42,0x44,0x38,0x22,0x2c, + 0x0a,0x22,0x25,0x2e,0x09,0x63,0x20,0x23,0x43,0x45,0x43,0x38,0x43,0x32, + 0x22,0x2c,0x0a,0x22,0x26,0x2e,0x09,0x63,0x20,0x23,0x43,0x35,0x42,0x45, + 0x42,0x37,0x22,0x2c,0x0a,0x22,0x2a,0x2e,0x09,0x63,0x20,0x23,0x44,0x33, + 0x43,0x38,0x42,0x45,0x22,0x2c,0x0a,0x22,0x3d,0x2e,0x09,0x63,0x20,0x23, + 0x43,0x33,0x42,0x36,0x41,0x43,0x22,0x2c,0x0a,0x22,0x2d,0x2e,0x09,0x63, + 0x20,0x23,0x44,0x31,0x43,0x31,0x42,0x34,0x22,0x2c,0x0a,0x22,0x3b,0x2e, + 0x09,0x63,0x20,0x23,0x44,0x34,0x43,0x32,0x42,0x33,0x22,0x2c,0x0a,0x22, + 0x3e,0x2e,0x09,0x63,0x20,0x23,0x44,0x32,0x42,0x44,0x41,0x42,0x22,0x2c, + 0x0a,0x22,0x2c,0x2e,0x09,0x63,0x20,0x23,0x44,0x46,0x43,0x35,0x42,0x30, + 0x22,0x2c,0x0a,0x22,0x27,0x2e,0x09,0x63,0x20,0x23,0x32,0x43,0x32,0x37, + 0x32,0x33,0x22,0x2c,0x0a,0x22,0x29,0x2e,0x09,0x63,0x20,0x23,0x30,0x30, + 0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x21,0x2e,0x09,0x63,0x20,0x23, + 0x36,0x45,0x36,0x45,0x36,0x45,0x22,0x2c,0x0a,0x22,0x7e,0x2e,0x09,0x63, + 0x20,0x23,0x45,0x46,0x45,0x44,0x45,0x43,0x22,0x2c,0x0a,0x22,0x7b,0x2e, + 0x09,0x63,0x20,0x23,0x43,0x35,0x43,0x31,0x42,0x45,0x22,0x2c,0x0a,0x22, + 0x5d,0x2e,0x09,0x63,0x20,0x23,0x44,0x38,0x44,0x31,0x43,0x43,0x22,0x2c, + 0x0a,0x22,0x5e,0x2e,0x09,0x63,0x20,0x23,0x43,0x34,0x42,0x42,0x42,0x34, + 0x22,0x2c,0x0a,0x22,0x2f,0x2e,0x09,0x63,0x20,0x23,0x42,0x41,0x42,0x30, + 0x41,0x37,0x22,0x2c,0x0a,0x22,0x28,0x2e,0x09,0x63,0x20,0x23,0x43,0x41, + 0x42,0x43,0x42,0x31,0x22,0x2c,0x0a,0x22,0x5f,0x2e,0x09,0x63,0x20,0x23, + 0x42,0x37,0x41,0x38,0x39,0x43,0x22,0x2c,0x0a,0x22,0x3a,0x2e,0x09,0x63, + 0x20,0x23,0x43,0x38,0x42,0x36,0x41,0x37,0x22,0x2c,0x0a,0x22,0x3c,0x2e, + 0x09,0x63,0x20,0x23,0x43,0x43,0x42,0x38,0x41,0x35,0x22,0x2c,0x0a,0x22, + 0x5b,0x2e,0x09,0x63,0x20,0x23,0x43,0x38,0x42,0x31,0x39,0x44,0x22,0x2c, + 0x0a,0x22,0x7d,0x2e,0x09,0x63,0x20,0x23,0x44,0x42,0x42,0x46,0x41,0x37, + 0x22,0x2c,0x0a,0x22,0x7c,0x2e,0x09,0x63,0x20,0x23,0x32,0x38,0x32,0x33, + 0x31,0x45,0x22,0x2c,0x0a,0x22,0x31,0x2e,0x09,0x63,0x20,0x23,0x33,0x33, + 0x33,0x33,0x33,0x33,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x09,0x63,0x20,0x23, + 0x36,0x45,0x36,0x45,0x36,0x46,0x22,0x2c,0x0a,0x22,0x33,0x2e,0x09,0x63, + 0x20,0x23,0x38,0x30,0x38,0x30,0x38,0x30,0x22,0x2c,0x0a,0x22,0x34,0x2e, + 0x09,0x63,0x20,0x23,0x36,0x44,0x36,0x43,0x36,0x42,0x22,0x2c,0x0a,0x22, + 0x35,0x2e,0x09,0x63,0x20,0x23,0x45,0x39,0x45,0x34,0x45,0x30,0x22,0x2c, + 0x0a,0x22,0x36,0x2e,0x09,0x63,0x20,0x23,0x39,0x39,0x39,0x33,0x38,0x46, + 0x22,0x2c,0x0a,0x22,0x37,0x2e,0x09,0x63,0x20,0x23,0x39,0x42,0x39,0x34, + 0x38,0x45,0x22,0x2c,0x0a,0x22,0x38,0x2e,0x09,0x63,0x20,0x23,0x41,0x33, + 0x39,0x39,0x39,0x31,0x22,0x2c,0x0a,0x22,0x39,0x2e,0x09,0x63,0x20,0x23, + 0x39,0x45,0x39,0x32,0x38,0x39,0x22,0x2c,0x0a,0x22,0x30,0x2e,0x09,0x63, + 0x20,0x23,0x41,0x45,0x41,0x30,0x39,0x34,0x22,0x2c,0x0a,0x22,0x61,0x2e, + 0x09,0x63,0x20,0x23,0x42,0x41,0x41,0x39,0x39,0x41,0x22,0x2c,0x0a,0x22, + 0x62,0x2e,0x09,0x63,0x20,0x23,0x39,0x41,0x38,0x39,0x37,0x42,0x22,0x2c, + 0x0a,0x22,0x63,0x2e,0x09,0x63,0x20,0x23,0x39,0x44,0x38,0x41,0x37,0x41, + 0x22,0x2c,0x0a,0x22,0x64,0x2e,0x09,0x63,0x20,0x23,0x41,0x43,0x39,0x35, + 0x38,0x32,0x22,0x2c,0x0a,0x22,0x65,0x2e,0x09,0x63,0x20,0x23,0x44,0x39, + 0x42,0x39,0x39,0x45,0x22,0x2c,0x0a,0x22,0x66,0x2e,0x09,0x63,0x20,0x23, + 0x33,0x38,0x33,0x33,0x32,0x45,0x22,0x2c,0x0a,0x22,0x67,0x2e,0x09,0x63, + 0x20,0x23,0x39,0x39,0x39,0x39,0x39,0x39,0x22,0x2c,0x0a,0x22,0x68,0x2e, + 0x09,0x63,0x20,0x23,0x35,0x30,0x35,0x30,0x35,0x30,0x22,0x2c,0x0a,0x22, + 0x69,0x2e,0x09,0x63,0x20,0x23,0x32,0x44,0x32,0x44,0x32,0x44,0x22,0x2c, + 0x0a,0x22,0x6a,0x2e,0x09,0x63,0x20,0x23,0x41,0x34,0x41,0x34,0x41,0x34, + 0x22,0x2c,0x0a,0x22,0x6b,0x2e,0x09,0x63,0x20,0x23,0x35,0x45,0x35,0x45, + 0x35,0x46,0x22,0x2c,0x0a,0x22,0x6c,0x2e,0x09,0x63,0x20,0x23,0x34,0x42, + 0x34,0x42,0x34,0x42,0x22,0x2c,0x0a,0x22,0x6d,0x2e,0x09,0x63,0x20,0x23, + 0x36,0x43,0x36,0x41,0x36,0x37,0x22,0x2c,0x0a,0x22,0x6e,0x2e,0x09,0x63, + 0x20,0x23,0x46,0x32,0x45,0x41,0x45,0x32,0x22,0x2c,0x0a,0x22,0x6f,0x2e, + 0x09,0x63,0x20,0x23,0x46,0x36,0x45,0x41,0x45,0x31,0x22,0x2c,0x0a,0x22, + 0x70,0x2e,0x09,0x63,0x20,0x23,0x46,0x34,0x45,0x36,0x44,0x42,0x22,0x2c, + 0x0a,0x22,0x71,0x2e,0x09,0x63,0x20,0x23,0x46,0x32,0x45,0x32,0x44,0x33, + 0x22,0x2c,0x0a,0x22,0x72,0x2e,0x09,0x63,0x20,0x23,0x46,0x31,0x44,0x45, + 0x43,0x44,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x09,0x63,0x20,0x23,0x45,0x46, + 0x44,0x38,0x43,0x35,0x22,0x2c,0x0a,0x22,0x74,0x2e,0x09,0x63,0x20,0x23, + 0x45,0x44,0x44,0x34,0x42,0x45,0x22,0x2c,0x0a,0x22,0x75,0x2e,0x09,0x63, + 0x20,0x23,0x45,0x42,0x43,0x46,0x42,0x37,0x22,0x2c,0x0a,0x22,0x76,0x2e, + 0x09,0x63,0x20,0x23,0x45,0x41,0x43,0x41,0x42,0x30,0x22,0x2c,0x0a,0x22, + 0x77,0x2e,0x09,0x63,0x20,0x23,0x45,0x38,0x43,0x35,0x41,0x38,0x22,0x2c, + 0x0a,0x22,0x78,0x2e,0x09,0x63,0x20,0x23,0x44,0x37,0x42,0x34,0x39,0x36, + 0x22,0x2c,0x0a,0x22,0x79,0x2e,0x09,0x63,0x20,0x23,0x32,0x44,0x32,0x36, + 0x32,0x31,0x22,0x2c,0x0a,0x22,0x7a,0x2e,0x09,0x63,0x20,0x23,0x38,0x31, + 0x38,0x31,0x38,0x31,0x22,0x2c,0x0a,0x22,0x41,0x2e,0x09,0x63,0x20,0x23, + 0x37,0x41,0x37,0x41,0x37,0x41,0x22,0x2c,0x0a,0x22,0x42,0x2e,0x09,0x63, + 0x20,0x23,0x37,0x30,0x37,0x30,0x37,0x30,0x22,0x2c,0x0a,0x22,0x43,0x2e, + 0x09,0x63,0x20,0x23,0x34,0x44,0x34,0x44,0x34,0x44,0x22,0x2c,0x0a,0x22, + 0x44,0x2e,0x09,0x63,0x20,0x23,0x34,0x34,0x34,0x34,0x34,0x34,0x22,0x2c, + 0x0a,0x22,0x45,0x2e,0x09,0x63,0x20,0x23,0x34,0x41,0x34,0x41,0x34,0x41, + 0x22,0x2c,0x0a,0x22,0x46,0x2e,0x09,0x63,0x20,0x23,0x35,0x37,0x35,0x35, + 0x35,0x32,0x22,0x2c,0x0a,0x22,0x47,0x2e,0x09,0x63,0x20,0x23,0x42,0x32, + 0x41,0x41,0x41,0x33,0x22,0x2c,0x0a,0x22,0x48,0x2e,0x09,0x63,0x20,0x23, + 0x42,0x31,0x41,0x36,0x39,0x45,0x22,0x2c,0x0a,0x22,0x49,0x2e,0x09,0x63, + 0x20,0x23,0x42,0x30,0x41,0x33,0x39,0x39,0x22,0x2c,0x0a,0x22,0x4a,0x2e, + 0x09,0x63,0x20,0x23,0x41,0x44,0x39,0x44,0x39,0x30,0x22,0x2c,0x0a,0x22, + 0x4b,0x2e,0x09,0x63,0x20,0x23,0x41,0x43,0x39,0x39,0x38,0x41,0x22,0x2c, + 0x0a,0x22,0x4c,0x2e,0x09,0x63,0x20,0x23,0x41,0x41,0x39,0x36,0x38,0x35, + 0x22,0x2c,0x0a,0x22,0x4d,0x2e,0x09,0x63,0x20,0x23,0x41,0x39,0x39,0x32, + 0x37,0x46,0x22,0x2c,0x0a,0x22,0x4e,0x2e,0x09,0x63,0x20,0x23,0x41,0x38, + 0x38,0x46,0x37,0x41,0x22,0x2c,0x0a,0x22,0x4f,0x2e,0x09,0x63,0x20,0x23, + 0x41,0x36,0x38,0x42,0x37,0x33,0x22,0x2c,0x0a,0x22,0x50,0x2e,0x09,0x63, + 0x20,0x23,0x41,0x33,0x38,0x35,0x36,0x43,0x22,0x2c,0x0a,0x22,0x51,0x2e, + 0x09,0x63,0x20,0x23,0x32,0x35,0x32,0x30,0x31,0x42,0x22,0x2c,0x0a,0x22, + 0x52,0x2e,0x09,0x63,0x20,0x23,0x35,0x39,0x35,0x39,0x35,0x39,0x22,0x2c, + 0x0a,0x22,0x53,0x2e,0x09,0x63,0x20,0x23,0x33,0x41,0x33,0x41,0x33,0x41, + 0x22,0x2c,0x0a,0x22,0x54,0x2e,0x09,0x63,0x20,0x23,0x34,0x33,0x34,0x33, + 0x34,0x33,0x22,0x2c,0x0a,0x22,0x55,0x2e,0x09,0x63,0x20,0x23,0x33,0x46, + 0x33,0x46,0x33,0x46,0x22,0x2c,0x0a,0x22,0x56,0x2e,0x09,0x63,0x20,0x23, + 0x32,0x39,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x57,0x2e,0x09,0x63, + 0x20,0x23,0x30,0x34,0x30,0x34,0x30,0x34,0x22,0x2c,0x0a,0x22,0x58,0x2e, + 0x09,0x63,0x20,0x23,0x32,0x42,0x32,0x42,0x32,0x42,0x22,0x2c,0x0a,0x22, + 0x59,0x2e,0x09,0x63,0x20,0x23,0x35,0x34,0x35,0x34,0x35,0x34,0x22,0x2c, + 0x0a,0x22,0x5a,0x2e,0x09,0x63,0x20,0x23,0x36,0x44,0x36,0x44,0x36,0x44, + 0x22,0x2c,0x0a,0x22,0x60,0x2e,0x09,0x63,0x20,0x23,0x33,0x44,0x33,0x44, + 0x33,0x44,0x22,0x2c,0x0a,0x22,0x20,0x2b,0x09,0x63,0x20,0x23,0x32,0x31, + 0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x09,0x63,0x20,0x23, + 0x38,0x39,0x38,0x39,0x38,0x39,0x22,0x2c,0x0a,0x22,0x2b,0x2b,0x09,0x63, + 0x20,0x23,0x32,0x37,0x32,0x37,0x32,0x37,0x22,0x2c,0x0a,0x22,0x40,0x2b, + 0x09,0x63,0x20,0x23,0x30,0x31,0x30,0x31,0x30,0x31,0x22,0x2c,0x0a,0x22, + 0x23,0x2b,0x09,0x63,0x20,0x23,0x37,0x38,0x37,0x38,0x37,0x38,0x22,0x2c, + 0x0a,0x22,0x24,0x2b,0x09,0x63,0x20,0x23,0x36,0x41,0x36,0x41,0x36,0x41, + 0x22,0x2c,0x0a,0x22,0x25,0x2b,0x09,0x63,0x20,0x23,0x36,0x30,0x36,0x30, + 0x36,0x30,0x22,0x2c,0x0a,0x22,0x26,0x2b,0x09,0x63,0x20,0x23,0x30,0x42, + 0x30,0x42,0x30,0x42,0x22,0x2c,0x0a,0x22,0x2a,0x2b,0x09,0x63,0x20,0x23, + 0x35,0x35,0x35,0x35,0x35,0x35,0x22,0x2c,0x0a,0x22,0x3d,0x2b,0x09,0x63, + 0x20,0x23,0x35,0x32,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x2d,0x2b, + 0x09,0x63,0x20,0x23,0x38,0x36,0x38,0x36,0x38,0x36,0x22,0x2c,0x0a,0x22, + 0x3b,0x2b,0x09,0x63,0x20,0x23,0x35,0x31,0x35,0x31,0x35,0x31,0x22,0x2c, + 0x0a,0x22,0x3e,0x2b,0x09,0x63,0x20,0x23,0x30,0x43,0x30,0x43,0x30,0x43, + 0x22,0x2c,0x0a,0x22,0x2c,0x2b,0x09,0x63,0x20,0x23,0x37,0x37,0x37,0x37, + 0x37,0x37,0x22,0x2c,0x0a,0x22,0x27,0x2b,0x09,0x63,0x20,0x23,0x37,0x43, + 0x37,0x43,0x37,0x43,0x22,0x2c,0x0a,0x22,0x29,0x2b,0x09,0x63,0x20,0x23, + 0x33,0x34,0x33,0x34,0x33,0x34,0x22,0x2c,0x0a,0x22,0x21,0x2b,0x09,0x63, + 0x20,0x23,0x31,0x37,0x31,0x37,0x31,0x37,0x22,0x2c,0x0a,0x22,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x2e,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20, + 0x2b,0x20,0x40,0x20,0x23,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x24,0x20,0x25,0x20,0x26,0x20,0x26,0x20, + 0x26,0x20,0x26,0x20,0x26,0x20,0x26,0x20,0x2a,0x20,0x3d,0x20,0x2d,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x2c, + 0x0a,0x22,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0x20, + 0x3b,0x20,0x3e,0x20,0x2c,0x20,0x27,0x20,0x29,0x20,0x21,0x20,0x7e,0x20, + 0x7b,0x20,0x5d,0x20,0x5e,0x20,0x2f,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x24,0x20,0x28,0x20,0x5f,0x20,0x27,0x20,0x3a,0x20, + 0x3c,0x20,0x5b,0x20,0x3b,0x20,0x7d,0x20,0x7c,0x20,0x5b,0x20,0x31,0x20, + 0x32,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x2c,0x0a,0x22, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0x20,0x33,0x20, + 0x34,0x20,0x35,0x20,0x36,0x20,0x37,0x20,0x38,0x20,0x39,0x20,0x30,0x20, + 0x61,0x20,0x62,0x20,0x63,0x20,0x64,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x24,0x20,0x27,0x20,0x65,0x20,0x66,0x20,0x67,0x20,0x5e,0x20, + 0x68,0x20,0x69,0x20,0x6a,0x20,0x6b,0x20,0x6c,0x20,0x6d,0x20,0x6e,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0x20,0x6f,0x20,0x70,0x20, + 0x71,0x20,0x72,0x20,0x73,0x20,0x74,0x20,0x75,0x20,0x76,0x20,0x77,0x20, + 0x78,0x20,0x79,0x20,0x7a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x24,0x20,0x28,0x20,0x37,0x20,0x3c,0x20,0x5b,0x20,0x41,0x20,0x42,0x20, + 0x43,0x20,0x44,0x20,0x45,0x20,0x46,0x20,0x47,0x20,0x48,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x24,0x20,0x49,0x20,0x4a,0x20,0x4b,0x20, + 0x4c,0x20,0x4d,0x20,0x4e,0x20,0x4f,0x20,0x50,0x20,0x51,0x20,0x52,0x20, + 0x53,0x20,0x54,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x2c, + 0x0a,0x22,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x24,0x20, + 0x73,0x20,0x30,0x20,0x55,0x20,0x56,0x20,0x57,0x20,0x58,0x20,0x59,0x20, + 0x5a,0x20,0x60,0x20,0x20,0x2e,0x2e,0x2e,0x2b,0x2e,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x24,0x20,0x40,0x2e,0x23,0x2e,0x24,0x2e,0x25,0x2e, + 0x26,0x2e,0x2a,0x2e,0x3d,0x2e,0x2d,0x2e,0x3b,0x2e,0x3e,0x2e,0x2c,0x2e, + 0x27,0x2e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x2c,0x0a,0x22, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x29,0x2e,0x21,0x2e,0x7e,0x2e, + 0x7b,0x2e,0x5d,0x2e,0x5e,0x2e,0x2f,0x2e,0x28,0x2e,0x5f,0x2e,0x3a,0x2e, + 0x3c,0x2e,0x5b,0x2e,0x7d,0x2e,0x7c,0x2e,0x29,0x2e,0x20,0x20,0x20,0x20, + 0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20,0x31,0x2e,0x32,0x2e, + 0x33,0x2e,0x34,0x2e,0x35,0x2e,0x36,0x2e,0x37,0x2e,0x38,0x2e,0x39,0x2e, + 0x30,0x2e,0x61,0x2e,0x62,0x2e,0x63,0x2e,0x64,0x2e,0x65,0x2e,0x66,0x2e, + 0x67,0x2e,0x68,0x2e,0x69,0x2e,0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20, + 0x29,0x2e,0x6a,0x2e,0x6b,0x2e,0x6c,0x2e,0x6d,0x2e,0x6e,0x2e,0x6f,0x2e, + 0x70,0x2e,0x71,0x2e,0x72,0x2e,0x73,0x2e,0x74,0x2e,0x75,0x2e,0x76,0x2e, + 0x77,0x2e,0x78,0x2e,0x79,0x2e,0x23,0x20,0x7a,0x2e,0x41,0x2e,0x20,0x20, + 0x22,0x2c,0x0a,0x22,0x20,0x20,0x42,0x2e,0x43,0x2e,0x44,0x2e,0x45,0x2e, + 0x46,0x2e,0x47,0x2e,0x48,0x2e,0x49,0x2e,0x30,0x2e,0x4a,0x2e,0x4b,0x2e, + 0x4c,0x2e,0x4d,0x2e,0x4e,0x2e,0x4f,0x2e,0x50,0x2e,0x51,0x2e,0x2d,0x20, + 0x52,0x2e,0x24,0x20,0x53,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x20,0x41,0x2e, + 0x54,0x2e,0x55,0x2e,0x56,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e, + 0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e, + 0x29,0x2e,0x57,0x2e,0x58,0x2e,0x59,0x2e,0x5a,0x2e,0x60,0x2e,0x22,0x2c, + 0x0a,0x22,0x20,0x20,0x20,0x2b,0x2e,0x2b,0x2b,0x2b,0x40,0x2b,0x29,0x2e, + 0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e, + 0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x57,0x2e,0x2e,0x20, + 0x23,0x2b,0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20,0x24,0x2b, + 0x25,0x2b,0x2e,0x20,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e, + 0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e,0x29,0x2e, + 0x26,0x2b,0x2a,0x2b,0x7b,0x20,0x3d,0x2b,0x20,0x20,0x22,0x2c,0x0a,0x22, + 0x20,0x20,0x20,0x20,0x20,0x20,0x58,0x2e,0x44,0x2e,0x2d,0x2b,0x2d,0x2b, + 0x3b,0x2b,0x3e,0x2b,0x3e,0x2b,0x3e,0x2b,0x3e,0x2b,0x3e,0x2b,0x3e,0x2b, + 0x3e,0x2b,0x2c,0x2b,0x2d,0x2b,0x27,0x2b,0x29,0x2b,0x20,0x20,0x20,0x20, + 0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x29,0x2e,0x29,0x2e,0x44,0x2e,0x41,0x2e,0x41,0x2e,0x41,0x2e, + 0x41,0x2e,0x41,0x2e,0x41,0x2e,0x41,0x2e,0x21,0x2b,0x29,0x2e,0x29,0x2e, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x2c,0x0a,0x22,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x22,0x7d,0x3b,0x0a +}; + +static const unsigned int small_editlower_xpm_len = 2428; +static const unsigned char small_editlower_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x38,0x35,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x23, + 0x64,0x65,0x64,0x65,0x35,0x61,0x35,0x61,0x33,0x39,0x33,0x39,0x22,0x2c, + 0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x35,0x61,0x35, + 0x61,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x36,0x33,0x36,0x33,0x33,0x39,0x33,0x39,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x36,0x62,0x36, + 0x62,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x37,0x33,0x37,0x33,0x35,0x61,0x35,0x61,0x22,0x2c, + 0x0a,0x22,0x2b,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x37,0x33,0x37, + 0x33,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x40,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x37,0x62,0x37,0x62,0x36,0x62,0x36,0x62,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x37,0x62,0x37, + 0x62,0x37,0x33,0x37,0x33,0x22,0x2c,0x0a,0x22,0x24,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x37,0x33,0x37,0x33,0x36,0x33,0x36,0x33,0x22,0x2c, + 0x0a,0x22,0x25,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x36,0x33,0x36, + 0x33,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63,0x20,0x23, + 0x65,0x37,0x65,0x37,0x36,0x33,0x36,0x33,0x34,0x61,0x34,0x61,0x22,0x2c, + 0x0a,0x22,0x2a,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x36,0x33,0x36, + 0x33,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x37,0x62,0x37,0x62,0x35,0x61,0x35,0x61,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x36,0x62,0x36, + 0x62,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x36,0x33,0x36,0x33,0x34,0x32,0x34,0x32,0x22,0x2c, + 0x0a,0x22,0x3a,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x36,0x62,0x36, + 0x62,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x3e,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x36,0x62,0x36,0x62,0x34,0x61,0x34,0x61,0x22,0x2c, + 0x0a,0x22,0x2c,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x37,0x33,0x37, + 0x33,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x37,0x33,0x37,0x33,0x35,0x32,0x35,0x32,0x22,0x2c, + 0x0a,0x22,0x31,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x37,0x62,0x37, + 0x62,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x32,0x20,0x63,0x20,0x23, + 0x39,0x34,0x39,0x34,0x38,0x34,0x38,0x34,0x37,0x62,0x37,0x62,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x38,0x34,0x38, + 0x34,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x34,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x38,0x34,0x38,0x34,0x37,0x33,0x37,0x33,0x22,0x2c, + 0x0a,0x22,0x35,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x38,0x63,0x38, + 0x63,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x36,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x38,0x34,0x38,0x34,0x37,0x33,0x37,0x33,0x22,0x2c, + 0x0a,0x22,0x37,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x38,0x63,0x38, + 0x63,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x38,0x20,0x63,0x20,0x23, + 0x65,0x37,0x65,0x37,0x38,0x34,0x38,0x34,0x36,0x62,0x36,0x62,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x38,0x34,0x38, + 0x34,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x30,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x38,0x63,0x38,0x63,0x37,0x33,0x37,0x33,0x22,0x2c, + 0x0a,0x22,0x71,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x39,0x34,0x39, + 0x34,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x77,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x38,0x34,0x38,0x34,0x36,0x33,0x36,0x33,0x22,0x2c, + 0x0a,0x22,0x65,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x38,0x63,0x38, + 0x63,0x37,0x33,0x37,0x33,0x22,0x2c,0x0a,0x22,0x72,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x39,0x34,0x39,0x34,0x37,0x62,0x37,0x62,0x22,0x2c, + 0x0a,0x22,0x74,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x38,0x63,0x38, + 0x63,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x79,0x20,0x63,0x20,0x23, + 0x39,0x63,0x39,0x63,0x38,0x63,0x38,0x63,0x38,0x63,0x38,0x63,0x22,0x2c, + 0x0a,0x22,0x75,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x34,0x39, + 0x34,0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x69,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x36,0x31,0x22,0x2c,0x0a,0x22,0x70,0x20,0x63,0x20,0x23, + 0x62,0x35,0x62,0x35,0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34,0x22,0x2c, + 0x0a,0x22,0x61,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x61,0x35,0x61, + 0x35,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x73,0x20,0x63,0x20,0x23, + 0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x22,0x2c, + 0x0a,0x22,0x64,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x61,0x35,0x61, + 0x35,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x66,0x20,0x63,0x20,0x23, + 0x62,0x35,0x62,0x35,0x61,0x64,0x61,0x64,0x61,0x64,0x61,0x64,0x22,0x2c, + 0x0a,0x22,0x67,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x61,0x64,0x61, + 0x64,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x68,0x20,0x63,0x20,0x23, + 0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x62,0x35,0x62,0x35,0x22,0x2c, + 0x0a,0x22,0x6a,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62,0x64,0x62, + 0x64,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x6b,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x37,0x34,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x22,0x2c, + 0x0a,0x22,0x7a,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x39,0x34,0x39, + 0x34,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x78,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x39,0x34,0x39,0x34,0x38,0x63,0x38,0x63,0x22,0x2c, + 0x0a,0x22,0x63,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x39,0x63,0x39, + 0x63,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x76,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x39,0x63,0x39,0x63,0x39,0x34,0x39,0x34,0x22,0x2c, + 0x0a,0x22,0x62,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x39,0x63,0x39, + 0x63,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x39,0x63,0x39,0x63,0x38,0x63,0x38,0x63,0x22,0x2c, + 0x0a,0x22,0x6d,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x61,0x35,0x61, + 0x35,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x61,0x64,0x61,0x64,0x61,0x35,0x61,0x35,0x22,0x2c, + 0x0a,0x22,0x4e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x62,0x35,0x62, + 0x35,0x61,0x64,0x61,0x64,0x22,0x2c,0x0a,0x22,0x42,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x62,0x35,0x62,0x35,0x62,0x35,0x62,0x35,0x22,0x2c, + 0x0a,0x22,0x56,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x62,0x64,0x62, + 0x64,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x43,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x39,0x63,0x39,0x63,0x38,0x34,0x38,0x34,0x22,0x2c, + 0x0a,0x22,0x5a,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x39,0x63,0x39, + 0x63,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x41,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x61,0x35,0x61,0x35,0x39,0x34,0x39,0x34,0x22,0x2c, + 0x0a,0x22,0x53,0x20,0x63,0x20,0x23,0x63,0x30,0x63,0x30,0x63,0x30,0x63, + 0x30,0x63,0x30,0x63,0x30,0x22,0x2c,0x0a,0x22,0x44,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x46,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x63,0x36,0x63, + 0x36,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x47,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x48,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x63,0x65,0x63, + 0x65,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x64,0x36,0x64,0x36,0x63,0x65,0x63,0x65,0x22,0x2c, + 0x0a,0x22,0x4b,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x36,0x64, + 0x36,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x4c,0x20,0x63,0x20,0x23, + 0x64,0x65,0x64,0x65,0x64,0x65,0x64,0x65,0x64,0x36,0x64,0x36,0x22,0x2c, + 0x0a,0x22,0x50,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x64,0x65,0x64, + 0x65,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x49,0x20,0x63,0x20,0x23, + 0x65,0x37,0x65,0x37,0x64,0x65,0x64,0x65,0x64,0x65,0x64,0x65,0x22,0x2c, + 0x0a,0x22,0x55,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x65,0x37,0x65, + 0x37,0x64,0x65,0x64,0x65,0x22,0x2c,0x0a,0x22,0x59,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x65,0x66,0x65,0x66,0x64,0x65,0x64,0x65,0x22,0x2c, + 0x0a,0x22,0x54,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x65,0x37,0x65, + 0x37,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x52,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x22,0x2c, + 0x0a,0x22,0x45,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x65,0x66,0x65, + 0x66,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x57,0x20,0x63,0x20,0x23, + 0x66,0x37,0x66,0x37,0x65,0x66,0x65,0x66,0x65,0x37,0x65,0x37,0x22,0x2c, + 0x0a,0x22,0x51,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x65,0x66,0x65, + 0x66,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x21,0x20,0x63,0x20,0x23, + 0x66,0x37,0x66,0x37,0x66,0x37,0x66,0x37,0x65,0x66,0x65,0x66,0x22,0x2c, + 0x0a,0x22,0x7e,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x66,0x37,0x66, + 0x37,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x5e,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x39,0x37,0x22,0x2c,0x0a,0x22,0x2f,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x66,0x37,0x66,0x37,0x66,0x37,0x66,0x37,0x22,0x2c, + 0x0a,0x22,0x28,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x66,0x66,0x66, + 0x66,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x29,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a,0x22,0x5f,0x20,0x63,0x20, + 0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65, + 0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x2b,0x26,0x6f,0x4f,0x2b,0x24,0x40, + 0x23,0x33,0x34,0x35,0x7a,0x70,0x7a,0x76,0x6b,0x5f,0x5f,0x5f,0x5f,0x5f, + 0x5f,0x22,0x2c,0x0a,0x22,0x3d,0x2c,0x3c,0x3e,0x3e,0x3e,0x2c,0x3e,0x3a, + 0x3e,0x3e,0x3a,0x3a,0x3e,0x20,0x69,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x22, + 0x2c,0x0a,0x22,0x38,0x3e,0x3e,0x3e,0x2c,0x3e,0x3e,0x2c,0x3e,0x2c,0x3e, + 0x3e,0x3e,0x2c,0x25,0x75,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x22,0x2c,0x0a, + 0x22,0x36,0x3a,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e, + 0x3e,0x25,0x74,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x22,0x2c,0x0a,0x22,0x37, + 0x3a,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x3e,0x2c,0x2a, + 0x74,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x22,0x2c,0x0a,0x22,0x6c,0x3a,0x3e, + 0x3e,0x3a,0x3e,0x3e,0x3a,0x3e,0x3e,0x3a,0x3e,0x3e,0x3e,0x2a,0x79,0x5f, + 0x5f,0x5f,0x5f,0x5f,0x5f,0x22,0x2c,0x0a,0x22,0x78,0x3e,0x3a,0x3e,0x3e, + 0x3e,0x3a,0x3b,0x58,0x58,0x58,0x58,0x58,0x58,0x2e,0x32,0x5f,0x5f,0x5f, + 0x5f,0x5f,0x5f,0x22,0x2c,0x0a,0x22,0x63,0x3a,0x3e,0x3e,0x3a,0x3a,0x31, + 0x41,0x5a,0x43,0x43,0x71,0x30,0x30,0x39,0x79,0x6b,0x6b,0x6b,0x68,0x68, + 0x6b,0x22,0x2c,0x0a,0x22,0x61,0x3b,0x3a,0x3e,0x3a,0x3b,0x72,0x29,0x29, + 0x29,0x5e,0x5e,0x28,0x5e,0x5e,0x21,0x45,0x52,0x55,0x49,0x54,0x73,0x22, + 0x2c,0x0a,0x22,0x6d,0x3e,0x3a,0x3e,0x3a,0x58,0x65,0x28,0x28,0x28,0x28, + 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x29,0x64,0x22,0x2c,0x0a, + 0x22,0x67,0x3e,0x3a,0x3b,0x3a,0x3b,0x77,0x28,0x2f,0x7e,0x7e,0x7e,0x2f, + 0x7e,0x2f,0x7e,0x7e,0x2f,0x7e,0x7e,0x29,0x64,0x22,0x2c,0x0a,0x22,0x66, + 0x2d,0x3b,0x3e,0x3a,0x3b,0x31,0x7e,0x28,0x7e,0x2f,0x2f,0x7e,0x7e,0x7e, + 0x7e,0x2f,0x7e,0x28,0x7e,0x29,0x73,0x22,0x2c,0x0a,0x22,0x4e,0x2d,0x3a, + 0x3b,0x3b,0x3b,0x3c,0x51,0x28,0x7e,0x7e,0x7e,0x2f,0x7e,0x2f,0x7e,0x7e, + 0x7e,0x7e,0x7e,0x29,0x66,0x22,0x2c,0x0a,0x22,0x42,0x6f,0x3b,0x3a,0x3b, + 0x3b,0x3c,0x59,0x2f,0x7e,0x2f,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, + 0x7e,0x28,0x6a,0x22,0x2c,0x0a,0x22,0x56,0x4d,0x6d,0x62,0x76,0x6e,0x6e, + 0x55,0x28,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x29, + 0x6a,0x22,0x2c,0x0a,0x22,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x6b,0x54,0x2f, + 0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x28,0x6b,0x22, + 0x2c,0x0a,0x22,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x44,0x4b,0x28,0x7e,0x7e, + 0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x29,0x6a,0x22,0x2c,0x0a, + 0x22,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x6b,0x49,0x7e,0x7e,0x7e,0x7e,0x7e, + 0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x28,0x6b,0x22,0x2c,0x0a,0x22,0x5f, + 0x5f,0x5f,0x5f,0x5f,0x5f,0x6b,0x4b,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, + 0x7e,0x7e,0x21,0x7e,0x7e,0x28,0x6a,0x22,0x2c,0x0a,0x22,0x5f,0x5f,0x5f, + 0x5f,0x5f,0x5f,0x44,0x47,0x2f,0x7e,0x7e,0x7e,0x21,0x7e,0x7e,0x21,0x7e, + 0x7e,0x7e,0x7e,0x28,0x56,0x22,0x2c,0x0a,0x22,0x5f,0x5f,0x5f,0x5f,0x5f, + 0x5f,0x5f,0x4b,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, + 0x7e,0x28,0x56,0x22,0x2c,0x0a,0x22,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f,0x5f, + 0x6b,0x47,0x44,0x6b,0x48,0x46,0x44,0x4b,0x4a,0x48,0x50,0x4b,0x4c,0x57, + 0x46,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_editraise_xpm_len = 2365; +static const unsigned char small_editraise_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x38,0x32,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x23, + 0x61,0x64,0x61,0x64,0x35,0x61,0x35,0x61,0x34,0x61,0x34,0x61,0x22,0x2c, + 0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x35,0x61,0x35, + 0x61,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20,0x23, + 0x62,0x64,0x62,0x64,0x35,0x61,0x35,0x61,0x34,0x32,0x34,0x32,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x36,0x33,0x36, + 0x33,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x63,0x20,0x23, + 0x61,0x35,0x61,0x35,0x36,0x33,0x36,0x33,0x35,0x32,0x35,0x32,0x22,0x2c, + 0x0a,0x22,0x2b,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x36,0x33,0x36, + 0x33,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x40,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x35,0x32,0x35,0x32,0x33,0x39,0x33,0x39,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x35,0x61,0x35, + 0x61,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x24,0x20,0x63,0x20,0x23, + 0x64,0x65,0x64,0x65,0x35,0x32,0x35,0x32,0x33,0x39,0x33,0x39,0x22,0x2c, + 0x0a,0x22,0x25,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x34,0x61,0x34, + 0x61,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x35,0x61,0x35,0x61,0x33,0x31,0x33,0x31,0x22,0x2c, + 0x0a,0x22,0x2a,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x35,0x61,0x35, + 0x61,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x36,0x33,0x36,0x33,0x33,0x39,0x33,0x39,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x35,0x61,0x35, + 0x61,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x35,0x61,0x35,0x61,0x34,0x32,0x34,0x32,0x22,0x2c, + 0x0a,0x22,0x3a,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x36,0x62,0x36, + 0x62,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x3e,0x20,0x63,0x20,0x23, + 0x64,0x65,0x64,0x65,0x36,0x62,0x36,0x62,0x35,0x32,0x35,0x32,0x22,0x2c, + 0x0a,0x22,0x2c,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x37,0x33,0x37, + 0x33,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x37,0x33,0x37,0x33,0x36,0x33,0x36,0x33,0x22,0x2c, + 0x0a,0x22,0x31,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x37,0x33,0x37, + 0x33,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x32,0x20,0x63,0x20,0x23, + 0x64,0x65,0x64,0x65,0x37,0x62,0x37,0x62,0x36,0x33,0x36,0x33,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x36,0x33,0x36, + 0x33,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x34,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x37,0x33,0x37,0x33,0x35,0x32,0x35,0x32,0x22,0x2c, + 0x0a,0x22,0x35,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x36,0x62,0x36, + 0x62,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x36,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x36,0x33,0x36,0x33,0x34,0x32,0x34,0x32,0x22,0x2c, + 0x0a,0x22,0x37,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x36,0x62,0x36, + 0x62,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x38,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x36,0x62,0x36,0x62,0x34,0x61,0x34,0x61,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x37,0x33,0x37, + 0x33,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x30,0x20,0x63,0x20,0x23, + 0x66,0x37,0x66,0x37,0x37,0x33,0x37,0x33,0x35,0x32,0x35,0x32,0x22,0x2c, + 0x0a,0x22,0x71,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x38,0x34,0x38, + 0x34,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x77,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x38,0x34,0x38,0x34,0x37,0x33,0x37,0x33,0x22,0x2c, + 0x0a,0x22,0x65,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x38,0x63,0x38, + 0x63,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x72,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x38,0x34,0x38,0x34,0x37,0x33,0x37,0x33,0x22,0x2c, + 0x0a,0x22,0x74,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x38,0x63,0x38, + 0x63,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x79,0x20,0x63,0x20,0x23, + 0x65,0x37,0x65,0x37,0x38,0x34,0x38,0x34,0x36,0x62,0x36,0x62,0x22,0x2c, + 0x0a,0x22,0x75,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x38,0x63,0x38, + 0x63,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x69,0x20,0x63,0x20,0x23, + 0x62,0x35,0x62,0x35,0x39,0x34,0x39,0x34,0x38,0x63,0x38,0x63,0x22,0x2c, + 0x0a,0x22,0x70,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x39,0x63,0x39, + 0x63,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x61,0x20,0x63,0x20,0x23, + 0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x22,0x2c, + 0x0a,0x22,0x73,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x61,0x35,0x61, + 0x35,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x64,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x36,0x38,0x22,0x2c,0x0a,0x22,0x66,0x20,0x63,0x20,0x23, + 0x62,0x64,0x62,0x64,0x61,0x64,0x61,0x64,0x61,0x35,0x61,0x35,0x22,0x2c, + 0x0a,0x22,0x67,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x31,0x22,0x2c, + 0x0a,0x22,0x68,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62,0x35,0x62, + 0x35,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x6a,0x20,0x63,0x20,0x23, + 0x62,0x64,0x62,0x64,0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x22,0x2c, + 0x0a,0x22,0x6b,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x34,0x22,0x2c, + 0x0a,0x22,0x6c,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x63,0x36,0x63, + 0x36,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x7a,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x22,0x2c, + 0x0a,0x22,0x78,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x39,0x34,0x39, + 0x34,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x63,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x39,0x34,0x39,0x34,0x38,0x34,0x38,0x34,0x22,0x2c, + 0x0a,0x22,0x76,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x39,0x63,0x39, + 0x63,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x62,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x61,0x35,0x61,0x35,0x39,0x63,0x39,0x63,0x22,0x2c, + 0x0a,0x22,0x6e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x61,0x64,0x61, + 0x64,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x6d,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x61,0x64,0x61,0x64,0x61,0x64,0x61,0x64,0x22,0x2c, + 0x0a,0x22,0x4d,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x62,0x35,0x62, + 0x35,0x61,0x64,0x61,0x64,0x22,0x2c,0x0a,0x22,0x4e,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x62,0x64,0x62,0x64,0x62,0x64,0x62,0x64,0x22,0x2c, + 0x0a,0x22,0x42,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x61,0x35,0x61, + 0x35,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x56,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x61,0x64,0x61,0x64,0x39,0x63,0x39,0x63,0x22,0x2c, + 0x0a,0x22,0x43,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x62,0x35,0x62, + 0x35,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x62,0x64,0x62,0x64,0x22,0x2c, + 0x0a,0x22,0x41,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x63,0x36,0x63, + 0x36,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x53,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x63,0x36,0x63,0x36,0x62,0x35,0x62,0x35,0x22,0x2c, + 0x0a,0x22,0x44,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x63,0x65,0x63, + 0x65,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x46,0x20,0x63,0x20,0x23, + 0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x22,0x2c, + 0x0a,0x22,0x47,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x63,0x36,0x63, + 0x36,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x48,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x4a,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x63,0x65,0x63, + 0x65,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x4b,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x22,0x2c, + 0x0a,0x22,0x4c,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x63,0x65,0x63, + 0x65,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x50,0x20,0x63,0x20,0x23, + 0x64,0x65,0x64,0x65,0x63,0x65,0x63,0x65,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x49,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x36,0x64, + 0x36,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x55,0x20,0x63,0x20,0x23, + 0x64,0x65,0x64,0x65,0x64,0x36,0x64,0x36,0x64,0x36,0x64,0x36,0x22,0x2c, + 0x0a,0x22,0x59,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x64,0x65,0x64, + 0x65,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x54,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x64,0x65,0x64,0x65,0x64,0x36,0x64,0x36,0x22,0x2c, + 0x0a,0x22,0x52,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x64,0x36,0x64, + 0x36,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x45,0x20,0x63,0x20,0x23, + 0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x64,0x65,0x64,0x65,0x22,0x2c, + 0x0a,0x22,0x57,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x65,0x66,0x65, + 0x66,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x51,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x66,0x37,0x66,0x37,0x65,0x66,0x65,0x66,0x22,0x2c, + 0x0a,0x22,0x21,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x66,0x37,0x66, + 0x37,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x7e,0x20,0x63,0x20,0x23, + 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x37,0x66,0x37,0x22,0x2c, + 0x0a,0x22,0x5e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x30,0x30,0x22, + 0x2c,0x0a,0x22,0x2f,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a, + 0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22, + 0x2c,0x33,0x3e,0x3a,0x3c,0x31,0x3c,0x77,0x71,0x77,0x65,0x75,0x69,0x78, + 0x66,0x4e,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x22,0x2c,0x0a,0x22,0x30,0x39, + 0x39,0x38,0x37,0x39,0x38,0x38,0x37,0x38,0x37,0x36,0x36,0x36,0x4f,0x6b, + 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x22,0x2c,0x0a,0x22,0x32,0x38,0x38,0x38, + 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x39,0x39,0x39,0x2b,0x68,0x2f,0x2f, + 0x2f,0x2f,0x2f,0x2f,0x22,0x2c,0x0a,0x22,0x79,0x37,0x38,0x38,0x38,0x38, + 0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x6f,0x67,0x2f,0x2f,0x2f,0x2f, + 0x2f,0x2f,0x22,0x2c,0x0a,0x22,0x72,0x37,0x38,0x38,0x38,0x38,0x38,0x38, + 0x38,0x37,0x38,0x38,0x38,0x39,0x20,0x68,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f, + 0x22,0x2c,0x0a,0x22,0x74,0x37,0x38,0x38,0x37,0x38,0x38,0x37,0x38,0x38, + 0x38,0x37,0x38,0x39,0x2e,0x67,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x22,0x2c, + 0x0a,0x22,0x7a,0x38,0x37,0x38,0x37,0x38,0x37,0x38,0x37,0x38,0x37,0x38, + 0x37,0x38,0x58,0x67,0x6b,0x2f,0x2f,0x2f,0x2f,0x2f,0x22,0x2c,0x0a,0x22, + 0x63,0x37,0x38,0x37,0x38,0x38,0x37,0x38,0x38,0x37,0x38,0x37,0x38,0x37, + 0x2d,0x67,0x48,0x5a,0x4e,0x6a,0x6b,0x64,0x22,0x2c,0x0a,0x22,0x76,0x37, + 0x38,0x37,0x38,0x37,0x38,0x37,0x37,0x38,0x37,0x38,0x37,0x37,0x3b,0x45, + 0x5e,0x7e,0x7e,0x7e,0x5e,0x61,0x22,0x2c,0x0a,0x22,0x70,0x37,0x36,0x38, + 0x36,0x37,0x38,0x36,0x38,0x36,0x38,0x36,0x38,0x37,0x23,0x55,0x7e,0x7e, + 0x21,0x21,0x5e,0x73,0x22,0x2c,0x0a,0x22,0x62,0x37,0x37,0x37,0x37,0x38, + 0x36,0x37,0x37,0x37,0x37,0x37,0x36,0x38,0x40,0x49,0x7e,0x51,0x51,0x51, + 0x5e,0x73,0x22,0x2c,0x0a,0x22,0x66,0x38,0x36,0x38,0x37,0x36,0x38,0x36, + 0x38,0x36,0x38,0x36,0x38,0x37,0x40,0x49,0x7e,0x21,0x21,0x51,0x5e,0x61, + 0x22,0x2c,0x0a,0x22,0x6e,0x36,0x37,0x36,0x36,0x37,0x36,0x37,0x36,0x37, + 0x36,0x37,0x36,0x37,0x24,0x50,0x7e,0x51,0x51,0x51,0x5e,0x67,0x22,0x2c, + 0x0a,0x22,0x6d,0x36,0x36,0x37,0x36,0x36,0x37,0x36,0x36,0x36,0x37,0x36, + 0x38,0x37,0x24,0x50,0x7e,0x51,0x51,0x51,0x7e,0x6a,0x22,0x2c,0x0a,0x22, + 0x67,0x32,0x34,0x30,0x35,0x38,0x36,0x36,0x36,0x3d,0x2a,0x2a,0x2a,0x26, + 0x25,0x41,0x7e,0x51,0x51,0x51,0x5e,0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x6a, + 0x4e,0x68,0x67,0x4d,0x6d,0x6e,0x52,0x44,0x53,0x43,0x43,0x56,0x42,0x54, + 0x21,0x51,0x51,0x51,0x5e,0x6a,0x22,0x2c,0x0a,0x22,0x2f,0x2f,0x2f,0x2f, + 0x2f,0x2f,0x2f,0x6c,0x7e,0x5e,0x7e,0x5e,0x5e,0x7e,0x5e,0x21,0x51,0x51, + 0x51,0x51,0x7e,0x6a,0x22,0x2c,0x0a,0x22,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f, + 0x2f,0x4a,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51, + 0x7e,0x6b,0x22,0x2c,0x0a,0x22,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x6b, + 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x7e,0x6a, + 0x22,0x2c,0x0a,0x22,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x6b,0x51,0x51, + 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x7e,0x4e,0x22,0x2c, + 0x0a,0x22,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x4e,0x51,0x51,0x51,0x51, + 0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x51,0x7e,0x5a,0x22,0x2c,0x0a,0x22, + 0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x2f,0x6b,0x6b,0x47,0x6b,0x47,0x4b,0x5a, + 0x4c,0x55,0x4b,0x55,0x59,0x55,0x57,0x48,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_form_xpm_len = 1483; +static const unsigned char small_form_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x33,0x39,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x23, + 0x34,0x61,0x34,0x61,0x39,0x66,0x39,0x66,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x35,0x33,0x35,0x33,0x39,0x66,0x39, + 0x66,0x66,0x36,0x66,0x36,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20,0x23, + 0x34,0x66,0x34,0x66,0x61,0x34,0x61,0x34,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x63,0x20,0x23,0x35,0x36,0x35,0x36,0x61,0x37,0x61, + 0x37,0x66,0x65,0x66,0x65,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x63,0x20,0x23, + 0x35,0x37,0x35,0x37,0x61,0x64,0x61,0x64,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2b,0x20,0x63,0x20,0x23,0x35,0x65,0x35,0x65,0x61,0x66,0x61, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x40,0x20,0x63,0x20,0x23, + 0x35,0x65,0x35,0x65,0x62,0x32,0x62,0x32,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x63,0x20,0x23,0x36,0x31,0x36,0x31,0x61,0x65,0x61, + 0x65,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x24,0x20,0x63,0x20,0x23, + 0x36,0x30,0x36,0x30,0x61,0x66,0x61,0x66,0x66,0x38,0x66,0x38,0x22,0x2c, + 0x0a,0x22,0x25,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x63,0x35,0x63, + 0x35,0x63,0x31,0x63,0x31,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63,0x20,0x23, + 0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x22,0x2c, + 0x0a,0x22,0x2a,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x64,0x30,0x64, + 0x30,0x63,0x63,0x63,0x63,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x23, + 0x63,0x64,0x63,0x64,0x64,0x37,0x64,0x37,0x64,0x33,0x64,0x33,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x63,0x20,0x23,0x64,0x31,0x64,0x31,0x64,0x63,0x64, + 0x63,0x64,0x37,0x64,0x37,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x63,0x20,0x23, + 0x64,0x34,0x64,0x34,0x64,0x66,0x64,0x66,0x64,0x62,0x64,0x62,0x22,0x2c, + 0x0a,0x22,0x3a,0x20,0x63,0x20,0x23,0x64,0x37,0x64,0x37,0x65,0x34,0x65, + 0x34,0x64,0x66,0x64,0x66,0x22,0x2c,0x0a,0x22,0x3e,0x20,0x63,0x20,0x23, + 0x64,0x61,0x64,0x61,0x65,0x35,0x65,0x35,0x64,0x66,0x64,0x66,0x22,0x2c, + 0x0a,0x22,0x2c,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x65,0x32,0x65, + 0x32,0x65,0x38,0x65,0x38,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x63,0x20,0x23, + 0x64,0x32,0x64,0x32,0x65,0x37,0x65,0x37,0x65,0x66,0x65,0x66,0x22,0x2c, + 0x0a,0x22,0x31,0x20,0x63,0x20,0x23,0x64,0x34,0x64,0x34,0x65,0x38,0x65, + 0x38,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x32,0x20,0x63,0x20,0x23, + 0x64,0x64,0x64,0x64,0x65,0x37,0x65,0x37,0x65,0x32,0x65,0x32,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x63,0x20,0x23,0x64,0x66,0x64,0x66,0x65,0x63,0x65, + 0x63,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x34,0x20,0x63,0x20,0x23, + 0x64,0x37,0x64,0x37,0x65,0x63,0x65,0x63,0x66,0x34,0x66,0x34,0x22,0x2c, + 0x0a,0x22,0x35,0x20,0x63,0x20,0x23,0x64,0x61,0x64,0x61,0x65,0x66,0x65, + 0x66,0x66,0x36,0x66,0x36,0x22,0x2c,0x0a,0x22,0x36,0x20,0x63,0x20,0x23, + 0x64,0x63,0x64,0x63,0x66,0x30,0x66,0x30,0x66,0x37,0x66,0x37,0x22,0x2c, + 0x0a,0x22,0x37,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x66,0x30,0x66, + 0x30,0x66,0x61,0x66,0x61,0x22,0x2c,0x0a,0x22,0x38,0x20,0x63,0x20,0x23, + 0x65,0x32,0x65,0x32,0x65,0x65,0x65,0x65,0x65,0x37,0x65,0x37,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x63,0x20,0x23,0x65,0x34,0x65,0x34,0x65,0x66,0x65, + 0x66,0x65,0x61,0x65,0x61,0x22,0x2c,0x0a,0x22,0x30,0x20,0x63,0x20,0x23, + 0x65,0x37,0x65,0x37,0x66,0x33,0x66,0x33,0x65,0x65,0x65,0x65,0x22,0x2c, + 0x0a,0x22,0x71,0x20,0x63,0x20,0x23,0x65,0x38,0x65,0x38,0x66,0x30,0x66, + 0x30,0x65,0x36,0x65,0x36,0x22,0x2c,0x0a,0x22,0x77,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x66,0x37,0x66,0x37,0x65,0x63,0x65,0x63,0x22,0x2c, + 0x0a,0x22,0x65,0x20,0x63,0x20,0x23,0x65,0x30,0x65,0x30,0x66,0x31,0x66, + 0x31,0x66,0x64,0x66,0x64,0x22,0x2c,0x0a,0x22,0x72,0x20,0x63,0x20,0x23, + 0x65,0x63,0x65,0x63,0x66,0x37,0x66,0x37,0x66,0x32,0x66,0x32,0x22,0x2c, + 0x0a,0x22,0x74,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x66,0x63,0x66, + 0x63,0x66,0x36,0x66,0x36,0x22,0x2c,0x0a,0x22,0x79,0x20,0x63,0x20,0x23, + 0x66,0x31,0x66,0x31,0x66,0x61,0x66,0x61,0x65,0x66,0x65,0x66,0x22,0x2c, + 0x0a,0x22,0x75,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x66,0x66,0x66, + 0x66,0x66,0x36,0x66,0x36,0x22,0x2c,0x0a,0x22,0x69,0x20,0x63,0x20,0x23, + 0x66,0x39,0x66,0x39,0x66,0x66,0x66,0x66,0x66,0x37,0x66,0x37,0x22,0x2c, + 0x0a,0x22,0x70,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x30,0x30,0x22, + 0x2c,0x0a,0x22,0x61,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a, + 0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22, + 0x23,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x2b,0x23,0x2b, + 0x2e,0x2b,0x2e,0x2b,0x2e,0x2b,0x2e,0x23,0x22,0x2c,0x0a,0x22,0x23,0x2b, + 0x2b,0x2b,0x4f,0x2b,0x6f,0x4f,0x6f,0x6f,0x6f,0x58,0x58,0x6f,0x58,0x6f, + 0x58,0x20,0x20,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x23,0x40,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x6f,0x2b,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x2e,0x22,0x2c,0x0a,0x22,0x3c,0x65,0x37,0x37,0x37,0x37, + 0x35,0x37,0x34,0x34,0x34,0x35,0x34,0x34,0x34,0x31,0x34,0x3c,0x3c,0x34, + 0x2c,0x3b,0x22,0x2c,0x0a,0x22,0x79,0x70,0x69,0x75,0x75,0x75,0x75,0x75, + 0x75,0x75,0x75,0x79,0x79,0x79,0x79,0x77,0x77,0x77,0x77,0x71,0x77,0x38, + 0x22,0x2c,0x0a,0x22,0x77,0x74,0x75,0x74,0x74,0x74,0x74,0x72,0x72,0x72, + 0x36,0x77,0x72,0x30,0x30,0x30,0x30,0x30,0x39,0x39,0x39,0x3e,0x22,0x2c, + 0x0a,0x22,0x39,0x74,0x74,0x74,0x72,0x74,0x72,0x72,0x72,0x72,0x77,0x30, + 0x77,0x30,0x30,0x30,0x39,0x30,0x39,0x39,0x39,0x3a,0x22,0x2c,0x0a,0x22, + 0x32,0x75,0x74,0x72,0x74,0x72,0x72,0x72,0x77,0x36,0x77,0x30,0x30,0x30, + 0x39,0x30,0x39,0x38,0x39,0x39,0x39,0x3b,0x22,0x2c,0x0a,0x22,0x32,0x74, + 0x72,0x72,0x72,0x72,0x36,0x77,0x36,0x77,0x30,0x30,0x30,0x39,0x30,0x38, + 0x39,0x39,0x33,0x33,0x38,0x2d,0x22,0x2c,0x0a,0x22,0x3e,0x74,0x72,0x72, + 0x72,0x77,0x77,0x30,0x77,0x30,0x30,0x30,0x39,0x30,0x38,0x39,0x39,0x33, + 0x38,0x33,0x38,0x2d,0x22,0x2c,0x0a,0x22,0x3b,0x74,0x77,0x36,0x77,0x36, + 0x30,0x30,0x39,0x30,0x39,0x30,0x39,0x39,0x38,0x39,0x33,0x38,0x33,0x33, + 0x33,0x3b,0x22,0x2c,0x0a,0x22,0x3e,0x77,0x36,0x77,0x30,0x77,0x30,0x30, + 0x30,0x39,0x39,0x39,0x39,0x38,0x39,0x38,0x33,0x33,0x32,0x32,0x33,0x2d, + 0x22,0x2c,0x0a,0x22,0x32,0x72,0x77,0x30,0x30,0x39,0x30,0x39,0x39,0x39, + 0x39,0x38,0x33,0x33,0x33,0x33,0x32,0x32,0x33,0x32,0x33,0x3d,0x22,0x2c, + 0x0a,0x22,0x3e,0x30,0x30,0x39,0x30,0x39,0x30,0x38,0x39,0x39,0x31,0x38, + 0x38,0x33,0x33,0x32,0x33,0x32,0x33,0x3e,0x32,0x3d,0x22,0x2c,0x0a,0x22, + 0x3b,0x30,0x39,0x30,0x39,0x39,0x38,0x39,0x38,0x38,0x38,0x33,0x32,0x33, + 0x32,0x32,0x33,0x32,0x32,0x3e,0x33,0x2a,0x22,0x2c,0x0a,0x22,0x2d,0x30, + 0x30,0x39,0x38,0x31,0x39,0x38,0x33,0x38,0x33,0x33,0x32,0x33,0x32,0x33, + 0x32,0x3e,0x3e,0x3e,0x32,0x2a,0x22,0x2c,0x0a,0x22,0x2d,0x30,0x38,0x33, + 0x38,0x38,0x38,0x33,0x33,0x33,0x33,0x32,0x32,0x32,0x32,0x3a,0x3e,0x3a, + 0x32,0x3a,0x3a,0x3d,0x22,0x2c,0x0a,0x22,0x2a,0x30,0x38,0x38,0x38,0x33, + 0x33,0x33,0x32,0x33,0x32,0x33,0x32,0x32,0x32,0x3a,0x3e,0x3a,0x3a,0x3a, + 0x3a,0x3d,0x22,0x2c,0x0a,0x22,0x2a,0x39,0x38,0x33,0x33,0x33,0x32,0x33, + 0x33,0x32,0x32,0x3e,0x32,0x32,0x3a,0x3e,0x3e,0x3e,0x3a,0x3a,0x3a,0x2a, + 0x22,0x2c,0x0a,0x22,0x3b,0x39,0x32,0x33,0x32,0x33,0x32,0x33,0x3e,0x3e, + 0x3a,0x32,0x3a,0x3a,0x3a,0x3a,0x3a,0x3b,0x3a,0x3b,0x3a,0x2a,0x22,0x2c, + 0x0a,0x22,0x2d,0x33,0x32,0x33,0x32,0x32,0x32,0x3e,0x32,0x32,0x32,0x3a, + 0x3e,0x3a,0x3a,0x3a,0x3b,0x3a,0x3b,0x2d,0x3e,0x61,0x22,0x2c,0x0a,0x22, + 0x2a,0x32,0x3e,0x3a,0x3e,0x3a,0x3a,0x3a,0x3b,0x3a,0x3b,0x3b,0x3b,0x3b, + 0x2d,0x3b,0x2d,0x2d,0x2d,0x2d,0x3b,0x25,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_home_xpm_len = 3981; +static const unsigned char small_home_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x33,0x32,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x63, + 0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x20,0x63, + 0x20,0x23,0x30,0x38,0x30,0x38,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x22,0x2c,0x0a,0x22,0x58,0x20,0x20,0x63,0x20,0x23,0x30,0x38,0x30,0x38, + 0x30,0x38,0x30,0x38,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x6f,0x20, + 0x20,0x63,0x20,0x23,0x30,0x38,0x30,0x38,0x31,0x30,0x31,0x30,0x30,0x38, + 0x30,0x38,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x20,0x63,0x20,0x23,0x31,0x30, + 0x31,0x30,0x31,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22, + 0x2b,0x20,0x20,0x63,0x20,0x23,0x32,0x39,0x32,0x39,0x32,0x31,0x32,0x31, + 0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x40,0x20,0x20,0x63,0x20,0x23, + 0x33,0x31,0x33,0x31,0x32,0x39,0x32,0x39,0x30,0x30,0x30,0x30,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39,0x32,0x39, + 0x32,0x39,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x24,0x20,0x20,0x63, + 0x20,0x23,0x33,0x39,0x33,0x39,0x33,0x31,0x33,0x31,0x30,0x30,0x30,0x30, + 0x22,0x2c,0x0a,0x22,0x25,0x20,0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39, + 0x33,0x39,0x33,0x39,0x30,0x38,0x30,0x38,0x22,0x2c,0x0a,0x22,0x26,0x20, + 0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39,0x33,0x39,0x33,0x39,0x31,0x30, + 0x31,0x30,0x22,0x2c,0x0a,0x22,0x2a,0x20,0x20,0x63,0x20,0x23,0x33,0x39, + 0x33,0x39,0x33,0x31,0x33,0x31,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22, + 0x3d,0x20,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x33,0x39,0x33,0x39, + 0x33,0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x20,0x63,0x20,0x23, + 0x34,0x61,0x34,0x61,0x34,0x32,0x34,0x32,0x30,0x38,0x30,0x38,0x22,0x2c, + 0x0a,0x22,0x3b,0x20,0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32,0x35,0x32, + 0x35,0x32,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x3a,0x20,0x20,0x63, + 0x20,0x23,0x34,0x32,0x34,0x32,0x34,0x32,0x34,0x32,0x33,0x31,0x33,0x31, + 0x22,0x2c,0x0a,0x22,0x3e,0x20,0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32, + 0x34,0x32,0x34,0x32,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x2c,0x20, + 0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32,0x34,0x61,0x34,0x61,0x33,0x31, + 0x33,0x31,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x20,0x63,0x20,0x23,0x35,0x32, + 0x35,0x32,0x35,0x61,0x35,0x61,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22, + 0x31,0x20,0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x35,0x32,0x35,0x32, + 0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x32,0x20,0x20,0x63,0x20,0x23, + 0x36,0x33,0x36,0x33,0x35,0x61,0x35,0x61,0x30,0x38,0x30,0x38,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x35,0x61, + 0x35,0x61,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x34,0x20,0x20,0x63, + 0x20,0x23,0x36,0x62,0x36,0x62,0x35,0x61,0x35,0x61,0x31,0x30,0x31,0x30, + 0x22,0x2c,0x0a,0x22,0x35,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33, + 0x37,0x33,0x37,0x33,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x36,0x20, + 0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x36,0x62,0x36,0x62,0x32,0x31, + 0x32,0x31,0x22,0x2c,0x0a,0x22,0x37,0x20,0x20,0x63,0x20,0x23,0x36,0x62, + 0x36,0x62,0x37,0x33,0x37,0x33,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22, + 0x38,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x37,0x33,0x37,0x33, + 0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x39,0x20,0x20,0x63,0x20,0x23, + 0x37,0x33,0x37,0x33,0x37,0x62,0x37,0x62,0x32,0x39,0x32,0x39,0x22,0x2c, + 0x0a,0x22,0x30,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x37,0x62, + 0x37,0x62,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x71,0x20,0x20,0x63, + 0x20,0x23,0x37,0x62,0x37,0x62,0x37,0x62,0x37,0x62,0x32,0x39,0x32,0x39, + 0x22,0x2c,0x0a,0x22,0x77,0x20,0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32, + 0x34,0x61,0x34,0x61,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x65,0x20, + 0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x34,0x32,0x34,0x32,0x34,0x32, + 0x34,0x32,0x22,0x2c,0x0a,0x22,0x72,0x20,0x20,0x63,0x20,0x47,0x72,0x61, + 0x79,0x32,0x39,0x22,0x2c,0x0a,0x22,0x74,0x20,0x20,0x63,0x20,0x23,0x34, + 0x61,0x34,0x61,0x35,0x32,0x35,0x32,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a, + 0x22,0x79,0x20,0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32,0x34,0x61,0x34, + 0x61,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x75,0x20,0x20,0x63,0x20, + 0x23,0x35,0x61,0x35,0x61,0x35,0x32,0x35,0x32,0x34,0x61,0x34,0x61,0x22, + 0x2c,0x0a,0x22,0x69,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x33,0x32, + 0x22,0x2c,0x0a,0x22,0x70,0x20,0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61, + 0x35,0x61,0x35,0x61,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x61,0x20, + 0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32,0x36,0x33,0x36,0x33,0x35,0x61, + 0x35,0x61,0x22,0x2c,0x0a,0x22,0x73,0x20,0x20,0x63,0x20,0x23,0x36,0x33, + 0x36,0x33,0x36,0x33,0x36,0x33,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22, + 0x64,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x33,0x39,0x22,0x2c,0x0a, + 0x22,0x66,0x20,0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x36,0x62,0x36, + 0x62,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x67,0x20,0x20,0x63,0x20, + 0x23,0x36,0x62,0x36,0x62,0x36,0x62,0x36,0x62,0x36,0x33,0x36,0x33,0x22, + 0x2c,0x0a,0x22,0x68,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x34,0x32, + 0x22,0x2c,0x0a,0x22,0x6a,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33, + 0x36,0x62,0x36,0x62,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x6b,0x20, + 0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x36,0x62,0x36,0x62,0x36,0x62, + 0x36,0x62,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x20,0x63,0x20,0x23,0x37,0x62, + 0x37,0x62,0x37,0x33,0x37,0x33,0x36,0x62,0x36,0x62,0x22,0x2c,0x0a,0x22, + 0x7a,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x34,0x35,0x22,0x2c,0x0a, + 0x22,0x78,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x37,0x33,0x37, + 0x33,0x37,0x33,0x37,0x33,0x22,0x2c,0x0a,0x22,0x63,0x20,0x20,0x63,0x20, + 0x23,0x37,0x62,0x37,0x62,0x37,0x62,0x37,0x62,0x37,0x33,0x37,0x33,0x22, + 0x2c,0x0a,0x22,0x76,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x37, + 0x62,0x37,0x62,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x62,0x20,0x20, + 0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x38,0x34,0x38,0x34,0x37,0x62,0x37, + 0x62,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x20,0x63,0x20,0x23,0x38,0x63,0x38, + 0x63,0x37,0x62,0x37,0x62,0x30,0x38,0x30,0x38,0x22,0x2c,0x0a,0x22,0x6d, + 0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x37,0x62,0x37,0x62,0x31, + 0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x20,0x63,0x20,0x23,0x38, + 0x63,0x38,0x63,0x37,0x62,0x37,0x62,0x31,0x30,0x31,0x30,0x22,0x2c,0x0a, + 0x22,0x4e,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x37,0x62,0x37, + 0x62,0x37,0x33,0x37,0x33,0x22,0x2c,0x0a,0x22,0x42,0x20,0x20,0x63,0x20, + 0x23,0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x31,0x38,0x31,0x38,0x22, + 0x2c,0x0a,0x22,0x56,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x38, + 0x34,0x38,0x34,0x30,0x38,0x30,0x38,0x22,0x2c,0x0a,0x22,0x43,0x20,0x20, + 0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x38,0x34,0x38,0x34,0x32,0x39,0x32, + 0x39,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38, + 0x34,0x38,0x34,0x38,0x34,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x41, + 0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x38,0x34,0x38,0x34,0x32, + 0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x53,0x20,0x20,0x63,0x20,0x23,0x61, + 0x35,0x61,0x35,0x39,0x34,0x39,0x34,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a, + 0x22,0x44,0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x39,0x63,0x39, + 0x63,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x46,0x20,0x20,0x63,0x20, + 0x23,0x62,0x35,0x62,0x35,0x61,0x35,0x61,0x35,0x30,0x38,0x30,0x38,0x22, + 0x2c,0x0a,0x22,0x47,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x61, + 0x35,0x61,0x35,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x48,0x20,0x20, + 0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x61,0x35,0x61,0x35,0x32,0x31,0x32, + 0x31,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62, + 0x64,0x61,0x64,0x61,0x64,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x4b, + 0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x61,0x64,0x61,0x64,0x33, + 0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x4c,0x20,0x20,0x63,0x20,0x23,0x38, + 0x63,0x38,0x63,0x39,0x34,0x39,0x34,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a, + 0x22,0x50,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x39,0x34,0x39, + 0x34,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x49,0x20,0x20,0x63,0x20, + 0x23,0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34,0x35,0x32,0x35,0x32,0x22, + 0x2c,0x0a,0x22,0x55,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x39, + 0x63,0x39,0x63,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x59,0x20,0x20, + 0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x38,0x63,0x38,0x63,0x36,0x62,0x36, + 0x62,0x22,0x2c,0x0a,0x22,0x54,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38, + 0x34,0x38,0x34,0x38,0x34,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x52, + 0x20,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x37, + 0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x45,0x20,0x20,0x63,0x20,0x23,0x39, + 0x63,0x39,0x63,0x39,0x63,0x39,0x63,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a, + 0x22,0x57,0x20,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x63,0x39, + 0x63,0x36,0x62,0x36,0x62,0x22,0x2c,0x0a,0x22,0x51,0x20,0x20,0x63,0x20, + 0x23,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x37,0x33,0x37,0x33,0x22, + 0x2c,0x0a,0x22,0x21,0x20,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x62, + 0x64,0x62,0x64,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x7e,0x20,0x20, + 0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x62,0x35,0x62,0x35,0x33,0x31,0x33, + 0x31,0x22,0x2c,0x0a,0x22,0x5e,0x20,0x20,0x63,0x20,0x23,0x63,0x36,0x63, + 0x36,0x62,0x35,0x62,0x35,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x2f, + 0x20,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x63,0x36,0x63,0x36,0x33, + 0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x28,0x20,0x20,0x63,0x20,0x23,0x64, + 0x36,0x64,0x36,0x63,0x36,0x63,0x36,0x33,0x31,0x33,0x31,0x22,0x2c,0x0a, + 0x22,0x29,0x20,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x64,0x36,0x64, + 0x36,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x5f,0x20,0x20,0x63,0x20, + 0x23,0x66,0x37,0x66,0x37,0x64,0x65,0x64,0x65,0x31,0x38,0x31,0x38,0x22, + 0x2c,0x0a,0x22,0x60,0x20,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x64, + 0x36,0x64,0x36,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x27,0x20,0x20, + 0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x64,0x65,0x64,0x65,0x33,0x31,0x33, + 0x31,0x22,0x2c,0x0a,0x22,0x5d,0x20,0x20,0x63,0x20,0x23,0x65,0x66,0x65, + 0x66,0x64,0x65,0x64,0x65,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x5b, + 0x20,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x65,0x37,0x65,0x37,0x31, + 0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x7b,0x20,0x20,0x63,0x20,0x23,0x66, + 0x66,0x66,0x66,0x65,0x37,0x65,0x37,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a, + 0x22,0x7d,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x38,0x34,0x38, + 0x34,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x7c,0x20,0x20,0x63,0x20, + 0x23,0x38,0x34,0x38,0x34,0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x22, + 0x2c,0x0a,0x22,0x20,0x2e,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x38, + 0x34,0x38,0x34,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x20, + 0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x38,0x63,0x38,0x63,0x38,0x34,0x38, + 0x34,0x22,0x2c,0x0a,0x22,0x58,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79, + 0x35,0x35,0x22,0x2c,0x0a,0x22,0x6f,0x2e,0x20,0x63,0x20,0x23,0x39,0x34, + 0x39,0x34,0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22, + 0x4f,0x2e,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34, + 0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x2b,0x2e,0x20,0x63,0x20,0x23, + 0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34,0x38,0x63,0x38,0x63,0x22,0x2c, + 0x0a,0x22,0x40,0x2e,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x34, + 0x39,0x34,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x23,0x2e,0x20,0x63, + 0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x63,0x39,0x63,0x38,0x63,0x38,0x63, + 0x22,0x2c,0x0a,0x22,0x24,0x2e,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63, + 0x39,0x63,0x39,0x63,0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x25,0x2e, + 0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x36,0x31,0x22,0x2c,0x0a,0x22,0x26, + 0x2e,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x61,0x35,0x61,0x35,0x39, + 0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x2a,0x2e,0x20,0x63,0x20,0x23,0x39, + 0x63,0x39,0x63,0x61,0x64,0x61,0x64,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a, + 0x22,0x3d,0x2e,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x39,0x34,0x39, + 0x34,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x2d,0x2e,0x20,0x63,0x20, + 0x23,0x61,0x35,0x61,0x35,0x39,0x63,0x39,0x63,0x39,0x34,0x39,0x34,0x22, + 0x2c,0x0a,0x22,0x3b,0x2e,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x39, + 0x63,0x39,0x63,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x3a,0x2e,0x20, + 0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x39,0x63,0x39, + 0x63,0x22,0x2c,0x0a,0x22,0x3e,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61, + 0x64,0x61,0x35,0x61,0x35,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x2c, + 0x2e,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x61,0x35,0x61,0x35,0x39, + 0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x3c,0x2e,0x20,0x63,0x20,0x23,0x61, + 0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a, + 0x22,0x31,0x2e,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x61,0x64,0x61, + 0x64,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x20,0x63,0x20, + 0x23,0x61,0x35,0x61,0x35,0x61,0x64,0x61,0x64,0x61,0x64,0x61,0x64,0x22, + 0x2c,0x0a,0x22,0x33,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x61, + 0x64,0x61,0x64,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x34,0x2e,0x20, + 0x63,0x20,0x47,0x72,0x61,0x79,0x36,0x38,0x22,0x2c,0x0a,0x22,0x35,0x2e, + 0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x62,0x35,0x62,0x35,0x61,0x64, + 0x61,0x64,0x22,0x2c,0x0a,0x22,0x36,0x2e,0x20,0x63,0x20,0x23,0x61,0x35, + 0x61,0x35,0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22, + 0x37,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x62,0x35,0x62,0x35, + 0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x38,0x2e,0x20,0x63,0x20,0x23, + 0x62,0x35,0x62,0x35,0x61,0x64,0x61,0x64,0x61,0x35,0x61,0x35,0x22,0x2c, + 0x0a,0x22,0x39,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x31,0x22, + 0x2c,0x0a,0x22,0x30,0x2e,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x62, + 0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x71,0x2e,0x20, + 0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x62,0x35,0x62, + 0x35,0x22,0x2c,0x0a,0x22,0x77,0x2e,0x20,0x63,0x20,0x23,0x62,0x64,0x62, + 0x64,0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x65, + 0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x34,0x22,0x2c,0x0a,0x22, + 0x72,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x63,0x36,0x63,0x36, + 0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x74,0x2e,0x20,0x63,0x20,0x23, + 0x62,0x64,0x62,0x64,0x63,0x36,0x63,0x36,0x62,0x64,0x62,0x64,0x22,0x2c, + 0x0a,0x22,0x79,0x2e,0x20,0x63,0x20,0x23,0x63,0x30,0x63,0x30,0x63,0x30, + 0x63,0x30,0x63,0x30,0x63,0x30,0x22,0x2c,0x0a,0x22,0x75,0x2e,0x20,0x63, + 0x20,0x23,0x63,0x36,0x63,0x36,0x64,0x36,0x64,0x36,0x63,0x65,0x63,0x65, + 0x22,0x2c,0x0a,0x22,0x69,0x2e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36, + 0x64,0x65,0x64,0x65,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x70,0x2e, + 0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x64,0x65,0x64,0x65,0x64,0x36, + 0x64,0x36,0x22,0x2c,0x0a,0x22,0x61,0x2e,0x20,0x63,0x20,0x23,0x64,0x36, + 0x64,0x36,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22, + 0x73,0x2e,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a, + 0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x33,0x2e,0x25,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x39,0x2e,0x65,0x2e,0x7c,0x20, + 0x34,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x65,0x2e, + 0x3a,0x2e,0x70,0x2e,0x26,0x2e,0x67,0x20,0x65,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c, + 0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x3c,0x2e,0x32,0x2e,0x35,0x2e,0x52,0x20,0x74,0x20, + 0x7d,0x20,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x39,0x2e,0x26,0x2e,0x36,0x2e, + 0x26,0x2e,0x20,0x2e,0x64,0x20,0x74,0x20,0x25,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x65,0x2e, + 0x3b,0x2e,0x3e,0x2e,0x31,0x2e,0x69,0x2e,0x26,0x2e,0x6c,0x20,0x70,0x20, + 0x79,0x20,0x39,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x25,0x2e,0x2d,0x2e,0x2d,0x2e,0x33,0x2e,0x61,0x2e, + 0x3e,0x2e,0x4e,0x20,0x73,0x20,0x65,0x20,0x64,0x20,0x65,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x34,0x2e,0x7c,0x20,0x36,0x2e, + 0x74,0x2e,0x32,0x2e,0x3a,0x2e,0x3a,0x2e,0x4e,0x20,0x69,0x20,0x61,0x20, + 0x77,0x20,0x58,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x65,0x2e, + 0x2b,0x2e,0x2a,0x2e,0x72,0x2e,0x35,0x2e,0x31,0x2e,0x25,0x2e,0x2e,0x2e, + 0x62,0x20,0x73,0x20,0x66,0x20,0x61,0x20,0x3d,0x20,0x3c,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x65,0x2e,0x24,0x2e,0x3d,0x2e,0x3e,0x2e,0x40,0x2e,0x3b,0x2e, + 0x30,0x2e,0x75,0x2e,0x2d,0x2e,0x3a,0x2e,0x6b,0x20,0x6a,0x20,0x75,0x20, + 0x2a,0x20,0x72,0x20,0x39,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c, + 0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x34,0x2e,0x6f,0x2e,0x31,0x2e, + 0x38,0x2e,0x3e,0x2e,0x33,0x2e,0x75,0x2e,0x61,0x2e,0x2c,0x2e,0x38,0x2e, + 0x78,0x20,0x67,0x20,0x67,0x20,0x79,0x20,0x3d,0x20,0x7d,0x20,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x65,0x2e,0x37,0x2e,0x31,0x2e,0x76,0x20,0x6b,0x20,0x7a,0x20,0x62,0x20, + 0x54,0x20,0x52,0x20,0x63,0x20,0x73,0x20,0x3a,0x20,0x2a,0x20,0x7a,0x20, + 0x34,0x2e,0x65,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x39,0x2e,0x34,0x20, + 0x31,0x20,0x2d,0x20,0x24,0x20,0x2b,0x20,0x4f,0x20,0x4f,0x20,0x2e,0x20, + 0x4f,0x20,0x58,0x20,0x63,0x20,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x77,0x2e,0x21,0x20,0x5b,0x20,0x5d,0x20,0x60,0x20,0x2f,0x20, + 0x44,0x20,0x4d,0x20,0x32,0x20,0x40,0x20,0x4f,0x20,0x63,0x20,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x65,0x2e,0x7e,0x20,0x29,0x20, + 0x27,0x20,0x5d,0x20,0x5d,0x20,0x28,0x20,0x48,0x20,0x56,0x20,0x33,0x20, + 0x40,0x20,0x63,0x20,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x65,0x2e,0x7e,0x20,0x29,0x20,0x27,0x20,0x4b,0x20,0x41,0x20,0x53,0x20, + 0x47,0x20,0x4d,0x20,0x31,0x20,0x40,0x20,0x76,0x20,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x65,0x2e,0x5e,0x20,0x5f,0x20,0x44,0x20, + 0x4f,0x20,0x20,0x20,0x4f,0x20,0x34,0x20,0x6e,0x20,0x32,0x20,0x24,0x20, + 0x54,0x20,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c, + 0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x71,0x2e, + 0x4a,0x20,0x5f,0x20,0x6d,0x20,0x20,0x20,0x4f,0x20,0x58,0x20,0x40,0x20, + 0x4d,0x20,0x33,0x20,0x23,0x20,0x3e,0x20,0x68,0x20,0x76,0x20,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x65,0x2e,0x59,0x20,0x46,0x20,0x7b,0x20,0x42,0x20,0x20,0x20, + 0x58,0x20,0x20,0x20,0x25,0x20,0x4d,0x20,0x33,0x20,0x40,0x20,0x2e,0x20, + 0x4f,0x20,0x2c,0x20,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22, + 0x73,0x2e,0x73,0x2e,0x73,0x2e,0x74,0x2e,0x4f,0x2e,0x36,0x20,0x42,0x20, + 0x29,0x20,0x42,0x20,0x6f,0x20,0x26,0x20,0x3c,0x20,0x30,0x20,0x6e,0x20, + 0x32,0x20,0x2d,0x20,0x3b,0x20,0x39,0x20,0x59,0x20,0x73,0x2e,0x73,0x2e, + 0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x23,0x2e, + 0x37,0x20,0x39,0x20,0x71,0x20,0x43,0x20,0x43,0x20,0x38,0x20,0x39,0x20, + 0x39,0x20,0x39,0x20,0x35,0x20,0x38,0x20,0x71,0x20,0x43,0x20,0x71,0x20, + 0x4f,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e, + 0x73,0x2e,0x73,0x2e,0x51,0x20,0x57,0x20,0x57,0x20,0x57,0x20,0x45,0x20, + 0x45,0x20,0x55,0x20,0x55,0x20,0x4c,0x20,0x49,0x20,0x4c,0x20,0x50,0x20, + 0x50,0x20,0x50,0x20,0x5a,0x20,0x3a,0x2e,0x73,0x2e,0x73,0x2e,0x73,0x2e, + 0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_image_xpm_len = 5406; +static const unsigned char small_image_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x39,0x38,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x63, + 0x20,0x47,0x72,0x61,0x79,0x33,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x20,0x63, + 0x20,0x23,0x30,0x38,0x30,0x38,0x30,0x38,0x30,0x38,0x31,0x30,0x31,0x30, + 0x22,0x2c,0x0a,0x22,0x58,0x20,0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30, + 0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x22,0x2c,0x0a,0x22,0x6f,0x20, + 0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30,0x31,0x38,0x31,0x38,0x31,0x38, + 0x31,0x38,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x20,0x63,0x20,0x23,0x31,0x38, + 0x31,0x38,0x31,0x38,0x31,0x38,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22, + 0x2b,0x20,0x20,0x63,0x20,0x23,0x31,0x38,0x31,0x38,0x31,0x38,0x31,0x38, + 0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x40,0x20,0x20,0x63,0x20,0x23, + 0x31,0x38,0x31,0x38,0x32,0x31,0x32,0x31,0x32,0x31,0x32,0x31,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x20,0x63,0x20,0x23,0x31,0x38,0x31,0x38,0x32,0x31, + 0x32,0x31,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x24,0x20,0x20,0x63, + 0x20,0x23,0x32,0x39,0x32,0x39,0x32,0x31,0x32,0x31,0x31,0x30,0x31,0x30, + 0x22,0x2c,0x0a,0x22,0x25,0x20,0x20,0x63,0x20,0x23,0x32,0x39,0x32,0x39, + 0x32,0x31,0x32,0x31,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x26,0x20, + 0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x33,0x22,0x2c,0x0a,0x22,0x2a, + 0x20,0x20,0x63,0x20,0x23,0x32,0x31,0x32,0x31,0x32,0x31,0x32,0x31,0x32, + 0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x31,0x36,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x20,0x63,0x20,0x23, + 0x33,0x31,0x33,0x31,0x33,0x31,0x33,0x31,0x33,0x31,0x33,0x31,0x22,0x2c, + 0x0a,0x22,0x3b,0x20,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x33,0x39, + 0x33,0x39,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x3a,0x20,0x20,0x63, + 0x20,0x23,0x33,0x39,0x33,0x39,0x34,0x32,0x34,0x32,0x34,0x32,0x34,0x32, + 0x22,0x2c,0x0a,0x22,0x3e,0x20,0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32, + 0x33,0x31,0x33,0x31,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x2c,0x20, + 0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32,0x34,0x32,0x34,0x32,0x33,0x31, + 0x33,0x31,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x20,0x63,0x20,0x23,0x34,0x32, + 0x34,0x32,0x34,0x32,0x34,0x32,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22, + 0x31,0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x34,0x32,0x34,0x32, + 0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x32,0x20,0x20,0x63,0x20,0x23, + 0x34,0x61,0x34,0x61,0x34,0x61,0x34,0x61,0x33,0x31,0x33,0x31,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x34,0x61, + 0x34,0x61,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x34,0x20,0x20,0x63, + 0x20,0x23,0x36,0x33,0x36,0x33,0x35,0x61,0x35,0x61,0x33,0x39,0x33,0x39, + 0x22,0x2c,0x0a,0x22,0x35,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62, + 0x35,0x61,0x35,0x61,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x36,0x20, + 0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x34,0x61,0x34,0x61,0x34,0x32, + 0x34,0x32,0x22,0x2c,0x0a,0x22,0x37,0x20,0x20,0x63,0x20,0x47,0x72,0x61, + 0x79,0x32,0x39,0x22,0x2c,0x0a,0x22,0x38,0x20,0x20,0x63,0x20,0x23,0x35, + 0x32,0x35,0x32,0x34,0x61,0x34,0x61,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a, + 0x22,0x39,0x20,0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x34,0x61,0x34, + 0x61,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x30,0x20,0x20,0x63,0x20, + 0x23,0x35,0x61,0x35,0x61,0x35,0x32,0x35,0x32,0x34,0x61,0x34,0x61,0x22, + 0x2c,0x0a,0x22,0x71,0x20,0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x35, + 0x61,0x35,0x61,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x77,0x20,0x20, + 0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x34,0x61,0x34, + 0x61,0x22,0x2c,0x0a,0x22,0x65,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79, + 0x33,0x32,0x22,0x2c,0x0a,0x22,0x72,0x20,0x20,0x63,0x20,0x23,0x35,0x61, + 0x35,0x61,0x35,0x32,0x35,0x32,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22, + 0x74,0x20,0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61, + 0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x79,0x20,0x20,0x63,0x20,0x23, + 0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x22,0x2c, + 0x0a,0x22,0x75,0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x35,0x32, + 0x35,0x32,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x69,0x20,0x20,0x63, + 0x20,0x23,0x36,0x33,0x36,0x33,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61, + 0x22,0x2c,0x0a,0x22,0x70,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62, + 0x36,0x62,0x36,0x62,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x61,0x20, + 0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x36,0x33,0x36,0x33,0x35,0x61, + 0x35,0x61,0x22,0x2c,0x0a,0x22,0x73,0x20,0x20,0x63,0x20,0x23,0x37,0x62, + 0x37,0x62,0x37,0x33,0x37,0x33,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22, + 0x64,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x33,0x39,0x22,0x2c,0x0a, + 0x22,0x66,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x36,0x33,0x36, + 0x33,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x67,0x20,0x20,0x63,0x20, + 0x23,0x36,0x62,0x36,0x62,0x36,0x62,0x36,0x62,0x36,0x33,0x36,0x33,0x22, + 0x2c,0x0a,0x22,0x68,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x34,0x32, + 0x22,0x2c,0x0a,0x22,0x6a,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62, + 0x37,0x33,0x37,0x33,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x6b,0x20, + 0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x36,0x62,0x36,0x62,0x36,0x33, + 0x36,0x33,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x20,0x63,0x20,0x23,0x37,0x33, + 0x37,0x33,0x36,0x62,0x36,0x62,0x36,0x62,0x36,0x62,0x22,0x2c,0x0a,0x22, + 0x7a,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x37,0x33,0x37,0x33, + 0x36,0x62,0x36,0x62,0x22,0x2c,0x0a,0x22,0x78,0x20,0x20,0x63,0x20,0x23, + 0x37,0x62,0x37,0x62,0x37,0x33,0x37,0x33,0x37,0x33,0x37,0x33,0x22,0x2c, + 0x0a,0x22,0x63,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x37,0x62, + 0x37,0x62,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x76,0x20,0x20,0x63, + 0x20,0x23,0x36,0x62,0x36,0x62,0x37,0x33,0x37,0x33,0x38,0x34,0x38,0x34, + 0x22,0x2c,0x0a,0x22,0x62,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34, + 0x37,0x62,0x37,0x62,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x6e,0x20, + 0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x37,0x33,0x37,0x33,0x35,0x32, + 0x35,0x32,0x22,0x2c,0x0a,0x22,0x6d,0x20,0x20,0x63,0x20,0x23,0x62,0x35, + 0x62,0x35,0x37,0x62,0x37,0x62,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22, + 0x4d,0x20,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x38,0x34,0x38,0x34, + 0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x4e,0x20,0x20,0x63,0x20,0x23, + 0x39,0x63,0x39,0x63,0x38,0x34,0x38,0x34,0x35,0x61,0x35,0x61,0x22,0x2c, + 0x0a,0x22,0x42,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x38,0x34, + 0x38,0x34,0x36,0x62,0x36,0x62,0x22,0x2c,0x0a,0x22,0x56,0x20,0x20,0x63, + 0x20,0x23,0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x36,0x62,0x36,0x62, + 0x22,0x2c,0x0a,0x22,0x43,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34, + 0x38,0x34,0x38,0x34,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x5a,0x20, + 0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x38,0x63,0x38,0x63,0x37,0x62, + 0x37,0x62,0x22,0x2c,0x0a,0x22,0x41,0x20,0x20,0x63,0x20,0x23,0x39,0x63, + 0x39,0x63,0x38,0x63,0x38,0x63,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22, + 0x53,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34, + 0x37,0x33,0x37,0x33,0x22,0x2c,0x0a,0x22,0x44,0x20,0x20,0x63,0x20,0x23, + 0x39,0x63,0x39,0x63,0x61,0x35,0x61,0x35,0x37,0x62,0x37,0x62,0x22,0x2c, + 0x0a,0x22,0x46,0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x38,0x34, + 0x38,0x34,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x47,0x20,0x20,0x63, + 0x20,0x23,0x62,0x64,0x62,0x64,0x38,0x63,0x38,0x63,0x35,0x61,0x35,0x61, + 0x22,0x2c,0x0a,0x22,0x48,0x20,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35, + 0x38,0x63,0x38,0x63,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x4a,0x20, + 0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x38,0x63,0x38,0x63,0x36,0x33, + 0x36,0x33,0x22,0x2c,0x0a,0x22,0x4b,0x20,0x20,0x63,0x20,0x23,0x61,0x64, + 0x61,0x64,0x39,0x63,0x39,0x63,0x36,0x62,0x36,0x62,0x22,0x2c,0x0a,0x22, + 0x4c,0x20,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x39,0x63,0x39,0x63, + 0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x50,0x20,0x20,0x63,0x20,0x23, + 0x62,0x64,0x62,0x64,0x61,0x35,0x61,0x35,0x36,0x62,0x36,0x62,0x22,0x2c, + 0x0a,0x22,0x49,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x61,0x35, + 0x61,0x35,0x37,0x33,0x37,0x33,0x22,0x2c,0x0a,0x22,0x55,0x20,0x20,0x63, + 0x20,0x23,0x62,0x64,0x62,0x64,0x61,0x64,0x61,0x64,0x37,0x33,0x37,0x33, + 0x22,0x2c,0x0a,0x22,0x59,0x20,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65, + 0x61,0x35,0x61,0x35,0x36,0x62,0x36,0x62,0x22,0x2c,0x0a,0x22,0x54,0x20, + 0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x61,0x64,0x61,0x64,0x36,0x62, + 0x36,0x62,0x22,0x2c,0x0a,0x22,0x52,0x20,0x20,0x63,0x20,0x23,0x63,0x36, + 0x63,0x36,0x61,0x64,0x61,0x64,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22, + 0x45,0x20,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x61,0x64,0x61,0x64, + 0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x57,0x20,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x62,0x35,0x62,0x35,0x37,0x33,0x37,0x33,0x22,0x2c, + 0x0a,0x22,0x51,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x38,0x34, + 0x38,0x34,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x21,0x20,0x20,0x63, + 0x20,0x23,0x38,0x34,0x38,0x34,0x38,0x34,0x38,0x34,0x38,0x63,0x38,0x63, + 0x22,0x2c,0x0a,0x22,0x7e,0x20,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63, + 0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x5e,0x20, + 0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x38,0x63,0x38,0x63,0x39,0x34, + 0x39,0x34,0x22,0x2c,0x0a,0x22,0x2f,0x20,0x20,0x63,0x20,0x23,0x38,0x63, + 0x38,0x63,0x39,0x34,0x39,0x34,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22, + 0x28,0x20,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x39,0x34,0x39,0x34, + 0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x29,0x20,0x20,0x63,0x20,0x23, + 0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34,0x38,0x63,0x38,0x63,0x22,0x2c, + 0x0a,0x22,0x5f,0x20,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x63, + 0x39,0x63,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x60,0x20,0x20,0x63, + 0x20,0x23,0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x63,0x39,0x63, + 0x22,0x2c,0x0a,0x22,0x27,0x20,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63, + 0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x5d,0x20, + 0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x36,0x31,0x22,0x2c,0x0a,0x22,0x5b, + 0x20,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x61,0x35,0x61,0x35,0x61, + 0x64,0x61,0x64,0x22,0x2c,0x0a,0x22,0x7b,0x20,0x20,0x63,0x20,0x23,0x39, + 0x63,0x39,0x63,0x61,0x35,0x61,0x35,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a, + 0x22,0x7d,0x20,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x39,0x34,0x39, + 0x34,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x7c,0x20,0x20,0x63,0x20, + 0x23,0x61,0x35,0x61,0x35,0x39,0x63,0x39,0x63,0x38,0x63,0x38,0x63,0x22, + 0x2c,0x0a,0x22,0x20,0x2e,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x39, + 0x63,0x39,0x63,0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x20, + 0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x39,0x63,0x39,0x63,0x39,0x63,0x39, + 0x63,0x22,0x2c,0x0a,0x22,0x58,0x2e,0x20,0x63,0x20,0x23,0x61,0x35,0x61, + 0x35,0x61,0x35,0x61,0x35,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x6f, + 0x2e,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x39, + 0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x4f,0x2e,0x20,0x63,0x20,0x23,0x61, + 0x64,0x61,0x64,0x61,0x35,0x61,0x35,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a, + 0x22,0x2b,0x2e,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x61,0x35,0x61, + 0x35,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x40,0x2e,0x20,0x63,0x20, + 0x23,0x62,0x64,0x62,0x64,0x61,0x64,0x61,0x64,0x39,0x34,0x39,0x34,0x22, + 0x2c,0x0a,0x22,0x23,0x2e,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x62, + 0x35,0x62,0x35,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x24,0x2e,0x20, + 0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62,0x64,0x62,0x64,0x39,0x63,0x39, + 0x63,0x22,0x2c,0x0a,0x22,0x25,0x2e,0x20,0x63,0x20,0x23,0x61,0x35,0x61, + 0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x26, + 0x2e,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61, + 0x64,0x61,0x64,0x22,0x2c,0x0a,0x22,0x2a,0x2e,0x20,0x63,0x20,0x23,0x61, + 0x35,0x61,0x35,0x61,0x64,0x61,0x64,0x61,0x64,0x61,0x64,0x22,0x2c,0x0a, + 0x22,0x3d,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x61,0x64,0x61, + 0x64,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x2d,0x2e,0x20,0x63,0x20, + 0x47,0x72,0x61,0x79,0x36,0x38,0x22,0x2c,0x0a,0x22,0x3b,0x2e,0x20,0x63, + 0x20,0x23,0x61,0x64,0x61,0x64,0x61,0x64,0x61,0x64,0x62,0x35,0x62,0x35, + 0x22,0x2c,0x0a,0x22,0x3a,0x2e,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35, + 0x61,0x64,0x61,0x64,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x3e,0x2e, + 0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x61,0x64,0x61,0x64,0x61,0x64, + 0x61,0x64,0x22,0x2c,0x0a,0x22,0x2c,0x2e,0x20,0x63,0x20,0x23,0x62,0x35, + 0x62,0x35,0x62,0x35,0x62,0x35,0x61,0x64,0x61,0x64,0x22,0x2c,0x0a,0x22, + 0x3c,0x2e,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35, + 0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x31,0x2e,0x20,0x63,0x20,0x23, + 0x62,0x64,0x62,0x64,0x62,0x64,0x62,0x64,0x61,0x35,0x61,0x35,0x22,0x2c, + 0x0a,0x22,0x32,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x31,0x22, + 0x2c,0x0a,0x22,0x33,0x2e,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x62, + 0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x34,0x2e,0x20, + 0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x62,0x35,0x62, + 0x35,0x22,0x2c,0x0a,0x22,0x35,0x2e,0x20,0x63,0x20,0x23,0x62,0x64,0x62, + 0x64,0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x36, + 0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x34,0x22,0x2c,0x0a,0x22, + 0x37,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x62,0x64,0x62,0x64, + 0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x38,0x2e,0x20,0x63,0x20,0x23, + 0x62,0x35,0x62,0x35,0x62,0x64,0x62,0x64,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x39,0x2e,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x63,0x36, + 0x63,0x36,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x30,0x2e,0x20,0x63, + 0x20,0x23,0x62,0x64,0x62,0x64,0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36, + 0x22,0x2c,0x0a,0x22,0x71,0x2e,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65, + 0x62,0x35,0x62,0x35,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x77,0x2e, + 0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x62,0x64,0x62,0x64,0x38,0x34, + 0x38,0x34,0x22,0x2c,0x0a,0x22,0x65,0x2e,0x20,0x63,0x20,0x23,0x64,0x65, + 0x64,0x65,0x62,0x64,0x62,0x64,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22, + 0x72,0x2e,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x62,0x35,0x62,0x35, + 0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x74,0x2e,0x20,0x63,0x20,0x23, + 0x64,0x65,0x64,0x65,0x62,0x35,0x62,0x35,0x39,0x34,0x39,0x34,0x22,0x2c, + 0x0a,0x22,0x79,0x2e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x62,0x64, + 0x62,0x64,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x75,0x2e,0x20,0x63, + 0x20,0x23,0x63,0x65,0x63,0x65,0x62,0x64,0x62,0x64,0x61,0x35,0x61,0x35, + 0x22,0x2c,0x0a,0x22,0x69,0x2e,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66, + 0x62,0x35,0x62,0x35,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x70,0x2e, + 0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x62,0x64,0x62,0x64,0x38,0x34, + 0x38,0x34,0x22,0x2c,0x0a,0x22,0x61,0x2e,0x20,0x63,0x20,0x23,0x65,0x66, + 0x65,0x66,0x62,0x64,0x62,0x64,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22, + 0x73,0x2e,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x62,0x35,0x62,0x35, + 0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x64,0x2e,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x62,0x64,0x62,0x64,0x39,0x34,0x39,0x34,0x22,0x2c, + 0x0a,0x22,0x66,0x2e,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x62,0x64, + 0x62,0x64,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x67,0x2e,0x20,0x63, + 0x20,0x23,0x66,0x37,0x66,0x37,0x62,0x64,0x62,0x64,0x38,0x63,0x38,0x63, + 0x22,0x2c,0x0a,0x22,0x68,0x2e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36, + 0x63,0x36,0x63,0x36,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x6a,0x2e, + 0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x63,0x36,0x63,0x36,0x38,0x63, + 0x38,0x63,0x22,0x2c,0x0a,0x22,0x6b,0x2e,0x20,0x63,0x20,0x23,0x64,0x65, + 0x64,0x65,0x64,0x36,0x64,0x36,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22, + 0x6c,0x2e,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x36,0x64,0x36, + 0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x7a,0x2e,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x61,0x64,0x61,0x64,0x22,0x2c, + 0x0a,0x22,0x78,0x2e,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x65, + 0x64,0x65,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x63,0x2e,0x20,0x63, + 0x20,0x23,0x65,0x66,0x65,0x66,0x63,0x36,0x63,0x36,0x38,0x63,0x38,0x63, + 0x22,0x2c,0x0a,0x22,0x76,0x2e,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37, + 0x63,0x36,0x63,0x36,0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x62,0x2e, + 0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x64,0x65,0x64,0x65,0x39,0x34, + 0x39,0x34,0x22,0x2c,0x0a,0x22,0x6e,0x2e,0x20,0x63,0x20,0x23,0x65,0x37, + 0x65,0x37,0x64,0x65,0x64,0x65,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22, + 0x6d,0x2e,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x63,0x65,0x63,0x65, + 0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x4d,0x2e,0x20,0x63,0x20,0x23, + 0x66,0x37,0x66,0x37,0x64,0x36,0x64,0x36,0x39,0x63,0x39,0x63,0x22,0x2c, + 0x0a,0x22,0x4e,0x2e,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x64,0x65, + 0x64,0x65,0x61,0x64,0x61,0x64,0x22,0x2c,0x0a,0x22,0x42,0x2e,0x20,0x63, + 0x20,0x23,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x61,0x35,0x61,0x35, + 0x22,0x2c,0x0a,0x22,0x56,0x2e,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66, + 0x65,0x37,0x65,0x37,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x43,0x2e, + 0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x65,0x37,0x65,0x37,0x61,0x64, + 0x61,0x64,0x22,0x2c,0x0a,0x22,0x5a,0x2e,0x20,0x63,0x20,0x23,0x65,0x66, + 0x65,0x66,0x65,0x66,0x65,0x66,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22, + 0x41,0x2e,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x65,0x66,0x65,0x66, + 0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x53,0x2e,0x20,0x63,0x20,0x23, + 0x66,0x37,0x66,0x37,0x65,0x66,0x65,0x66,0x61,0x64,0x61,0x64,0x22,0x2c, + 0x0a,0x22,0x44,0x2e,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x65,0x66, + 0x65,0x66,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x46,0x2e,0x20,0x63, + 0x20,0x23,0x66,0x37,0x66,0x37,0x66,0x37,0x66,0x37,0x62,0x35,0x62,0x35, + 0x22,0x2c,0x0a,0x22,0x47,0x2e,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37, + 0x66,0x37,0x66,0x37,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x48,0x2e, + 0x20,0x63,0x20,0x23,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30, + 0x63,0x30,0x22,0x2c,0x0a,0x22,0x4a,0x2e,0x20,0x63,0x20,0x23,0x63,0x36, + 0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22, + 0x4b,0x2e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36, + 0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x4c,0x2e,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x22,0x2c, + 0x0a,0x22,0x50,0x2e,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x63,0x36, + 0x63,0x36,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x49,0x2e,0x20,0x63, + 0x20,0x23,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x36,0x63,0x36, + 0x22,0x2c,0x0a,0x22,0x55,0x2e,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65, + 0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x59,0x2e, + 0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x64,0x36,0x64,0x36,0x63,0x65, + 0x63,0x65,0x22,0x2c,0x0a,0x22,0x54,0x2e,0x20,0x63,0x20,0x23,0x63,0x65, + 0x63,0x65,0x64,0x36,0x64,0x36,0x64,0x65,0x64,0x65,0x22,0x2c,0x0a,0x22, + 0x52,0x2e,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x63,0x65,0x63,0x65, + 0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x45,0x2e,0x20,0x63,0x20,0x23, + 0x64,0x36,0x64,0x36,0x64,0x36,0x64,0x36,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x57,0x2e,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x64,0x36, + 0x64,0x36,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x51,0x2e,0x20,0x63, + 0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x36,0x64,0x36,0x63,0x36,0x63,0x36, + 0x22,0x2c,0x0a,0x22,0x21,0x2e,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65, + 0x64,0x36,0x64,0x36,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x7e,0x2e, + 0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x65,0x64,0x65,0x63,0x36, + 0x63,0x36,0x22,0x2c,0x0a,0x22,0x5e,0x2e,0x20,0x63,0x20,0x47,0x72,0x61, + 0x79,0x38,0x34,0x22,0x2c,0x0a,0x22,0x2f,0x2e,0x20,0x63,0x20,0x23,0x64, + 0x36,0x64,0x36,0x64,0x65,0x64,0x65,0x64,0x65,0x64,0x65,0x22,0x2c,0x0a, + 0x22,0x28,0x2e,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x36,0x64, + 0x36,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x29,0x2e,0x20,0x63,0x20, + 0x23,0x64,0x65,0x64,0x65,0x64,0x65,0x64,0x65,0x64,0x36,0x64,0x36,0x22, + 0x2c,0x0a,0x22,0x5f,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x38,0x37, + 0x22,0x2c,0x0a,0x22,0x60,0x2e,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65, + 0x64,0x65,0x64,0x65,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x27,0x2e, + 0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x64,0x65, + 0x64,0x65,0x22,0x2c,0x0a,0x22,0x5d,0x2e,0x20,0x63,0x20,0x23,0x65,0x66, + 0x65,0x66,0x65,0x37,0x65,0x37,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22, + 0x5b,0x2e,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x65,0x37,0x65,0x37, + 0x64,0x65,0x64,0x65,0x22,0x2c,0x0a,0x22,0x7b,0x2e,0x20,0x63,0x20,0x23, + 0x66,0x37,0x66,0x37,0x66,0x37,0x66,0x37,0x64,0x36,0x64,0x36,0x22,0x2c, + 0x0a,0x22,0x7d,0x2e,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x66,0x66, + 0x66,0x66,0x64,0x65,0x64,0x65,0x22,0x2c,0x0a,0x22,0x7c,0x2e,0x20,0x63, + 0x20,0x23,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37, + 0x22,0x2c,0x0a,0x22,0x20,0x58,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37, + 0x65,0x37,0x65,0x37,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x2e,0x58, + 0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x65,0x66,0x65,0x66,0x65,0x66, + 0x65,0x66,0x22,0x2c,0x0a,0x22,0x58,0x58,0x20,0x63,0x20,0x23,0x65,0x66, + 0x65,0x66,0x65,0x66,0x65,0x66,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22, + 0x6f,0x58,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x65,0x66,0x65,0x66, + 0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x4f,0x58,0x20,0x63,0x20,0x23, + 0x65,0x66,0x65,0x66,0x65,0x66,0x65,0x66,0x66,0x37,0x66,0x37,0x22,0x2c, + 0x0a,0x22,0x2b,0x58,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x66,0x37, + 0x66,0x37,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x40,0x58,0x20,0x63, + 0x20,0x23,0x66,0x37,0x66,0x37,0x65,0x66,0x65,0x66,0x65,0x66,0x65,0x66, + 0x22,0x2c,0x0a,0x22,0x23,0x58,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x39, + 0x37,0x22,0x2c,0x0a,0x22,0x24,0x58,0x20,0x63,0x20,0x23,0x66,0x37,0x66, + 0x37,0x66,0x37,0x66,0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x25, + 0x58,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x66,0x66,0x66,0x66,0x66, + 0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x26,0x58,0x20,0x63,0x20,0x23,0x66, + 0x66,0x66,0x66,0x66,0x37,0x66,0x37,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a, + 0x22,0x2a,0x58,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x66,0x66,0x66, + 0x66,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x3d,0x58,0x20,0x63,0x20, + 0x47,0x72,0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a,0x22,0x2d,0x58,0x20, + 0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69, + 0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x75,0x2e,0x63,0x2e,0x6e, + 0x2e,0x78,0x2e,0x42,0x2e,0x41,0x2e,0x41,0x2e,0x53,0x2e,0x44,0x2e,0x46, + 0x2e,0x47,0x2e,0x46,0x2e,0x53,0x2e,0x4d,0x2e,0x70,0x2e,0x67,0x2e,0x5a, + 0x2e,0x56,0x2e,0x42,0x2e,0x6e,0x2e,0x5a,0x2e,0x4e,0x2e,0x22,0x2c,0x0a, + 0x22,0x72,0x2e,0x57,0x20,0x3c,0x20,0x30,0x20,0x5a,0x20,0x52,0x2e,0x57, + 0x2e,0x3d,0x2e,0x45,0x2e,0x3b,0x2e,0x5f,0x20,0x21,0x2e,0x57,0x2e,0x5d, + 0x2e,0x5b,0x2e,0x5b,0x2e,0x5b,0x2e,0x27,0x2e,0x59,0x2e,0x2f,0x20,0x44, + 0x20,0x43,0x2e,0x22,0x2c,0x0a,0x22,0x74,0x2e,0x55,0x20,0x40,0x20,0x2b, + 0x20,0x36,0x20,0x51,0x20,0x25,0x2e,0x32,0x2e,0x30,0x2e,0x32,0x2e,0x2d, + 0x2e,0x4a,0x2e,0x4b,0x2e,0x60,0x2e,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x3d, + 0x58,0x3d,0x58,0x4f,0x58,0x7e,0x2e,0x78,0x2e,0x22,0x2c,0x0a,0x22,0x73, + 0x2e,0x50,0x20,0x2a,0x20,0x4f,0x20,0x6b,0x20,0x5e,0x2e,0x26,0x58,0x23, + 0x58,0x58,0x58,0x60,0x2e,0x5e,0x2e,0x4a,0x2e,0x33,0x2e,0x32,0x2e,0x29, + 0x2e,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x7d,0x2e,0x6e, + 0x2e,0x22,0x2c,0x0a,0x22,0x74,0x2e,0x47,0x20,0x2a,0x20,0x26,0x20,0x3d, + 0x20,0x6b,0x20,0x57,0x2e,0x7c,0x2e,0x7c,0x2e,0x58,0x58,0x7c,0x2e,0x5e, + 0x2e,0x4a,0x2e,0x26,0x2e,0x5d,0x20,0x51,0x20,0x7e,0x20,0x3e,0x2e,0x5e, + 0x2e,0x58,0x58,0x7b,0x2e,0x6c,0x2e,0x22,0x2c,0x0a,0x22,0x73,0x2e,0x6d, + 0x20,0x2a,0x20,0x4f,0x20,0x4f,0x20,0x2d,0x20,0x37,0x20,0x65,0x20,0x6c, + 0x20,0x2e,0x2e,0x49,0x2e,0x3d,0x58,0x3d,0x58,0x2b,0x58,0x4a,0x2e,0x6a, + 0x20,0x2b,0x20,0x20,0x20,0x58,0x20,0x2b,0x20,0x73,0x20,0x56,0x2e,0x22, + 0x2c,0x0a,0x22,0x64,0x2e,0x4a,0x20,0x25,0x20,0x51,0x20,0x21,0x20,0x72, + 0x20,0x63,0x20,0x7a,0x20,0x2d,0x2e,0x2a,0x2e,0x78,0x20,0x5b,0x2e,0x3d, + 0x58,0x58,0x58,0x5e,0x2e,0x4c,0x2e,0x60,0x20,0x35,0x2e,0x28,0x20,0x3a, + 0x20,0x71,0x20,0x6e,0x2e,0x22,0x2c,0x0a,0x22,0x76,0x2e,0x4a,0x20,0x6f, + 0x20,0x43,0x20,0x2a,0x58,0x2e,0x58,0x40,0x58,0x3d,0x58,0x3d,0x58,0x25, + 0x58,0x60,0x20,0x51,0x2e,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x3d, + 0x58,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x59,0x2e,0x42,0x2e,0x22,0x2c,0x0a, + 0x22,0x61,0x2e,0x46,0x20,0x40,0x20,0x3d,0x20,0x6b,0x20,0x2c,0x2e,0x5e, + 0x2e,0x55,0x2e,0x3d,0x58,0x37,0x2e,0x37,0x20,0x51,0x2e,0x3d,0x58,0x3d, + 0x58,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x24,0x58,0x39, + 0x2e,0x6c,0x2e,0x22,0x2c,0x0a,0x22,0x67,0x2e,0x6e,0x20,0x40,0x20,0x26, + 0x20,0x72,0x20,0x3a,0x2e,0x5f,0x2e,0x30,0x2e,0x55,0x2e,0x75,0x20,0x25, + 0x20,0x20,0x2e,0x2f,0x2e,0x36,0x2e,0x29,0x2e,0x3d,0x58,0x3d,0x58,0x3d, + 0x58,0x3d,0x58,0x6f,0x58,0x7e,0x20,0x6b,0x2e,0x22,0x2c,0x0a,0x22,0x69, + 0x2e,0x4e,0x20,0x2e,0x20,0x61,0x20,0x40,0x58,0x25,0x58,0x20,0x58,0x36, + 0x2e,0x2d,0x2e,0x6a,0x20,0x64,0x20,0x69,0x20,0x4f,0x2e,0x7c,0x2e,0x26, + 0x58,0x3d,0x58,0x3d,0x58,0x2b,0x58,0x23,0x58,0x7b,0x20,0x77,0x20,0x62, + 0x2e,0x22,0x2c,0x0a,0x22,0x66,0x2e,0x4d,0x20,0x38,0x20,0x21,0x2e,0x25, + 0x58,0x5d,0x20,0x68,0x20,0x79,0x20,0x29,0x20,0x25,0x2e,0x6f,0x2e,0x23, + 0x58,0x3d,0x58,0x7c,0x2e,0x55,0x2e,0x4a,0x2e,0x55,0x2e,0x28,0x2e,0x5b, + 0x20,0x23,0x20,0x32,0x20,0x56,0x2e,0x22,0x2c,0x0a,0x22,0x66,0x2e,0x71, + 0x2e,0x29,0x2e,0x23,0x58,0x23,0x58,0x54,0x2e,0x21,0x20,0x52,0x2e,0x3d, + 0x58,0x3d,0x58,0x3b,0x2e,0x2e,0x2e,0x5e,0x20,0x65,0x20,0x66,0x20,0x7e, + 0x20,0x50,0x2e,0x7c,0x2e,0x7c,0x2e,0x76,0x20,0x2c,0x20,0x5a,0x2e,0x22, + 0x2c,0x0a,0x22,0x6d,0x2e,0x4b,0x20,0x3a,0x20,0x78,0x20,0x34,0x2e,0x5b, + 0x20,0x5f,0x20,0x40,0x58,0x3d,0x58,0x3d,0x58,0x3d,0x58,0x25,0x58,0x24, + 0x58,0x60,0x2e,0x5b,0x20,0x68,0x20,0x3d,0x2e,0x38,0x2e,0x63,0x20,0x3b, + 0x20,0x33,0x20,0x4e,0x2e,0x22,0x2c,0x0a,0x22,0x59,0x20,0x4e,0x20,0x34, + 0x20,0x62,0x20,0x53,0x20,0x56,0x20,0x58,0x2e,0x24,0x2e,0x23,0x2e,0x3c, + 0x2e,0x7a,0x2e,0x79,0x2e,0x31,0x2e,0x7c,0x20,0x39,0x20,0x35,0x20,0x4c, + 0x20,0x7c,0x20,0x42,0x20,0x77,0x20,0x70,0x20,0x68,0x2e,0x22,0x2c,0x0a, + 0x22,0x26,0x2e,0x25,0x2e,0x25,0x2e,0x25,0x2e,0x25,0x2e,0x25,0x2e,0x7e, + 0x20,0x24,0x20,0x51,0x20,0x25,0x2e,0x3c,0x20,0x31,0x20,0x25,0x2e,0x67, + 0x20,0x3e,0x20,0x27,0x20,0x2e,0x2e,0x5d,0x20,0x5d,0x20,0x5d,0x20,0x5d, + 0x20,0x6f,0x2e,0x22,0x2c,0x0a,0x22,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d, + 0x58,0x2d,0x58,0x2d,0x58,0x3c,0x2e,0x48,0x20,0x35,0x2e,0x2d,0x58,0x36, + 0x20,0x79,0x20,0x2d,0x58,0x3e,0x2e,0x54,0x20,0x3d,0x2e,0x2d,0x58,0x2d, + 0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x22,0x2c,0x0a,0x22,0x2d, + 0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x36,0x2e,0x6a,0x2e,0x7d, + 0x20,0x2d,0x58,0x2d,0x58,0x38,0x20,0x69,0x20,0x2d,0x58,0x36,0x2e,0x65, + 0x2e,0x40,0x2e,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d, + 0x58,0x22,0x2c,0x0a,0x22,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d, + 0x58,0x35,0x2e,0x57,0x20,0x25,0x2e,0x2d,0x58,0x2d,0x58,0x38,0x20,0x69, + 0x20,0x2d,0x58,0x2d,0x58,0x40,0x2e,0x57,0x20,0x36,0x2e,0x2d,0x58,0x2d, + 0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x22,0x2c,0x0a,0x22,0x2d,0x58,0x2d, + 0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x79,0x2e,0x49,0x20,0x32,0x2e,0x2d, + 0x58,0x2d,0x58,0x38,0x20,0x69,0x20,0x2d,0x58,0x2d,0x58,0x2c,0x2e,0x65, + 0x2e,0x3d,0x2e,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x22, + 0x2c,0x0a,0x22,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x36,0x2e,0x6a, + 0x2e,0x41,0x20,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x38,0x20,0x69,0x20,0x2d, + 0x58,0x2d,0x58,0x35,0x2e,0x77,0x2e,0x2b,0x2e,0x2d,0x58,0x2d,0x58,0x2d, + 0x58,0x2d,0x58,0x2d,0x58,0x22,0x2c,0x0a,0x22,0x2d,0x58,0x2d,0x58,0x2d, + 0x58,0x2d,0x58,0x35,0x2e,0x45,0x20,0x2e,0x2e,0x2d,0x58,0x2d,0x58,0x2d, + 0x58,0x74,0x20,0x67,0x20,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x40,0x2e,0x52, + 0x20,0x36,0x2e,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x2d,0x58,0x22,0x0a,0x7d, + 0x3b,0x0a +}; + +static const unsigned int small_layout_xpm_len = 3179; +static const unsigned char small_layout_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x39,0x33,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x63,0x20, + 0x23,0x32,0x31,0x32,0x31,0x30,0x38,0x30,0x38,0x30,0x30,0x30,0x30,0x22, + 0x2c,0x0a,0x22,0x2e,0x20,0x20,0x63,0x20,0x23,0x32,0x39,0x32,0x39,0x30, + 0x38,0x30,0x38,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x58,0x20,0x20, + 0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x30,0x38,0x30,0x38,0x30,0x30,0x30, + 0x30,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x20,0x63,0x20,0x23,0x33,0x31,0x33, + 0x31,0x30,0x38,0x30,0x38,0x30,0x38,0x30,0x38,0x22,0x2c,0x0a,0x22,0x4f, + 0x20,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x31,0x30,0x31,0x30,0x30, + 0x38,0x30,0x38,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x20,0x63,0x20,0x23,0x33, + 0x31,0x33,0x31,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x22,0x2c,0x0a, + 0x22,0x40,0x20,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x31,0x38,0x31, + 0x38,0x31,0x30,0x31,0x30,0x22,0x2c,0x0a,0x22,0x23,0x20,0x20,0x63,0x20, + 0x23,0x33,0x39,0x33,0x39,0x31,0x38,0x31,0x38,0x31,0x30,0x31,0x30,0x22, + 0x2c,0x0a,0x22,0x24,0x20,0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39,0x32, + 0x31,0x32,0x31,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x25,0x20,0x20, + 0x63,0x20,0x23,0x34,0x32,0x34,0x32,0x32,0x39,0x32,0x39,0x32,0x31,0x32, + 0x31,0x22,0x2c,0x0a,0x22,0x26,0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34, + 0x61,0x33,0x31,0x33,0x31,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x2a, + 0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x33,0x31,0x33,0x31,0x33, + 0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x20,0x63,0x20,0x23,0x35, + 0x32,0x35,0x32,0x33,0x39,0x33,0x39,0x33,0x31,0x33,0x31,0x22,0x2c,0x0a, + 0x22,0x2d,0x20,0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x31,0x30,0x31, + 0x30,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x20,0x63,0x20, + 0x23,0x36,0x62,0x36,0x62,0x31,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x22, + 0x2c,0x0a,0x22,0x3a,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x31, + 0x30,0x31,0x30,0x30,0x38,0x30,0x38,0x22,0x2c,0x0a,0x22,0x3e,0x20,0x20, + 0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x31,0x38,0x31,0x38,0x30,0x38,0x30, + 0x38,0x22,0x2c,0x0a,0x22,0x2c,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37, + 0x33,0x31,0x38,0x31,0x38,0x30,0x38,0x30,0x38,0x22,0x2c,0x0a,0x22,0x3c, + 0x20,0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x32,0x31,0x32,0x31,0x31, + 0x30,0x31,0x30,0x22,0x2c,0x0a,0x22,0x31,0x20,0x20,0x63,0x20,0x23,0x36, + 0x62,0x36,0x62,0x32,0x31,0x32,0x31,0x31,0x30,0x31,0x30,0x22,0x2c,0x0a, + 0x22,0x32,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x32,0x39,0x32, + 0x39,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x33,0x20,0x20,0x63,0x20, + 0x23,0x37,0x33,0x37,0x33,0x32,0x31,0x32,0x31,0x31,0x30,0x31,0x30,0x22, + 0x2c,0x0a,0x22,0x34,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x33, + 0x31,0x33,0x31,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x35,0x20,0x20, + 0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x33,0x31,0x33,0x31,0x32,0x39,0x32, + 0x39,0x22,0x2c,0x0a,0x22,0x36,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37, + 0x62,0x34,0x32,0x34,0x32,0x33,0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x37, + 0x20,0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x35,0x32,0x35,0x32,0x34, + 0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x38,0x20,0x20,0x63,0x20,0x23,0x37, + 0x33,0x37,0x33,0x36,0x33,0x36,0x33,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a, + 0x22,0x39,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x33,0x39,0x33, + 0x39,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x30,0x20,0x20,0x63,0x20, + 0x23,0x62,0x35,0x62,0x35,0x33,0x39,0x33,0x39,0x32,0x39,0x32,0x39,0x22, + 0x2c,0x0a,0x22,0x71,0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x33, + 0x39,0x33,0x39,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x77,0x20,0x20, + 0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x33,0x39,0x33,0x39,0x32,0x39,0x32, + 0x39,0x22,0x2c,0x0a,0x22,0x65,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38, + 0x34,0x34,0x32,0x34,0x32,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x72, + 0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x34,0x32,0x34,0x32,0x33, + 0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x74,0x20,0x20,0x63,0x20,0x23,0x62, + 0x64,0x62,0x64,0x34,0x32,0x34,0x32,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a, + 0x22,0x79,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x34,0x32,0x34, + 0x32,0x33,0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x75,0x20,0x20,0x63,0x20, + 0x23,0x62,0x35,0x62,0x35,0x34,0x61,0x34,0x61,0x33,0x31,0x33,0x31,0x22, + 0x2c,0x0a,0x22,0x69,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x34, + 0x61,0x34,0x61,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x70,0x20,0x20, + 0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x34,0x32,0x34,0x32,0x33,0x31,0x33, + 0x31,0x22,0x2c,0x0a,0x22,0x61,0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62, + 0x64,0x34,0x61,0x34,0x61,0x33,0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x73, + 0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x34,0x61,0x34,0x61,0x33, + 0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x64,0x20,0x20,0x63,0x20,0x23,0x38, + 0x63,0x38,0x63,0x35,0x32,0x35,0x32,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a, + 0x22,0x66,0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x35,0x32,0x35, + 0x32,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x67,0x20,0x20,0x63,0x20, + 0x23,0x62,0x35,0x62,0x35,0x35,0x32,0x35,0x32,0x34,0x32,0x34,0x32,0x22, + 0x2c,0x0a,0x22,0x68,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x35, + 0x32,0x35,0x32,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x6a,0x20,0x20, + 0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x35,0x32,0x35,0x32,0x34,0x32,0x34, + 0x32,0x22,0x2c,0x0a,0x22,0x6b,0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62, + 0x64,0x35,0x32,0x35,0x32,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x6c, + 0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x36,0x33,0x36,0x33,0x35, + 0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x7a,0x20,0x20,0x63,0x20,0x23,0x61, + 0x64,0x61,0x64,0x36,0x62,0x36,0x62,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a, + 0x22,0x78,0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x36,0x33,0x36, + 0x33,0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x63,0x20,0x20,0x63,0x20, + 0x23,0x61,0x64,0x61,0x64,0x37,0x33,0x37,0x33,0x36,0x33,0x36,0x33,0x22, + 0x2c,0x0a,0x22,0x76,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x36, + 0x62,0x36,0x62,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x62,0x20,0x20, + 0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x37,0x62,0x37,0x62,0x37,0x33,0x37, + 0x33,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x20,0x63,0x20,0x23,0x63,0x36,0x63, + 0x36,0x34,0x32,0x34,0x32,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x6d, + 0x20,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x34,0x32,0x34,0x32,0x33, + 0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x20,0x63,0x20,0x23,0x63, + 0x65,0x63,0x65,0x34,0x32,0x34,0x32,0x33,0x31,0x33,0x31,0x22,0x2c,0x0a, + 0x22,0x4e,0x20,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x36,0x62,0x36, + 0x62,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x42,0x20,0x20,0x63,0x20, + 0x23,0x64,0x65,0x64,0x65,0x37,0x62,0x37,0x62,0x36,0x62,0x36,0x62,0x22, + 0x2c,0x0a,0x22,0x56,0x20,0x20,0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x35, + 0x61,0x35,0x61,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x43,0x20,0x20, + 0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x35,0x61,0x35,0x61,0x34,0x32,0x34, + 0x32,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x20,0x63,0x20,0x23,0x65,0x66,0x65, + 0x66,0x36,0x33,0x36,0x33,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x41, + 0x20,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x36,0x62,0x36,0x62,0x35, + 0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x53,0x20,0x20,0x63,0x20,0x23,0x65, + 0x66,0x65,0x66,0x36,0x62,0x36,0x62,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a, + 0x22,0x44,0x20,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x36,0x33,0x36, + 0x33,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x46,0x20,0x20,0x63,0x20, + 0x23,0x66,0x66,0x66,0x66,0x36,0x33,0x36,0x33,0x34,0x61,0x34,0x61,0x22, + 0x2c,0x0a,0x22,0x47,0x20,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x36, + 0x62,0x36,0x62,0x34,0x61,0x34,0x61,0x22,0x2c,0x0a,0x22,0x48,0x20,0x20, + 0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x36,0x62,0x36,0x62,0x35,0x32,0x35, + 0x32,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x20,0x63,0x20,0x23,0x66,0x37,0x66, + 0x37,0x37,0x33,0x37,0x33,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a,0x22,0x4b, + 0x20,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x37,0x33,0x37,0x33,0x35, + 0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x4c,0x20,0x20,0x63,0x20,0x23,0x66, + 0x66,0x66,0x66,0x37,0x33,0x37,0x33,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a, + 0x22,0x50,0x20,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x37,0x33,0x37, + 0x33,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x49,0x20,0x20,0x63,0x20, + 0x23,0x65,0x37,0x65,0x37,0x37,0x62,0x37,0x62,0x36,0x33,0x36,0x33,0x22, + 0x2c,0x0a,0x22,0x55,0x20,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x37, + 0x62,0x37,0x62,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x59,0x20,0x20, + 0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x37,0x62,0x37,0x62,0x36,0x33,0x36, + 0x33,0x22,0x2c,0x0a,0x22,0x54,0x20,0x20,0x63,0x20,0x23,0x66,0x37,0x66, + 0x37,0x37,0x62,0x37,0x62,0x36,0x62,0x36,0x62,0x22,0x2c,0x0a,0x22,0x52, + 0x20,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x37,0x62,0x37,0x62,0x36, + 0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x45,0x20,0x20,0x63,0x20,0x23,0x62, + 0x35,0x62,0x35,0x38,0x34,0x38,0x34,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a, + 0x22,0x57,0x20,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x38,0x34,0x38, + 0x34,0x37,0x33,0x37,0x33,0x22,0x2c,0x0a,0x22,0x51,0x20,0x20,0x63,0x20, + 0x23,0x65,0x37,0x65,0x37,0x38,0x34,0x38,0x34,0x36,0x62,0x36,0x62,0x22, + 0x2c,0x0a,0x22,0x21,0x20,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x38, + 0x63,0x38,0x63,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x7e,0x20,0x20, + 0x63,0x20,0x23,0x66,0x37,0x66,0x37,0x38,0x34,0x38,0x34,0x36,0x62,0x36, + 0x62,0x22,0x2c,0x0a,0x22,0x5e,0x20,0x20,0x63,0x20,0x23,0x66,0x66,0x66, + 0x66,0x38,0x34,0x38,0x34,0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x2f, + 0x20,0x20,0x63,0x20,0x23,0x66,0x66,0x66,0x66,0x38,0x34,0x38,0x34,0x36, + 0x62,0x36,0x62,0x22,0x2c,0x0a,0x22,0x28,0x20,0x20,0x63,0x20,0x23,0x66, + 0x37,0x66,0x37,0x38,0x34,0x38,0x34,0x37,0x33,0x37,0x33,0x22,0x2c,0x0a, + 0x22,0x29,0x20,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x61,0x35,0x61, + 0x35,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x5f,0x20,0x20,0x63,0x20, + 0x47,0x72,0x61,0x79,0x36,0x38,0x22,0x2c,0x0a,0x22,0x60,0x20,0x20,0x63, + 0x20,0x47,0x72,0x61,0x79,0x37,0x31,0x22,0x2c,0x0a,0x22,0x27,0x20,0x20, + 0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62,0x35,0x62,0x35,0x62,0x35,0x62, + 0x35,0x22,0x2c,0x0a,0x22,0x5d,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79, + 0x37,0x34,0x22,0x2c,0x0a,0x22,0x5b,0x20,0x20,0x63,0x20,0x23,0x64,0x65, + 0x64,0x65,0x39,0x34,0x39,0x34,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22, + 0x7b,0x20,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x62,0x64,0x62,0x64, + 0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x7d,0x20,0x20,0x63,0x20,0x23, + 0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x22,0x2c, + 0x0a,0x22,0x7c,0x20,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x63,0x36, + 0x63,0x36,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x20,0x63, + 0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78, + 0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x20,0x2e,0x6a,0x20,0x71,0x20, + 0x77,0x20,0x77,0x20,0x77,0x20,0x77,0x20,0x71,0x20,0x71,0x20,0x70,0x20, + 0x5d,0x20,0x5d,0x20,0x67,0x20,0x71,0x20,0x71,0x20,0x77,0x20,0x71,0x20, + 0x77,0x20,0x71,0x20,0x71,0x20,0x73,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22, + 0x20,0x2e,0x59,0x20,0x4c,0x20,0x4b,0x20,0x4c,0x20,0x4b,0x20,0x4c,0x20, + 0x4b,0x20,0x4c,0x20,0x4a,0x20,0x5d,0x20,0x7b,0x20,0x50,0x20,0x48,0x20, + 0x48,0x20,0x48,0x20,0x48,0x20,0x48,0x20,0x48,0x20,0x47,0x20,0x4a,0x20, + 0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x54,0x20,0x52,0x20,0x52,0x20, + 0x52,0x20,0x52,0x20,0x52,0x20,0x52,0x20,0x52,0x20,0x59,0x20,0x5d,0x20, + 0x5d,0x20,0x42,0x20,0x52,0x20,0x4c,0x20,0x4a,0x20,0x4c,0x20,0x4a,0x20, + 0x4c,0x20,0x4a,0x20,0x4a,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x75,0x20,0x30,0x20,0x30,0x20,0x30,0x20,0x30,0x20,0x30,0x20,0x30,0x20, + 0x39,0x20,0x72,0x20,0x27,0x20,0x5d,0x20,0x66,0x20,0x39,0x20,0x30,0x20, + 0x30,0x20,0x30,0x20,0x39,0x20,0x30,0x20,0x39,0x20,0x79,0x20,0x20,0x2e, + 0x22,0x2c,0x0a,0x22,0x20,0x2e,0x32,0x20,0x3a,0x20,0x2d,0x20,0x3e,0x20, + 0x3a,0x20,0x2d,0x20,0x3a,0x20,0x3a,0x20,0x3c,0x20,0x5d,0x20,0x5d,0x20, + 0x34,0x20,0x2d,0x20,0x3a,0x20,0x2d,0x20,0x3e,0x20,0x3a,0x20,0x3a,0x20, + 0x3a,0x20,0x3c,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x2a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x4f,0x20,0x20,0x20,0x4f,0x20,0x20,0x20, + 0x2b,0x20,0x5d,0x20,0x5d,0x20,0x26,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x25,0x20,0x20,0x2e,0x22,0x2c, + 0x0a,0x22,0x20,0x2e,0x60,0x20,0x29,0x20,0x5f,0x20,0x5f,0x20,0x29,0x20, + 0x5f,0x20,0x29,0x20,0x29,0x20,0x5f,0x20,0x5d,0x20,0x7c,0x20,0x5f,0x20, + 0x29,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20,0x29,0x20, + 0x5f,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x22,0x2c,0x0a,0x22, + 0x20,0x2e,0x62,0x20,0x67,0x20,0x68,0x20,0x68,0x20,0x68,0x20,0x68,0x20, + 0x68,0x20,0x67,0x20,0x6c,0x20,0x5d,0x20,0x5d,0x20,0x7a,0x20,0x67,0x20, + 0x67,0x20,0x68,0x20,0x67,0x20,0x68,0x20,0x67,0x20,0x67,0x20,0x63,0x20, + 0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x50,0x20,0x46,0x20,0x5a,0x20, + 0x44,0x20,0x47,0x20,0x56,0x20,0x47,0x20,0x56,0x20,0x5a,0x20,0x60,0x20, + 0x7c,0x20,0x4e,0x20,0x44,0x20,0x56,0x20,0x56,0x20,0x56,0x20,0x56,0x20, + 0x56,0x20,0x56,0x20,0x53,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x21,0x20,0x2f,0x20,0x2f,0x20,0x2f,0x20,0x2f,0x20,0x2f,0x20,0x5e,0x20, + 0x2f,0x20,0x55,0x20,0x60,0x20,0x5d,0x20,0x51,0x20,0x52,0x20,0x5e,0x20, + 0x52,0x20,0x5e,0x20,0x52,0x20,0x52,0x20,0x52,0x20,0x7e,0x20,0x20,0x2e, + 0x22,0x2c,0x0a,0x22,0x20,0x2e,0x78,0x20,0x6e,0x20,0x6d,0x20,0x6d,0x20, + 0x6d,0x20,0x74,0x20,0x6d,0x20,0x6e,0x20,0x73,0x20,0x60,0x20,0x5d,0x20, + 0x68,0x20,0x6d,0x20,0x6d,0x20,0x74,0x20,0x6d,0x20,0x74,0x20,0x6e,0x20, + 0x74,0x20,0x6a,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x36,0x20, + 0x3e,0x20,0x3e,0x20,0x3e,0x20,0x3e,0x20,0x2c,0x20,0x3e,0x20,0x3e,0x20, + 0x31,0x20,0x60,0x20,0x7c,0x20,0x35,0x20,0x3b,0x20,0x3e,0x20,0x3e,0x20, + 0x3a,0x20,0x3e,0x20,0x3e,0x20,0x3a,0x20,0x35,0x20,0x20,0x2e,0x22,0x2c, + 0x0a,0x22,0x20,0x2e,0x37,0x20,0x2e,0x20,0x6f,0x20,0x58,0x20,0x4f,0x20, + 0x6f,0x20,0x4f,0x20,0x2e,0x20,0x24,0x20,0x60,0x20,0x5d,0x20,0x26,0x20, + 0x6f,0x20,0x4f,0x20,0x6f,0x20,0x4f,0x20,0x6f,0x20,0x4f,0x20,0x2e,0x20, + 0x3d,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x60,0x20,0x5f,0x20, + 0x5f,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20, + 0x5d,0x20,0x7c,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20,0x5f,0x20, + 0x5f,0x20,0x5f,0x20,0x5f,0x20,0x60,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x45,0x20,0x72,0x20,0x69,0x20, + 0x66,0x20,0x69,0x20,0x69,0x20,0x69,0x20,0x69,0x20,0x66,0x20,0x27,0x20, + 0x5d,0x20,0x6c,0x20,0x69,0x20,0x69,0x20,0x69,0x20,0x69,0x20,0x69,0x20, + 0x69,0x20,0x72,0x20,0x63,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x57,0x20,0x46,0x20,0x5a,0x20,0x46,0x20,0x47,0x20,0x5a,0x20,0x46,0x20, + 0x46,0x20,0x5a,0x20,0x60,0x20,0x5d,0x20,0x41,0x20,0x56,0x20,0x5a,0x20, + 0x5a,0x20,0x44,0x20,0x5a,0x20,0x44,0x20,0x43,0x20,0x49,0x20,0x20,0x2e, + 0x22,0x2c,0x0a,0x22,0x20,0x2e,0x5b,0x20,0x2f,0x20,0x2f,0x20,0x2f,0x20, + 0x2f,0x20,0x2f,0x20,0x2f,0x20,0x2f,0x20,0x54,0x20,0x60,0x20,0x7c,0x20, + 0x51,0x20,0x2f,0x20,0x52,0x20,0x52,0x20,0x52,0x20,0x52,0x20,0x52,0x20, + 0x52,0x20,0x28,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x76,0x20, + 0x4d,0x20,0x6d,0x20,0x6d,0x20,0x6d,0x20,0x6d,0x20,0x6d,0x20,0x6d,0x20, + 0x61,0x20,0x60,0x20,0x5d,0x20,0x6b,0x20,0x6e,0x20,0x6d,0x20,0x6e,0x20, + 0x6d,0x20,0x6e,0x20,0x6d,0x20,0x74,0x20,0x6b,0x20,0x20,0x2e,0x22,0x2c, + 0x0a,0x22,0x20,0x2e,0x64,0x20,0x2c,0x20,0x2c,0x20,0x2c,0x20,0x2c,0x20, + 0x2c,0x20,0x2c,0x20,0x2c,0x20,0x33,0x20,0x60,0x20,0x5d,0x20,0x35,0x20, + 0x2c,0x20,0x2c,0x20,0x2c,0x20,0x3e,0x20,0x2c,0x20,0x3e,0x20,0x2c,0x20, + 0x65,0x20,0x20,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x38,0x20,0x2e,0x20, + 0x40,0x20,0x23,0x20,0x40,0x20,0x23,0x20,0x40,0x20,0x2b,0x20,0x24,0x20, + 0x60,0x20,0x5d,0x20,0x3d,0x20,0x4f,0x20,0x2b,0x20,0x23,0x20,0x23,0x20, + 0x23,0x20,0x23,0x20,0x4f,0x20,0x37,0x20,0x20,0x2e,0x22,0x0a,0x7d,0x3b, + 0x0a +}; + +static const unsigned int small_left_xpm_len = 3621; +static const unsigned char small_left_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x31,0x33,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x63, + 0x20,0x23,0x30,0x38,0x30,0x38,0x32,0x39,0x32,0x39,0x65,0x66,0x65,0x66, + 0x22,0x2c,0x0a,0x22,0x2e,0x20,0x20,0x63,0x20,0x23,0x30,0x30,0x30,0x30, + 0x32,0x39,0x32,0x39,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x58,0x20, + 0x20,0x63,0x20,0x23,0x30,0x38,0x30,0x38,0x32,0x39,0x32,0x39,0x66,0x37, + 0x66,0x37,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x20,0x63,0x20,0x23,0x30,0x38, + 0x30,0x38,0x33,0x31,0x33,0x31,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x4f,0x20,0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30,0x32,0x39,0x32,0x39, + 0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x20,0x63,0x20,0x23, + 0x31,0x30,0x31,0x30,0x32,0x39,0x32,0x39,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x40,0x20,0x20,0x63,0x20,0x23,0x31,0x38,0x31,0x38,0x33,0x31, + 0x33,0x31,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x23,0x20,0x20,0x63, + 0x20,0x23,0x31,0x38,0x31,0x38,0x33,0x39,0x33,0x39,0x65,0x37,0x65,0x37, + 0x22,0x2c,0x0a,0x22,0x24,0x20,0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30, + 0x33,0x31,0x33,0x31,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x25,0x20, + 0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30,0x33,0x39,0x33,0x39,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x26,0x20,0x20,0x63,0x20,0x23,0x32,0x31, + 0x32,0x31,0x33,0x39,0x33,0x39,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22, + 0x2a,0x20,0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30,0x34,0x32,0x34,0x32, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x20,0x63,0x20,0x23, + 0x31,0x38,0x31,0x38,0x34,0x32,0x34,0x32,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x20,0x63,0x20,0x23,0x32,0x39,0x32,0x39,0x34,0x32, + 0x34,0x32,0x64,0x65,0x64,0x65,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x20,0x63, + 0x20,0x23,0x33,0x31,0x33,0x31,0x34,0x32,0x34,0x32,0x64,0x36,0x64,0x36, + 0x22,0x2c,0x0a,0x22,0x3a,0x20,0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39, + 0x35,0x32,0x35,0x32,0x64,0x65,0x64,0x65,0x22,0x2c,0x0a,0x22,0x3e,0x20, + 0x20,0x63,0x20,0x23,0x32,0x31,0x32,0x31,0x34,0x32,0x34,0x32,0x65,0x37, + 0x65,0x37,0x22,0x2c,0x0a,0x22,0x2c,0x20,0x20,0x63,0x20,0x23,0x32,0x39, + 0x32,0x39,0x34,0x32,0x34,0x32,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22, + 0x3c,0x20,0x20,0x63,0x20,0x23,0x32,0x31,0x32,0x31,0x35,0x32,0x35,0x32, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x31,0x20,0x20,0x63,0x20,0x23, + 0x32,0x39,0x32,0x39,0x35,0x32,0x35,0x32,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x32,0x20,0x20,0x63,0x20,0x23,0x32,0x39,0x32,0x39,0x35,0x61, + 0x35,0x61,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x33,0x20,0x20,0x63, + 0x20,0x23,0x33,0x31,0x33,0x31,0x36,0x33,0x36,0x33,0x66,0x66,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x34,0x20,0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39, + 0x36,0x33,0x36,0x33,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x35,0x20, + 0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39,0x36,0x62,0x36,0x62,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x36,0x20,0x20,0x63,0x20,0x23,0x35,0x61, + 0x35,0x61,0x36,0x62,0x36,0x62,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22, + 0x37,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x37,0x33,0x37,0x33, + 0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x38,0x20,0x20,0x63,0x20,0x23, + 0x34,0x32,0x34,0x32,0x35,0x32,0x35,0x32,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x35,0x61, + 0x35,0x61,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x30,0x20,0x20,0x63, + 0x20,0x23,0x34,0x32,0x34,0x32,0x35,0x32,0x35,0x32,0x64,0x36,0x64,0x36, + 0x22,0x2c,0x0a,0x22,0x71,0x20,0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32, + 0x36,0x33,0x36,0x33,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x77,0x20, + 0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x36,0x62,0x36,0x62,0x63,0x36, + 0x63,0x36,0x22,0x2c,0x0a,0x22,0x65,0x20,0x20,0x63,0x20,0x23,0x34,0x32, + 0x34,0x32,0x36,0x33,0x36,0x33,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22, + 0x72,0x20,0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32,0x36,0x62,0x36,0x62, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x74,0x20,0x20,0x63,0x20,0x23, + 0x34,0x32,0x34,0x32,0x37,0x33,0x37,0x33,0x65,0x66,0x65,0x66,0x22,0x2c, + 0x0a,0x22,0x79,0x20,0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32,0x37,0x33, + 0x37,0x33,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x75,0x20,0x20,0x63, + 0x20,0x23,0x34,0x61,0x34,0x61,0x37,0x33,0x37,0x33,0x66,0x66,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x69,0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61, + 0x37,0x62,0x37,0x62,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x70,0x20, + 0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x38,0x34,0x38,0x34,0x62,0x35, + 0x62,0x35,0x22,0x2c,0x0a,0x22,0x61,0x20,0x20,0x63,0x20,0x23,0x35,0x32, + 0x35,0x32,0x38,0x34,0x38,0x34,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x73,0x20,0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x38,0x63,0x38,0x63, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x64,0x20,0x20,0x63,0x20,0x23, + 0x36,0x62,0x36,0x62,0x38,0x63,0x38,0x63,0x64,0x65,0x64,0x65,0x22,0x2c, + 0x0a,0x22,0x66,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x38,0x34, + 0x38,0x34,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x67,0x20,0x20,0x63, + 0x20,0x23,0x37,0x62,0x37,0x62,0x38,0x63,0x38,0x63,0x63,0x36,0x63,0x36, + 0x22,0x2c,0x0a,0x22,0x68,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62, + 0x38,0x63,0x38,0x63,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x6a,0x20, + 0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x38,0x63,0x38,0x63,0x64,0x36, + 0x64,0x36,0x22,0x2c,0x0a,0x22,0x6b,0x20,0x20,0x63,0x20,0x23,0x37,0x62, + 0x37,0x62,0x38,0x63,0x38,0x63,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22, + 0x6c,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x39,0x34,0x39,0x34, + 0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x7a,0x20,0x20,0x63,0x20,0x23, + 0x37,0x62,0x37,0x62,0x39,0x63,0x39,0x63,0x64,0x36,0x64,0x36,0x22,0x2c, + 0x0a,0x22,0x78,0x20,0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x38,0x34, + 0x38,0x34,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x63,0x20,0x20,0x63, + 0x20,0x23,0x36,0x33,0x36,0x33,0x38,0x63,0x38,0x63,0x66,0x66,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x76,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62, + 0x39,0x34,0x39,0x34,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x62,0x20, + 0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x39,0x34,0x39,0x34,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x20,0x63,0x20,0x23,0x36,0x33, + 0x36,0x33,0x39,0x63,0x39,0x63,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x6d,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x39,0x63,0x39,0x63, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x20,0x63,0x20,0x23, + 0x37,0x33,0x37,0x33,0x39,0x34,0x39,0x34,0x65,0x37,0x65,0x37,0x22,0x2c, + 0x0a,0x22,0x4e,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x39,0x63, + 0x39,0x63,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x42,0x20,0x20,0x63, + 0x20,0x23,0x37,0x33,0x37,0x33,0x39,0x63,0x39,0x63,0x66,0x37,0x66,0x37, + 0x22,0x2c,0x0a,0x22,0x56,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33, + 0x61,0x35,0x61,0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x43,0x20, + 0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x61,0x64,0x61,0x64,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x20,0x63,0x20,0x23,0x37,0x62, + 0x37,0x62,0x62,0x35,0x62,0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x41,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x39,0x34,0x39,0x34, + 0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x53,0x20,0x20,0x63,0x20,0x23, + 0x38,0x63,0x38,0x63,0x39,0x34,0x39,0x34,0x62,0x64,0x62,0x64,0x22,0x2c, + 0x0a,0x22,0x44,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x39,0x34, + 0x39,0x34,0x61,0x64,0x61,0x64,0x22,0x2c,0x0a,0x22,0x46,0x20,0x20,0x63, + 0x20,0x23,0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x34,0x62,0x35,0x62,0x35, + 0x22,0x2c,0x0a,0x22,0x47,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34, + 0x39,0x63,0x39,0x63,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x48,0x20, + 0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x63,0x39,0x63,0x62,0x64, + 0x62,0x64,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x20,0x63,0x20,0x23,0x39,0x63, + 0x39,0x63,0x61,0x35,0x61,0x35,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22, + 0x4b,0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x36,0x38,0x22,0x2c,0x0a, + 0x22,0x4c,0x20,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x61,0x35,0x61, + 0x35,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x50,0x20,0x20,0x63,0x20, + 0x23,0x61,0x64,0x61,0x64,0x61,0x64,0x61,0x64,0x62,0x35,0x62,0x35,0x22, + 0x2c,0x0a,0x22,0x49,0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x61, + 0x64,0x61,0x64,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x55,0x20,0x20, + 0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x62,0x35,0x62,0x35,0x62,0x64,0x62, + 0x64,0x22,0x2c,0x0a,0x22,0x59,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62, + 0x35,0x62,0x64,0x62,0x64,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x54, + 0x20,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x37,0x34,0x22,0x2c,0x0a,0x22, + 0x52,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x39,0x34,0x39,0x34, + 0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x45,0x20,0x20,0x63,0x20,0x23, + 0x38,0x63,0x38,0x63,0x39,0x63,0x39,0x63,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x57,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x61,0x35, + 0x61,0x35,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x51,0x20,0x20,0x63, + 0x20,0x23,0x38,0x63,0x38,0x63,0x61,0x35,0x61,0x35,0x65,0x37,0x65,0x37, + 0x22,0x2c,0x0a,0x22,0x21,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34, + 0x61,0x64,0x61,0x64,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x7e,0x20, + 0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x62,0x35,0x62,0x35,0x65,0x66, + 0x65,0x66,0x22,0x2c,0x0a,0x22,0x5e,0x20,0x20,0x63,0x20,0x23,0x38,0x34, + 0x38,0x34,0x62,0x35,0x62,0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x2f,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x62,0x64,0x62,0x64, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x28,0x20,0x20,0x63,0x20,0x23, + 0x38,0x63,0x38,0x63,0x62,0x64,0x62,0x64,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x29,0x20,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x62,0x35, + 0x62,0x35,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x5f,0x20,0x20,0x63, + 0x20,0x23,0x39,0x63,0x39,0x63,0x62,0x64,0x62,0x64,0x66,0x37,0x66,0x37, + 0x22,0x2c,0x0a,0x22,0x60,0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64, + 0x61,0x64,0x61,0x64,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x27,0x20, + 0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x62,0x35,0x62,0x35,0x63,0x36, + 0x63,0x36,0x22,0x2c,0x0a,0x22,0x5d,0x20,0x20,0x63,0x20,0x23,0x62,0x35, + 0x62,0x35,0x62,0x64,0x62,0x64,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22, + 0x5b,0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62,0x64,0x62,0x64, + 0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x7b,0x20,0x20,0x63,0x20,0x23, + 0x61,0x64,0x61,0x64,0x62,0x64,0x62,0x64,0x65,0x66,0x65,0x66,0x22,0x2c, + 0x0a,0x22,0x7d,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x63,0x36, + 0x63,0x36,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x7c,0x20,0x20,0x63, + 0x20,0x23,0x39,0x34,0x39,0x34,0x63,0x65,0x63,0x65,0x66,0x66,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x20,0x2e,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63, + 0x63,0x65,0x63,0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x2e,0x2e, + 0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x64,0x36,0x64,0x36,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x58,0x2e,0x20,0x63,0x20,0x23,0x61,0x64, + 0x61,0x64,0x64,0x65,0x64,0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x6f,0x2e,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x63,0x65,0x63,0x65, + 0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x4f,0x2e,0x20,0x63,0x20,0x23, + 0x62,0x35,0x62,0x35,0x64,0x65,0x64,0x65,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2b,0x2e,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x64,0x36, + 0x64,0x36,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x40,0x2e,0x20,0x63, + 0x20,0x23,0x61,0x64,0x61,0x64,0x65,0x37,0x65,0x37,0x66,0x66,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x23,0x2e,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64, + 0x65,0x37,0x65,0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x24,0x2e, + 0x20,0x63,0x20,0x23,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30, + 0x63,0x30,0x22,0x2c,0x0a,0x22,0x25,0x2e,0x20,0x63,0x20,0x23,0x63,0x65, + 0x63,0x65,0x64,0x65,0x64,0x65,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22, + 0x26,0x2e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x65,0x37,0x65,0x37, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x2a,0x2e,0x20,0x63,0x20,0x23, + 0x63,0x36,0x63,0x36,0x65,0x66,0x65,0x66,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x3d,0x2e,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x65,0x37, + 0x65,0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x2d,0x2e,0x20,0x63, + 0x20,0x23,0x64,0x36,0x64,0x36,0x65,0x37,0x65,0x37,0x66,0x66,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x3b,0x2e,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65, + 0x65,0x37,0x65,0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3a,0x2e, + 0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x66,0x66,0x66,0x66,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x3e,0x2e,0x20,0x63,0x20,0x23,0x64,0x65, + 0x64,0x65,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x2c,0x2e,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x66,0x66,0x66,0x66, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3c,0x2e,0x20,0x63,0x20,0x23, + 0x66,0x37,0x66,0x37,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x31,0x2e,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x30,0x30, + 0x22,0x2c,0x0a,0x22,0x32,0x2e,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22, + 0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f, + 0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x47,0x20,0x51,0x20,0x6b,0x20,0x55,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x46,0x20,0x29,0x20,0x31,0x2e,0x7b,0x20,0x27,0x20, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x54,0x20,0x45,0x20,0x6f,0x2e,0x31,0x2e, + 0x3e,0x2e,0x7e,0x20,0x55,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x54,0x20,0x53,0x20, + 0x2d,0x2e,0x31,0x2e,0x3a,0x2e,0x2e,0x2e,0x4e,0x20,0x5d,0x20,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e, + 0x54,0x20,0x52,0x20,0x25,0x2e,0x31,0x2e,0x3a,0x2e,0x20,0x2e,0x28,0x20, + 0x4d,0x20,0x55,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c, + 0x0a,0x22,0x32,0x2e,0x55,0x20,0x67,0x20,0x3b,0x2e,0x31,0x2e,0x26,0x2e, + 0x7d,0x20,0x5e,0x20,0x5a,0x20,0x42,0x20,0x46,0x20,0x54,0x20,0x5b,0x20, + 0x59,0x20,0x27,0x20,0x48,0x20,0x52,0x20,0x67,0x20,0x6a,0x20,0x4d,0x20, + 0x6a,0x20,0x4c,0x20,0x22,0x2c,0x0a,0x22,0x5b,0x20,0x68,0x20,0x2d,0x2e, + 0x31,0x2e,0x2a,0x2e,0x2f,0x20,0x43,0x20,0x43,0x20,0x43,0x20,0x6d,0x20, + 0x74,0x20,0x64,0x20,0x6c,0x20,0x7a,0x20,0x57,0x20,0x5f,0x20,0x58,0x2e, + 0x3d,0x2e,0x2a,0x2e,0x23,0x2e,0x6e,0x20,0x30,0x20,0x22,0x2c,0x0a,0x22, + 0x41,0x20,0x2b,0x2e,0x3c,0x2e,0x2a,0x2e,0x7d,0x20,0x21,0x20,0x43,0x20, + 0x56,0x20,0x56,0x20,0x56,0x20,0x43,0x20,0x2e,0x2e,0x4f,0x2e,0x23,0x2e, + 0x26,0x2e,0x4f,0x2e,0x58,0x2e,0x20,0x2e,0x28,0x20,0x43,0x20,0x35,0x20, + 0x2c,0x20,0x22,0x2c,0x0a,0x22,0x57,0x20,0x2c,0x2e,0x40,0x2e,0x28,0x20, + 0x43,0x20,0x43,0x20,0x56,0x20,0x56,0x20,0x56,0x20,0x56,0x20,0x43,0x20, + 0x43,0x20,0x21,0x20,0x43,0x20,0x56,0x20,0x56,0x20,0x56,0x20,0x6d,0x20, + 0x6d,0x20,0x62,0x20,0x32,0x20,0x3e,0x20,0x22,0x2c,0x0a,0x22,0x63,0x20, + 0x7c,0x20,0x5e,0x20,0x21,0x20,0x43,0x20,0x56,0x20,0x56,0x20,0x56,0x20, + 0x56,0x20,0x56,0x20,0x56,0x20,0x56,0x20,0x6d,0x20,0x6d,0x20,0x6d,0x20, + 0x6d,0x20,0x6d,0x20,0x62,0x20,0x62,0x20,0x73,0x20,0x31,0x20,0x23,0x20, + 0x22,0x2c,0x0a,0x22,0x71,0x20,0x31,0x20,0x73,0x20,0x6d,0x20,0x56,0x20, + 0x6d,0x20,0x6d,0x20,0x6d,0x20,0x56,0x20,0x6d,0x20,0x75,0x20,0x34,0x20, + 0x35,0x20,0x79,0x20,0x69,0x20,0x61,0x20,0x61,0x20,0x73,0x20,0x61,0x20, + 0x61,0x20,0x3c,0x20,0x2c,0x20,0x22,0x2c,0x0a,0x22,0x4b,0x20,0x3b,0x20, + 0x2a,0x20,0x75,0x20,0x62,0x20,0x6d,0x20,0x6d,0x20,0x6d,0x20,0x56,0x20, + 0x62,0x20,0x2b,0x20,0x4f,0x20,0x40,0x20,0x20,0x20,0x58,0x20,0x24,0x20, + 0x3d,0x20,0x3d,0x20,0x3c,0x20,0x31,0x20,0x25,0x20,0x2d,0x20,0x22,0x2c, + 0x0a,0x22,0x32,0x2e,0x4a,0x20,0x2d,0x20,0x3d,0x20,0x72,0x20,0x63,0x20, + 0x62,0x20,0x6d,0x20,0x6d,0x20,0x63,0x20,0x37,0x20,0x4a,0x20,0x49,0x20, + 0x44,0x20,0x66,0x20,0x36,0x20,0x38,0x20,0x3b,0x20,0x2d,0x20,0x2c,0x20, + 0x2d,0x20,0x70,0x20,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x55,0x20, + 0x30,0x20,0x6f,0x20,0x33,0x20,0x61,0x20,0x62,0x20,0x62,0x20,0x76,0x20, + 0x55,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x54,0x20,0x55,0x20,0x55,0x20,0x55,0x20,0x32,0x2e,0x22,0x2c,0x0a,0x22, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x50,0x20,0x39,0x20,0x6f,0x20,0x33,0x20, + 0x73,0x20,0x73,0x20,0x78,0x20,0x49,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x59,0x20,0x77,0x20,0x6f,0x20,0x32,0x20,0x79,0x20,0x65,0x20,0x49,0x20, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x54,0x20,0x37,0x20,0x2e,0x20, + 0x2a,0x20,0x2c,0x20,0x60,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x54,0x20,0x70,0x20,0x26,0x20,0x3a,0x20,0x55,0x20,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c, + 0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e, + 0x32,0x2e,0x32,0x2e,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_newform_xpm_len = 1131; +static const unsigned char small_newform_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x20,0x6e,0x65,0x77,0x66, + 0x6f,0x72,0x6d,0x5f,0x78,0x70,0x6d,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a, + 0x22,0x33,0x34,0x20,0x32,0x36,0x20,0x36,0x20,0x31,0x22,0x2c,0x0a,0x22, + 0x20,0x09,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x22,0x2e,0x09, + 0x63,0x20,0x23,0x46,0x46,0x46,0x46,0x46,0x46,0x22,0x2c,0x0a,0x22,0x2b, + 0x09,0x63,0x20,0x23,0x30,0x30,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22, + 0x40,0x09,0x63,0x20,0x23,0x30,0x30,0x30,0x30,0x46,0x46,0x22,0x2c,0x0a, + 0x22,0x23,0x09,0x63,0x20,0x23,0x43,0x30,0x43,0x30,0x43,0x30,0x22,0x2c, + 0x0a,0x22,0x24,0x09,0x63,0x20,0x23,0x38,0x30,0x38,0x30,0x38,0x30,0x22, + 0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40, + 0x40,0x40,0x40,0x40,0x40,0x40,0x2b,0x23,0x2b,0x23,0x2b,0x23,0x2b,0x24, + 0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x24,0x2e,0x22,0x2c,0x0a, + 0x22,0x2e,0x2b,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x24, + 0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x24,0x2b,0x24,0x2e,0x22, + 0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e, + 0x2b,0x2e,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x24,0x2b,0x24, + 0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a, + 0x22,0x2e,0x2b,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x24, + 0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x24,0x2b,0x24,0x2e,0x22, + 0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e, + 0x2b,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x24,0x2b,0x24, + 0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a, + 0x22,0x2e,0x2b,0x2e,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x24, + 0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23, + 0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x24,0x2b,0x24,0x2e,0x22, + 0x2c,0x0a,0x22,0x2e,0x2b,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e,0x23,0x2e, + 0x23,0x2e,0x23,0x2e,0x23,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e, + 0x2b,0x2e,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x2b,0x24,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2b,0x2b,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x24, + 0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x2e,0x22,0x2c,0x0a, + 0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x7d,0x3b,0x0a +}; + +static const unsigned int small_print_xpm_len = 2434; +static const unsigned char small_print_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x38,0x39,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x31, + 0x30,0x31,0x30,0x30,0x38,0x30,0x38,0x31,0x30,0x31,0x30,0x22,0x2c,0x0a, + 0x22,0x58,0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x30, + 0x31,0x30,0x31,0x30,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x63,0x20,0x23,0x31, + 0x30,0x31,0x30,0x31,0x30,0x31,0x30,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a, + 0x22,0x4f,0x20,0x63,0x20,0x23,0x31,0x38,0x31,0x38,0x31,0x30,0x31,0x30, + 0x31,0x38,0x31,0x38,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x63,0x20,0x23,0x31, + 0x38,0x31,0x38,0x31,0x38,0x31,0x38,0x31,0x38,0x31,0x38,0x22,0x2c,0x0a, + 0x22,0x40,0x20,0x63,0x20,0x23,0x31,0x38,0x31,0x38,0x31,0x38,0x31,0x38, + 0x32,0x31,0x32,0x31,0x22,0x2c,0x0a,0x22,0x23,0x20,0x63,0x20,0x23,0x32, + 0x31,0x32,0x31,0x31,0x38,0x31,0x38,0x32,0x31,0x32,0x31,0x22,0x2c,0x0a, + 0x22,0x24,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x33,0x22,0x2c,0x0a, + 0x22,0x25,0x20,0x63,0x20,0x23,0x32,0x31,0x32,0x31,0x32,0x31,0x32,0x31, + 0x32,0x39,0x32,0x39,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63,0x20,0x23,0x32, + 0x39,0x32,0x39,0x32,0x31,0x32,0x31,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a, + 0x22,0x2a,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x36,0x22,0x2c,0x0a, + 0x22,0x3d,0x20,0x63,0x20,0x23,0x32,0x39,0x32,0x39,0x32,0x39,0x32,0x39, + 0x33,0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x63,0x20,0x23,0x33, + 0x31,0x33,0x31,0x32,0x39,0x32,0x39,0x33,0x31,0x33,0x31,0x22,0x2c,0x0a, + 0x22,0x3b,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x33,0x31,0x33,0x31, + 0x33,0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x3a,0x20,0x63,0x20,0x23,0x33, + 0x31,0x33,0x31,0x33,0x31,0x33,0x31,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a, + 0x22,0x3e,0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39,0x33,0x31,0x33,0x31, + 0x33,0x39,0x33,0x39,0x22,0x2c,0x0a,0x22,0x2c,0x20,0x63,0x20,0x23,0x33, + 0x39,0x33,0x39,0x33,0x39,0x33,0x39,0x33,0x39,0x33,0x39,0x22,0x2c,0x0a, + 0x22,0x3c,0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39,0x33,0x39,0x33,0x39, + 0x34,0x32,0x34,0x32,0x22,0x2c,0x0a,0x22,0x31,0x20,0x63,0x20,0x23,0x34, + 0x32,0x34,0x32,0x33,0x39,0x33,0x39,0x34,0x32,0x34,0x32,0x22,0x2c,0x0a, + 0x22,0x32,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x32,0x36,0x22,0x2c,0x0a, + 0x22,0x33,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x34,0x61,0x34,0x61, + 0x35,0x32,0x35,0x32,0x22,0x2c,0x0a,0x22,0x34,0x20,0x63,0x20,0x23,0x35, + 0x61,0x35,0x61,0x35,0x32,0x35,0x32,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a, + 0x22,0x35,0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61, + 0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x36,0x20,0x63,0x20,0x23,0x36, + 0x62,0x36,0x62,0x36,0x33,0x36,0x33,0x36,0x62,0x36,0x62,0x22,0x2c,0x0a, + 0x22,0x37,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x34,0x32,0x22,0x2c,0x0a, + 0x22,0x38,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x36,0x62,0x36,0x62, + 0x37,0x33,0x37,0x33,0x22,0x2c,0x0a,0x22,0x39,0x20,0x63,0x20,0x23,0x37, + 0x33,0x37,0x33,0x36,0x62,0x36,0x62,0x37,0x33,0x37,0x33,0x22,0x2c,0x0a, + 0x22,0x30,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x37,0x33,0x37,0x33, + 0x37,0x62,0x37,0x62,0x22,0x2c,0x0a,0x22,0x71,0x20,0x63,0x20,0x23,0x37, + 0x62,0x37,0x62,0x37,0x33,0x37,0x33,0x38,0x34,0x38,0x34,0x22,0x2c,0x0a, + 0x22,0x77,0x20,0x63,0x20,0x23,0x30,0x38,0x30,0x38,0x66,0x66,0x66,0x66, + 0x30,0x38,0x30,0x38,0x22,0x2c,0x0a,0x22,0x65,0x20,0x63,0x20,0x23,0x32, + 0x39,0x32,0x39,0x66,0x66,0x66,0x66,0x32,0x39,0x32,0x39,0x22,0x2c,0x0a, + 0x22,0x72,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x66,0x66,0x66,0x66, + 0x33,0x31,0x33,0x31,0x22,0x2c,0x0a,0x22,0x74,0x20,0x63,0x20,0x23,0x35, + 0x61,0x35,0x61,0x63,0x65,0x63,0x65,0x35,0x61,0x35,0x61,0x22,0x2c,0x0a, + 0x22,0x79,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x66,0x66,0x66,0x66, + 0x36,0x33,0x36,0x33,0x22,0x2c,0x0a,0x22,0x75,0x20,0x63,0x20,0x23,0x37, + 0x62,0x37,0x62,0x66,0x66,0x66,0x66,0x37,0x62,0x37,0x62,0x22,0x2c,0x0a, + 0x22,0x69,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x37,0x62,0x37,0x62, + 0x38,0x34,0x38,0x34,0x22,0x2c,0x0a,0x22,0x70,0x20,0x63,0x20,0x23,0x38, + 0x34,0x38,0x34,0x37,0x62,0x37,0x62,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a, + 0x22,0x61,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x37,0x62,0x37,0x62, + 0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x73,0x20,0x63,0x20,0x23,0x38, + 0x34,0x38,0x34,0x38,0x34,0x38,0x34,0x38,0x63,0x38,0x63,0x22,0x2c,0x0a, + 0x22,0x64,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x38,0x34,0x38,0x34, + 0x38,0x63,0x38,0x63,0x22,0x2c,0x0a,0x22,0x66,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x35,0x35,0x22,0x2c,0x0a,0x22,0x67,0x20,0x63,0x20,0x23,0x38, + 0x63,0x38,0x63,0x38,0x34,0x38,0x34,0x39,0x34,0x39,0x34,0x22,0x2c,0x0a, + 0x22,0x68,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x38,0x63,0x38,0x63, + 0x39,0x34,0x39,0x34,0x22,0x2c,0x0a,0x22,0x6a,0x20,0x63,0x20,0x23,0x39, + 0x34,0x39,0x34,0x38,0x63,0x38,0x63,0x39,0x34,0x39,0x34,0x22,0x2c,0x0a, + 0x22,0x6b,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x38,0x63,0x38,0x63, + 0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x35,0x38,0x22,0x2c,0x0a,0x22,0x7a,0x20,0x63,0x20,0x23,0x39, + 0x34,0x39,0x34,0x39,0x34,0x39,0x34,0x39,0x63,0x39,0x63,0x22,0x2c,0x0a, + 0x22,0x78,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x34,0x39,0x34, + 0x39,0x63,0x39,0x63,0x22,0x2c,0x0a,0x22,0x63,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x36,0x31,0x22,0x2c,0x0a,0x22,0x76,0x20,0x63,0x20,0x23,0x39, + 0x63,0x39,0x63,0x39,0x34,0x39,0x34,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a, + 0x22,0x62,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x63,0x39,0x63, + 0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x63,0x20,0x23,0x61, + 0x35,0x61,0x35,0x39,0x63,0x39,0x63,0x61,0x35,0x61,0x35,0x22,0x2c,0x0a, + 0x22,0x6d,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x39,0x63,0x39,0x63, + 0x61,0x64,0x61,0x64,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x63,0x20,0x23,0x61, + 0x64,0x61,0x64,0x39,0x63,0x39,0x63,0x61,0x64,0x61,0x64,0x22,0x2c,0x0a, + 0x22,0x4e,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35, + 0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x42,0x20,0x63,0x20,0x23,0x61, + 0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x64,0x61,0x64,0x22,0x2c,0x0a, + 0x22,0x56,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x61,0x35,0x61,0x35, + 0x61,0x64,0x61,0x64,0x22,0x2c,0x0a,0x22,0x43,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x36,0x38,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x63,0x20,0x23,0x61, + 0x64,0x61,0x64,0x61,0x64,0x61,0x64,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a, + 0x22,0x41,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x61,0x64,0x61,0x64, + 0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x53,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x37,0x31,0x22,0x2c,0x0a,0x22,0x44,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x37,0x34,0x22,0x2c,0x0a,0x22,0x46,0x20,0x63,0x20,0x23,0x39, + 0x34,0x39,0x34,0x63,0x36,0x63,0x36,0x39,0x34,0x39,0x34,0x22,0x2c,0x0a, + 0x22,0x47,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x63,0x65,0x63,0x65, + 0x61,0x35,0x61,0x35,0x22,0x2c,0x0a,0x22,0x48,0x20,0x63,0x20,0x23,0x62, + 0x64,0x62,0x64,0x64,0x36,0x64,0x36,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a, + 0x22,0x4a,0x20,0x63,0x20,0x23,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30, + 0x63,0x30,0x63,0x30,0x22,0x2c,0x0a,0x22,0x4b,0x20,0x63,0x20,0x23,0x63, + 0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a, + 0x22,0x4c,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x63,0x36,0x63,0x36, + 0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x50,0x20,0x63,0x20,0x23,0x63, + 0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a, + 0x22,0x49,0x20,0x63,0x20,0x23,0x63,0x65,0x63,0x65,0x63,0x65,0x63,0x65, + 0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x55,0x20,0x63,0x20,0x23,0x64, + 0x36,0x64,0x36,0x63,0x65,0x63,0x65,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a, + 0x22,0x59,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x63,0x65,0x63,0x65, + 0x64,0x65,0x64,0x65,0x22,0x2c,0x0a,0x22,0x54,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x38,0x34,0x22,0x2c,0x0a,0x22,0x52,0x20,0x63,0x20,0x23,0x64, + 0x36,0x64,0x36,0x64,0x36,0x64,0x36,0x64,0x65,0x64,0x65,0x22,0x2c,0x0a, + 0x22,0x45,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x36,0x64,0x36, + 0x64,0x65,0x64,0x65,0x22,0x2c,0x0a,0x22,0x57,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x38,0x37,0x22,0x2c,0x0a,0x22,0x51,0x20,0x63,0x20,0x23,0x64, + 0x65,0x64,0x65,0x64,0x36,0x64,0x36,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a, + 0x22,0x21,0x20,0x63,0x20,0x23,0x64,0x65,0x64,0x65,0x64,0x65,0x64,0x65, + 0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x7e,0x20,0x63,0x20,0x23,0x64, + 0x36,0x64,0x36,0x66,0x66,0x66,0x66,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a, + 0x22,0x5e,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x64,0x65,0x64,0x65, + 0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x2f,0x20,0x63,0x20,0x23,0x65, + 0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a, + 0x22,0x28,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x65,0x37,0x65,0x37, + 0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x29,0x20,0x63,0x20,0x23,0x65, + 0x66,0x65,0x66,0x65,0x37,0x65,0x37,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a, + 0x22,0x5f,0x20,0x63,0x20,0x23,0x65,0x66,0x65,0x66,0x65,0x66,0x65,0x66, + 0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x60,0x20,0x63,0x20,0x23,0x65, + 0x37,0x65,0x37,0x66,0x66,0x66,0x66,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a, + 0x22,0x27,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x39,0x37,0x22,0x2c,0x0a, + 0x22,0x5d,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x31,0x30,0x30,0x22,0x2c, + 0x0a,0x22,0x5b,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f, + 0x2a,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x5b, + 0x5b,0x5b,0x5b,0x5b,0x5b,0x53,0x44,0x50,0x50,0x50,0x50,0x4b,0x4b,0x44, + 0x44,0x43,0x44,0x5b,0x5b,0x5b,0x5b,0x22,0x2c,0x0a,0x22,0x5b,0x5b,0x5b, + 0x5b,0x5b,0x5b,0x44,0x5f,0x2f,0x2f,0x2f,0x2f,0x2f,0x5f,0x5f,0x5f,0x57, + 0x44,0x5b,0x5b,0x5b,0x5b,0x22,0x2c,0x0a,0x22,0x5b,0x5b,0x5b,0x5b,0x5b, + 0x5b,0x44,0x4b,0x4b,0x4b,0x50,0x50,0x4b,0x4b,0x4b,0x4b,0x44,0x4b,0x5b, + 0x5b,0x5b,0x5b,0x22,0x2c,0x0a,0x22,0x5b,0x5b,0x5b,0x5b,0x5b,0x5b,0x53, + 0x44,0x44,0x44,0x44,0x53,0x44,0x44,0x53,0x53,0x43,0x44,0x5b,0x5b,0x5b, + 0x5b,0x22,0x2c,0x0a,0x22,0x5b,0x5b,0x5b,0x5b,0x5b,0x4b,0x43,0x4b,0x44, + 0x4b,0x4b,0x4b,0x44,0x44,0x44,0x4b,0x53,0x5b,0x5b,0x5b,0x5b,0x5b,0x22, + 0x2c,0x0a,0x22,0x5b,0x5b,0x5b,0x5b,0x5b,0x44,0x44,0x53,0x44,0x44,0x44, + 0x44,0x44,0x44,0x4b,0x4b,0x53,0x5b,0x5b,0x5b,0x5b,0x5b,0x22,0x2c,0x0a, + 0x22,0x5b,0x5b,0x5b,0x5b,0x5b,0x44,0x53,0x4b,0x44,0x44,0x44,0x44,0x44, + 0x4b,0x44,0x4b,0x43,0x5b,0x5b,0x5b,0x5b,0x5b,0x22,0x2c,0x0a,0x22,0x5b, + 0x5b,0x5b,0x5b,0x5b,0x4b,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44, + 0x44,0x53,0x5b,0x5b,0x5b,0x5b,0x5b,0x22,0x2c,0x0a,0x22,0x5b,0x5b,0x5b, + 0x5b,0x5b,0x43,0x50,0x2f,0x57,0x57,0x57,0x57,0x57,0x57,0x54,0x57,0x4e, + 0x4e,0x5a,0x5b,0x5b,0x5b,0x22,0x2c,0x0a,0x22,0x5b,0x5b,0x5b,0x44,0x63, + 0x39,0x53,0x54,0x50,0x54,0x50,0x54,0x50,0x54,0x57,0x57,0x6a,0x34,0x32, + 0x37,0x53,0x5b,0x22,0x2c,0x0a,0x22,0x5b,0x5b,0x44,0x7a,0x69,0x71,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x70,0x61,0x67,0x38,0x3c,0x25,0x40,0x32, + 0x4e,0x22,0x2c,0x0a,0x22,0x5b,0x44,0x63,0x45,0x28,0x21,0x45,0x52,0x52, + 0x52,0x52,0x55,0x59,0x47,0x74,0x46,0x6e,0x32,0x23,0x23,0x4f,0x3c,0x22, + 0x2c,0x0a,0x22,0x44,0x62,0x29,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d, + 0x5d,0x7e,0x65,0x77,0x65,0x50,0x61,0x3b,0x40,0x58,0x23,0x22,0x2c,0x0a, + 0x22,0x56,0x27,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x5d,0x60, + 0x79,0x72,0x75,0x5d,0x51,0x30,0x40,0x20,0x23,0x22,0x2c,0x0a,0x22,0x42, + 0x52,0x49,0x4c,0x49,0x54,0x52,0x52,0x57,0x5e,0x21,0x45,0x21,0x52,0x48, + 0x55,0x49,0x4c,0x68,0x4f,0x20,0x40,0x22,0x2c,0x0a,0x22,0x6a,0x41,0x5a, + 0x56,0x42,0x6d,0x42,0x6e,0x6d,0x6d,0x4e,0x6d,0x6e,0x6d,0x4d,0x76,0x7a, + 0x68,0x36,0x6f,0x20,0x23,0x22,0x2c,0x0a,0x22,0x6a,0x5a,0x5a,0x6d,0x42, + 0x6e,0x6e,0x6e,0x62,0x6e,0x62,0x62,0x62,0x62,0x76,0x78,0x78,0x67,0x36, + 0x6f,0x20,0x2b,0x22,0x2c,0x0a,0x22,0x6c,0x6d,0x6d,0x6e,0x62,0x6e,0x62, + 0x62,0x62,0x76,0x63,0x76,0x78,0x78,0x78,0x76,0x6a,0x73,0x36,0x4f,0x20, + 0x33,0x22,0x2c,0x0a,0x22,0x6a,0x42,0x6e,0x6e,0x76,0x63,0x76,0x78,0x76, + 0x63,0x76,0x78,0x76,0x78,0x7a,0x6a,0x68,0x64,0x38,0x6f,0x2b,0x43,0x22, + 0x2c,0x0a,0x22,0x6c,0x73,0x64,0x67,0x66,0x67,0x64,0x68,0x67,0x64,0x68, + 0x68,0x6a,0x68,0x6a,0x6b,0x68,0x67,0x36,0x2b,0x6c,0x5b,0x22,0x2c,0x0a, + 0x22,0x53,0x39,0x25,0x40,0x24,0x25,0x26,0x26,0x26,0x3d,0x2d,0x2d,0x3a, + 0x3a,0x3e,0x3e,0x3a,0x2d,0x3a,0x6c,0x5b,0x5b,0x22,0x2c,0x0a,0x22,0x5b, + 0x5b,0x43,0x35,0x31,0x31,0x2c,0x3a,0x3b,0x3b,0x3b,0x2a,0x2a,0x25,0x2b, + 0x2b,0x2e,0x32,0x63,0x5b,0x5b,0x5b,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_right_xpm_len = 3634; +static const unsigned char small_right_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x31,0x33,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x20,0x63, + 0x20,0x23,0x30,0x30,0x30,0x30,0x31,0x38,0x31,0x38,0x66,0x37,0x66,0x37, + 0x22,0x2c,0x0a,0x22,0x2e,0x20,0x20,0x63,0x20,0x23,0x30,0x30,0x30,0x30, + 0x31,0x38,0x31,0x38,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x58,0x20, + 0x20,0x63,0x20,0x23,0x30,0x30,0x30,0x30,0x32,0x31,0x32,0x31,0x66,0x37, + 0x66,0x37,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x20,0x63,0x20,0x23,0x30,0x30, + 0x30,0x30,0x32,0x31,0x32,0x31,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x4f,0x20,0x20,0x63,0x20,0x23,0x30,0x30,0x30,0x30,0x32,0x39,0x32,0x39, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x20,0x63,0x20,0x23, + 0x31,0x30,0x31,0x30,0x33,0x31,0x33,0x31,0x65,0x66,0x65,0x66,0x22,0x2c, + 0x0a,0x22,0x40,0x20,0x20,0x63,0x20,0x23,0x31,0x38,0x31,0x38,0x33,0x31, + 0x33,0x31,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x23,0x20,0x20,0x63, + 0x20,0x23,0x31,0x38,0x31,0x38,0x33,0x39,0x33,0x39,0x65,0x37,0x65,0x37, + 0x22,0x2c,0x0a,0x22,0x24,0x20,0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30, + 0x33,0x31,0x33,0x31,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x25,0x20, + 0x20,0x63,0x20,0x23,0x31,0x30,0x31,0x30,0x33,0x39,0x33,0x39,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x26,0x20,0x20,0x63,0x20,0x23,0x32,0x39, + 0x32,0x39,0x33,0x39,0x33,0x39,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22, + 0x2a,0x20,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x33,0x39,0x33,0x39, + 0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x20,0x63,0x20,0x23, + 0x31,0x30,0x31,0x30,0x34,0x32,0x34,0x32,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x20,0x63,0x20,0x23,0x31,0x38,0x31,0x38,0x34,0x32, + 0x34,0x32,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x20,0x63, + 0x20,0x23,0x33,0x39,0x33,0x39,0x34,0x61,0x34,0x61,0x63,0x36,0x63,0x36, + 0x22,0x2c,0x0a,0x22,0x3a,0x20,0x20,0x63,0x20,0x23,0x32,0x39,0x32,0x39, + 0x35,0x32,0x35,0x32,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3e,0x20, + 0x20,0x63,0x20,0x23,0x32,0x39,0x32,0x39,0x35,0x61,0x35,0x61,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x2c,0x20,0x20,0x63,0x20,0x23,0x33,0x31, + 0x33,0x31,0x35,0x32,0x35,0x32,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22, + 0x3c,0x20,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x35,0x61,0x35,0x61, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x31,0x20,0x20,0x63,0x20,0x23, + 0x33,0x31,0x33,0x31,0x36,0x33,0x36,0x33,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x32,0x20,0x20,0x63,0x20,0x23,0x33,0x39,0x33,0x39,0x36,0x62, + 0x36,0x62,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x33,0x20,0x20,0x63, + 0x20,0x23,0x34,0x61,0x34,0x61,0x35,0x61,0x35,0x61,0x62,0x64,0x62,0x64, + 0x22,0x2c,0x0a,0x22,0x34,0x20,0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33, + 0x36,0x62,0x36,0x62,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x35,0x20, + 0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x37,0x33,0x37,0x33,0x62,0x35, + 0x62,0x35,0x22,0x2c,0x0a,0x22,0x36,0x20,0x20,0x63,0x20,0x23,0x37,0x33, + 0x37,0x33,0x37,0x62,0x37,0x62,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22, + 0x37,0x20,0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32,0x34,0x61,0x34,0x61, + 0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x38,0x20,0x20,0x63,0x20,0x23, + 0x34,0x61,0x34,0x61,0x35,0x32,0x35,0x32,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x35,0x61, + 0x35,0x61,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x30,0x20,0x20,0x63, + 0x20,0x23,0x35,0x32,0x35,0x32,0x35,0x61,0x35,0x61,0x63,0x36,0x63,0x36, + 0x22,0x2c,0x0a,0x22,0x71,0x20,0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32, + 0x36,0x33,0x36,0x33,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x77,0x20, + 0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32,0x36,0x62,0x36,0x62,0x63,0x65, + 0x63,0x65,0x22,0x2c,0x0a,0x22,0x65,0x20,0x20,0x63,0x20,0x23,0x35,0x61, + 0x35,0x61,0x36,0x62,0x36,0x62,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22, + 0x72,0x20,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x37,0x33,0x37,0x33, + 0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x74,0x20,0x20,0x63,0x20,0x23, + 0x34,0x61,0x34,0x61,0x37,0x33,0x37,0x33,0x65,0x66,0x65,0x66,0x22,0x2c, + 0x0a,0x22,0x79,0x20,0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32,0x37,0x33, + 0x37,0x33,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x75,0x20,0x20,0x63, + 0x20,0x23,0x34,0x61,0x34,0x61,0x37,0x62,0x37,0x62,0x66,0x66,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x69,0x20,0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32, + 0x37,0x62,0x37,0x62,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x70,0x20, + 0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x37,0x33,0x37,0x33,0x63,0x36, + 0x63,0x36,0x22,0x2c,0x0a,0x22,0x61,0x20,0x20,0x63,0x20,0x23,0x36,0x33, + 0x36,0x33,0x37,0x33,0x37,0x33,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22, + 0x73,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x37,0x62,0x37,0x62, + 0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x64,0x20,0x20,0x63,0x20,0x23, + 0x37,0x62,0x37,0x62,0x38,0x34,0x38,0x34,0x62,0x35,0x62,0x35,0x22,0x2c, + 0x0a,0x22,0x66,0x20,0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x38,0x34, + 0x38,0x34,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x67,0x20,0x20,0x63, + 0x20,0x23,0x35,0x61,0x35,0x61,0x38,0x34,0x38,0x34,0x65,0x66,0x65,0x66, + 0x22,0x2c,0x0a,0x22,0x68,0x20,0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32, + 0x38,0x34,0x38,0x34,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x6a,0x20, + 0x20,0x63,0x20,0x23,0x35,0x32,0x35,0x32,0x38,0x34,0x38,0x34,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x6b,0x20,0x20,0x63,0x20,0x23,0x35,0x61, + 0x35,0x61,0x38,0x63,0x38,0x63,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x6c,0x20,0x20,0x63,0x20,0x23,0x35,0x61,0x35,0x61,0x39,0x34,0x39,0x34, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x7a,0x20,0x20,0x63,0x20,0x23, + 0x36,0x62,0x36,0x62,0x38,0x34,0x38,0x34,0x64,0x36,0x64,0x36,0x22,0x2c, + 0x0a,0x22,0x78,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x38,0x63, + 0x38,0x63,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x63,0x20,0x20,0x63, + 0x20,0x23,0x37,0x33,0x37,0x33,0x38,0x34,0x38,0x34,0x63,0x36,0x63,0x36, + 0x22,0x2c,0x0a,0x22,0x76,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62, + 0x38,0x63,0x38,0x63,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x62,0x20, + 0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x38,0x34,0x38,0x34,0x65,0x37, + 0x65,0x37,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x20,0x63,0x20,0x23,0x36,0x33, + 0x36,0x33,0x38,0x63,0x38,0x63,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22, + 0x6d,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x38,0x34,0x38,0x34, + 0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x20,0x63,0x20,0x23, + 0x36,0x33,0x36,0x33,0x39,0x34,0x39,0x34,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x4e,0x20,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x39,0x34, + 0x39,0x34,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x42,0x20,0x20,0x63, + 0x20,0x23,0x36,0x62,0x36,0x62,0x39,0x63,0x39,0x63,0x66,0x66,0x66,0x66, + 0x22,0x2c,0x0a,0x22,0x56,0x20,0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33, + 0x39,0x63,0x39,0x63,0x65,0x37,0x65,0x37,0x22,0x2c,0x0a,0x22,0x43,0x20, + 0x20,0x63,0x20,0x23,0x37,0x33,0x37,0x33,0x39,0x63,0x39,0x63,0x66,0x66, + 0x66,0x66,0x22,0x2c,0x0a,0x22,0x5a,0x20,0x20,0x63,0x20,0x23,0x37,0x33, + 0x37,0x33,0x61,0x35,0x61,0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22, + 0x41,0x20,0x20,0x63,0x20,0x23,0x37,0x62,0x37,0x62,0x61,0x64,0x61,0x64, + 0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x53,0x20,0x20,0x63,0x20,0x23, + 0x38,0x34,0x38,0x34,0x38,0x34,0x38,0x34,0x62,0x35,0x62,0x35,0x22,0x2c, + 0x0a,0x22,0x44,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x38,0x63, + 0x38,0x63,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x46,0x20,0x20,0x63, + 0x20,0x23,0x38,0x63,0x38,0x63,0x39,0x34,0x39,0x34,0x62,0x35,0x62,0x35, + 0x22,0x2c,0x0a,0x22,0x47,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34, + 0x39,0x34,0x39,0x34,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x48,0x20, + 0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x39,0x63,0x39,0x63,0x62,0x35, + 0x62,0x35,0x22,0x2c,0x0a,0x22,0x4a,0x20,0x20,0x63,0x20,0x23,0x39,0x63, + 0x39,0x63,0x39,0x63,0x39,0x63,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22, + 0x4b,0x20,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x39,0x63,0x39,0x63, + 0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x4c,0x20,0x20,0x63,0x20,0x23, + 0x61,0x35,0x61,0x35,0x61,0x35,0x61,0x35,0x62,0x35,0x62,0x35,0x22,0x2c, + 0x0a,0x22,0x50,0x20,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x61,0x64, + 0x61,0x64,0x62,0x35,0x62,0x35,0x22,0x2c,0x0a,0x22,0x49,0x20,0x20,0x63, + 0x20,0x23,0x61,0x64,0x61,0x64,0x61,0x64,0x61,0x64,0x62,0x64,0x62,0x64, + 0x22,0x2c,0x0a,0x22,0x55,0x20,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35, + 0x62,0x35,0x62,0x35,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x59,0x20, + 0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x62,0x64,0x62,0x64,0x62,0x64, + 0x62,0x64,0x22,0x2c,0x0a,0x22,0x54,0x20,0x20,0x63,0x20,0x47,0x72,0x61, + 0x79,0x37,0x34,0x22,0x2c,0x0a,0x22,0x52,0x20,0x20,0x63,0x20,0x23,0x38, + 0x34,0x38,0x34,0x39,0x34,0x39,0x34,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a, + 0x22,0x45,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x39,0x34,0x39, + 0x34,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x57,0x20,0x20,0x63,0x20, + 0x23,0x38,0x63,0x38,0x63,0x61,0x35,0x61,0x35,0x63,0x65,0x63,0x65,0x22, + 0x2c,0x0a,0x22,0x51,0x20,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x61, + 0x64,0x61,0x64,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x21,0x20,0x20, + 0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x61,0x35,0x61,0x35,0x63,0x36,0x63, + 0x36,0x22,0x2c,0x0a,0x22,0x7e,0x20,0x20,0x63,0x20,0x23,0x39,0x34,0x39, + 0x34,0x61,0x64,0x61,0x64,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x5e, + 0x20,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x61,0x64,0x61,0x64,0x64, + 0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x2f,0x20,0x20,0x63,0x20,0x23,0x39, + 0x63,0x39,0x63,0x62,0x64,0x62,0x64,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a, + 0x22,0x28,0x20,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x61,0x64,0x61, + 0x64,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x29,0x20,0x20,0x63,0x20, + 0x23,0x38,0x34,0x38,0x34,0x61,0x64,0x61,0x64,0x66,0x66,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x5f,0x20,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x34,0x62, + 0x35,0x62,0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x60,0x20,0x20, + 0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x62,0x35,0x62,0x35,0x66,0x37,0x66, + 0x37,0x22,0x2c,0x0a,0x22,0x27,0x20,0x20,0x63,0x20,0x23,0x38,0x63,0x38, + 0x63,0x62,0x35,0x62,0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x5d, + 0x20,0x20,0x63,0x20,0x23,0x38,0x63,0x38,0x63,0x62,0x64,0x62,0x64,0x66, + 0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x5b,0x20,0x20,0x63,0x20,0x23,0x39, + 0x34,0x39,0x34,0x62,0x64,0x62,0x64,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a, + 0x22,0x7b,0x20,0x20,0x63,0x20,0x23,0x61,0x35,0x61,0x35,0x62,0x64,0x62, + 0x64,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x7d,0x20,0x20,0x63,0x20, + 0x23,0x62,0x35,0x62,0x35,0x62,0x35,0x62,0x35,0x63,0x36,0x63,0x36,0x22, + 0x2c,0x0a,0x22,0x7c,0x20,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x62, + 0x64,0x62,0x64,0x63,0x36,0x63,0x36,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x20, + 0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x62,0x64,0x62,0x64,0x65,0x66,0x65, + 0x66,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x20,0x63,0x20,0x23,0x38,0x63,0x38, + 0x63,0x63,0x36,0x63,0x36,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x58, + 0x2e,0x20,0x63,0x20,0x23,0x39,0x34,0x39,0x34,0x63,0x36,0x63,0x36,0x66, + 0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x6f,0x2e,0x20,0x63,0x20,0x23,0x39, + 0x34,0x39,0x34,0x63,0x65,0x63,0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a, + 0x22,0x4f,0x2e,0x20,0x63,0x20,0x23,0x39,0x63,0x39,0x63,0x63,0x65,0x63, + 0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x2b,0x2e,0x20,0x63,0x20, + 0x23,0x61,0x35,0x61,0x35,0x64,0x36,0x64,0x36,0x66,0x66,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x40,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61,0x64,0x64, + 0x65,0x64,0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x23,0x2e,0x20, + 0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x64,0x36,0x64,0x36,0x66,0x66,0x66, + 0x66,0x22,0x2c,0x0a,0x22,0x24,0x2e,0x20,0x63,0x20,0x23,0x61,0x64,0x61, + 0x64,0x65,0x37,0x65,0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x25, + 0x2e,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x65,0x37,0x65,0x37,0x66, + 0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x26,0x2e,0x20,0x63,0x20,0x23,0x62, + 0x64,0x62,0x64,0x65,0x37,0x65,0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a, + 0x22,0x2a,0x2e,0x20,0x63,0x20,0x23,0x62,0x64,0x62,0x64,0x65,0x66,0x65, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3d,0x2e,0x20,0x63,0x20, + 0x23,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x22, + 0x2c,0x0a,0x22,0x2d,0x2e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x63, + 0x65,0x63,0x65,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x3b,0x2e,0x20, + 0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x65,0x66,0x65,0x66,0x66,0x66,0x66, + 0x66,0x22,0x2c,0x0a,0x22,0x3a,0x2e,0x20,0x63,0x20,0x23,0x63,0x65,0x63, + 0x65,0x65,0x66,0x65,0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3e, + 0x2e,0x20,0x63,0x20,0x23,0x63,0x36,0x63,0x36,0x66,0x37,0x66,0x37,0x66, + 0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x2c,0x2e,0x20,0x63,0x20,0x23,0x63, + 0x65,0x63,0x65,0x66,0x37,0x66,0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a, + 0x22,0x3c,0x2e,0x20,0x63,0x20,0x23,0x64,0x36,0x64,0x36,0x66,0x37,0x66, + 0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x31,0x2e,0x20,0x63,0x20, + 0x23,0x65,0x37,0x65,0x37,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x22, + 0x2c,0x0a,0x22,0x32,0x2e,0x20,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c, + 0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a, + 0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x54,0x20,0x21,0x20,0x66,0x20,0x47, + 0x20,0x54,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x59, + 0x20,0x2d,0x2e,0x3b,0x2e,0x74,0x20,0x44,0x20,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x54,0x20,0x7b,0x20,0x2a,0x2e,0x6f,0x2e,0x68, + 0x20,0x70,0x20,0x54,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22, + 0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x59,0x20,0x2f, + 0x20,0x4f,0x2e,0x2b,0x2e,0x4f,0x2e,0x75,0x20,0x36,0x20,0x54,0x20,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x54,0x20,0x51,0x20,0x58,0x2e,0x58,0x2e,0x6f,0x2e,0x4f, + 0x2e,0x6b,0x20,0x61,0x20,0x55,0x20,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a, + 0x22,0x50,0x20,0x45,0x20,0x6d,0x20,0x7a,0x20,0x63,0x20,0x52,0x20,0x4b, + 0x20,0x7d,0x20,0x54,0x20,0x7c,0x20,0x54,0x20,0x48,0x20,0x56,0x20,0x5d, + 0x20,0x5d,0x20,0x5d,0x20,0x58,0x2e,0x58,0x2e,0x6c,0x20,0x39,0x20,0x49, + 0x20,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x78,0x20,0x3c,0x2e,0x31,0x2e,0x3a, + 0x2e,0x23,0x2e,0x4f,0x2e,0x60,0x20,0x28,0x20,0x57,0x20,0x7e,0x20,0x5e, + 0x20,0x20,0x2e,0x27,0x20,0x41,0x20,0x5f,0x20,0x5f,0x20,0x5d,0x20,0x5d, + 0x20,0x5d,0x20,0x6a,0x20,0x77,0x20,0x50,0x20,0x22,0x2c,0x0a,0x22,0x67, + 0x20,0x3e,0x2e,0x25,0x2e,0x24,0x2e,0x40,0x2e,0x25,0x2e,0x25,0x2e,0x26, + 0x2e,0x3b,0x2e,0x2c,0x2e,0x3c,0x2e,0x3b,0x2e,0x5b,0x20,0x41,0x20,0x5f, + 0x20,0x5f,0x20,0x5f,0x20,0x29,0x20,0x5f,0x20,0x5d,0x20,0x75,0x20,0x71, + 0x20,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x24,0x2e,0x4f,0x2e,0x5b,0x20,0x5d, + 0x20,0x5d,0x20,0x5d,0x20,0x5f,0x20,0x5d,0x20,0x5d,0x20,0x5d,0x20,0x5f, + 0x20,0x41,0x20,0x29,0x20,0x41,0x20,0x29,0x20,0x41,0x20,0x41,0x20,0x5a, + 0x20,0x5a,0x20,0x4d,0x20,0x2c,0x20,0x22,0x2c,0x0a,0x22,0x67,0x20,0x4f, + 0x2e,0x58,0x2e,0x5f,0x20,0x5f,0x20,0x41,0x20,0x41,0x20,0x41,0x20,0x41, + 0x20,0x41,0x20,0x41,0x20,0x41,0x20,0x5f,0x20,0x41,0x20,0x41,0x20,0x41, + 0x20,0x41,0x20,0x5a,0x20,0x4e,0x20,0x6a,0x20,0x3e,0x20,0x23,0x20,0x22, + 0x2c,0x0a,0x22,0x72,0x20,0x2e,0x2e,0x5f,0x20,0x5a,0x20,0x42,0x20,0x4d, + 0x20,0x6b,0x20,0x6b,0x20,0x75,0x20,0x32,0x20,0x32,0x20,0x6b,0x20,0x41, + 0x20,0x41,0x20,0x41,0x20,0x41,0x20,0x43,0x20,0x42,0x20,0x69,0x20,0x3a, + 0x20,0x6f,0x20,0x33,0x20,0x22,0x2c,0x0a,0x22,0x65,0x20,0x79,0x20,0x31, + 0x20,0x3a,0x20,0x2d,0x20,0x24,0x20,0x2b,0x20,0x40,0x20,0x26,0x20,0x3b, + 0x20,0x3b,0x20,0x2b,0x20,0x6b,0x20,0x29,0x20,0x5a,0x20,0x5a,0x20,0x42, + 0x20,0x75,0x20,0x2d,0x20,0x6f,0x20,0x37,0x20,0x55,0x20,0x22,0x2c,0x0a, + 0x22,0x4c,0x20,0x39,0x20,0x26,0x20,0x26,0x20,0x33,0x20,0x34,0x20,0x53, + 0x20,0x4a,0x20,0x55,0x20,0x54,0x20,0x54,0x20,0x46,0x20,0x62,0x20,0x5a, + 0x20,0x43,0x20,0x4e,0x20,0x6a,0x20,0x2d,0x20,0x6f,0x20,0x2a,0x20,0x4c, + 0x20,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x59,0x20,0x50,0x20,0x59, + 0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x54,0x20,0x57,0x20,0x4d,0x20,0x4d,0x20,0x79,0x20,0x25,0x20,0x6f, + 0x20,0x38,0x20,0x50,0x20,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x57,0x20,0x6a,0x20,0x79, + 0x20,0x3d,0x20,0x2e,0x20,0x30,0x20,0x59,0x20,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x76,0x20,0x3c,0x20,0x25,0x20,0x58,0x20,0x34,0x20,0x50,0x20,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x73,0x20,0x4f,0x20,0x20,0x20,0x35, + 0x20,0x7c,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22, + 0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x44, + 0x20,0x26,0x20,0x64,0x20,0x54,0x20,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a,0x22,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x22,0x2c,0x0a, + 0x22,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32,0x2e,0x32, + 0x2e,0x32,0x2e,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_adjustsize_png_len = 495; +static const unsigned char small_adjustsize_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x81,0x49,0x44,0x41,0x54,0x28,0x15,0x05,0xc1, + 0x3b,0x6e,0x13,0x41,0x00,0x00,0xd0,0x37,0xeb,0xb1,0xc9,0x5a,0x96,0x50, + 0x10,0x14,0x71,0x44,0x42,0x83,0x90,0xa8,0x88,0x28,0xb8,0x47,0x6e,0x41, + 0x81,0xa0,0xa2,0x40,0x42,0xb4,0x40,0x9b,0xe4,0x0c,0x50,0x50,0xd3,0xd0, + 0x70,0x19,0x0c,0xa2,0xc0,0x90,0x58,0xd9,0xcc,0xee,0x7c,0x78,0x2f,0x36, + 0x21,0x98,0x99,0xe9,0x04,0x01,0x40,0xd3,0x54,0x45,0x69,0x0d,0x80,0x18, + 0x82,0x85,0xa5,0x95,0xde,0x42,0x07,0xa0,0xca,0x46,0x83,0x31,0x4c,0x9a, + 0xaa,0xc8,0x4a,0x34,0xb3,0x3c,0xfd,0x03,0x00,0x00,0x8f,0xf5,0xe6,0xe6, + 0x3a,0xbc,0x5c,0xdb,0x19,0xa2,0x99,0x55,0xf5,0x19,0x00,0xc0,0x85,0x27, + 0xd6,0xee,0x58,0x59,0x38,0x63,0x6d,0x63,0x8a,0x3a,0x7d,0x95,0x00,0x00, + 0x64,0xbf,0x2d,0xf5,0x16,0x3a,0x95,0x7d,0x5b,0x97,0x51,0xb0,0x28,0xae, + 0x01,0x00,0x8c,0xb6,0xee,0x1a,0xf4,0x3a,0x85,0x5e,0xd4,0x45,0x41,0x37, + 0xd9,0x01,0x00,0x48,0xae,0x25,0xc9,0xa8,0x53,0x00,0x11,0x8a,0x1d,0xe0, + 0x04,0x3c,0x74,0x2e,0x29,0x26,0xa3,0x24,0xc8,0x80,0x08,0xd9,0x0e,0x00, + 0x0f,0x7c,0xb0,0x34,0x9a,0x8c,0x46,0x49,0x30,0x01,0x22,0x64,0x3b,0x00, + 0xf7,0x5d,0xf9,0xa5,0x97,0x4c,0x46,0x49,0x42,0x06,0x44,0xc8,0xae,0x00, + 0x47,0xde,0xb8,0xf2,0xce,0x6b,0x49,0x36,0x4a,0x12,0x26,0x40,0xd4,0xd4, + 0xec,0x1a,0xf0,0xca,0x9e,0x3d,0x2f,0xbc,0xf7,0xcc,0x81,0x6c,0x74,0xa3, + 0xca,0x80,0xa8,0xc9,0xd5,0x57,0x00,0xc0,0x53,0xdf,0x1d,0x3b,0x96,0xfd, + 0x70,0x20,0x03,0xa2,0x6a,0x7c,0xe4,0xc4,0x3f,0x83,0x0c,0xe0,0xd0,0x91, + 0x4f,0xee,0x29,0x3e,0xba,0x30,0x01,0xa2,0x62,0xe8,0xac,0xcc,0x4c,0x2a, + 0x80,0xce,0xa1,0xe7,0xce,0xed,0xd9,0xb8,0x91,0x01,0x51,0x31,0x32,0x17, + 0x54,0x0d,0x40,0xd0,0x29,0x6e,0xd9,0x20,0xc9,0x80,0xd8,0x5a,0x98,0x9a, + 0xce,0x5c,0x03,0x00,0x7f,0x9d,0xf9,0x09,0x46,0x13,0x20,0xa2,0x55,0x05, + 0x00,0xc0,0x6d,0x6f,0x01,0x49,0x01,0x44,0xd4,0xe2,0x1b,0x00,0x00,0x00, + 0xc0,0x20,0xab,0x11,0xe5,0xcb,0xda,0xda,0xbe,0x1e,0x00,0x00,0xc0,0x60, + 0x6b,0x50,0x22,0xb2,0x9d,0x8d,0xad,0x08,0x00,0x00,0x20,0x1b,0xec,0xe4, + 0x88,0x62,0x30,0xb9,0xd4,0x01,0x00,0x00,0xa8,0x8a,0xac,0xfc,0x07,0xf0, + 0x84,0xac,0x17,0x4d,0x9c,0xec,0x12,0x00,0x00,0x00,0x00,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_buttongroup_png_len = 648; +static const unsigned char small_buttongroup_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0x1a,0x49,0x44,0x41,0x54,0x48,0xc7,0xb5,0x94, + 0xbf,0x8b,0x1a,0x41,0x14,0xc7,0x97,0x80,0x20,0x78,0x57,0xe4,0x9f,0xb0, + 0xb3,0x4b,0x65,0x40,0xf0,0x17,0x57,0x9c,0xdb,0x88,0x6b,0x11,0x41,0x2c, + 0x02,0x82,0x88,0x85,0x68,0x63,0x21,0x16,0x16,0x0a,0x16,0x12,0x10,0x44, + 0x10,0x11,0xc5,0x1f,0x8d,0x68,0x11,0xb0,0x11,0x22,0x11,0xb1,0xb2,0xb0, + 0x31,0x85,0x8d,0x8d,0x85,0x8d,0x85,0x85,0x20,0xc8,0xcb,0xbc,0xc7,0xce, + 0xb0,0xdc,0xa8,0x47,0xf0,0x22,0x7c,0x98,0x99,0xaf,0xbb,0x1f,0xc7,0x37, + 0xcc,0x53,0x00,0x40,0xf9,0x1f,0xc8,0x81,0xa2,0x68,0x8c,0x5f,0x0c,0xb8, + 0x03,0x7e,0xaf,0xbd,0x2b,0x66,0x9f,0x4f,0x0c,0x13,0xc3,0xcc,0xf8,0xfd, + 0x8e,0x94,0x83,0xcf,0x3d,0x1b,0x78,0x62,0x58,0x74,0x87,0x89,0xa4,0x4e, + 0xa7,0xf3,0x9b,0xdb,0xed,0x9e,0x79,0x3c,0x1e,0x78,0x04,0x97,0xcb,0xb5, + 0xb0,0xdb,0xed,0x51,0xe6,0xfc,0x8c,0x62,0x13,0x4a,0x57,0xab,0x15,0x5c, + 0x2e,0x97,0x87,0x40,0x07,0xdb,0xe4,0x92,0x39,0xad,0x28,0x36,0xe3,0xaf, + 0x9d,0xcf,0x67,0x62,0x3c,0x1e,0xc3,0x70,0x38,0x84,0x6e,0xb7,0x0b,0xc5, + 0x62,0x51,0xe4,0xbc,0x04,0xf3,0xf9,0x5c,0x64,0xd7,0x40,0x17,0x7b,0xce, + 0x8e,0x62,0x0b,0x2e,0x4e,0xa7,0x13,0x31,0x18,0x0c,0xe0,0xcb,0xcf,0xef, + 0xa0,0x74,0x3d,0x10,0x8b,0xc5,0x44,0x8e,0x94,0x4a,0x25,0x92,0x1b,0xb3, + 0xb7,0xe8,0xe2,0x17,0x14,0x3f,0xe1,0xe2,0x78,0x3c,0x12,0xed,0x76,0x9b, + 0xa4,0xca,0x8f,0xaf,0x10,0x89,0x44,0x44,0x8e,0x42,0xe3,0x78,0x0b,0x5d, + 0xfc,0x8a,0xe2,0x67,0x5c,0x1c,0x0e,0x07,0x22,0x9f,0xcf,0x43,0x34,0x1a, + 0x85,0x70,0x38,0x0c,0xc1,0x60,0x50,0xe4,0xf1,0x78,0x5c,0x94,0xa3,0x50, + 0x28,0x50,0xf6,0x76,0x44,0x74,0xb1,0x2a,0xc4,0xfb,0xfd,0xfe,0x43,0x90, + 0xc4,0xbb,0xdd,0x8e,0x18,0x8d,0x46,0xd0,0xeb,0xf5,0xa0,0xd1,0x68,0x40, + 0x36,0x9b,0x15,0x39,0xee,0x94,0xcf,0xef,0x21,0x89,0xb7,0xdb,0x2d,0xd1, + 0xe9,0x74,0xc4,0xe1,0x61,0x8d,0x79,0xce,0xcb,0x90,0xcb,0xe5,0x44,0x76, + 0x0d,0x49,0xbc,0xd9,0x6c,0x88,0x5a,0xad,0x26,0x0e,0x0f,0x6b,0xcc,0x73, + 0x94,0x1a,0xc7,0x5b,0x48,0xe2,0xf5,0x7a,0x4d,0xa4,0xd3,0x69,0x08,0x85, + 0x42,0x10,0x08,0x04,0x40,0x55,0x55,0x91,0xf3,0x1d,0x67,0x32,0x19,0x5a, + 0xdf,0x1a,0x25,0x31,0xde,0x9a,0x8f,0x40,0x12,0x2f,0x97,0x4b,0xa2,0xdf, + 0xef,0xd3,0xc1,0x55,0x2a,0x15,0x48,0x26,0x93,0x22,0x6f,0xb5,0x5a,0xb4, + 0xe3,0x54,0x2a,0x25,0xb2,0x6b,0x48,0xe2,0xc5,0x62,0x41,0xd4,0xeb,0x75, + 0x71,0x78,0x9a,0xa6,0x89,0x1c,0xa5,0x7c,0x7e,0x0f,0x49,0x3c,0x9b,0xcd, + 0x88,0x72,0xb9,0x2c,0x0e,0x0f,0x6b,0xcc,0x73,0x14,0xf3,0xf9,0x3d,0x8c, + 0x62,0xba,0xd2,0xd3,0xe9,0x94,0xc0,0xfe,0xe0,0xf7,0xfb,0xc1,0xe7,0xf3, + 0x81,0xd7,0xeb,0x15,0x79,0xb5,0x5a,0x25,0x79,0x22,0x91,0xa0,0xf5,0xad, + 0xd1,0x78,0xa5,0x2d,0xd8,0x47,0x9b,0xcd,0x26,0x4c,0x26,0x93,0x87,0x40, + 0x87,0xc3,0xe1,0xf8,0xc3,0x9b,0x90,0x19,0x9b,0x33,0xf6,0xd1,0x47,0x1b, + 0x3d,0x4a,0x6d,0x36,0x5b,0x89,0xb7,0x4d,0x93,0xde,0xf1,0xad,0x7a,0xf0, + 0xa2,0xff,0x15,0xf5,0x1f,0x79,0xd5,0xdf,0x45,0x87,0xf5,0x2f,0xff,0xbc, + 0x8d,0x3a,0x81,0x5d,0xdc,0x05,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44, + 0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_checkbox_png_len = 817; +static const unsigned char small_checkbox_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0xc3,0x49,0x44,0x41,0x54,0x48,0xc7,0xcd,0xd5, + 0xdd,0x4b,0x53,0x71,0x1c,0xc7,0xf1,0x19,0x4b,0x06,0xba,0x34,0xbd,0x69, + 0x12,0xa2,0x5e,0x68,0x74,0x93,0xba,0xf2,0xa2,0x89,0xc3,0x39,0x6f,0xd4, + 0xcd,0x21,0x08,0xd1,0x1f,0x90,0xbb,0x88,0xcd,0x3d,0x34,0x63,0x93,0xe6, + 0xc3,0xa6,0x6d,0xea,0x36,0x1f,0x26,0xdb,0x45,0xed,0x79,0x16,0x74,0xd3, + 0x75,0x50,0x74,0x19,0x04,0x5d,0x94,0xe2,0x8d,0xf8,0xa7,0x7c,0xfa,0xfc, + 0x8e,0xe7,0x94,0x5b,0xa6,0x53,0x08,0x1a,0xbc,0x61,0xb2,0xdf,0xef,0xb5, + 0xb3,0xc3,0xf7,0x77,0x54,0x01,0x50,0xfd,0x8b,0x54,0xff,0x2d,0xcc,0xd7, + 0x03,0x96,0x61,0x41,0x76,0x8b,0x5d,0xfb,0x05,0xf3,0x55,0xc7,0xd4,0x4c, + 0xc3,0x1a,0x98,0xb6,0xc6,0x8c,0xac,0xb8,0x3b,0x30,0x80,0xe7,0xcd,0xcd, + 0x02,0x7a,0xc5,0xda,0x25,0x4b,0x86,0xd5,0xc1,0x60,0x10,0x4e,0xa7,0x13, + 0x33,0x33,0x33,0x35,0x35,0x3d,0x3d,0x8d,0xce,0xce,0x4e,0xa4,0x4c,0x26, + 0x1c,0x8d,0x8e,0xe2,0x3b,0xaf,0xf1,0x29,0xa3,0x15,0x95,0x2e,0x4e,0x86, + 0x35,0x02,0x7d,0xb3,0xb7,0x87,0x4c,0xe6,0x35,0xb2,0xd9,0x2c,0x72,0xb9, + 0x1c,0xf2,0xac,0x50,0xc8,0xa3,0x58,0x2c,0xa2,0x54,0x2a,0xa2,0x5c,0x2e, + 0x49,0x6b,0xa2,0xd1,0x28,0xc6,0xc7,0xc7,0x25,0xf4,0x78,0x62,0x02,0x3f, + 0x08,0xbe,0x63,0xb3,0x27,0xf0,0x7b,0x76,0x53,0x81,0x1b,0xc4,0x55,0x08, + 0x74,0x65,0x65,0x05,0x2f,0x57,0x57,0x11,0x89,0x44,0x08,0x44,0xb0,0xbe, + 0xb6,0x86,0x8d,0x8d,0x75,0xc4,0x63,0x31,0x24,0x12,0x71,0x3c,0x9f,0x9b, + 0xc3,0xf0,0xf0,0x70,0x05,0xfa,0x96,0x3d,0x39,0x41,0x3f,0xb2,0xc7,0xac, + 0x45,0x81,0xb5,0x02,0xce,0x66,0x33,0x67,0xa0,0x1b,0xb5,0xa2,0x5f,0x98, + 0x83,0x75,0xb0,0xc6,0x0a,0x58,0xfc,0x7c,0x81,0x2e,0x2d,0x2e,0xc2,0x66, + 0xb3,0xc1,0x68,0x34,0xc2,0xeb,0xf1,0x20,0x11,0x8f,0x61,0xee,0x7c,0x94, + 0xb7,0x58,0xf5,0x82,0xdd,0x63,0xcd,0xec,0xfa,0x1f,0xb0,0x40,0x4d,0xdc, + 0x3c,0xdf,0xdb,0x8b,0x2d,0x9d,0x0e,0x43,0x43,0x43,0xf0,0x78,0xdc,0xe7, + 0xa1,0xa2,0x24,0x1b,0x65,0xb7,0x25,0x54,0x4c,0xd9,0x69,0x38,0x9f,0xcf, + 0xc1,0x36,0x39,0x29,0xa1,0xc7,0x56,0x2b,0x0e,0xdb,0xdb,0x11,0xe7,0xc6, + 0xb6,0xb6,0x36,0xa4,0x08,0x57,0xa3,0x77,0x7a,0x7a,0x14,0x98,0x7f,0xaa, + 0xee,0x4b,0xf7,0x96,0xe8,0xe9,0x39,0x96,0xe0,0x42,0xa1,0x80,0xc1,0xc1, + 0x41,0xec,0x12,0x3a,0xec,0xe8,0xc0,0x41,0x6b,0x2b,0xf6,0xb5,0x5a,0x7c, + 0xd6,0xeb,0x71,0x64,0x36,0x57,0xa0,0xfd,0xfd,0xfd,0x98,0x9a,0x9a,0x52, + 0xe0,0x47,0xec,0x2e,0xbb,0x51,0x71,0xf2,0x14,0x58,0x8c,0x95,0xdb,0xed, + 0x86,0xc1,0xf0,0x10,0xdb,0xfc,0x48,0xa0,0x07,0x4d,0x4d,0x38,0x68,0x69, + 0xc1,0xb7,0x2a,0xd4,0x6e,0xb7,0xc3,0xe5,0x9a,0x55,0x60,0x1b,0xeb,0x11, + 0xce,0x99,0x70,0x89,0x70,0x8c,0x53,0xe0,0x76,0xb9,0xa0,0xe3,0xfd,0xfd, + 0xc4,0x2b,0xdf,0xaf,0xaf,0xc7,0x07,0x2e,0xcb,0x55,0xa1,0x62,0x04,0xfd, + 0x7e,0xbf,0x02,0x5b,0x59,0xf7,0x5f,0xe1,0x72,0xa9,0xc4,0x09,0x88,0x4b, + 0xe3,0x65,0xb5,0x58,0x10,0x68,0x6c,0xc4,0x57,0x2e,0x29,0x2b,0x68,0x5f, + 0x9f,0x74,0xea,0x04,0x9a,0x4e,0xa7,0xb1,0xb0,0x10,0x54,0x60,0xcb,0xb9, + 0xf0,0x5e,0xb9,0x8c,0xcd,0xcd,0x04,0xb6,0xb6,0x36,0x11,0x0e,0x87,0x31, + 0x32,0x62,0x82,0x53,0x3e,0x51,0x7a,0xde,0x67,0xbb,0x5d,0x41,0x53,0x9c, + 0xa0,0x2c,0x42,0xa1,0xe5,0xda,0x60,0x71,0x5c,0x05,0xba,0xb3,0xb3,0x8d, + 0x64,0x32,0xc9,0x53,0x18,0x86,0x95,0xd3,0x61,0x30,0x18,0xe0,0x70,0x38, + 0xa4,0x5f,0x92,0x4e,0x11,0xe5,0x91,0x2f,0x16,0x0b,0xfc,0xf2,0xd0,0xc5, + 0xf0,0xd8,0xd8,0x18,0xe2,0x3c,0x08,0x5e,0xaf,0x17,0x3e,0x9f,0x4f,0x3a, + 0x10,0xe2,0xa4,0x89,0xf7,0x3e,0xdf,0x33,0xa9,0x40,0xc0,0x0f,0xf1,0xb0, + 0x0a,0x2d,0x2f,0x21,0x1c,0x0a,0x61,0x3e,0x10,0xb8,0x10,0x6e,0x50,0xfd, + 0x1e,0xf6,0xab,0x64,0x66,0x5d,0xc2,0xa9,0x86,0xc5,0x73,0x58,0xc7,0xf4, + 0xf2,0x22,0xcb,0x25,0x32,0xcb,0xfb,0xc4,0x7e,0x4d,0x35,0xac,0x96,0x1f, + 0xdc,0x3a,0xf9,0x9b,0xbb,0x2f,0x51,0x97,0xbc,0x4f,0xec,0x57,0x57,0xc3, + 0x57,0xfd,0x0f,0xa2,0x95,0xd7,0x6b,0xe4,0xfd,0x75,0x0a,0xfc,0x13,0xde, + 0x0c,0x36,0x4e,0x07,0x4d,0xc5,0xde,0x00,0x00,0x00,0x00,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_closebutton_png_len = 585; +static const unsigned char small_closebutton_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x19,0x74,0x45,0x58,0x74,0x53, + 0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62,0x65,0x20, + 0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9,0x65,0x3c, + 0x00,0x00,0x01,0xeb,0x49,0x44,0x41,0x54,0x78,0x9c,0xa5,0x95,0xcb,0x6a, + 0xdb,0x50,0x10,0x86,0x3f,0xd9,0xb2,0x53,0x15,0x8b,0xa6,0xd4,0x25,0x86, + 0x6e,0x9c,0x8d,0xbd,0xee,0xaa,0xd0,0xbc,0x48,0xdf,0xa0,0xd0,0x17,0x31, + 0x86,0xbe,0x43,0xf6,0x7d,0x0b,0x83,0x37,0x01,0xb7,0x38,0x02,0x9b,0xba, + 0x18,0xd2,0x65,0x4a,0x4f,0x20,0xc2,0x6a,0x84,0xa5,0x73,0xc9,0x42,0x17, + 0x24,0x45,0x35,0xb6,0xf3,0xc3,0xc0,0xb9,0xcc,0xf9,0x34,0x67,0xe6,0x30, + 0xb2,0x80,0xc6,0x78,0x3c,0xfe,0xa4,0xb5,0xfe,0x22,0x84,0xb8,0x08,0x82, + 0x80,0x43,0xe5,0xfb,0x3e,0x9e,0xe7,0x5d,0x2d,0x97,0xcb,0x4b,0xe0,0x1b, + 0xf0,0x00,0xd0,0x1a,0x8d,0x46,0xd3,0xf5,0x7a,0x6d,0x94,0x52,0x47,0xdb, + 0x64,0x32,0x31,0xc0,0x0f,0x60,0x00,0xbc,0xb6,0x81,0xa6,0x10,0xe2,0xa2, + 0xdf,0xef,0xa3,0x94,0x3a,0x38,0xda,0x4c,0x8e,0xe3,0x00,0xbc,0x07,0xba, + 0xc0,0x3f,0x1b,0x68,0x06,0x41,0x80,0x94,0x12,0x63,0xcc,0xd1,0xe0,0x28, + 0x8a,0xb2,0xa1,0x0b,0x9c,0xd8,0x80,0x05,0xa0,0xb5,0x2e,0x45,0xdc,0x71, + 0x5d,0x00,0x82,0xcd,0xe6,0x09,0xa4,0x6e,0xaf,0x70,0xd6,0x06,0x9a,0x39, + 0x58,0x29,0x55,0x9b,0x8a,0x8e,0xeb,0xe2,0xdf,0xdf,0xe7,0xf3,0x57,0xa7, + 0xa7,0x75,0x30,0xb4,0xd6,0xd9,0xb0,0x01,0x58,0x8d,0xa2,0x93,0x94,0x32, + 0xb7,0x3b,0x21,0x4a,0x30,0x29,0x65,0x09,0x7a,0x27,0x44,0xc9,0xbf,0x1a, + 0x94,0x5d,0x05,0x17,0xf5,0xe7,0xf6,0x96,0xb3,0x5e,0x0f,0x80,0x37,0xdd, + 0x6e,0x69,0x9d,0x8a,0x6f,0x15,0x9c,0x47,0x5c,0x85,0x96,0x20,0x3b,0xe6, + 0x00,0x71,0x1c,0x13,0xc7,0x71,0x7d,0xc4,0x52,0xca,0x62,0x65,0x73,0xf5, + 0xcf,0xcf,0x4b,0xf3,0xb3,0x5e,0x8f,0xdf,0x37,0x37,0x44,0x51,0x44,0xbb, + 0xdd,0xde,0x2f,0xe2,0x28,0x8a,0x4a,0x56,0x84,0xfe,0x5a,0xad,0x9e,0x7c, + 0xac,0xe8,0x5b,0xbd,0x71,0x6d,0xf1,0x00,0x06,0xc3,0x61,0xee,0xb4,0x5c, + 0x2c,0x90,0x52,0xb2,0x5c,0x2c,0xf2,0xb5,0xc1,0x70,0xb8,0xb3,0x78,0x39, + 0x38,0xcb,0x53,0x1c,0xc7,0x84,0x61,0x98,0x3b,0x5c,0xcf,0xe7,0xa5,0xbd, + 0xeb,0xf9,0x9c,0xba,0x33,0xd5,0x88,0xff,0xfb,0x2a,0xbe,0xcf,0x66,0x59, + 0x8e,0xa8,0xaa,0x6e,0x6f,0x27,0xb8,0x5a,0xd9,0x43,0xb4,0xf3,0x1d,0x3f, + 0xa7,0x09,0xd5,0x81,0x8d,0xef,0xfb,0xb5,0x05,0xd8,0x57,0xdb,0xed,0x96, + 0x42,0x1f,0xd7,0x80,0xb1,0x01,0xe3,0x79,0xde,0xd5,0x74,0x3a,0xfd,0xe0, + 0x38,0xce,0x51,0xf0,0x30,0x0c,0x99,0x25,0x79,0x5f,0x01,0x12,0x50,0x00, + 0x2f,0x80,0xcf,0x24,0x4d,0xda,0x3c,0xc3,0x7e,0x02,0x5f,0x81,0x8f,0xc0, + 0x3b,0x0b,0x68,0x01,0x1d,0xe0,0x2d,0x49,0x93,0x76,0x49,0x52,0x94,0x3f, + 0xc5,0x3d,0xa4,0xd3,0x48,0x37,0x80,0x00,0xfe,0x5a,0x29,0xa0,0x05,0xbc, + 0x4c,0xed,0x04,0x68,0x92,0xb6,0xd3,0x3d,0x65,0xd2,0xeb,0x6f,0x49,0xfe, + 0x77,0x0f,0x96,0x31,0x06,0xcb,0xb2,0x1a,0x29,0x2c,0x33,0xeb,0x08,0x70, + 0x06,0x57,0x80,0x7a,0x04,0xa5,0x20,0xa7,0x6d,0xec,0x70,0x28,0x0f,0x00, + 0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_combobox_png_len = 549; +static const unsigned char small_combobox_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xb7,0x49,0x44,0x41,0x54,0x48,0xc7,0xad,0x95, + 0x3f,0x48,0x02,0x51,0x18,0xc0,0x1f,0x4d,0x41,0xb4,0xb4,0x05,0xed,0x2d, + 0x12,0xa8,0x8b,0x34,0xd8,0x72,0x26,0x04,0x65,0x09,0x21,0xb4,0x27,0xcd, + 0x0d,0x62,0xbb,0x93,0x42,0x8b,0x83,0x28,0x88,0xa0,0xcb,0x0d,0x82,0xe0, + 0xe2,0xe2,0xa2,0x9e,0x1e,0xa2,0x90,0x82,0x48,0x74,0x82,0x21,0x38,0xb8, + 0x88,0x6e,0x6e,0x5f,0xef,0x7b,0x79,0xd7,0xa9,0x4f,0xe9,0xee,0x1c,0x7e, + 0xbc,0x7f,0xf7,0x7e,0xef,0xf1,0xbd,0x77,0xdf,0x23,0x84,0x90,0x27,0xca, + 0x27,0x05,0xf6,0x80,0x42,0x79,0xa1,0x9c,0x50,0x88,0x54,0xab,0xd5,0x60, + 0xb1,0x58,0xfc,0x8b,0x64,0x32,0xb9,0x75,0x0c,0x3d,0xd4,0xf7,0x41,0x39, + 0x47,0x31,0x4c,0xa7,0x53,0x8d,0x7c,0x3e,0xbf,0xb3,0x1e,0x8f,0xc7,0x59, + 0xc9,0xdb,0xb1,0xae,0xff,0x92,0x89,0x47,0xa3,0x11,0x23,0x97,0xcb,0x6d, + 0xd4,0xd7,0xcb,0x58,0x2c,0xa6,0xb5,0xf5,0x52,0x75,0x7c,0xd9,0xf6,0x32, + 0x71,0xbf,0xdf,0xd7,0x48,0xa5,0x52,0x3b,0xeb,0x91,0x48,0x64,0xa5,0x0f, + 0xe7,0xeb,0xbf,0x5b,0x8a,0x6f,0x50,0xdc,0x4c,0xa7,0xd3,0x20,0xcb,0x32, + 0x48,0x92,0x04,0xd5,0x6a,0x15,0x2a,0x95,0xca,0x56,0x42,0xa1,0xd0,0x4a, + 0x3b,0x1a,0x8d,0x6a,0xf5,0x44,0x22,0x81,0xd2,0x2f,0xca,0x2d,0x59,0x9e, + 0xe2,0xb7,0xcf,0xe7,0x03,0x8f,0xc7,0x03,0x82,0x20,0x98,0xc6,0x6e,0xb7, + 0xab,0x3b,0x66,0x62,0xbc,0x1a,0x17,0x28,0x9d,0xcf,0xe7,0x30,0x9b,0xcd, + 0x4c,0xa3,0x3b,0x3c,0x3f,0x8a,0x0f,0x29,0x67,0xb8,0x22,0x0e,0xd8,0xae, + 0x6c,0xe0,0xba,0x73,0x81,0xfb,0xd1,0x6d,0x98,0x5e,0xaf,0xa7,0x8a,0x1f, + 0x50,0x7c,0x80,0xbb,0x46,0xf1,0x64,0x32,0x61,0xd2,0xc0,0x5b,0x00,0x82, + 0xef,0x41,0xc3,0x74,0x3a,0x1d,0x55,0x7c,0x4f,0x00,0xb0,0x24,0xc7,0x28, + 0x1e,0x8f,0xc7,0x6c,0x65,0xfc,0x28,0x2c,0x86,0x0d,0xd3,0x6e,0xb7,0xff, + 0x62,0xac,0x17,0x0f,0x87,0x43,0x18,0x0c,0x06,0xa6,0xc1,0x9b,0xc5,0x15, + 0x2b,0x8a,0x02,0x8e,0x6b,0x07,0x78,0x9f,0xbd,0xe0,0x7f,0xf5,0x1b,0x06, + 0xaf,0x2a,0x57,0x8c,0x17,0xdc,0x4a,0x8c,0xcb,0xe5,0x32,0x5f,0xdc,0xed, + 0x76,0x2d,0xc5,0xb8,0x54,0x2a,0xf1,0xc5,0xad,0x56,0x0b,0xea,0xf5,0xba, + 0x69,0x8a,0xc5,0x22,0x5f,0xdc,0x68,0x34,0x2c,0xc5,0x18,0x33,0x20,0x57, + 0x8c,0xff,0xbb,0x95,0x18,0x8b,0xa2,0xc8,0x17,0x63,0xf0,0xad,0xc4,0x38, + 0x9b,0xcd,0x6e,0x8a,0x31,0x81,0x14,0x0a,0x05,0xc8,0x64,0x32,0xa6,0xc1, + 0xd7,0x65,0x5d,0x7c,0xb4,0xa7,0x37,0x4f,0x45,0x50,0xc5,0x98,0x88,0x4e, + 0x29,0x4e,0xd6,0xf9,0x9b,0xf6,0xcc,0x82,0xf3,0x9d,0x3f,0xa1,0xa1,0x27, + 0x2c,0x4e,0xc5,0xe2,0x38,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae, + 0x42,0x60,0x82 +}; + +static const unsigned int small_connecttool_png_len = 553; +static const unsigned char small_connecttool_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xbb,0x49,0x44,0x41,0x54,0x48,0xc7,0xdd,0xd4, + 0xbb,0x4b,0x42,0x61,0x18,0xc7,0xf1,0xe3,0x93,0x99,0xd0,0x8d,0x1a,0xa2, + 0x82,0x16,0x87,0x82,0x5a,0xce,0x20,0x5d,0x68,0x0a,0xd4,0x2e,0x5b,0x4b, + 0x38,0x37,0xb8,0x76,0x5b,0xa2,0x82,0x2e,0x43,0x51,0x8b,0x46,0x50,0x66, + 0x06,0x99,0x11,0x44,0x4b,0x08,0xd6,0x5a,0x91,0x44,0x76,0x19,0xba,0x50, + 0x04,0x49,0xff,0xc9,0xd3,0xef,0xf5,0x7d,0x35,0xd3,0x34,0xc5,0x5a,0x3a, + 0xf0,0xe1,0x45,0x3d,0xe7,0x7b,0xde,0xe3,0x39,0xe7,0xd5,0x98,0x59,0xfb, + 0x0b,0xda,0xff,0x0a,0x63,0xa3,0x5f,0x0f,0x63,0xeb,0x37,0xe2,0x67,0x8c, + 0x03,0x50,0x02,0x86,0xdf,0x0a,0x87,0xf6,0x74,0x9d,0x3b,0x65,0x7c,0x08, + 0xca,0x0a,0xb9,0x82,0x5c,0x61,0x8e,0x39,0x1c,0xbc,0x8d,0xb1,0x49,0xc6, + 0x7b,0xc0,0x94,0xef,0xcc,0x73,0x86,0xdf,0xec,0x76,0x8e,0x62,0x5c,0x06, + 0x93,0x8c,0x77,0x41,0x69,0x3e,0x71,0xb1,0xad,0x6b,0xf2,0xa0,0x0c,0xb1, + 0xde,0x5e,0x7e,0xc4,0x28,0x2c,0x41,0x45,0x96,0xfd,0xd2,0x6c,0x82,0x31, + 0x3e,0xb3,0x77,0xa7,0x93,0xdf,0x6c,0xb6,0x2f,0x44,0xf4,0xd5,0x6a,0x4d, + 0x86,0x1f,0xc0,0x4d,0xc4,0x66,0x8c,0x33,0x6b,0x3a,0x87,0x1e,0x6d,0x1c, + 0x7e,0xb6,0xf3,0xf1,0xcb,0xa7,0xc0,0x35,0x25,0xe2,0x95,0xf2,0x92,0x11, + 0x4a,0x04,0x7e,0xb2,0x8f,0xb8,0xb8,0xa1,0x13,0xab,0xc4,0x3b,0x57,0xc4, + 0xbb,0xb7,0xc4,0xc1,0x3b,0x69,0x21,0x98,0x0c,0x37,0x14,0x1c,0xbe,0x07, + 0x3f,0x54,0xc3,0xc8,0x0a,0x71,0x20,0x25,0x9e,0x12,0xb6,0x14,0x1c,0x16, + 0x2e,0x61,0x0d,0xf4,0x6e,0x9c,0xe4,0x02,0xf1,0x9b,0x8c,0x70,0x73,0xc1, + 0xe1,0x1b,0x08,0xc1,0x3c,0xb4,0xb5,0x6b,0xec,0x3d,0x45,0x38,0x5a,0x64, + 0x58,0x44,0x8f,0x60,0x0c,0x08,0x86,0xa7,0x88,0xbd,0x67,0x45,0x86,0xd3, + 0xa3,0xae,0x79,0xe2,0xd5,0x13,0x62,0x7f,0xa4,0x88,0xbf,0x22,0x23,0x3a, + 0x4b,0xec,0x09,0x13,0xfb,0xce,0xe5,0x6c,0xbf,0xb9,0x79,0x32,0x2c,0xee, + 0xf4,0x41,0x9a,0x48,0x96,0xe8,0xa0,0x8b,0x78,0xdc,0x43,0x3c,0xed,0x23, + 0x9e,0x0b,0x20,0xb6,0x2b,0x83,0xc2,0xe4,0xc6,0xd7,0xa7,0x62,0x2b,0xdb, + 0x5b,0xf4,0x64,0x32,0x25,0xa3,0x5a,0xfe,0x0e,0x13,0xcf,0xb1,0x78,0xf7, + 0x6b,0xd5,0xf4,0x3b,0xd4,0x62,0x63,0x8f,0x87,0xcd,0xe6,0xe4,0x4c,0xf1, + 0x79,0x51,0x7d,0x6f,0x85,0x56,0x68,0x51,0xc7,0xa4,0xb2,0xa8,0x68,0xfc, + 0xcd,0x33,0xa8,0x78,0xb9,0x3a,0x41,0x1d,0xd4,0xc3,0x89,0xfb,0x33,0x3a, + 0x0a,0x3a,0x34,0xa9,0x7d,0xaa,0xd4,0xc1,0xe9,0x44,0xc3,0x1c,0x5f,0x2b, + 0x72,0xac,0x4e,0x7d,0x2a,0xea,0x84,0x46,0xa8,0xc9,0x77,0x65,0x13,0x3e, + 0x00,0x84,0xce,0x9d,0x42,0x55,0x40,0xaa,0x56,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_customwidget_png_len = 1133; +static const unsigned char small_customwidget_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x03,0xff,0x49,0x44,0x41,0x54,0x48,0xc7,0xb5,0x95, + 0xef,0x4f,0x5b,0x55,0x18,0xc7,0x97,0xe6,0x52,0x29,0xb4,0xf4,0xd2,0x9b, + 0xdb,0xb4,0x37,0xbd,0x37,0xbd,0x97,0xb5,0xd4,0xc2,0x82,0xdd,0x4c,0x44, + 0x5f,0x28,0x9a,0xcc,0xc4,0xa4,0xee,0x17,0x6e,0x86,0x31,0xa8,0x8c,0x76, + 0x3a,0x66,0x89,0x6e,0xb3,0x55,0xc8,0x5e,0xf8,0x4a,0x8a,0x2e,0xfb,0x81, + 0x19,0xdb,0x80,0xd1,0x0e,0xd4,0xb0,0x45,0x47,0xb1,0x95,0xc2,0xdc,0x0c, + 0xc6,0x4d,0x8d,0xbe,0xf4,0x85,0x89,0xc9,0x12,0x5f,0xec,0xef,0xf8,0xfa, + 0x9c,0xd3,0xd3,0x4d,0xc9,0xac,0xfa,0xc2,0x26,0xdf,0xf4,0x26,0xf7,0x9c, + 0xcf,0x79,0x9e,0xe7,0x7b,0x9e,0xe7,0x6e,0x01,0xb0,0xa5,0x26,0xfa,0xd9, + 0x48,0x0d,0x24,0x07,0xa9,0x99,0xe4,0x24,0xb9,0xfe,0x41,0x4e,0xb1,0xd6, + 0x21,0xf6,0xda,0x38,0xab,0x06,0x1d,0x1f,0x1f,0x6f,0x29,0x14,0x0a,0x99, + 0xa9,0xa9,0xa9,0x5f,0xc7,0xc6,0xc6,0x90,0x4e,0xa7,0xff,0x95,0x12,0x89, + 0x04,0xba,0xbb,0xbb,0x7f,0xb3,0xdb,0xed,0xef,0x13,0xd4,0x10,0x87,0x48, + 0x0f,0x22,0x65,0xd0,0xca,0xd7,0x9f,0x61,0x75,0xe3,0x43,0x94,0x36,0xde, + 0xc2,0x8d,0xdb,0xc3,0x58,0xfe,0x26,0x89,0xe2,0x46,0x12,0xe5,0x3b,0x49, + 0xac,0x7e,0x9f,0x42,0xe5,0x47,0xd2,0x0f,0x29,0x7a,0x4e,0x56,0x45,0xcf, + 0xa5,0xbb,0x03,0xf8,0xf8,0x93,0x67,0xf1,0xd4,0xf3,0x0e,0x06,0x9a,0x24, + 0x05,0x38,0x5c,0x80,0x1b,0x58,0xa4,0x0c,0x3a,0xbf,0xfc,0x22,0x4e,0x2f, + 0x98,0xc8,0xe5,0x7d,0x38,0xbb,0xe4,0xc5,0xe9,0x45,0x03,0xd9,0x49,0x13, + 0xa9,0x8c,0x86,0xd4,0x3b,0x41,0x64,0x73,0x21,0x9c,0xbb,0x66,0x60,0xf6, + 0x2b,0x0d,0xd3,0x45,0x3f,0xa6,0x57,0x34,0x5c,0x2c,0x6a,0x88,0xf7,0x39, + 0x19,0xe8,0x77,0x52,0x17,0x49,0xad,0x81,0x1d,0x2c,0xfd,0x32,0x45,0xca, + 0xa0,0x13,0x57,0x15,0x82,0x06,0x30,0x7a,0xca,0x44,0x47,0x4c,0x85,0xcd, + 0xe6,0x24,0xd9,0x84,0x5c,0xb0,0x22,0x2a,0x5e,0x7f,0xcf,0xc2,0x95,0x4a, + 0x08,0xb3,0xab,0x1a,0x3f,0xe4,0x95,0xc3,0x2d,0x0c,0xc4,0xd4,0xc3,0x4b, + 0x22,0xc0,0xcd,0xac,0x5e,0x2c,0xfd,0x5c,0xde,0xcb,0xa1,0x7d,0x6f,0x04, + 0x08,0xd2,0xc4,0xa1,0x2e,0xb7,0x8c,0xae,0x27,0x7d,0x88,0x3d,0xe3,0x87, + 0x2f,0xa0,0x88,0x83,0x9a,0xb0,0xbb,0x5f,0x47,0xe1,0x66,0x10,0xf9,0x9b, + 0x7e,0xec,0x7b,0xcd,0x55,0x03,0xbf,0x44,0xda,0x5a,0x03,0x3b,0x19,0x98, + 0xd5,0x94,0xa5,0x3f,0x7a,0x2a,0x48,0x1b,0x1b,0x49,0x76,0xec,0xdc,0xad, + 0x23,0x37,0x1b,0xc4,0xe5,0x15,0x13,0x57,0xd6,0x0d,0x5c,0x58,0x8e,0xa0, + 0x7f,0xc4,0x82,0x24,0xb9,0xe8,0xbd,0x84,0x23,0x27,0xc2,0xb8,0xf6,0x5d, + 0xe4,0xcf,0x11,0xc7,0x49,0xa1,0x1a,0xd8,0xc5,0xc0,0xcc,0x28,0x56,0xd3, + 0x68,0x97,0xc2,0x37,0xed,0xdc,0x15,0xc0,0xcc,0x97,0x16,0x2e,0x95,0x54, + 0x82,0x2a,0xf4,0x2e,0x8c,0xde,0x61,0x03,0xf9,0xf5,0x4e,0x24,0x4f,0x58, + 0xfc,0x70,0xaf,0xdf,0x83,0xb9,0x62,0x14,0xaf,0xa6,0xdc,0x35,0xf0,0xcb, + 0xa4,0xf0,0x5f,0xc0,0xcc,0xfd,0x6c,0xce,0x84,0x44,0xa9,0xca,0xb2,0x87, + 0x47,0x7a,0xa9,0x4c,0x1b,0x2b,0x2a,0x19,0x66,0xa1,0x73,0xbb,0xc6,0x61, + 0x3d,0x71,0x1f,0x16,0x6e,0x6d,0x43,0x64,0x5b,0x35,0x80,0xec,0x44,0x1b, + 0x0e,0x1e,0xad,0x03,0x66,0x57,0x2a,0x99,0xd1,0xf8,0xe2,0xae,0x1d,0x1a, + 0x2e,0x17,0x4d,0xcc,0xad,0xa9,0x38,0xbf,0x14,0x46,0xc7,0x0e,0x95,0x43, + 0x55,0xaf,0x87,0xdf,0x8c,0x2f,0x7e,0x0e,0x61,0xcf,0x21,0x9d,0xaf,0x1d, + 0x3c,0x66,0xa0,0xff,0x58,0xeb,0xdf,0x83,0xd9,0x1d,0x4d,0x9d,0x0c,0x72, + 0xf7,0x63,0x4f,0xfb,0x08,0x6a,0xe0,0xa3,0x85,0xf0,0x83,0x48,0x59,0xcd, + 0x03,0x3a,0x99,0xfb,0x69,0x14,0x2b,0xbf,0x04,0xd1,0x7b,0xd8,0xe4,0xe0, + 0x43,0x54,0xf3,0x81,0xb4,0x52,0x07,0x4c,0x0d,0x90,0xc9,0x99,0xfc,0x4a, + 0x79,0xc9,0x7d,0x66,0xd4,0xde,0xa1,0xaa,0x91,0x1e,0x8f,0x07,0x9a,0xe6, + 0xad,0xc2,0x2d,0x19,0x67,0x16,0x63,0xe8,0x7e,0xce,0x4f,0x65,0xb3,0x53, + 0x29,0x22,0x48,0x8c,0xb6,0xd6,0x2f,0xc5,0xb9,0x25,0x1d,0x66,0xd8,0xcb, + 0xaf,0xd4,0xc1,0xa3,0x16,0xe6,0xd7,0x3a,0xf0,0xc2,0x2e,0x3f,0xde,0xa5, + 0xf4,0xcf,0x2e,0x76,0x12,0xd4,0xc3,0x33,0x92,0x3d,0x0a,0x9a,0x1a,0x1b, + 0xa1,0xa8,0x2e,0x14,0xd6,0xda,0x31,0x98,0xae,0x57,0xe3,0xbb,0x49,0xcc, + 0x96,0x35,0x8c,0x64,0x2c,0x0e,0x96,0x24,0x27,0x92,0x27,0xdb,0xc8,0xa8, + 0x4e,0x7c,0xfe,0x93,0x45,0xe9,0xeb,0x38,0xb3,0xb0,0x1d,0xaa,0xcf,0x43, + 0x91,0xda,0xe8,0xbd,0x84,0x03,0xa9,0x20,0x6e,0xdf,0x6b,0xa3,0x52,0xb4, + 0xd4,0x8f,0x78,0x7a,0x59,0x43,0xa1,0x44,0xc6,0xf4,0xe9,0xa2,0xd3,0x9a, + 0x10,0x79,0x42,0xc5,0x1e,0x6a,0x86,0xde,0x21,0x83,0xd2,0xd7,0xd0,0x68, + 0x77,0x72,0x28,0x93,0xd5,0xae,0xe2,0xe2,0x4a,0x07,0x86,0x8e,0xcb,0x8f, + 0x04,0x3b,0xd9,0x94,0x2a,0xdd,0x19,0xe0,0xfd,0x3f,0x57,0xf6,0xa3,0xb0, + 0x6e,0xe2,0xc8,0xf1,0x76,0x68,0x01,0x99,0xd7,0x95,0x99,0x54,0x3d,0x48, + 0xa2,0xf4,0x9d,0x3c,0x52,0x23,0xa4,0x40,0xd5,0xdd,0x38,0x7f,0xfd,0x71, + 0xec,0x1f,0x7e,0x74,0x83,0x34,0xb3,0xd1,0xc7,0xa6,0xd4,0x34,0x0d,0x94, + 0x99,0x72,0x00,0xf3,0xeb,0x3a,0x96,0xbe,0x6d,0xc3,0x0c,0x19,0x98,0x99, + 0xb0,0x90,0x18,0x09,0x62,0x90,0xdc,0xcf,0x7e,0x10,0x41,0xbe,0xd2,0x8e, + 0x5b,0xf7,0x42,0x34,0x80,0xa2,0x04,0x8d,0xe2,0xc2,0x0d,0x1d,0xd1,0xd8, + 0x63,0x0c,0x74,0x7f,0x73,0x4b,0x3b,0xd8,0x3c,0x65,0xa3,0x8f,0x4d,0xa9, + 0x5e,0x6a,0xcf,0x7d,0x09,0x37,0xfd,0xbb,0x70,0x20,0xe9,0xa6,0xb9,0xe1, + 0xa6,0x36,0x96,0x31,0xf0,0xa6,0x42,0x26,0xb5,0x52,0x3d,0x65,0x5e,0xd3, + 0xa1,0xb7,0x65,0x8a,0x54,0x26,0x28,0xeb,0x40,0x89,0x81,0x16,0x37,0x0f, + 0xa1,0x06,0x31,0xa4,0x27,0xc5,0xe8,0xc3,0x7f,0xd4,0x7d,0x01,0xdd,0xbb, + 0x79,0x6c,0xda,0xc4,0xe4,0x0f,0x88,0x17,0x3d,0x22,0xa5,0xb8,0x30,0xa3, + 0x9e,0xe2,0x62,0x6d,0x8f,0xd8,0xfb,0x70,0xd0,0x0b,0xb8,0x24,0xe0,0xaa, + 0x88,0x7e,0x2b,0x37,0x81,0x39,0x5c,0x5f,0x21,0xb1,0xd6,0x10,0x7b,0x1f, + 0x7e,0x9a,0xfe,0x8f,0x8f,0xe9,0x1f,0x75,0x09,0xbb,0x54,0x76,0xdd,0xcd, + 0xec,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_dateedit_png_len = 505; +static const unsigned char small_dateedit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x8b,0x49,0x44,0x41,0x54,0x48,0xc7,0xbd,0x95, + 0xb1,0x6a,0x83,0x40,0x18,0x80,0x15,0x1c,0x04,0xc9,0x98,0x21,0x74,0x6b, + 0x21,0x50,0x42,0x68,0x4a,0xa9,0xd0,0xb1,0xe2,0x5c,0xb3,0x74,0x0c,0x58, + 0x4a,0x49,0x91,0x2e,0x42,0x97,0xbe,0x80,0x4f,0xe1,0xe6,0x10,0xd7,0x2e, + 0x12,0xc4,0x07,0x48,0xa6,0x2c,0xbe,0x40,0xc1,0x41,0x1c,0x84,0x3e,0xc1, + 0xf5,0xff,0xed,0x7f,0xe1,0x52,0xb4,0xda,0x26,0xed,0xc1,0xc7,0xe9,0xe9, + 0x7d,0xf7,0x9f,0x77,0xf7,0x2b,0x31,0xc6,0xa4,0xbf,0x40,0xfa,0x17,0x31, + 0x14,0x19,0x50,0x00,0x15,0xd0,0x80,0x5e,0x07,0x34,0x7a,0x1f,0xfb,0xc9, + 0x4d,0x62,0xc5,0x75,0x5d,0x66,0xdb,0x36,0xb3,0x2c,0xab,0x15,0x5d,0xd7, + 0xb1,0x13,0x72,0x09,0x1c,0xd1,0x00,0x72,0x9d,0x58,0x45,0xe9,0x6a,0xb5, + 0x62,0x71,0x1c,0xb7,0x12,0x04,0xc1,0xa7,0x78,0x6c,0x61,0x7d,0x0d,0xf4, + 0x31,0xb8,0x3a,0xb1,0x86,0x91,0x60,0xa7,0x30,0x0c,0x5b,0xf1,0x3c,0x8f, + 0x47,0x8c,0xdc,0x01,0x27,0x18,0x5c,0x9d,0xb8,0x87,0xd3,0xc3,0x48,0xb0, + 0x53,0x1b,0x8e,0xe3,0x88,0x62,0x17,0x18,0x63,0x70,0xb5,0x62,0xe1,0xc5, + 0x9f,0xf2,0x02,0x9c,0xa3,0xa3,0x51,0xbc,0x5e,0xaf,0x59,0x14,0x45,0x9d, + 0x10,0xc4,0xcf,0xad,0xe2,0xb2,0x2c,0x59,0x9e,0xe7,0x15,0x29,0xdc,0xf3, + 0x9a,0xf3,0xb6,0x58,0x6c,0x9f,0x0b,0xe2,0xa7,0x56,0x31,0x2f,0x5c,0xf4, + 0xb5,0x88,0x6d,0x82,0xf8,0xb1,0xb3,0x58,0x94,0xbc,0x2f,0x97,0xdb,0x81, + 0xf0,0xfa,0x60,0x62,0xac,0x8b,0xa2,0x60,0x69,0x9a,0xee,0x70,0x10,0xf1, + 0xeb,0xf7,0xbb,0x62,0x0e,0x4c,0x3a,0x8b,0x77,0x06,0xa1,0x08,0xf1,0x70, + 0xf8,0xbe,0x5f,0x5d,0x9b,0xa6,0xc9,0xc5,0xf7,0xc0,0xd9,0x5e,0x62,0x2e, + 0x35,0x0c,0x83,0x25,0x49,0xc2,0xc5,0x33,0x60,0xb4,0x97,0x98,0x4b,0xf1, + 0xe8,0x6f,0x36,0x1b,0xde,0x76,0x0b,0x9c,0x36,0x89,0xb5,0x2e,0xa7,0x0c, + 0xa7,0x8f,0x91,0xa2,0x34,0xcb,0x32,0xde,0x3e,0x05,0x86,0x4d,0x62,0xb5, + 0x4a,0x24,0x57,0x0f,0xbf,0x39,0xd2,0x26,0x70,0xdc,0x94,0x2b,0x14,0x4a, + 0x7d,0xb8,0xba,0x37,0x80,0x4d,0xdb,0x48,0x64,0x4e,0x0b,0x35,0xa3,0xe9, + 0x4f,0x49,0x7a,0x01,0x0c,0x9a,0xb2,0x9b,0x4c,0x51,0xf7,0x29,0x05,0x8e, + 0x69,0x6f,0x8a,0x4c,0x68,0xf5,0x47,0xf4,0x4d,0x87,0x14,0xe9,0x80,0xd6, + 0x48,0xa9,0xfd,0xe7,0x1d,0xea,0xf7,0xf4,0x01,0xf1,0x64,0x94,0x3a,0x02, + 0x52,0x67,0x4a,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; + +static const unsigned int small_datepicker_png_len = 965; +static const unsigned char small_datepicker_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8f,0x0b,0xfc,0x61,0x05,0x00,0x00,0x00,0x06,0x62,0x4b,0x47, + 0x44,0x00,0x00,0x00,0x00,0x00,0x00,0xf9,0x43,0xbb,0x7f,0x00,0x00,0x00, + 0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x12,0x00,0x00,0x0b,0x12,0x01, + 0xd2,0xdd,0x7e,0xfc,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd2, + 0x03,0x19,0x13,0x1c,0x1b,0x8b,0xe1,0xfc,0xd9,0x00,0x00,0x03,0x42,0x49, + 0x44,0x41,0x54,0x78,0x9c,0xb5,0x95,0x4f,0x68,0x9a,0x67,0x1c,0xc7,0x3f, + 0x6f,0x62,0x46,0xc3,0x02,0x6a,0x48,0x6a,0xc7,0x6c,0xb1,0xc6,0xd6,0x34, + 0xab,0xcb,0x21,0xb8,0x6a,0x36,0xb6,0xc3,0x70,0x93,0x80,0xe9,0x29,0xa5, + 0x97,0x5e,0x7a,0xd9,0x25,0x27,0x59,0x2e,0xdb,0x61,0xee,0x3c,0xd2,0xc3, + 0xe8,0xa5,0xa7,0x1d,0x96,0x43,0x50,0xca,0xaa,0xac,0x30,0xb6,0x53,0x20, + 0x4c,0x21,0xa4,0x07,0x69,0x68,0x5a,0x6a,0x53,0xaa,0x66,0xa8,0xf1,0x55, + 0x37,0x5d,0x8c,0x9a,0xfc,0x76,0x78,0x51,0xfc,0xf3,0x86,0x8c,0xc1,0xbe, + 0xf0,0xf2,0x3c,0xef,0xef,0xcf,0xf7,0xf9,0x3e,0xbf,0xdf,0xc3,0xf3,0x28, + 0x22,0x42,0x1b,0xa6,0x79,0x9f,0x54,0x0a,0x39,0xfe,0x0b,0x8c,0x93,0x16, + 0xca,0xbf,0xff,0xa6,0xb4,0xff,0x0d,0x00,0x97,0x6f,0x7f,0x21,0xaf,0xb7, + 0xe3,0xf8,0x67,0xaf,0xf1,0xa7,0xf2,0x37,0x07,0x07,0x07,0xd4,0x6a,0x35, + 0xba,0x17,0xd5,0x83,0x88,0xd0,0x6a,0xb5,0x30,0x1a,0x8d,0xf8,0xe7,0xa6, + 0x51,0xae,0xbc,0x2f,0xb6,0x39,0x2f,0x7b,0xeb,0x0f,0x94,0x21,0x80,0x36, + 0xa9,0xe3,0x9d,0xf3,0xe4,0xf3,0x79,0x8a,0xc5,0x22,0x99,0x4c,0x06,0xbb, + 0xdd,0x8e,0xaa,0xaa,0x3d,0x5f,0x36,0x9b,0xed,0xd8,0x4b,0xa5,0x12,0x95, + 0x4a,0x85,0xa3,0xa3,0x23,0x02,0x81,0x00,0xdf,0x7f,0xf5,0x25,0xaf,0xb7, + 0xe3,0x9a,0x62,0xd3,0xbc,0x4f,0xda,0xa4,0x81,0x40,0x80,0x68,0x34,0x4a, + 0xbd,0x5e,0x27,0x95,0x4a,0x61,0xb3,0xd9,0xd8,0xdc,0xdc,0xec,0x51,0xd9, + 0x6f,0x0f,0x85,0x42,0x8c,0x8f,0x8f,0xe3,0x76,0xbb,0xf1,0xf9,0x4c,0x58, + 0x2c,0x16,0x4c,0xf3,0x3e,0x31,0x54,0x0a,0x39,0xcc,0xce,0x8b,0xd8,0xed, + 0x76,0xdc,0x6e,0x37,0x2b,0x2b,0x2b,0xd4,0x6a,0x35,0x9e,0xee,0x3c,0x65, + 0x6d,0x6d,0x8d,0x50,0x28,0xd4,0x21,0x2d,0x97,0xcb,0xa4,0x5f,0xa6,0x07, + 0xec,0x4e,0xa7,0x13,0xb3,0xd9,0x0c,0xc0,0xf4,0xd4,0x65,0xb4,0x3e,0x39, + 0x5c,0xb2,0xbc,0xbc,0x2c,0xe1,0x70,0x58,0x1a,0x8d,0x86,0xb4,0x31,0x3c, + 0x3c,0x2c,0x80,0x34,0x1a,0x0d,0xc9,0x6f,0x6c,0x48,0xe9,0xc5,0x0b,0xa9, + 0x56,0xab,0x02,0xc8,0x34,0xc8,0x1f,0xc9,0xa4,0x14,0x0a,0x05,0xc9,0xe5, + 0x72,0xa2,0xaa,0x6a,0x27,0xaf,0xd9,0x6c,0x0a,0x0e,0x97,0x18,0xda,0xab, + 0x8e,0x8d,0x8d,0x31,0x32,0x32,0xd2,0x51,0xd1,0x6a,0xb5,0x3a,0xf3,0xfd, + 0xfb,0xf7,0x01,0x98,0x0d,0x87,0x11,0x11,0x36,0x2e,0x5d,0x82,0xdd,0x5d, + 0x26,0x5c,0xae,0x81,0x86,0xd6,0xeb,0x75,0x00,0x86,0xf4,0xba,0xad,0xdc, + 0x7d,0x88,0x72,0xf7,0xa1,0xee,0x49,0x28,0x27,0x12,0x9c,0xb3,0x5a,0x4f, + 0x8d,0x55,0x4b,0x65,0x10,0x19,0x24,0x3e,0x8d,0xd0,0xe8,0xf5,0x52,0x4e, + 0x24,0xc8,0x45,0x22,0x98,0xbc,0x5e,0x5d,0x31,0xaf,0xf2,0x55,0x9e,0xa5, + 0xde,0x0c,0x12,0xdf,0xfb,0xe5,0xb9,0x2e,0x29,0xc0,0x85,0xa5,0x25,0x72, + 0x91,0x08,0xe5,0x78,0x1c,0xa3,0xc7,0xa3,0x1b,0xf3,0xe8,0x49,0x96,0x92, + 0x5a,0x04,0x39,0xe9,0x25,0x0e,0xfa,0x9d,0xac,0xde,0xba,0xae,0x9b,0x74, + 0xce,0x6a,0xa5,0x9e,0x4e,0xeb,0xaa,0x05,0x58,0xbd,0x75,0x9d,0xa0,0xdf, + 0xc9,0xbb,0xe7,0xc7,0xb5,0x1d,0xe0,0x70,0xc9,0xb2,0xff,0x13,0x16,0x16, + 0x16,0x68,0x36,0x1b,0x00,0xbc,0x7c,0x6b,0x1a,0x00,0x47,0x63,0x97,0xc5, + 0xc5,0x9b,0x94,0x13,0x09,0x4c,0x1e,0xcf,0x40,0x7d,0x7f,0x7d,0xb2,0xdd, + 0x13,0x0b,0x70,0xe3,0x86,0x87,0x0b,0x1f,0x7e,0x8a,0xa1,0x7b,0xd5,0xc5, + 0xc5,0x9b,0x3d,0x2a,0x62,0x31,0x2d,0xb8,0x7a,0x75,0x96,0xaa,0x7a,0x88, + 0xd5,0xe3,0x21,0xa3,0x1e,0x12,0x4f,0x95,0xf0,0x4e,0x99,0x3b,0xbb,0xd4, + 0xa0,0x8d,0x5b,0x3b,0x29,0xe0,0x94,0x53,0xd1,0x8f,0xe0,0xfa,0x0e,0xf1, + 0x54,0xa9,0x33,0xef,0x1e,0xfb,0xb1,0xff,0x66,0x0f,0x4e,0x4e,0x7a,0x15, + 0xc7,0x62,0xd1,0x81,0xc0,0x44,0x97,0xba,0x58,0x2c,0x4a,0xf0,0xf3,0x8f, + 0xf1,0x4c,0x99,0x89,0x6c,0xed,0xeb,0xe6,0x8c,0x8e,0xbe,0x0d,0x70,0x56, + 0x29,0xa2,0x78,0xa6,0xcc,0xa4,0xd5,0xc3,0x1e,0x7f,0x22,0x55,0xe2,0xe2, + 0xf8,0xa8,0x6e,0x4e,0x32,0x99,0x04,0x65,0xe8,0xdf,0x95,0xa2,0x1b,0x19, + 0xf5,0x90,0xc8,0xd6,0x3e,0xab,0xb7,0xdf,0xd3,0xf5,0x4f,0x4c,0x4c,0x80, + 0xa2,0x68,0xc4,0xc5,0x6a,0x8d,0x56,0xab,0xc5,0xf1,0xf1,0xf1,0x99,0xc4, + 0xc1,0xf5,0x9d,0x9e,0x52,0xf4,0x23,0x9d,0x2f,0x80,0xa2,0x60,0x30,0x4e, + 0x5a,0x28,0xfd,0xa5,0x5d,0xea,0x8f,0x1f,0xff,0x3c,0x10,0x18,0x8b,0x45, + 0xf1,0x7e,0xf4,0x59,0x67,0xbe,0xe4,0x76,0x0f,0xf8,0xdb,0x70,0xbb,0x3f, + 0xe0,0x55,0x3a,0x8b,0x71,0xd2,0xa2,0xbd,0x02,0x38,0x5c,0xf2,0xcd,0x77, + 0xf7,0xa4,0x1f,0xd1,0xe8,0xa3,0x01,0xdb,0x69,0xfe,0x5c,0x2e,0x27,0x3f, + 0xfe,0x14,0x13,0x1c,0x2e,0x11,0x11,0xad,0x79,0xb6,0x39,0x2f,0xdf,0x3e, + 0xf8,0x81,0x99,0x99,0x19,0xae,0x39,0xec,0xb8,0xae,0x5e,0x39,0xb3,0x24, + 0x6d,0x88,0x08,0xc9,0xdd,0xe7,0x3c,0x4b,0xed,0x71,0x67,0xe5,0x6b,0x4d, + 0x2d,0xa0,0xfc,0x5f,0x8f,0xe9,0x3f,0x94,0xe3,0xe0,0xb7,0x5d,0x5b,0xab, + 0x32,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_datetimeedit_png_len = 1074; +static const unsigned char small_datetimeedit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x03,0xc4,0x49,0x44,0x41,0x54,0x48,0xc7,0x95,0x95, + 0x7d,0x4c,0x53,0x57,0x18,0x87,0x0f,0x77,0x57,0x47,0x90,0x0e,0xa6,0x32, + 0x75,0xab,0xdb,0x94,0xc4,0x2c,0x33,0x64,0xda,0x45,0xcc,0x24,0x19,0x63, + 0x7f,0xc8,0x94,0x8c,0x26,0x66,0x2e,0xd1,0x2c,0xa4,0x66,0x21,0xe1,0xe3, + 0x0f,0x53,0x4d,0x30,0x26,0x1b,0x4a,0x34,0x24,0xcd,0x3e,0x33,0x63,0xd9, + 0x30,0x4c,0x6b,0x87,0x74,0x77,0x91,0x0d,0xa1,0x15,0xaa,0x73,0xb4,0x20, + 0xa5,0x80,0x92,0xa8,0x25,0xa0,0xd6,0x82,0x14,0xa5,0x8a,0x50,0x74,0xe0, + 0xd8,0x46,0x7f,0x7b,0xcf,0xe5,0x76,0xe9,0xb4,0x50,0x76,0x92,0x27,0xa7, + 0xb7,0xf7,0xbc,0xcf,0x79,0xef,0x79,0xef,0x39,0x97,0x31,0xc6,0x44,0x22, + 0x9e,0x58,0x44,0xa8,0xe6,0xc1,0x22,0x65,0x3c,0x8f,0x8b,0x03,0xc0,0xa2, + 0xc1,0xf4,0x7a,0x3d,0x74,0x3a,0x1d,0xb4,0x5a,0x6d,0x4c,0xd2,0xd3,0xd3, + 0x29,0x82,0x71,0x36,0x10,0x2f,0x29,0x13,0x44,0x95,0x33,0x2e,0x6d,0x6f, + 0x6f,0x87,0xdd,0x6e,0x8f,0x89,0xd9,0x6c,0x9e,0x11,0xa7,0x69,0x79,0x9f, + 0x45,0xa4,0xf0,0xcc,0xa3,0x8a,0x79,0x26,0x3c,0xc8,0x62,0xb1,0xc4,0xa4, + 0xbc,0xbc,0x3c,0x9c,0x31,0x67,0x17,0x91,0xca,0xb3,0x8e,0x2a,0xe6,0x8f, + 0xc7,0x33,0xe1,0x41,0xb1,0x28,0x2a,0x2a,0x8a,0x14,0xeb,0x89,0x34,0xbe, + 0xe6,0x51,0xc5,0x11,0x03,0xff,0x2f,0xfb,0x89,0xf5,0xbc,0xa0,0xb3,0x8a, + 0xdd,0x6e,0x37,0x6c,0x36,0xdb,0xbc,0x10,0xc4,0x85,0x10,0xe3,0x55,0x10, + 0x55,0x29,0x26,0x51,0xf5,0x42,0x31,0x5d,0xbf,0x49,0x8e,0xe7,0x88,0x05, + 0x4f,0x89,0x47,0x47,0x47,0x31,0x3c,0x3c,0x2c,0x73,0x8d,0xae,0xc3,0x7d, + 0x98,0x81,0x9a,0x1a,0x78,0x3c,0x3d,0xa8,0x3c,0x29,0x21,0xeb,0xc3,0x02, + 0xec,0xdc,0xf3,0x29,0x0a,0xca,0x0c,0x0f,0xb5,0xbb,0xcb,0xfc,0xab,0x73, + 0x0a,0x9d,0xe2,0x4a,0x4d,0x09,0x79,0x5e,0x57,0x5e,0x47,0xe1,0x5f,0x71, + 0xb8,0x85,0x45,0x4f,0xb6,0xb3,0xaa,0x64,0x1c,0xaa,0x90,0x70,0xb8,0xa2, + 0x12,0x1d,0xdd,0x75,0xf0,0xfa,0x1a,0xd1,0xd3,0x7b,0x06,0x81,0x07,0x0e, + 0xd8,0xdd,0x56,0x68,0x0f,0x54,0x86,0xd8,0xda,0x5c,0x2b,0x13,0xc4,0x6c, + 0xf2,0x2d,0xe5,0xf2,0xff,0x88,0xc3,0x72,0xde,0xc6,0x1b,0x1b,0xe5,0xdf, + 0x2d,0xa2,0x88,0x32,0xc3,0x31,0x54,0x49,0x26,0xf4,0xf7,0x9f,0x85,0xcf, + 0x67,0x23,0x61,0x2b,0xf2,0x4a,0xcd,0x70,0x76,0xd4,0x63,0x68,0xd0,0x86, + 0xdf,0xa7,0x2e,0x23,0xef,0x73,0x13,0x58,0x6a,0xa6,0x9d,0x7c,0xef,0x12, + 0x09,0xb3,0x8a,0x79,0x1f,0x08,0x04,0xf0,0xcd,0xb1,0x93,0x28,0x3d,0x5a, + 0x85,0x2b,0x57,0x6b,0x31,0x16,0x74,0x62,0x62,0xc2,0x85,0xb1,0x47,0x1d, + 0xc8,0x2d,0x39,0x85,0x5e,0x5f,0x33,0x26,0x27,0x2f,0x62,0xa0,0xdf,0x0e, + 0xdf,0x1d,0x27,0x32,0x0a,0xcb,0xff,0x64,0xf1,0xc9,0x5f,0x90,0x53,0x3d, + 0xa7,0xf8,0x38,0x15,0x6a,0xcb,0xae,0x12,0x58,0x9b,0x25,0x0c,0x0d,0x9d, + 0xc3,0xd8,0x98,0x83,0xee,0x74,0xe3,0xce,0x88,0x0b,0x9b,0xf7,0xfc,0x80, + 0xc1,0x40,0x1b,0x10,0xea,0x44,0x6f,0x5f,0x3d,0xa6,0xff,0xee,0xc2,0xd1, + 0xd3,0x12,0x68,0xbd,0x5b,0xc9,0xb9,0xee,0x29,0x71,0x64,0xb3,0x48,0x12, + 0xb6,0xe9,0x0d,0x70,0xb8,0x7e,0xc2,0xc0,0x40,0x13,0x42,0xa1,0x2e,0xfa, + 0xf7,0x32,0xba,0xaf,0x3b,0xa0,0xc9,0x37,0xe1,0x7e,0xd0,0x25,0x4f,0x14, + 0x08,0xfc,0x86,0xdb,0xb7,0x9b,0xd0,0x76,0xed,0x1c,0x96,0x6b,0xb2,0x6f, + 0x92,0xf3,0x9d,0x39,0xc5,0x55,0xc7,0x4d,0xc8,0xd9,0xfd,0x19,0x9c,0xee, + 0x5a,0x39,0x78,0x46,0x7c,0x09,0xf7,0x48,0xf8,0xfe,0xbe,0x6a,0x2a,0xdc, + 0x79,0x59,0x3c,0x3e,0xde,0x42,0xf7,0x7f,0x45,0x77,0xdf,0x05,0xac,0xda, + 0xb8,0x75,0x90,0x9c,0xef,0xcd,0x29,0xae,0xae,0xb1,0x60,0x63,0x5e,0x29, + 0x2e,0xb8,0xeb,0xe1,0xf7,0xdb,0xf1,0x60,0xd4,0x21,0x67,0x3c,0x1d,0xba, + 0x84,0x83,0xdf,0xff,0x82,0xd7,0x74,0x27,0xb0,0xdf,0x58,0x0b,0x4f,0x6f, + 0x03,0x42,0xd3,0x5d,0xb0,0xb7,0x35,0x60,0xc5,0xda,0x0c,0x2f,0x39,0xb7, + 0xce,0xbd,0xf3,0x04,0x01,0x2f,0x67,0x7d,0x84,0xbd,0xdf,0x56,0xc3,0x3f, + 0xd8,0x84,0x91,0x91,0x66,0x04,0x83,0xad,0x72,0xd6,0x7c,0x82,0x1e,0x6f, + 0x33,0x8c,0xd2,0xcf,0xb8,0xda,0x63,0xc5,0x1f,0x53,0x6e,0x1c,0x32,0x7e, + 0x07,0x71,0xc9,0xca,0xce,0x70,0xc6,0xa9,0xec,0xad,0xfc,0x59,0xe5,0xf1, + 0x4b,0xd4,0x78,0xf1,0x63,0x23,0x6a,0x5b,0x6d,0x18,0xa7,0x8c,0x3d,0x9e, + 0x3a,0xdc,0xa7,0x09,0xfa,0x6e,0x34,0x60,0xf8,0x2e,0xbd,0x0d,0xb7,0x1a, + 0x78,0xa9,0xd1,0xd8,0x62,0xc5,0xfa,0xcd,0x3b,0x26,0x29,0xe6,0xc7,0xf0, + 0x1a,0xa7,0x28,0x55,0xcc,0x25,0x74,0x44,0x41,0x04,0xc5,0xc4,0xc1,0x85, + 0x69,0x5b,0xae,0x2c,0xd7,0x1d,0x81,0xf1,0xcc,0x69,0x04,0x1f,0xb9,0xf0, + 0xf8,0xb1,0x4b,0x96,0xf3,0xac,0x83,0x0f,0x5d,0xa8,0x3b,0x5f,0x87,0xb7, + 0xb7,0x17,0xff,0x25,0x24,0x2c,0xee,0xe0,0xe3,0x09,0x0d,0x53,0x0e,0xeb, + 0x14,0xe5,0x08,0x4c,0x53,0x0e,0x96,0x48,0x36,0xd1,0x46,0x2a,0x14,0xd7, + 0x64,0x5e,0x4c,0xcc,0xd9,0x37,0x95,0x53,0xf2,0x15,0x0c,0x26,0x33,0x2a, + 0xa4,0x53,0xf8,0xd2,0x74,0x02,0xf9,0x9f,0x18,0xb0,0x26,0x73,0xdb,0x84, + 0x90,0x28,0x4b,0xbf,0x26,0xb6,0x13,0xaf,0x72,0x71,0x5c,0x8c,0xcf,0x53, + 0x12,0xf1,0x0a,0x2f,0x88,0x90,0x90,0x7c,0x84,0xa9,0xdf,0x70,0xb1,0x55, + 0x19,0x5e,0x61,0xf5,0x26,0x3f,0x53,0xaf,0xf3,0xb2,0xa4,0x15,0x9d,0xca, + 0xe3,0xf3,0x4c,0x3f,0x50,0xce,0x8c,0x24,0x36,0xdb,0x37,0xeb,0x89,0x93, + 0x4a,0x50,0xb6,0xa9,0x5a,0x59,0xb6,0x4c,0x22,0x5b,0xa9,0x7e,0xb6,0xb2, + 0xa6,0x1a,0x25,0x53,0x9e,0xc8,0x82,0x79,0x89,0x15,0x79,0x9c,0x1c,0x30, + 0xf3,0x54,0xcf,0x2b,0xcb,0xb7,0x4c,0xe9,0x17,0x13,0x89,0xc4,0xb3,0xc4, + 0x33,0x7c,0xfc,0x3f,0xa4,0x48,0xee,0xab,0x12,0x6e,0x96,0x1e,0x00,0x00, + 0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_dial_png_len = 1024; +static const unsigned char small_dial_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x03,0x92,0x49,0x44,0x41,0x54,0x48,0xc7,0xb5,0x95, + 0x59,0x48,0x54,0x51,0x1c,0xc6,0x1d,0x19,0x04,0x85,0xb0,0x0d,0x41,0x70, + 0xcb,0xca,0x07,0x9d,0x30,0x17,0x46,0x67,0x34,0xc9,0xd9,0x7a,0x68,0xb1, + 0x0d,0x27,0x4a,0xcc,0x5e,0xca,0xa1,0x41,0x54,0x12,0x43,0x33,0x7b,0xc8, + 0x6a,0x92,0x52,0x69,0x03,0xa3,0x45,0x33,0x35,0x51,0xb4,0x22,0x0b,0x2b, + 0x5b,0xa0,0x88,0x16,0xb3,0x65,0x48,0x2b,0xaa,0x87,0xc4,0x28,0x22,0x22, + 0xa3,0x08,0x9a,0xaf,0xf3,0x5d,0xce,0x8d,0x69,0x9c,0x36,0xa2,0x0b,0x1f, + 0x33,0xdc,0xb9,0xe7,0x77,0xff,0xe7,0xff,0x7d,0xff,0x33,0x01,0x00,0x02, + 0xfe,0x87,0xfe,0xee,0xe1,0x80,0x80,0xb9,0xff,0x0c,0x16,0x57,0x8c,0x90, + 0x46,0x48,0x2b,0x14,0x24,0x14,0xac,0xd5,0x6a,0x6b,0xc4,0x67,0x08,0xbf, + 0xcb,0x7b,0x53,0x85,0x26,0xfd,0x31,0x58,0x02,0x1b,0x2a,0x5c,0x79,0x75, + 0xd5,0xf5,0x79,0x83,0x25,0x5b,0x16,0x8d,0x15,0x14,0x67,0x78,0x56,0x39, + 0xd3,0xe0,0xdc,0x6c,0x1d,0x2b,0x77,0xe5,0xdc,0xaf,0xac,0x5b,0xba,0x4d, + 0x3c,0xd3,0x2a,0x14,0x2e,0x5f,0xae,0xf9,0x25,0x98,0x0f,0xd4,0x1f,0x2d, + 0x9e,0x5b,0xbd,0x3b,0xff,0x5e,0x99,0x6b,0x91,0x67,0x6f,0x57,0x3e,0x4e, + 0x5c,0x77,0xa0,0xf7,0x51,0x11,0x4e,0xb9,0x0b,0xd1,0x74,0xd5,0x0e,0x57, + 0xbb,0x0d,0xce,0x1a,0xfd,0xd7,0x35,0x1b,0x52,0x47,0x9d,0x55,0xd6,0x25, + 0x62,0x4d,0xa8,0xdc,0x81,0xc6,0x2f,0x58,0x85,0x56,0xd5,0xe6,0xbd,0xd8, + 0xd7,0x55,0x80,0xbe,0xc7,0x65,0x38,0xff,0xac,0x14,0xbd,0x4f,0xd6,0xe1, + 0xf4,0x70,0x01,0x4e,0x0e,0xaf,0x44,0xcf,0xb0,0x1d,0x1d,0x83,0xcb,0x71, + 0xe0,0x82,0x0d,0x35,0xc7,0x8d,0x28,0xac,0x32,0x8e,0xd8,0xd7,0x1a,0xec, + 0x6c,0x89,0x37,0xdc,0xb7,0xa7,0x0d,0xac,0x94,0xd0,0xfe,0xe7,0xe5,0x38, + 0xfb,0xb4,0x50,0x81,0x75,0x3e,0xca,0x41,0x87,0x7b,0x1e,0x5a,0x06,0x2d, + 0xa8,0xef,0xcd,0xc4,0xae,0xb6,0x65,0xe8,0xb9,0xb2,0x13,0x7b,0xfa,0x32, + 0xb1,0x7e,0x7b,0x02,0x56,0x38,0xf4,0x43,0x62,0xad,0x43,0x4a,0xeb,0x0b, + 0xd6,0xb0,0xa7,0x65,0xae,0x05,0x1e,0x56,0x4a,0x68,0xf7,0x50,0xae,0x02, + 0x6c,0x7f,0x68,0xc1,0xde,0xbe,0x0c,0x6c,0x3e,0x64,0x44,0xff,0x9d,0xc3, + 0xf8,0xfc,0xe5,0x23,0x76,0xb6,0x2e,0x16,0x2f,0x31,0xa2,0xe2,0x60,0x32, + 0x2c,0xf6,0x48,0x8f,0xd1,0x3a,0xbd,0x5f,0x30,0x22,0xa4,0xb9,0x1a,0x6f, + 0xb0,0x96,0x46,0xb1,0xa7,0xdc,0x3e,0x2b,0x25,0xb4,0xe9,0x56,0x36,0x76, + 0x9d,0x32,0xa0,0xf9,0xdc,0x06,0xbc,0x7d,0xff,0x12,0xbc,0x2e,0x0f,0x34, + 0xa3,0xee,0x8c,0x11,0xfb,0x2f,0x65,0xa1,0xb4,0x21,0x11,0x0b,0xd7,0xc4, + 0xc0,0x92,0x33,0xeb,0x89,0x60,0xe8,0x84,0x26,0x2b,0x66,0x7a,0x81,0x83, + 0xe8,0xbe,0x62,0x94,0xe8,0x29,0xb7,0xdf,0x26,0x2a,0xad,0x6c,0x4c,0xc5, + 0x0d,0x77,0x37,0xd4,0xeb,0xdd,0x87,0x57,0x4a,0xe5,0xc7,0x06,0x4c,0x68, + 0xba,0x6d,0x42,0xc9,0xee,0x59,0x30,0xe7,0x46,0x60,0x76,0x7a,0xd4,0x27, + 0xc1,0x30,0xc8,0x94,0x04,0x79,0x83,0x83,0x19,0x29,0xba,0x4f,0xa3,0xd4, + 0x16,0xb0,0xe2,0x6d,0xcd,0x56,0x8c,0xbe,0x7d,0xaa,0x80,0x8f,0xf7,0x6d, + 0x14,0xbd,0xcd,0x50,0x7e,0x6b,0x19,0x34,0xc3,0xb9,0x43,0x07,0xbd,0x39, + 0x0c,0x51,0x71,0xa1,0x1e,0xc1,0x30,0x09,0x45,0x2b,0x39,0x57,0x27,0x8a, + 0xe1,0x67,0x4e,0x19,0x29,0xb6,0xa1,0xfd,0xa1,0x55,0x59,0x4c,0xed,0xbf, + 0x98,0x89,0xad,0x4d,0x66,0x5c,0x7b,0xd0,0xa1,0xb4,0x45,0xbd,0x7f,0xe4, + 0x46,0x36,0x56,0x97,0xc7,0x29,0xe0,0xc8,0x99,0x13,0x10,0x18,0x18,0x78, + 0x4c,0xb0,0xca,0x94,0x3e,0x7b,0x55,0x1c,0xc2,0xf0,0x33,0xa7,0x8c,0xd4, + 0x09,0xb7,0xed,0x3b,0x40,0xa9,0xfc,0x8e,0x09,0x15,0x8d,0x29,0xca,0xa7, + 0x7a,0xaf,0xb6,0xc7,0x80,0x79,0x2b,0x23,0x91,0x94,0x35,0x05,0xf1,0xb3, + 0x23,0x3e,0x0b,0x86,0x4d,0x28,0xd6,0x17,0x1c,0xcc,0x89,0x62,0xf8,0x7b, + 0x86,0x44,0x56,0xdd,0xf3,0x7f,0x00,0xfb,0xea,0xe8,0xcd,0x6c,0x14,0xd5, + 0xea,0x90,0x66,0x0d,0x43,0x82,0x7e,0x22,0x92,0x0d,0x33,0x9f,0x8f,0x6b, + 0x85,0x6a,0x1e,0xc7,0x94,0x13,0xd5,0x71,0x3f,0x47,0x01,0xb7,0xfd,0x02, + 0x5a,0xd1,0x98,0x0c,0xf3,0xf2,0x08,0xe8,0x2d,0x61,0x88,0x4d,0x08,0xf5, + 0x24,0xa6,0xc4,0x76,0xfe,0xcc,0x3c,0x1e,0x28,0x07,0xf2,0x4b,0x53,0x5e, + 0x73,0xa2,0x5a,0xee,0x9a,0xb1,0xef,0x42,0xa6,0x12,0x29,0xba,0x4f,0xa3, + 0xd8,0x53,0x6e,0x9f,0x95,0x12,0xaa,0x56,0xab,0x4b,0x89,0x1a,0x11,0x6b, + 0xcf,0x0b,0x15,0xf9,0x8b,0x1b,0x47,0x32,0x9c,0xb3,0xcf,0x31,0xe5,0x44, + 0x31,0xfc,0xcc,0x29,0x23,0x45,0xf7,0x69,0x14,0x7b,0x4a,0x20,0x2b,0x25, + 0x34,0x31,0x75,0xda,0x9b,0xb8,0xf8,0xa8,0x4d,0x62,0x6d,0xba,0x50,0xfc, + 0xb8,0x01,0x51,0x87,0x84,0x07,0x0a,0x67,0x9f,0x63,0xca,0x89,0x62,0xf8, + 0x99,0x53,0x3a,0x4f,0xd1,0x28,0x02,0xb9,0xfd,0x84,0xa4,0xc8,0x51,0x09, + 0x9d,0x23,0x34,0x43,0x1e,0x46,0x5a,0xbf,0x87,0x90,0x3c,0x48,0x58,0xbd, + 0x83,0x63,0xca,0x89,0x62,0xf8,0x99,0x53,0x46,0x8a,0xee,0xd3,0xa8,0xa4, + 0xb4,0xb8,0x56,0xb9,0xfd,0x74,0x09,0xf5,0x7f,0x08,0xf9,0x81,0x3b,0xe4, + 0xec,0xeb,0xa4,0x29,0x26,0x99,0x53,0x9b,0x74,0xdf,0x20,0x7b,0x9a,0xfe, + 0xdb,0x63,0xd3,0x07,0xae,0x95,0xfd,0x9a,0x2c,0x9d,0x8e,0x96,0xe1,0x8f, + 0x95,0xdf,0xc3,0xe5,0x6f,0x21,0x7f,0x74,0xd0,0xff,0xe4,0x05,0x41,0xf2, + 0xef,0x28,0xc4,0xe7,0xaf,0x69,0x1c,0x50,0xd5,0x37,0x1f,0x12,0x9f,0x65, + 0x93,0x3f,0xe3,0x89,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42, + 0x60,0x82 +}; + +static const unsigned int small_editbreaklayout_png_len = 744; +static const unsigned char small_editbreaklayout_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0x7a,0x49,0x44,0x41,0x54,0x48,0xc7,0x95,0x95, + 0xb1,0x6b,0x5a,0x51,0x14,0xc6,0x8d,0x48,0xb0,0x2f,0x49,0x2d,0x5d,0x9a, + 0x44,0x0c,0xa2,0x10,0xa8,0x25,0x4b,0x14,0x2c,0xda,0xba,0xc4,0x76,0x10, + 0x6d,0x50,0x74,0xc8,0x56,0x84,0x0e,0x2a,0xdd,0xd4,0x25,0x50,0xb7,0x0e, + 0x2e,0x62,0x06,0x97,0xae,0xd6,0xa1,0x14,0xad,0x4b,0x5b,0x9c,0x9a,0xff, + 0xa3,0x08,0x29,0x25,0xff,0x84,0x2d,0xa7,0xdf,0xb9,0x3d,0x57,0x6e,0x5e, + 0xf4,0xf5,0x55,0xf8,0xf1,0xb8,0xf7,0x9e,0xfb,0xbd,0xf3,0xce,0xf9,0xee, + 0xd5,0xe3,0xf1,0x78,0x36,0x80,0x0f,0xf8,0xc1,0x16,0xd8,0xb1,0xc1,0x73, + 0x96,0xac,0x5b,0x0e,0x31,0x7e,0xd1,0xd9,0x20,0x22,0x0f,0xff,0x7c,0xd5, + 0x6a,0x95,0x2a,0x95,0x0a,0x95,0x4a,0xa5,0x1b,0xa4,0xd3,0x69,0x8e,0x60, + 0x0e,0x5c,0xc4,0xec,0xc9,0x4b,0x7c,0x5a,0xd8,0xcf,0x1b,0xa6,0xd3,0x29, + 0x4d,0x26,0x13,0x1a,0x8f,0xc7,0x8a,0xe1,0x70,0x48,0xbd,0x5e,0x4f,0x6f, + 0x7a,0xe2,0x22,0x26,0x2e,0xe2,0x7e,0x2d,0xbc,0xc5,0x6f,0x1e,0x8d,0x46, + 0x34,0x18,0x0c,0xa8,0xdf,0xef,0x2b,0xba,0xdd,0x2e,0xb5,0xdb,0x6d,0xbd, + 0xe9,0xd4,0x45,0x4c,0x16,0x44,0x58,0x4f,0x0b,0xef,0xf0,0xe7,0xf0,0x9b, + 0x5b,0xad,0x16,0xd5,0x6a,0x35,0x45,0xbd,0x5e,0xa7,0x46,0xa3,0xa1,0x37, + 0x9d,0xb9,0x88,0x29,0x80,0x43,0xd6,0x5b,0x66,0x2c,0x0b,0x4e,0x9c,0xba, + 0x88,0xb9,0x95,0x31,0x77,0xfa,0x80,0xeb,0x28,0x02,0x67,0x36,0x78,0xee, + 0x19,0x38,0x07,0x5f,0xc1,0x4f,0xf0,0x0b,0x5c,0x83,0x4b,0x70,0x01,0x4a, + 0xe0,0xa9,0xe8,0x58,0xcb,0xe6,0xb9,0xe8,0xf8,0xf8,0xd5,0xfe,0x3e,0x7d, + 0x38,0x3a,0xa2,0x39,0xe6,0x16,0x27,0x27,0xea,0xc9,0x63,0x9e,0x97,0x98, + 0x0a,0x08,0x81,0x3b,0xcb,0x8c,0xd7,0x75,0xbc,0xd3,0xe9,0x50,0xd4,0xb2, + 0xe8,0x5d,0x2c,0x46,0xbf,0x21,0x46,0xd9,0xec,0x2d,0x78,0x9e,0xd7,0x39, + 0x0e,0x5a,0xcf,0x41,0x40,0xce,0xc6,0x7a,0x57,0xa4,0x52,0x29,0xb5,0x49, + 0x8b,0xcc,0x8e,0x8f,0xa9,0x15,0x0e,0xd3,0xe3,0x40,0x40,0x3d,0x2f,0xe3, + 0xf1,0xe5,0x1a,0xc7,0xf1,0x97,0x81,0x5d,0x39,0x28,0xab,0x5d,0x51,0x28, + 0x14,0xd4,0x67,0xea,0x4c,0xdf,0x46,0xa3,0xb4,0xe9,0xf5,0x52,0x26,0x93, + 0xa1,0x64,0x32,0x49,0xb1,0xed,0x6d,0xfa,0x8e,0x7d,0x66,0xe6,0x52,0x96, + 0xd7,0xd2,0xb7,0xf5,0xae,0xe0,0x1a,0xea,0x4c,0x59,0x54,0xcf,0x9b,0xa2, + 0xfc,0xd4,0x99,0x73,0x3c,0xd6,0x3f,0x81,0xfb,0x4e,0xae,0xb8,0x9e,0xcb, + 0x66,0xfe,0x6c,0x8c,0x47,0xe0,0xbd,0x5d,0x94,0xc7,0xbc,0xce,0xe3,0xf9, + 0xdf,0x66,0x5f,0x81,0xe0,0x5a,0x57,0x78,0x91,0xe1,0x42,0xca,0xc0,0x35, + 0x8d,0x23,0xab,0x55,0xa2,0xa1,0x50,0x48,0xad,0xf3,0x1c,0xc7,0x43,0x6f, + 0x01,0xc2,0x6b,0x5d,0x11,0x89,0x44,0xc8,0xcc,0xd8,0x2e,0xca,0x2e,0x28, + 0x97,0xcb,0x54,0x2c,0x16,0xed,0x19,0xff,0x90,0x83,0xb2,0xda,0x15,0xdc, + 0x24,0x5d,0x63,0xae,0xa1,0x5d,0x34,0x97,0xcb,0x51,0xb3,0xd9,0x54,0xb5, + 0xe7,0x1e,0x18,0x35,0xfe,0xac,0x33,0x5e,0xe9,0x8a,0x7c,0x3e,0x7f,0xc3, + 0x15,0xa6,0x68,0x22,0x91,0x50,0x87,0x87,0x45,0xd9,0x2d,0x36,0x57,0xbc, + 0xd1,0x35,0x76,0xbc,0x2b,0x4c,0x1f,0x7f,0x43,0xe6,0xa6,0x8f,0x75,0xa6, + 0x86,0x8f,0x67,0x20,0xa1,0x5d,0xe1,0x97,0x7b,0x34,0x2e,0x17,0x49,0x41, + 0x78,0x01,0x1a,0xff,0x79,0xf2,0x5e,0x82,0xa8,0xf6,0xb1,0x4f,0x6e,0xfe, + 0x3d,0x29,0xfa,0xa1,0xc1,0x43,0x90,0x03,0x1f,0xff,0x71,0x57,0xcc,0x44, + 0xf4,0x91,0x64,0xab,0x4e,0x9e,0xd3,0x7f,0xde,0x5d,0x70,0x0f,0x3c,0x00, + 0x75,0x31,0xff,0x95,0x58,0x8a,0xbb,0xff,0x45,0x6a,0x9a,0x90,0x4c,0x59, + 0x74,0x53,0x69,0xf2,0x4d,0xe4,0x84,0xf1,0x62,0x4b,0x36,0x06,0xa5,0xeb, + 0x11,0x79,0x06,0x65,0xde,0x32,0xff,0x4c,0xff,0x00,0xcd,0x57,0xa8,0x51, + 0xaa,0xbd,0x58,0xdd,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42, + 0x60,0x82 +}; + +static const unsigned int small_editcopy_png_len = 485; +static const unsigned char small_editcopy_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x77,0x49,0x44,0x41,0x54,0x28,0xcf,0x85,0xd3, + 0xc1,0x6a,0x13,0x51,0x18,0xc5,0xf1,0xdf,0x24,0xb7,0xda,0x56,0x88,0x0a, + 0x2e,0x6a,0x7d,0x07,0x37,0xba,0xb0,0x45,0x10,0xc4,0x7d,0xd7,0xae,0x5c, + 0x8b,0xb8,0xf1,0x09,0x14,0x44,0x7c,0x01,0xf1,0x11,0x7c,0x00,0x77,0xd2, + 0x95,0x48,0x74,0xa7,0x2b,0x77,0x95,0x6e,0xd2,0x42,0x51,0x07,0x6d,0xcc, + 0x24,0x99,0x3b,0x33,0x2e,0x92,0x49,0xa6,0x49,0xc4,0x73,0x57,0xf7,0xf2, + 0xe7,0x9c,0xf3,0x5d,0xf8,0x42,0x65,0xae,0x24,0xd1,0x16,0xb4,0xb5,0x66, + 0x4f,0x95,0x52,0x54,0x54,0x05,0x04,0x4d,0xb5,0x6f,0xe6,0xa3,0xc6,0x75, + 0xe0,0xc0,0xbd,0xde,0xfe,0x0d,0x7f,0x92,0x61,0x15,0x17,0xe1,0x30,0xf2, + 0xc5,0x3c,0xeb,0xab,0xeb,0xf6,0xaf,0xdd,0xfe,0xfc,0x61,0x47,0x9a,0x0c, + 0xaa,0x18,0xce,0x84,0x6f,0x96,0x7e,0xa9,0x24,0x12,0x41,0x4b,0xc4,0x6b, + 0x0f,0xaf,0xee,0x7e,0xea,0xee,0x90,0x0c,0xc2,0x62,0xf8,0x1d,0x03,0x07, + 0xee,0x7b,0x69,0xc3,0x18,0x9b,0x5e,0x79,0xb4,0xb5,0xfb,0xb1,0x7b,0x4b, + 0x19,0x56,0x87,0xbf,0x31,0xf4,0x42,0x86,0x07,0xa0,0xbb,0xe5,0x8a,0x61, + 0x40,0x9b,0xbc,0x51,0x7c,0x1a,0xae,0xf0,0xc4,0x3b,0xe7,0xb4,0xa4,0xf6, + 0xb8,0xe4,0x47,0x40,0x8b,0xd8,0x70,0x2e,0xea,0x70,0x95,0x67,0x3a,0xd6, + 0x9d,0xc0,0x79,0x6b,0xa1,0x06,0xca,0x33,0xce,0x93,0xf0,0xb7,0x1e,0xa3, + 0x3d,0xc9,0x6d,0x4b,0xa6,0x70,0xae,0x98,0xc1,0x17,0xbd,0x07,0xa9,0x3d, + 0xa9,0x75,0x17,0x8c,0xeb,0x9f,0x5d,0x86,0x3b,0x3a,0xe0,0x04,0x03,0x43, + 0xe3,0xd9,0x44,0x2b,0xe0,0x5a,0x39,0xc6,0xc6,0x72,0x71,0x11,0x8e,0x4b, + 0xf0,0x18,0x51,0x6e,0xb4,0x5c,0x23,0x5f,0xe9,0x1c,0xa7,0xe7,0xbf,0x70, + 0x44,0x6a,0x4d,0xb2,0xec,0x3c,0x5a,0x59,0xe3,0xe9,0xfc,0x9a,0x89,0xa1, + 0x76,0x89,0x2b,0x9d,0x3d,0xd7,0xd3,0x43,0x26,0x95,0x05,0x38,0xd5,0xf7, + 0x73,0xa5,0xb3,0x9e,0x6f,0x0e,0x11,0x65,0xfa,0x01,0xe5,0xa1,0xbb,0xfe, + 0xa1,0x23,0xc7,0x8e,0x51,0x2a,0x26,0x35,0x0a,0xdb,0xb6,0x5d,0xb6,0xb1, + 0x84,0x66,0x52,0xdf,0xab,0x53,0x8d,0x01,0xa3,0xbe,0x23,0xe9,0xc2,0xd6, + 0xa8,0xc3,0x1b,0x8b,0x84,0x42,0x26,0xf7,0xbb,0xb1,0xa6,0xb5,0x4a,0x45, + 0x73,0xf2,0xbf,0xb0,0x14,0xa3,0x81,0xb1,0x86,0x26,0x8d,0x00,0x00,0x00, + 0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_editcut_png_len = 649; +static const unsigned char small_editcut_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0x1b,0x49,0x44,0x41,0x54,0x28,0xcf,0x7d,0xd3, + 0x4b,0x48,0x94,0x51,0x18,0xc6,0xf1,0xff,0xd7,0x34,0x17,0x30,0x44,0x74, + 0x10,0x33,0xcb,0x56,0x76,0x01,0x6d,0x25,0x6d,0xc2,0x50,0xca,0x45,0xa0, + 0x65,0xe4,0xd4,0x80,0xb4,0xe8,0x82,0x85,0x84,0xb8,0x29,0xa3,0x26,0x17, + 0x05,0x89,0x34,0xb9,0x30,0x8b,0x70,0x15,0x2e,0xa2,0x7b,0xe4,0x20,0xa3, + 0x09,0x93,0x61,0x4a,0x58,0x42,0x3a,0x83,0x89,0xa3,0x92,0x88,0x88,0xdd, + 0x2c,0x90,0x6a,0x6c,0x7a,0x5a,0xcc,0x7c,0xa3,0x59,0xc9,0x59,0xbd,0xe7, + 0xfc,0x38,0x9c,0xf7,0xe1,0xbc,0x08,0x81,0x45,0x90,0xce,0x06,0xac,0x62, + 0xa5,0x85,0x60,0x35,0x19,0x9c,0xe2,0x22,0x75,0xec,0x26,0x79,0x45,0x8c, + 0x41,0x26,0x97,0x19,0x43,0x4c,0x72,0x9b,0x62,0x6c,0x89,0x23,0x83,0x26, + 0x22,0xf1,0x22,0xc2,0x0d,0xec,0x60,0xa3,0x8a,0x19,0xc4,0x47,0x42,0x4c, + 0xd2,0x4a,0x11,0x4e,0x93,0xba,0x15,0x56,0x58,0x23,0x1a,0x56,0x9f,0x72, + 0x44,0x3e,0x64,0xd2,0x86,0x98,0xa3,0x95,0xb3,0xf4,0x30,0xc1,0x2d,0x8a, + 0x70,0xc4,0xe8,0x98,0xc2,0x0a,0xa9,0x47,0x8f,0x55,0x24,0x1e,0xb0,0x11, + 0xb2,0xe9,0x40,0xcc,0xe3,0xa5,0x98,0x1a,0x82,0x4c,0xd2,0xcc,0x7a,0xae, + 0xc5,0x68,0x50,0x6d,0x6a,0x51,0x81,0x08,0x50,0x48,0x16,0x24,0x73,0x9a, + 0x30,0x51,0xe6,0xf0,0x52,0x46,0x0b,0x11,0x46,0xb9,0xbb,0x8c,0xbe,0xc4, + 0x45,0x1e,0xa9,0x60,0x21,0x07,0x0f,0x53,0x88,0x4f,0x34,0x71,0x95,0x2f, + 0x5b,0xf5,0x17,0x3d,0x48,0x1e,0x69,0x58,0x63,0x7d,0xa7,0xe2,0x61,0x18, + 0x31,0xcd,0xc4,0xce,0xff,0x53,0xc3,0x8c,0x29,0x83,0x4b,0xcc,0xa0,0x15, + 0x6e,0x35,0xc4,0x62,0xa6,0x5b,0xa8,0x67,0xf6,0x90,0x46,0xe5,0x51,0xad, + 0x49,0x47,0xa8,0x60,0x9b,0x49,0xe3,0x18,0x83,0x75,0xec,0xa5,0x9a,0xf1, + 0x6a,0x85,0x54,0xab,0x4a,0xb5,0xa8,0x40,0x9b,0xc4,0x00,0x55,0xac,0xc5, + 0x16,0xa3,0x26,0x76,0x72,0x92,0xa7,0x8c,0xf3,0x9e,0xaf,0x47,0xd5,0xad, + 0x56,0x15,0x68,0x87,0xae,0xeb,0x8c,0xe8,0xa4,0x14,0x47,0x02,0xb3,0x8a, + 0x6c,0x8e,0x10,0x60,0x9a,0x20,0xdd,0xb4,0xf3,0x63,0x9f,0x0a,0x95,0xab, + 0x9b,0xf2,0xa9,0x57,0x0d,0xc2,0xc7,0x1e,0xec,0xf1,0x67,0xe0,0xe4,0x18, + 0x01,0xa6,0xb8,0xc7,0x05,0x9a,0x79,0xc5,0x77,0xa2,0xcc,0xf2,0xf6,0xbc, + 0x7a,0xf5,0x46,0x83,0xba,0xb2,0x84,0x83,0x9b,0xe7,0x7c,0xe0,0x0e,0x07, + 0x28,0xe7,0x3e,0xf3,0x2c,0xd0,0xc3,0x09,0x8e,0xd3,0xe5,0xd5,0xa0,0x82, + 0x1a,0x5a,0xc2,0xc1,0xcb,0x2f,0xde,0x51,0xc3,0x61,0x9e,0x10,0xe5,0x27, + 0xdd,0xec,0xc7,0xca,0x1a,0x4a,0xf1,0x37,0x6a,0xe8,0x4f,0x4e,0x1d,0x51, + 0xbe,0xf1,0x8c,0x4e,0x84,0xe8,0xc7,0x45,0xb2,0xc0,0xc0,0x41,0x09,0xfe, + 0x46,0x0d,0xe8,0x85,0xfa,0x4c,0x4e,0x21,0x41,0x16,0x10,0x0b,0x44,0xe8, + 0xc0,0x85,0x25,0x91,0xbc,0x83,0x12,0xfc,0xf5,0xf2,0xe9,0x91,0x7c,0x3a, + 0x27,0x1e,0x42,0x12,0x15,0xf4,0x33,0xcd,0x67,0x5e,0x53,0xbe,0xf8,0xf5, + 0x13,0xbc,0x3d,0x5e,0x76,0xe1,0x46,0x60,0x67,0x17,0x95,0x34,0x50,0xb6, + 0x7c,0xa8,0x30,0x70,0x90,0xce,0x66,0xf2,0xd9,0x4e,0x2e,0x59,0xe6,0xb6, + 0xf3,0xdf,0xd3,0x87,0x81,0x95,0x24,0x52,0x48,0x23,0x85,0xa4,0xdf,0x75, + 0x37,0x8b,0x00,0xeb,0xd0,0xf0,0x20,0x00,0x00,0x00,0x00,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_editgrid_png_len = 520; +static const unsigned char small_editgrid_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x9a,0x49,0x44,0x41,0x54,0x48,0xc7,0xed,0x55, + 0x3d,0x4b,0xc3,0x50,0x14,0x4d,0x21,0x43,0x48,0xc9,0xe6,0xd2,0x25,0x83, + 0x43,0x97,0xa0,0x82,0x55,0xba,0xc5,0x60,0xa2,0x28,0xa5,0xc4,0xa5,0xb8, + 0x17,0x14,0x9c,0x8a,0x38,0x08,0xa2,0xe0,0xe0,0xe0,0x20,0x82,0xb3,0x93, + 0x60,0x8b,0x1f,0x7b,0xb5,0x9b,0x8a,0xbb,0x1f,0xd8,0xc9,0x08,0xf5,0x97, + 0x5c,0xdf,0x49,0xee,0xeb,0x90,0x26,0xb6,0x01,0x1d,0x04,0x87,0x93,0x47, + 0x4e,0xde,0x3d,0xef,0xbe,0x7b,0x2e,0x37,0x0a,0x11,0x29,0xbf,0x81,0xe8, + 0xa1,0x28,0x39,0x01,0x55,0x40,0x13,0xc8,0x0b,0x18,0xbc,0xea,0xcc,0xe9, + 0x23,0xf2,0x1a,0xeb,0xe4,0xa4,0xb0,0xea,0xfb,0x3e,0xb9,0xae,0x4b,0x8e, + 0xe3,0x90,0x65,0x59,0x20,0x01,0x33,0x23,0x5f,0xe0,0x43,0x54,0x29,0xac, + 0x61,0xd3,0x5d,0x6f,0x9b,0x3a,0x1f,0x1b,0x74,0xd5,0x5d,0x96,0x1b,0x6d, + 0x08,0xdc,0xf7,0x76,0xa8,0x13,0x24,0xf3,0x37,0xc1,0x1a,0x35,0x5f,0x5c, + 0xc9,0x97,0x58,0x5c,0x93,0xc2,0x79,0x9c,0x1c,0x89,0x2e,0xd1,0xe1,0x75, + 0x99,0xa6,0xed,0xb1,0x70,0x73,0x63,0x6f,0x85,0x6e,0x83,0x75,0xba,0xec, + 0x2e,0x26,0xf2,0x17,0x6f,0x1e,0x1d,0xb4,0x66,0xa5,0xb0,0x27,0x30,0x1e, + 0x96,0x85,0x85,0x0d,0x5c,0x07,0x19,0x21,0xb8,0x71,0x34,0x21,0x37,0xd6, + 0x0d,0xc3,0xa0,0xe6,0xb3,0x1b,0x06,0xa7,0xf1,0x9b,0xc7,0x93,0x92,0xaf, + 0x0a,0x14,0xc3,0x72,0xc8,0x8c,0xf9,0x43,0x3f,0x23,0xc6,0x6a,0x46,0x7e, + 0x21,0x9e,0x31,0xdc,0x35,0x51,0x3b,0x99,0x11,0x07,0x57,0x04,0x1c,0x5e, + 0x87,0xf1,0x35,0x8e,0x37,0x43,0x3d,0x69,0x1e,0xcc,0x00,0x50,0x3b,0x5c, + 0x93,0x03,0x9c,0x8c,0x7c,0x39,0x6e,0x9e,0x8e,0xae,0x80,0xcb,0x30,0x04, + 0xb5,0xe3,0x8d,0x15,0x04,0x3f,0x7c,0xee,0xa6,0xf2,0xed,0xf7,0x3a,0x9d, + 0x3e,0xce,0xf5,0xbb,0x25,0x9e,0x71,0xd4,0x15,0xa2,0xa5,0xe0,0x3e,0x0c, + 0x49,0x73,0x3f,0xce,0xb7,0x5e,0x5d,0xda,0x3f,0x9b,0x49,0xad,0xf1,0x7f, + 0x57,0xfc,0xf5,0xae,0xc0,0x40,0x49,0x72,0x1f,0xc1,0x70,0x3f,0x89,0x3f, + 0x7f,0x9a,0x1f,0xde,0x15,0x98,0x52,0x31,0x97,0x43,0xf7,0x91,0x11,0x82, + 0xd3,0xf8,0xad,0x93,0xa9,0xe1,0x5d,0x11,0x43,0x2d,0x23,0x3f,0x30,0xdd, + 0x34,0x2e,0x7a,0x89,0x3f,0x56,0xf9,0x5a,0x36,0x1b,0x62,0xf3,0xfb,0x77, + 0xbc,0x97,0x34,0x8f,0x55,0x9e,0xfc,0x05,0x3e,0xb1,0xc8,0xab,0xc9,0x9c, + 0x39,0x22,0x3f,0xf0,0x07,0xf9,0xf1,0x7f,0xde,0x17,0x06,0xe3,0x4a,0xec, + 0x21,0xdc,0x6e,0x6a,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42, + 0x60,0x82 +}; + +static const unsigned int small_edithlayout_png_len = 706; +static const unsigned char small_edithlayout_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x02,0x4d,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0xd1,0xc4,0x54,0x20,0x00,0x08,0x20,0x9a,0x19,0x0c,0x10,0x40, + 0x34,0x33,0x18,0x20,0x80,0x68,0x66,0x30,0x40,0x00,0xd1,0xcc,0x60,0x80, + 0x00,0xa2,0x99,0xc1,0x00,0x01,0xc4,0x02,0x22,0x8e,0xdc,0x7a,0xff,0xff, + 0xd4,0xfd,0x8f,0x0c,0xb7,0x5e,0x7c,0x65,0x38,0x7d,0xe7,0x0d,0xc3,0xbb, + 0x2b,0x7b,0x18,0xee,0xaf,0x6f,0x66,0x84,0xc9,0x1d,0xba,0xf5,0x8e,0xe1, + 0xd2,0xe3,0xcf,0x0c,0xfb,0xaf,0xbe,0x64,0xf8,0x72,0x7d,0x2f,0xc3,0xd7, + 0xbd,0x5d,0x60,0xb9,0x1d,0x97,0x5e,0xfd,0xdf,0x75,0xe9,0x39,0xc3,0x85, + 0x7b,0x6f,0x18,0xf6,0x5f,0x7c,0xc0,0xc0,0xf0,0xe0,0x08,0xc3,0xff,0xb3, + 0xf3,0xc1,0x72,0x00,0x01,0x04,0x36,0xf8,0xd4,0xbd,0x0f,0x0c,0x8b,0x0f, + 0xdc,0x62,0xf8,0xfd,0xe5,0x1d,0x90,0xf7,0x9f,0xe1,0xef,0xcf,0x6f,0x70, + 0x9b,0x2f,0x3e,0xfe,0xc4,0x30,0x7d,0xfb,0x35,0x86,0xef,0x9f,0xdf,0x32, + 0xfc,0xfa,0xfd,0x97,0xe1,0xf7,0x8f,0xaf,0x70,0xb9,0xd3,0x77,0xdf,0x32, + 0xf4,0xaf,0x3d,0xc5,0xc0,0xf0,0xfd,0x2d,0x03,0xc3,0xdf,0x3f,0x0c,0x0c, + 0x7f,0x7e,0xc0,0xe5,0x00,0x02,0x08,0x6c,0xf0,0xad,0x97,0xdf,0x18,0x7e, + 0xbc,0x79,0xc8,0xc0,0xc8,0xc4,0xc2,0xc0,0x2e,0x24,0xc3,0xc0,0xc8,0xc6, + 0x05,0x57,0xf0,0xe4,0xdd,0x4f,0x86,0x6f,0xaf,0x1f,0x32,0xfc,0xfe,0xcf, + 0xc8,0xf0,0x8b,0x4b,0x82,0xe1,0x37,0x13,0x27,0x42,0xee,0xcd,0x67,0x06, + 0x86,0x8f,0x8f,0x40,0x6e,0x61,0x60,0xe0,0x12,0x62,0x60,0x60,0x66,0x85, + 0xcb,0x01,0x04,0x10,0x38,0x8c,0x7f,0xfe,0xfe,0xc7,0xc0,0x08,0x14,0x64, + 0xe5,0x13,0x65,0x90,0x10,0x13,0x62,0xf8,0xcf,0x8a,0x30,0xf8,0xcf,0xbf, + 0x7f,0x40,0x43,0x99,0x19,0x7e,0xb1,0x09,0x31,0x48,0x88,0x08,0x03,0x35, + 0xb3,0x21,0x02,0xf2,0xdf,0x5f,0x20,0x01,0xf4,0x39,0x3b,0x2f,0x83,0xbc, + 0x24,0x48,0x8e,0x03,0x2e,0x05,0x10,0x40,0x2c,0xc8,0x01,0xfe,0xe7,0xdf, + 0x7f,0x86,0x3f,0x7f,0xff,0x01,0x31,0x22,0x9b,0x83,0xd8,0x3f,0xff,0xfc, + 0x63,0xf8,0xc5,0xf4,0x0f,0x68,0xd0,0x6f,0xa8,0x61,0x50,0xf0,0x1f,0x28, + 0xf6,0x1f,0xc8,0xff,0xf7,0x07,0xc2,0x46,0x02,0x00,0x01,0x04,0x76,0x31, + 0xd8,0x18,0x36,0x1e,0x06,0x46,0x2e,0x41,0x06,0x2e,0x36,0x66,0xb0,0x05, + 0x30,0xf0,0xe1,0xdb,0x6f,0xa0,0xa1,0x5c,0x0c,0x8c,0xec,0x3c,0x0c,0x42, + 0x9c,0x8c,0x10,0x43,0xa0,0xe0,0xeb,0xf7,0x9f,0x60,0x1f,0x30,0x72,0xf0, + 0x32,0x08,0xf1,0x70,0xa0,0x18,0x0c,0x10,0x40,0x60,0x17,0x9f,0xbf,0x0f, + 0x8c,0x98,0x5f,0x40,0x45,0x3f,0x7f,0x31,0x5c,0x78,0xf4,0x97,0xe1,0xe7, + 0xd7,0x8f,0x70,0x05,0x0b,0x8e,0x3c,0x65,0x60,0xf8,0xfd,0x8d,0xe1,0xff, + 0x2f,0x2e,0x86,0xf3,0x77,0x81,0x11,0xf7,0x13,0x21,0xb7,0x74,0xff,0x75, + 0x60,0xa4,0xfd,0x06,0x3a,0xf6,0x2f,0xc3,0xf9,0x7b,0xaf,0x81,0xea,0x10, + 0x11,0x0b,0x10,0x40,0x60,0x83,0xdf,0x5c,0xdc,0xc1,0xf0,0xfb,0xe7,0x0f, + 0x86,0x7f,0x2c,0x5c,0x0c,0xbf,0xff,0xfc,0x61,0xf8,0xf5,0xee,0x09,0xc2, + 0xea,0x9b,0x5b,0x81,0x1a,0x7e,0x40,0x22,0x06,0x14,0x14,0x9f,0x5f,0x20, + 0xe4,0x1e,0x1e,0x85,0x88,0x7d,0x78,0x08,0x09,0x8a,0xaf,0x6f,0xe0,0x52, + 0x00,0x01,0xc4,0x48,0xab,0x62,0x13,0x20,0x80,0x68,0x96,0xf3,0x00,0x02, + 0x88,0x66,0x06,0x03,0x04,0x10,0xcd,0x0c,0x06,0x08,0x20,0x9a,0x19,0x0c, + 0x10,0x40,0x34,0x33,0x18,0x20,0x80,0x68,0x66,0x30,0x40,0x80,0x01,0x00, + 0x52,0xb6,0xe5,0x8b,0xaa,0x4e,0x11,0xd1,0x00,0x00,0x00,0x00,0x49,0x45, + 0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_edithlayoutsplit_png_len = 809; +static const unsigned char small_edithlayoutsplit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x02,0xb4,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0xb1,0xe0,0x93,0x3c,0x72,0xeb,0xfd,0xff,0x53,0xf7,0x3f,0x32,0xdc, + 0x7a,0xf1,0x95,0xe1,0xe7,0xef,0x7f,0x60,0x31,0x90,0x33,0xce,0xdf,0x7f, + 0xcb,0xf0,0xe6,0xe2,0x0e,0x86,0xa7,0x5b,0x3a,0x18,0x71,0xe9,0x05,0x08, + 0x20,0xbc,0x06,0x9f,0xba,0xf7,0x81,0x61,0xf1,0x81,0x5b,0x0c,0x3f,0xde, + 0x3c,0x64,0x60,0x64,0x66,0x85,0x08,0xb2,0xf1,0x30,0xfc,0xfa,0xf5,0x93, + 0xe1,0xf7,0xcf,0x1f,0x78,0x5d,0x0c,0x10,0x40,0x78,0x0d,0xbe,0xf5,0xf2, + 0x1b,0xc3,0xef,0x2f,0xef,0x18,0x18,0x99,0x58,0x18,0x58,0x79,0x45,0x18, + 0xfe,0xfc,0xfb,0xcf,0xc0,0xc8,0x25,0xc8,0xc0,0xf0,0xf3,0x17,0xc3,0x3f, + 0x16,0x2e,0xbc,0x06,0x03,0x04,0x10,0x13,0x3e,0xc9,0xd3,0x77,0xde,0x30, + 0x80,0x3c,0xcf,0x2e,0x24,0xc3,0x70,0x51,0xf9,0x09,0x83,0x94,0xa4,0x04, + 0x83,0xb2,0x28,0x17,0xc3,0xef,0x7f,0xcc,0x0c,0xbf,0xff,0xfc,0xc1,0x6b, + 0x30,0x40,0x00,0xe1,0x75,0xf1,0xdb,0x4b,0x3b,0x19,0xfe,0xfd,0xfe,0xc9, + 0xf0,0xa8,0x2b,0x11,0x18,0xe0,0xf7,0x18,0x36,0x9d,0xeb,0x67,0x90,0xff, + 0xae,0xc3,0xf0,0xf3,0xeb,0x47,0x86,0x5f,0xef,0x9e,0xe0,0x35,0x18,0x20, + 0x80,0x18,0x09,0xa6,0x8a,0xe3,0xc7,0xff,0x33,0x3c,0x7d,0xca,0xf0,0xf7, + 0xc2,0x05,0x86,0x6b,0xaf,0x5f,0x33,0xbc,0xfb,0xfe,0x9d,0xc1,0x7e,0xd1, + 0x22,0x9c,0x91,0x06,0x03,0x00,0x01,0x84,0x37,0x28,0x18,0xf6,0xee,0x05, + 0x1b,0xfa,0xe1,0xfd,0x7b,0x86,0x73,0xec,0xec,0x0c,0xd7,0xd8,0xd8,0x18, + 0xee,0x71,0x72,0x32,0x6c,0x2c,0x2a,0x22,0x98,0x46,0x01,0x02,0x88,0xa0, + 0x8b,0x83,0x82,0x82,0xc0,0x0a,0x1a,0x42,0x43,0x19,0x1a,0x56,0xaf,0x46, + 0x91,0x5b,0xb7,0x6e,0x1d,0x4e,0x97,0x03,0x04,0x10,0x03,0xc8,0x60,0x62, + 0xf0,0x8f,0x27,0x4f,0xfe,0x07,0x06,0x06,0xfe,0x27,0x56,0x3d,0x40,0x00, + 0x41,0x5c,0xfc,0xef,0x1f,0x88,0x07,0x4c,0x9f,0xbf,0x18,0xfe,0xfe,0xfd, + 0xcb,0xc0,0xcc,0xcc,0x0c,0xc7,0x0c,0x8c,0x8c,0x0c,0xaf,0x5e,0xbe,0x64, + 0x10,0x10,0x10,0x60,0x38,0x7e,0xe2,0x04,0x83,0xbc,0x9c,0x1c,0x83,0xa0, + 0xa0,0x20,0x03,0x2b,0x2b,0x24,0x5d,0x33,0x02,0xe5,0x41,0x7a,0xbe,0x7d, + 0xfb,0xc6,0xf0,0xf9,0xf3,0x67,0x06,0x65,0x35,0x35,0xb0,0x2f,0x00,0x02, + 0x08,0x1e,0x14,0x30,0x2f,0xe3,0x02,0x4b,0x17,0x2e,0x64,0x88,0x8e,0x8f, + 0x27,0x14,0xb4,0xf0,0x20,0x02,0x08,0x20,0xa2,0x83,0xe2,0xff,0xd3,0xa7, + 0x24,0x05,0x05,0x40,0x00,0xe1,0x8f,0xbc,0x6b,0xd7,0xfe,0x33,0x00,0x53, + 0x01,0x03,0x28,0x33,0xbc,0x7a,0xc5,0xf0,0xfe,0xd1,0x23,0x86,0x87,0x40, + 0xfa,0xeb,0xcf,0x9f,0x0c,0xd6,0x65,0x65,0x78,0x93,0x1c,0x40,0x00,0x11, + 0x4e,0xc7,0x53,0xa6,0xfc,0x67,0xf8,0xfa,0x95,0xe1,0xe9,0x9b,0x37,0x0c, + 0xe7,0x9f,0x3f,0x67,0x78,0xf4,0xf1,0x23,0xc3,0x1e,0x68,0xf8,0xe2,0x4b, + 0x15,0x00,0x01,0x84,0x37,0xe7,0x6d,0xbd,0xf0,0xf2,0xff,0x5e,0x01,0x5b, + 0x86,0xc4,0xad,0x15,0x0c,0xd7,0x3f,0x7d,0x02,0xe3,0x89,0x3f,0xb9,0x19, + 0xde,0x7f,0xfe,0xce,0xc0,0x20,0xae,0x83,0xd7,0x3d,0x00,0x01,0x84,0x37, + 0x83,0xec,0xb9,0xfc,0x82,0xa1,0x7f,0xed,0x29,0x06,0xbd,0x9f,0x26,0x0c, + 0xdf,0x80,0x2e,0x6d,0x78,0xf1,0x9b,0xe1,0xfd,0x87,0x4f,0x0c,0x0c,0x1a, + 0xbe,0x0c,0x0c,0x7f,0x7f,0xe1,0x35,0x18,0x20,0x80,0xf0,0x1a,0x7c,0xf1, + 0x3e,0xb0,0x10,0xfa,0xfe,0x16,0x5c,0x08,0x27,0xca,0xc4,0x31,0x30,0x30, + 0x31,0x33,0x30,0x5a,0x64,0x32,0x30,0x70,0x8b,0x30,0x30,0xb0,0x70,0xe0, + 0x35,0x18,0x20,0x80,0xf0,0x06,0xc5,0xfe,0x8b,0x0f,0x80,0x2e,0x03,0x46, + 0x1c,0x97,0x10,0x83,0xbc,0xa4,0x30,0x03,0x83,0x74,0x29,0x83,0x10,0x0f, + 0x07,0xc3,0xf9,0x7b,0xaf,0x81,0x96,0xfd,0xc3,0x6b,0x30,0x40,0x00,0xe1, + 0x35,0x98,0xe1,0xc1,0x11,0x60,0x8a,0x00,0x16,0xe8,0xc0,0x42,0xfe,0xe1, + 0x2b,0x88,0x0b,0x1f,0x82,0x88,0xdf,0x5f,0x19,0x18,0xbe,0xbe,0xc1,0xab, + 0x15,0x20,0x80,0x08,0xa7,0x0a,0x32,0x01,0x40,0x00,0xe1,0x2f,0xdd,0x28, + 0x00,0x00,0x01,0x06,0x00,0x52,0xb4,0x82,0xa9,0xfa,0xab,0x43,0xd9,0x00, + 0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_editpaste_png_len = 902; +static const unsigned char small_editpaste_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x03,0x11,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0xb1,0x10,0x52,0xc0,0xc8,0xc8,0x08,0xb7,0x19,0xe8,0x08,0x46,0x62, + 0x0d,0x06,0x08,0x20,0xbc,0x06,0x83,0x0c,0xfd,0xfa,0xf5,0x2b,0xc3,0xe3, + 0xc7,0x8f,0x19,0x2e,0x5f,0xbe,0x0c,0xe6,0x13,0x6b,0x38,0x40,0x00,0x81, + 0x0d,0xae,0xab,0xab,0xfb,0x7f,0xfb,0xf6,0x6d,0x86,0xf7,0xef,0xdf,0xc3, + 0x25,0x76,0xee,0xdc,0xc9,0xf0,0xf7,0xef,0x5f,0xb0,0x81,0xd7,0xae,0x5d, + 0x63,0xe0,0xe4,0xe4,0x64,0x98,0x31,0x63,0x06,0xd8,0x70,0x77,0x77,0x77, + 0xb8,0xba,0x37,0x6f,0xde,0x30,0x9c,0x3d,0x7b,0x16,0xc3,0x37,0x00,0x01, + 0xc4,0x02,0x32,0xd4,0xca,0x4a,0x9e,0x41,0x4e,0xee,0x27,0xc3,0xe7,0xcf, + 0xbc,0x20,0x0f,0x33,0x14,0x15,0xcd,0x01,0x29,0x64,0xb8,0x72,0xe5,0x0a, + 0xc3,0xe2,0xc5,0x8b,0x19,0x7a,0x7b,0x7b,0x19,0x96,0x2c,0x59,0xc2,0xa0, + 0xa8,0xa8,0xc8,0xd0,0xd7,0xd7,0x07,0x94,0x2f,0x02,0xd2,0x29,0x60,0x03, + 0xbe,0x7f,0x17,0x64,0x50,0x51,0xf9,0x8e,0xe1,0x1b,0x80,0x00,0x62,0x02, + 0xb9,0xf4,0xc9,0x93,0x5b,0x0c,0x37,0x6e,0x9c,0x64,0xb8,0x7b,0xf7,0x3c, + 0xd8,0xd0,0x57,0xaf,0x5e,0x31,0xdc,0xb9,0x73,0x87,0x61,0xdb,0xb6,0x6d, + 0x60,0x43,0x41,0x20,0x26,0x26,0x06,0x6c,0xd9,0xf7,0xef,0xdf,0x19,0xd2, + 0xd3,0xd3,0xc1,0xea,0xee,0xde,0xbd,0xc0,0xf0,0xec,0xd9,0x1d,0x86,0x4f, + 0x9f,0x7e,0x62,0x04,0x05,0x40,0x00,0xb1,0x80,0xbc,0xff,0xf9,0x33,0x0f, + 0xc3,0x8f,0x1f,0x5f,0xe1,0x82,0x6b,0xd7,0xae,0x05,0x7b,0xff,0xc5,0x8b, + 0x17,0x0c,0xc9,0xc9,0xc9,0x0c,0x6a,0x6a,0x6a,0x0c,0xec,0xec,0xec,0x0c, + 0x7b,0xf7,0xee,0x65,0x78,0xf0,0xe0,0x01,0x03,0x7a,0x4a,0xc2,0x96,0xb0, + 0x00,0x02,0x08,0x23,0xf2,0xb2,0xb3,0x4d,0x18,0x32,0x33,0x33,0xf1,0xc5, + 0x0b,0x5c,0x1d,0x3e,0x00,0x10,0x40,0x58,0x53,0x05,0x21,0x4d,0xc4,0x00, + 0x80,0x00,0x62,0xa2,0xd8,0x04,0x1c,0x00,0x20,0x80,0x08,0x66,0x10,0xb0, + 0x22,0x96,0x2c,0x86,0xdf,0xbf,0xff,0x32,0xfc,0xfc,0xf9,0x1b,0x18,0x79, + 0xbf,0x80,0xf4,0x1f,0x20,0x0d,0x4a,0x45,0x3f,0x18,0xde,0xbd,0xfb,0xc2, + 0xf0,0xfa,0xf5,0x47,0x06,0x61,0xe1,0x0f,0x28,0x7a,0x00,0x02,0x88,0xa0, + 0xc1,0x20,0x43,0x27,0x4c,0x48,0xc4,0xab,0x46,0x58,0x38,0x1e,0x18,0x81, + 0x6e,0x28,0x62,0x00,0x01,0x44,0xd0,0x60,0x90,0x4b,0x41,0x20,0x31,0x31, + 0x11,0x98,0xac,0x3e,0x31,0x80,0x72,0xe2,0xb7,0x6f,0xdf,0x80,0xa9,0xe8, + 0x07,0x83,0x82,0xc2,0x1a,0x86,0x55,0xab,0xe4,0x80,0x86,0xfe,0x63,0xb8, + 0x7a,0xb5,0x97,0x41,0x40,0x20,0xf8,0xff,0x87,0x0f,0x6b,0xc1,0x69,0x19, + 0x20,0x80,0x08,0x1a,0x0c,0xf2,0x3e,0x08,0xcc,0x9f,0x3f,0x1f,0xab,0x3c, + 0x24,0xe9,0xfd,0x67,0xf8,0xf5,0xeb,0x17,0xc3,0xe1,0xc3,0x0d,0x0c,0xfc, + 0xfc,0x3e,0xff,0x3f,0x7e,0xdc,0xc2,0x08,0x10,0x40,0x04,0x0d,0x06,0x85, + 0x29,0x08,0x80,0xb2,0xf1,0xc7,0x8f,0x1f,0x19,0xbe,0x7c,0xf9,0x02,0x76, + 0xed,0xcf,0x9f,0x3f,0x19,0xb4,0xb4,0x0e,0x33,0x6c,0xdd,0x2a,0x03,0x36, + 0xd8,0xc0,0xa0,0x84,0xe1,0xdf,0xbf,0x9f,0x40,0x8b,0xfe,0x32,0xf0,0xf1, + 0xb9,0xfd,0x07,0x08,0x20,0x82,0x06,0x7f,0xfd,0x0a,0xc9,0x55,0xa0,0xb2, + 0x03,0x19,0xfc,0xfb,0xf7,0x0f,0xec,0xda,0xdf,0xbf,0x7f,0x33,0xdc,0xba, + 0x35,0x91,0xe1,0xed,0xdb,0xb7,0x60,0xfc,0xee,0xdd,0x3b,0x86,0xc8,0xc8, + 0x5e,0x06,0x80,0x00,0x62,0x01,0x71,0x40,0xf9,0x1d,0x17,0x78,0xff,0xfe, + 0x0b,0x98,0x56,0x56,0x56,0x06,0x87,0x31,0x66,0xae,0xfb,0x0f,0xc7,0x8a, + 0x8a,0x13,0x19,0x4a,0x4b,0x59,0x81,0xec,0xdf,0x0c,0x00,0x01,0xc4,0x72, + 0xe6,0xcc,0x19,0xa0,0xa6,0x6f,0xe0,0xfc,0x8e,0x2d,0x6b,0xbe,0x7c,0xf9, + 0x11,0x4c,0x83,0x4a,0x39,0x50,0xc4,0x81,0xca,0x8a,0x3f,0x7f,0xfe,0x80, + 0x4b,0x3e,0x10,0x00,0xb1,0x41,0xe2,0xa0,0xa2,0x01,0xe4,0xc8,0x0f,0x1f, + 0x3e,0x80,0x0d,0x06,0x08,0x20,0x16,0x50,0x89,0x84,0x5c,0x98,0xa3,0x03, + 0x21,0xa1,0x8f,0x60,0xc5,0x20,0x17,0x83,0xbc,0x0f,0x73,0x25,0x36,0x57, + 0x4b,0x49,0x95,0x31,0xa4,0xa4,0x70,0x00,0x45,0xfe,0x32,0x00,0x04,0x10, + 0x0b,0x54,0x02,0x67,0xe1,0x2d,0x24,0x14,0xf5,0x1f,0x54,0xe6,0x6e,0xdf, + 0xbe,0x1d,0x1c,0x14,0xa0,0xa4,0x06,0x4a,0x01,0xb0,0x30,0x06,0xb9,0x1c, + 0x14,0x99,0x20,0x71,0x10,0x06,0x45,0x2a,0x08,0x00,0x04,0x10,0x23,0x31, + 0x75,0x1e,0x3f,0xbf,0x1f,0x50,0x19,0x28,0xa8,0x7e,0x01,0xf1,0x1f,0xa0, + 0xc8,0x3f,0x28,0x86,0x95,0x6c,0x10,0x3e,0x28,0x3d,0x03,0x7d,0x0f,0x0c, + 0x9a,0x33,0x8c,0x00,0x01,0x44,0x94,0xc1,0xe4,0x00,0x80,0x00,0x03,0x00, + 0xd3,0x6a,0xb5,0xa8,0xf4,0x4a,0x8f,0x34,0x00,0x00,0x00,0x00,0x49,0x45, + 0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_editslots_png_len = 690; +static const unsigned char small_editslots_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0x44,0x49,0x44,0x41,0x54,0x48,0xc7,0xb5,0xd4, + 0xe1,0x6b,0x12,0x71,0x1c,0xc7,0x71,0xb7,0x56,0x2b,0x28,0x62,0xc1,0x1a, + 0x8b,0x82,0x06,0x91,0x50,0x8c,0x36,0x11,0x7a,0x90,0xe0,0xf0,0xb4,0x61, + 0x94,0x14,0x34,0x84,0xb2,0x82,0xf5,0x60,0x7b,0x12,0xc1,0xe8,0xc9,0x08, + 0x7a,0xb0,0x90,0x8a,0x1e,0xb4,0x43,0xb0,0xeb,0x88,0x95,0xec,0x81,0x91, + 0x73,0x26,0x1c,0xa3,0x1e,0x04,0xda,0xb3,0x34,0x85,0xb1,0x4b,0xe6,0xa8, + 0x9d,0x50,0x0c,0xec,0x8f,0xd8,0xa7,0xef,0xd7,0x7e,0x0e,0xb7,0x5d,0x91, + 0x79,0x3d,0x78,0x3d,0xb8,0xfb,0x71,0x6f,0xbf,0xf7,0xbb,0xf3,0x6c,0x00, + 0x6c,0xff,0xc3,0xe6,0x03,0x9b,0x2d,0x48,0x32,0x42,0xd0,0x92,0x30,0x87, + 0x02,0x57,0x06,0x11,0x4d,0x5f,0xc7,0x93,0xe4,0x05,0x48,0x23,0x87,0xd1, + 0x4a,0xbc,0x31,0x9c,0xe1,0xa8,0xb6,0x32,0x8a,0xb8,0xee,0xc5,0x84,0x7c, + 0x8a,0x4f,0x66,0x2c,0x09,0xf3,0xa4,0x1c,0x8d,0xbe,0x77,0x61,0xfc,0xfe, + 0x49,0xcb,0xc2,0x41,0xbe,0x7d,0x9e,0x94,0xa3,0x4e,0xa9,0xdb,0xb2,0xad, + 0x78,0x4a,0xb0,0x85,0x4a,0x76,0x92,0xf6,0x7f,0x0a,0x73,0xd4,0xe7,0x1b, + 0x46,0xb9,0x6c,0xa0,0x54,0xfa,0x5a,0xb3,0xb4,0xb4,0x02,0x8f,0xc7,0xcb, + 0x8b,0x2f,0xc8,0xb0,0xf8,0x81,0xb6,0x66,0xc3,0x28,0x14,0x4a,0x98,0x9a, + 0x7a,0x08,0xa7,0xf3,0x34,0x5c,0x2e,0x37,0xa6,0xa7,0xa3,0xc8,0xe7,0x75, + 0x84,0xc3,0x8f,0x20,0x49,0x3e,0x98,0xdc,0x0d,0xfe,0x74,0x87,0xf5,0xb0, + 0xc2,0x0b,0xe3,0x7d,0x7d,0xc8,0xb9,0xdd,0xc8,0xd9,0xed,0x18,0xa3,0x63, + 0x8e,0x17,0x0a,0x9f,0xb1,0xb8,0x58,0x86,0xae,0x7f,0xd9,0xb8,0x9b,0x46, + 0xab,0xab,0xdf,0x51,0xad,0xfe,0xc0,0xda,0x5a,0x15,0xa1,0x50,0x88,0x63, + 0x37,0xc9,0xee,0x7a,0x78,0x07,0xf9,0xc0,0x51,0x38,0x1c,0x58,0xa7,0xe8, + 0x3c,0xe1,0xad,0xf8,0x35,0x75,0x78,0x13,0x45,0x51,0xa0,0x69,0x1a,0x8a, + 0xc5,0x22,0x2a,0x95,0x4a,0x8d,0x61,0x18,0x50,0x55,0x95,0x63,0x39,0x72, + 0xa0,0x1e,0x6e,0x23,0x59,0x9e,0x94,0xa3,0xdf,0xc8,0x0c,0xf1,0x7a,0xcf, + 0x6e,0x0b,0x9b,0x45,0x99,0xae,0xeb,0x90,0x65,0x99,0x63,0x05,0xd2,0x5b, + 0x0f,0x47,0x79,0x2b,0xc6,0xc4,0xa4,0x1c,0xbd,0x48,0x22,0x11,0x05,0xe9, + 0xf4,0x3b,0xc4,0xe3,0x29,0xcc,0xce,0x26,0xc8,0xeb,0x6d,0x12,0x89,0x34, + 0x16,0x16,0xde,0x22,0x99,0x4c,0xc1,0xef,0xf7,0x73,0xec,0x6e,0x63,0x18, + 0xcb,0xcb,0x06,0x4d,0x33,0x53,0x9b,0x92,0xc9,0xb2,0x82,0x58,0xec,0x15, + 0x02,0x81,0x4b,0xb4,0x3b,0xce,0xbf,0x7d,0x78,0x29,0x62,0x6f,0xdc,0x0a, + 0x65,0x68,0x48,0xc2,0xdc,0x9c,0xb6,0x31,0x89,0xaa,0xc6,0x30,0x30,0xe0, + 0xe0,0x45,0x8d,0xdc,0x22,0x0e,0x72,0x42,0x5c,0x78,0xdc,0xc4,0x31,0x72, + 0xa4,0x16,0x6d,0x78,0x78,0x1d,0xe4,0xb9,0xc9,0x04,0x6f,0xc8,0x20,0x39, + 0x4a,0xba,0xc9,0x7e,0xb2,0xef,0x37,0xf6,0x92,0x3d,0x5b,0x5f,0xb7,0x76, + 0x72,0xed,0xdc,0x48,0x3f,0x1e,0xbc,0xbc,0x8c,0x7b,0xcf,0xbc,0x38,0x73, + 0xbe,0x97,0x17,0xee,0x90,0x43,0xe2,0xc2,0x8e,0xa6,0xff,0x20,0x22,0x9e, + 0x8d,0xcc,0x87,0x90,0xd2,0x6f,0x20,0xf6,0xc9,0x83,0xdb,0x8f,0xfb,0xf9, + 0x64,0x9e,0x1c,0x24,0x9d,0xad,0x7c,0x2b,0xb2,0x26,0x5f,0x37,0x7e,0x75, + 0x7a,0xc8,0xae,0x56,0xc2,0x57,0x4d,0xbe,0x6e,0x93,0x56,0x84,0x79,0xd3, + 0x47,0xc9,0x47,0x31,0xe9,0xa4,0x78,0xd2,0x5d,0xbc,0xd6,0x4a,0x98,0x1f, + 0x60,0xa7,0x08,0xf5,0x08,0x5d,0xe2,0x5c,0xd3,0x9f,0xcd,0x9f,0x09,0x9b, + 0x14,0x3c,0x6f,0xbc,0x09,0x28,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44, + 0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_editvlayout_png_len = 289; +static const unsigned char small_editvlayout_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x00,0xb3,0x49,0x44,0x41,0x54,0x48,0xc7,0x63,0xf8, + 0xff,0xff,0x3f,0x03,0x0c,0x03,0x01,0x23,0x10,0xb3,0x00,0x31,0x07,0x10, + 0x73,0x03,0x31,0x2f,0x11,0x98,0x1b,0xaa,0x1e,0xa4,0x8f,0x11,0x6e,0x16, + 0x9a,0xc1,0x2c,0xad,0xad,0xad,0xff,0xf3,0xf3,0xf3,0xff,0x27,0x26,0x26, + 0x12,0xc4,0x8e,0x8e,0x8e,0x20,0x4d,0x20,0x2c,0x09,0xb5,0x84,0x05,0x97, + 0xc1,0x1c,0x20,0x43,0x8f,0x3f,0x6e,0xfb,0xbf,0xef,0x7e,0x31,0x41,0xbc, + 0xf8,0xac,0x13,0xcc,0x60,0x63,0xa8,0xe1,0x1c,0xb8,0x0c,0xe6,0x06,0xb9, + 0x02,0xa4,0xa1,0xb0,0x5f,0x8f,0x20,0x4e,0xaa,0x56,0x87,0x19,0xec,0x02, + 0xc4,0x4a,0x20,0xfd,0x38,0x0d,0x86,0x2a,0x24,0x15,0x13,0x34,0x98,0x03, + 0xea,0x25,0x63,0xa8,0x62,0x5f,0x22,0xb0,0x0b,0x31,0x41,0xc1,0x02,0x8d, + 0x04,0x49,0xa8,0x0b,0xd4,0x88,0xc0,0x4a,0xc4,0x44,0x1e,0x33,0xd4,0xd5, + 0x82,0x40,0x2c,0x0e,0xd5,0x40,0x08,0x8b,0x43,0xd5,0x83,0xf4,0x31,0x8f, + 0x26,0xb7,0xd1,0xe4,0x36,0x9a,0xdc,0x46,0x93,0xdb,0xa0,0x4c,0x6e,0x54, + 0xab,0x4c,0x01,0x44,0xb6,0x99,0x20,0xa4,0x19,0xbb,0xc3,0x00,0x00,0x00, + 0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_editvlayoutsplit_png_len = 355; +static const unsigned char small_editvlayoutsplit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x00,0xf5,0x49,0x44,0x41,0x54,0x48,0xc7,0x63,0xf8, + 0xff,0xff,0x3f,0x03,0x2d,0x30,0xc3,0xa8,0xc1,0x64,0x19,0xcc,0x00,0x56, + 0x4e,0x82,0xc1,0x40,0xc0,0x08,0xc4,0x2c,0x40,0xcc,0x01,0xc4,0xdc,0x50, + 0xcc,0x01,0x15,0x63,0xc4,0x63,0x11,0x6e,0x7d,0x50,0x05,0x2c,0xa1,0xa1, + 0xa1,0xff,0x7d,0x7c,0x7c,0xfe,0x9b,0x98,0x98,0x80,0x04,0x40,0x58,0x12, + 0x88,0x79,0x41,0x72,0xb8,0x5c,0x8c,0x57,0x1f,0x54,0x01,0x07,0x48,0x72, + 0xdb,0xed,0xf4,0xff,0xcb,0x2f,0xbb,0xc0,0x14,0x18,0x43,0x15,0x71,0xe0, + 0x71,0x31,0x6e,0x7d,0x50,0x05,0xdc,0x5e,0x5e,0x5e,0xff,0x37,0xdd,0x8c, + 0xfb,0xdf,0xba,0xd2,0x0c,0xa6,0xc0,0x05,0x88,0x95,0x40,0x72,0x78,0x5c, + 0x8c,0x5b,0x1f,0x54,0x01,0x2f,0x16,0x05,0xbe,0x40,0xac,0x06,0x0d,0x8e, + 0x10,0x34,0x03,0x43,0x08,0xea,0x23,0xc2,0xe0,0x58,0x98,0x4b,0x91,0x69, + 0x90,0xe1,0x94,0x18,0x9c,0x0b,0x65,0xa3,0x07,0x01,0x4c,0x4d,0x2c,0x39, + 0x06,0x77,0x20,0x19,0x80,0x13,0x9b,0x99,0x99,0x0d,0x1e,0x17,0xd3,0x34, + 0x8c,0x69,0x9a,0x2a,0x78,0xf1,0xa4,0x63,0xc2,0x06,0x83,0xb2,0x24,0x28, + 0xf7,0x54,0xce,0x32,0xc4,0x69,0x30,0x96,0x9c,0x87,0x5b,0x1f,0x2c,0x07, + 0x61,0x89,0x71,0xa2,0x72,0x1e,0x4e,0x7d,0xb0,0x3c,0x0f,0x2d,0x17,0x8c, + 0xa1,0x12,0x2e,0xc4,0x96,0x15,0x38,0xf5,0xc1,0x4a,0x29,0x68,0x24,0x49, + 0x42,0x5d,0xa9,0x44,0x6c,0xe9,0x86,0x53,0x1f,0xad,0xca,0x63,0x00,0x42, + 0x86,0x4b,0xcc,0xc3,0x5b,0xa9,0xcc,0x00,0x00,0x00,0x00,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_exec_png_len = 1408; +static const unsigned char small_exec_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x06,0x62,0x4b,0x47,0x44,0x00, + 0xff,0x00,0xff,0x00,0xff,0xa0,0xbd,0xa7,0x93,0x00,0x00,0x00,0x09,0x70, + 0x48,0x59,0x73,0x00,0x00,0x0b,0x12,0x00,0x00,0x0b,0x12,0x01,0xd2,0xdd, + 0x7e,0xfc,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd3,0x09,0x02, + 0x16,0x03,0x37,0x74,0x5c,0x47,0xd5,0x00,0x00,0x05,0x0d,0x49,0x44,0x41, + 0x54,0x78,0xda,0x9d,0x95,0x59,0x6c,0x54,0x55,0x1c,0xc6,0xbf,0x73,0xce, + 0xbd,0xb7,0x77,0xee,0x74,0x66,0x4a,0xa7,0x2b,0xa5,0x54,0x28,0x14,0x03, + 0x08,0xc8,0x22,0x48,0xa2,0x46,0xf0,0xc1,0x17,0x37,0x4c,0xd0,0x44,0x45, + 0x62,0x22,0x98,0x20,0x89,0x89,0xc6,0xa8,0x51,0x13,0xe3,0x46,0x34,0x51, + 0x03,0xf2,0x82,0x21,0xd1,0x1a,0x05,0x65,0x51,0x43,0x0c,0x82,0x2c,0x4d, + 0x8d,0x95,0xb0,0xb7,0x05,0x0a,0x03,0x94,0xa5,0x9d,0xae,0xd3,0xce,0xd6, + 0x3b,0x73,0x97,0xb3,0xf8,0xd0,0x25,0x48,0x25,0x18,0xbf,0xa7,0xf3,0x70, + 0xce,0xef,0x9c,0xff,0xf6,0x1d,0x82,0x9b,0xf4,0xec,0xde,0x9c,0xe5,0x53, + 0xf2,0x48,0x52,0x27,0x0f,0xea,0xae,0x18,0xd2,0xfa,0x07,0x36,0x41,0x0b, + 0xe7,0x20,0xd5,0x32,0xee,0xf3,0x36,0xa9,0xe8,0xc5,0xbd,0x2f,0x44,0xf3, + 0xb8,0x8d,0xc8,0xe8,0x62,0xf5,0x01,0xc7,0x04,0xa0,0xfb,0x9e,0x8c,0xc4, + 0x39,0xdb,0xd5,0x36,0x59,0xbb,0x27,0xe4,0x0b,0x7f,0xda,0xb5,0xa1,0x7d, + 0x86,0x43,0x3a,0x3b,0xca,0x8c,0xa7,0x95,0x2f,0xba,0x8b,0xba,0xb2,0x5b, + 0x90,0x4e,0x7d,0xd9,0xf0,0xda,0x2c,0x7e,0x5b,0xf0,0xea,0x03,0x8e,0x69, + 0x33,0xf2,0x99,0x4d,0xf0,0xa8,0xee,0x8a,0x7d,0xd7,0x32,0xec,0xb1,0xd6, + 0x3a,0x23,0xaa,0xc2,0x80,0x99,0x13,0x2a,0x9c,0xe1,0x32,0x5b,0xc8,0x18, + 0x18,0x41,0x6d,0xcb,0xc0,0x15,0xa3,0xa5,0x6d,0x75,0x20,0x5a,0x77,0x51, + 0x08,0xa5,0x35,0xbd,0x5e,0xd5,0x71,0x4b,0xf0,0xf3,0xfb,0x9d,0xa5,0x2d, + 0x26,0xfb,0xfd,0x7c,0x19,0xb3,0x8a,0x73,0x12,0x39,0x9d,0x20,0x43,0x80, + 0x70,0x5b,0x1a,0x56,0xc2,0x81,0xe6,0x0b,0x10,0x53,0x83,0x28,0xb3,0x80, + 0x00,0x43,0x38,0xe1,0x5e,0x31,0x6c,0x79,0x19,0x2e,0x17,0xac,0x6f,0xf0, + 0x8d,0xe3,0xef,0xcf,0x3a,0x7d,0x33,0x58,0x03,0x00,0x21,0xe4,0xfc,0xf8, + 0x71,0x5d,0xcf,0xcf,0x20,0x88,0xd7,0x30,0x68,0x36,0x47,0xe5,0x1f,0x3d, + 0x88,0x24,0x87,0xc0,0x14,0x1f,0xbe,0x9d,0x00,0xb4,0x4b,0x83,0x16,0xb1, + 0x90,0x9b,0x14,0x99,0x72,0xb9,0x36,0x3c,0x85,0xda,0xbe,0x9c,0x3c,0x98, + 0xe2,0xd3,0x57,0x7d,0xfb,0xe2,0xc5,0xfa,0xe7,0xba,0xc7,0x81,0xa5,0x00, + 0x8f,0x08,0x89,0xfe,0x3e,0x0a,0x55,0x0e,0x84,0x63,0x59,0x94,0x70,0x57, + 0x6a,0x11,0xde,0x2d,0x3d,0xb7,0x8f,0x6a,0x7a,0x98,0x16,0x98,0xd5,0x84, + 0x10,0x03,0x70,0x11,0x1d,0xc8,0x20,0x48,0x09,0xae,0x16,0x1a,0xd4,0x77, + 0xf2,0x7a,0x2a,0xd6,0x10,0x18,0x97,0x8a,0x95,0x7b,0xec,0x87,0x1d,0x90, + 0x8f,0xd3,0x1e,0xe6,0x36,0x87,0x0a,0x48,0x26,0x08,0x54,0x9e,0x19,0x10, + 0x25,0xf1,0x73,0xdf,0x25,0x8e,0xed,0xd8,0x06,0x29,0x13,0xc6,0x84,0x4a, + 0x12,0x28,0xab,0xae,0x29,0x9a,0xbd,0x78,0x9d,0x1e,0x0c,0x2d,0x21,0x94, + 0x9a,0x3a,0xd3,0x90,0xb1,0x0a,0x11,0xef,0xb2,0xed,0x82,0x0b,0xd7,0xdf, + 0xd4,0x44,0x64,0xa7,0x92,0xaa,0x3f,0xb6,0xb1,0x8e,0x03,0x80,0x96,0x16, + 0x64,0xd9,0xa9,0xa0,0x31,0xaf,0x2f,0xc2,0x00,0x00,0xd4,0x53,0x50,0x42, + 0x24,0x7a,0x1b,0xf7,0x6c,0xeb,0x69,0xd8,0x7c,0x18,0x80,0x3b,0xf2,0x88, + 0x63,0x73,0xdf,0xae,0x6f,0x98,0x30,0x67,0xc9,0x5a,0x33,0x5a,0xfc,0x16, + 0xa1,0xd4,0x2a,0x13,0x0a,0x03,0xd5,0x91,0xe0,0xa0,0x3e,0x6d,0xa3,0xd5, + 0x65,0xbf,0xca,0xda,0x2f,0xaf,0x02,0xd0,0x38,0xcc,0xc9,0xa2,0xca,0x4b, + 0x13,0x20,0x0f,0xc0,0x01,0x24,0x27,0x10,0x81,0x40,0x71,0xb0,0x76,0x51, + 0xe9,0x0d,0x50,0x00,0x40,0xf3,0x07,0xab,0x12,0x5e,0xaa,0xe3,0x73,0x2d, + 0x44,0x37,0x9b,0xa5,0x01,0x59,0x50,0xa2,0xa1,0x38,0xc0,0x90,0xae,0x8e, + 0x60,0xb0,0xa6,0xa8,0xc6,0x0b,0x58,0x2f,0x8d,0xa6,0x97,0x0a,0x57,0x79, + 0xea,0xbc,0x02,0x8e,0x00,0x88,0x01,0xc8,0x01,0x99,0x90,0xa5,0x07,0x66, + 0xde,0xbb,0x7e,0xde,0xfa,0x5d,0x55,0x37,0xe7,0xae,0x69,0xcd,0xf2,0x9c, + 0x59,0x1a,0xd8,0x64,0x14,0xe9,0x7f,0xea,0xc5,0x06,0x4c,0x9d,0x82,0xe5, + 0x14,0x68,0x87,0xc7,0x65,0x2a,0xc3,0x01,0x4c,0x00,0x00,0xaa,0x33,0xd1, + 0x59,0x51,0xe8,0xa3,0x90,0x09,0x68,0x49,0x05,0x0c,0x01,0x0e,0xd5,0x91, + 0x28,0x29,0x99,0x17,0x9a,0x3a,0xff,0x9d,0xfb,0x37,0x34,0x47,0xc7,0xb5, + 0x92,0x69,0xc6,0x09,0xa5,0x0d,0x94,0x10,0x4e,0x04,0x01,0xc9,0x4b,0x04, + 0x7a,0xba,0x62,0xce,0xd9,0x1d,0x3f,0x02,0xc8,0x02,0x00,0x35,0x44,0xa6, + 0xbe,0xc2,0x3e,0xb5,0x6e,0x81,0x79,0xe1,0x9b,0x9a,0x22,0xdb,0xa6,0x79, + 0x05,0xe5,0x02,0xbd,0x86,0xa5,0xb7,0x97,0x54,0xae,0x95,0xa5,0x13,0xeb, + 0x57,0x6c,0x1f,0x58,0xb0,0xf2,0xa7,0xac,0x39,0x0a,0xde,0x5e,0x49,0xa4, + 0xc6,0x49,0x07,0x06,0xe1,0x5f,0x4d,0x02,0x1e,0xa7,0xc8,0x97,0x97,0xcf, + 0xd4,0x17,0xad,0x5b,0x1b,0x7d,0xfc,0x60,0xd1,0x8d,0x23,0x5d,0xb0,0xe4, + 0xdd,0xa6,0xbb,0x73,0xe5,0x33,0x76,0x9e,0x0b,0x16,0x55,0x71,0x42,0x01, + 0x02,0x10,0x05,0x14,0x13,0xae,0xea,0x0c,0xbf,0xbd,0x3a,0xa8,0x9a,0x82, + 0x01,0xd6,0xa8,0x15,0xb0,0x84,0x6e,0xd0,0x49,0x43,0xa0,0x4f,0x36,0xf7, + 0xe3,0xbe,0xb3,0x49,0x30,0xae,0x00,0x22,0x14,0x02,0xed,0x7d,0xae,0x71, + 0xb4,0x71,0x4d,0x6a,0xdf,0xca,0xef,0xb5,0x11,0xb0,0xab,0x2a,0xa7,0x2f, + 0xec,0xb1,0xac,0x89,0x9c,0x53,0x40,0x00,0x60,0x80,0xa2,0xc0,0x00,0xd7, + 0xc8,0x51,0x57,0xab,0x6d,0xb1,0xd5,0xd4,0xa8,0xa9,0x9e,0xb2,0x74,0x22, + 0x73,0x82,0xb0,0x41,0x07,0x9a,0xcd,0x41,0x14,0x00,0x04,0x01,0xa5,0x03, + 0x70,0x7c,0xe9,0xf5,0xb7,0xa6,0x00,0xb0,0x51,0x30,0x7c,0x4a,0x1e,0xca, + 0x95,0x32,0x02,0x67,0x24,0x4b,0xd1,0x91,0xfa,0xa6,0x00,0x91,0x04,0x6c, + 0x45,0x88,0xed,0x12,0x63,0x9c,0x29,0x18,0xc3,0x7b,0xf5,0x78,0x16,0xac, + 0xab,0xf3,0xb8,0x13,0x3f,0x78,0x0d,0x80,0x18,0x03,0xeb,0x8e,0xff,0x73, + 0x34,0x9b,0x5f,0xe6,0x55,0xd3,0x90,0x45,0x1c,0xdf,0x48,0x7b,0x7e,0x6a, + 0x72,0xc8,0xf2,0x4b,0x34,0xa8,0x18,0x80,0xe4,0xc8,0x46,0x13,0x80,0x8e, + 0xe1,0xa8,0xf2,0x00,0x4b,0xb9,0xb0,0x5a,0xe2,0x52,0x25,0x7b,0x1a,0xbd, + 0x63,0x5f,0x6d,0xf0,0x7b,0x9b,0xda,0x01,0xf0,0x31,0xb0,0x4a,0xa6,0x76, + 0x95,0x64,0xed,0x49,0x7a,0x32,0xf7,0x8a,0x76,0xa9,0x7d,0x3f,0x4f,0x25, + 0xda,0x02,0x75,0xb3,0x57,0x0c,0xce,0x29,0xbb,0x2b,0x6b,0x14,0xb2,0x31, + 0xcb,0x9a,0x01,0x60,0xe2,0x70,0xcf,0xe3,0x04,0x20,0xa4,0x01,0x99,0x97, + 0xb6,0x8a,0x1d,0xfd,0xc1,0x8d,0x7d,0x7d,0x74,0xb4,0x2b,0xd8,0x28,0x38, + 0xde,0xb0,0xd9,0x2b,0x5b,0xf0,0xcc,0x09,0xff,0x4c,0xd3,0xc1,0xee,0xfd, + 0x9f,0x1c,0x1e,0x3c,0xbd,0x63,0x6f,0x71,0xf9,0xf2,0x63,0x94,0x5a,0x0f, + 0x64,0xab,0xc2,0x51,0x38,0x80,0x9e,0x77,0x11,0xba,0xd2,0x3b,0xa4,0x27, + 0xf2,0xd2,0xbf,0xc3,0xd2,0x10,0x22,0xd0,0x7a,0x6d,0xc5,0x2e,0x5e,0x3d, + 0xe9,0xb5,0x6e,0xdd,0x2a,0xb3,0x97,0x3a,0x00,0xc8,0x31,0x13,0x1a,0x9b, + 0xac,0x4f,0x17,0xdb,0x18,0x1e,0x95,0x91,0xb0,0x2b,0x3a,0x95,0x44,0x0e, + 0x77,0x02,0x64,0x9a,0x82,0xb5,0xb3,0x2f,0xa5,0x1d,0x3a,0xf8,0x05,0x2b, + 0xab,0x9d,0xc0,0x35,0xfa,0xb2,0x08,0x30,0xa2,0x37,0x5f,0x3b,0xc3,0x8f, + 0x6f,0xf9,0x90,0xc7,0x7f,0x8b,0x01,0xf0,0xff,0xe1,0x6e,0xb7,0x92,0x14, + 0xd2,0xd5,0x3b,0x73,0xe9,0xa2,0x7d,0xdd,0x79,0xa9,0x51,0xaa,0x9f,0x3c, + 0xf7,0x4b,0xe6,0xd4,0xa6,0xdd,0xd6,0xa2,0x8f,0xf2,0xc6,0xa1,0x78,0x15, + 0x4f,0x5d,0xef,0xe7,0xad,0xbb,0xf7,0xf8,0x9d,0xbf,0x9e,0x04,0x90,0xf9, + 0xd7,0xaf,0xe9,0x56,0x2a,0xa8,0x58,0x68,0x5a,0xd3,0x9f,0x58,0x4a,0x83, + 0xd5,0x35,0xe9,0xbf,0xde,0x3b,0xc2,0xd3,0x97,0xaf,0x0e,0x97,0x0d,0x06, + 0x80,0x08,0x80,0x34,0x00,0x0f,0xff,0x53,0x64,0xa4,0x17,0x8c,0xff,0x7a, + 0xe0,0x6f,0x77,0xe3,0x54,0x57,0x80,0x6c,0x28,0xa3,0x00,0x00,0x00,0x00, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_filenew_png_len = 313; +static const unsigned char small_filenew_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x00,0xcb,0x49,0x44,0x41,0x54,0x28,0xcf,0x9d,0xd3, + 0x3d,0x0a,0xc2,0x30,0x18,0xc6,0xf1,0x7f,0xa5,0x28,0x22,0xe2,0xea,0xe2, + 0xe0,0x01,0xbc,0x82,0x78,0x07,0x57,0x27,0x27,0x0f,0x20,0xde,0x41,0xef, + 0xe5,0xee,0xea,0xe2,0xea,0xa6,0x08,0x05,0xa5,0x1f,0x79,0x1d,0x6c,0x43, + 0xd2,0xbc,0x4a,0x6b,0x96,0x64,0xf8,0xf1,0xbc,0x1f,0x90,0x58,0x68,0x7e, + 0x62,0xfe,0xc1,0x51,0x50,0x42,0xa2,0x1f,0xc9,0x79,0x79,0x1b,0x6e,0x1c, + 0xd9,0x12,0x49,0x9d,0x3b,0xd8,0xd8,0xdb,0x20,0xcc,0x58,0x06,0xdc,0xc3, + 0x62,0xb1,0x41,0xd8,0x90,0xd6,0xb8,0x83,0x0b,0x8b,0x0b,0x0a,0x20,0x61, + 0x5d,0xe3,0x5e,0xcf,0x15,0xce,0x11,0x84,0x04,0x58,0x79,0x5c,0x4d,0x16, + 0x3a,0x0c,0xb8,0x00,0xb0,0xe0,0x6e,0xb9,0x87,0x3f,0x23,0x0a,0x30,0xe2, + 0xca,0x9e,0x14,0x80,0x97,0xbe,0xba,0x0a,0xc7,0x8c,0xd9,0x71,0x27,0x43, + 0x80,0x33,0x87,0xef,0x18,0x84,0x21,0x53,0x26,0x4e,0x25,0xa5,0xe7,0xc2, + 0xd9,0x69,0x8f,0x6e,0xf9,0xea,0x6b,0x38,0xf3,0xb0,0x1b,0xa2,0x26,0xe7, + 0x6d,0xb0,0x9e,0x6c,0xf4,0x6d,0xb4,0x48,0x6e,0x85,0x4d,0x9b,0x01,0x9f, + 0x9c,0x54,0xfc,0xd0,0xf0,0xbc,0xf9,0xb7,0x0a,0x3f,0x51,0x78,0xde,0x2d, + 0xfa,0x60,0x2c,0x45,0xbe,0xf6,0x7b,0x00,0x00,0x00,0x00,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_fileopen_png_len = 681; +static const unsigned char small_fileopen_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0x3b,0x49,0x44,0x41,0x54,0x48,0xc7,0xb5,0x95, + 0xcb,0x6f,0x12,0x51,0x1c,0x85,0xfb,0xc7,0xb5,0x58,0xeb,0x8b,0x18,0xe2, + 0xc2,0xb6,0x20,0x26,0x46,0x91,0xd2,0x62,0xb1,0xb4,0x05,0x86,0x3e,0x98, + 0x96,0x0e,0xb4,0x86,0x88,0xd0,0x08,0x4a,0x0a,0x55,0x1a,0xc4,0x27,0x3e, + 0x62,0xc2,0x96,0x2d,0x61,0x63,0x60,0xc1,0x02,0x12,0x16,0x10,0x36,0xc0, + 0x02,0x36,0x34,0x39,0x32,0xb7,0xcc,0x95,0xc9,0x5c,0xa0,0x86,0x74,0x71, + 0x12,0x2e,0x73,0xf9,0xbe,0xdf,0x3d,0x30,0xc3,0x14,0x80,0xa9,0xab,0x88, + 0x7c,0xd1,0x5b,0xf6,0xa3,0xe9,0x87,0xae,0x27,0x06,0x27,0x93,0x49,0x09, + 0x86,0xd3,0x3f,0x27,0x30,0xbd,0x30,0x82,0x25,0x18,0x27,0x53,0x80,0xcf, + 0xcf,0xcf,0xd1,0xed,0x76,0x91,0x48,0x24,0x46,0x0a,0xc6,0x9d,0x46,0x01, + 0xee,0x74,0x3a,0x68,0xb7,0xdb,0x24,0xe2,0xeb,0x78,0x3c,0xce,0x14,0x8c, + 0x3a,0x4d,0x9f,0x25,0xb3,0x23,0x16,0x8b,0xa1,0xd1,0x68,0xd0,0x34,0x9b, + 0x4d,0xb4,0x5a,0x2d,0xf2,0xfe,0xa0,0x60,0x30,0x2c,0x01,0x99,0x52,0xe7, + 0xd0,0x42,0xef,0xd4,0xd1,0x8b,0xe1,0x70,0x18,0xd5,0x6a,0x55,0x96,0x5a, + 0xad,0x86,0x7a,0xbd,0x8e,0x48,0x24,0x42,0xf7,0x89,0x40,0x96,0x80,0x82, + 0x17,0xd6,0xe7,0xe1,0xfd,0x29,0xe0,0xe8,0xb7,0x17,0x7a,0xee,0x9f,0x20, + 0x18,0x0c,0xa2,0x54,0x2a,0xc9,0x52,0x2e,0x97,0x51,0xa9,0x54,0x10,0x0a, + 0x85,0x98,0x82,0x41,0x30,0xa9,0x62,0xff,0x33,0x8f,0x83,0x6f,0xfb,0xf0, + 0xfc,0x38,0xe8,0x09,0x3c,0x78,0x30,0x20,0xf0,0xf9,0x7c,0xc8,0xe7,0xf3, + 0xb2,0x14,0x0a,0x05,0x14,0x8b,0x45,0x04,0x02,0x01,0x59,0x45,0x14,0x2c, + 0x7d,0x69,0xf7,0xcc,0x1a,0xb8,0x3e,0x6c,0x63,0xef,0x93,0x0b,0xee,0xaf, + 0x7b,0xf0,0x7c,0x77,0xe3,0xf0,0x97,0x87,0xd4,0x24,0x7d,0x50,0x10,0x04, + 0x64,0xb3,0x59,0x59,0x72,0xb9,0x1c,0xd2,0xe9,0xf4,0x50,0x30,0x99,0x9a, + 0x8b,0xd9,0xb0,0xf5,0x9e,0xc3,0x6e,0x62,0x0b,0xfc,0xc7,0x5d,0xb8,0xbf, + 0xf0,0x10,0x52,0x6e,0x52,0x93,0xce,0xbe,0x48,0x05,0x2e,0x97,0x0b,0x99, + 0x4c,0x86,0x26,0x1a,0x8d,0xb2,0xc1,0xd2,0xd4,0x77,0x1e,0xdf,0xc6,0xe6, + 0x5b,0x2b,0x1c,0x51,0x1b,0x9c,0xef,0x1c,0xd8,0x39,0x73,0xf6,0x4e,0xb1, + 0x23,0xab,0x69,0x50,0xc0,0x71,0x1c,0x99,0x56,0xea,0x7b,0x18,0x98,0x4c, + 0x6d,0x09,0x98,0x61,0x7d,0x6d,0xc1,0xc6,0x1b,0x2b,0xec,0x27,0x9b,0xe0, + 0x4e,0xed,0xd8,0x3e,0xe3,0x14,0x35,0x69,0x6d,0x17,0x82,0x54,0x2a,0x05, + 0xbf,0xdf,0x3f,0x1c,0x2c,0x4d,0x3d,0xab,0xbb,0x86,0x15,0x9f,0x09,0xab, + 0xaf,0xcc,0x58,0x3b,0xb6,0x60,0x3d,0xbc,0x06,0x5b,0x64,0x83,0x59,0x93, + 0xb8,0x5f,0xbc,0x43,0xbd,0x5e,0xef,0x58,0x30,0xbd,0x59,0x66,0xb5,0x2a, + 0x2c,0xf7,0x04,0xcf,0xfc,0x2b,0xb0,0x1c,0xaf,0xc2,0x1a,0x7a,0xae,0xa8, + 0x49,0xdc,0x67,0x34,0x1a,0xc1,0xf3,0xfc,0x68,0x30,0x53,0xb0,0xa8,0x22, + 0xbf,0x53,0xf3,0xcb,0x65,0x45,0x4d,0x1a,0xd3,0x5d,0xda,0xf5,0xa5,0xc0, + 0x2c,0x81,0x6a,0x41,0x85,0xa5,0xa3,0xa7,0x8a,0x9a,0xc4,0x6b,0x6a,0xb5, + 0xfa,0xff,0xc0,0x4c,0xc1,0xfc,0x0c,0x96,0x0e,0x0d,0xb4,0xa6,0x5b,0x8f, + 0x6e,0x0e,0xbf,0x41,0x2e,0xfd,0xf0,0x96,0x09,0xa6,0x61,0xf4,0x18,0x48, + 0x4d,0x37,0x1e,0xce,0x4d,0x06,0x66,0x09,0x66,0xee,0x4f,0xc3,0x20,0x3c, + 0x21,0x35,0xcd,0xe9,0xaf,0x4f,0x06,0x66,0x09,0x14,0x8f,0xcd,0xab,0xfa, + 0x33,0xfd,0x0b,0x6b,0x4c,0x83,0xb2,0x3e,0x78,0x0a,0x5d,0x00,0x00,0x00, + 0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_filesave_png_len = 328; +static const unsigned char small_filesave_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x00,0xda,0x49,0x44,0x41,0x54,0x48,0xc7,0x63,0xf8, + 0xff,0xff,0x3f,0x03,0x2d,0x30,0x84,0x60,0x60,0x08,0x01,0xe2,0xff,0x54, + 0xc2,0x21,0xc8,0x06,0xff,0x4f,0x6c,0x4d,0xf8,0xdf,0x76,0xa0,0xf9,0x3f, + 0x39,0x60,0xf5,0xea,0xd5,0x60,0xbd,0x2e,0x25,0x4e,0x60,0xc3,0x51,0x0c, + 0x06,0x49,0x64,0x6c,0x48,0x21,0xdb,0x60,0x90,0x5e,0xff,0x56,0x1f,0xec, + 0x06,0x6b,0xb9,0x69,0xc0,0x15,0xa7,0xa5,0xa5,0xe1,0xc4,0xc8,0xf2,0x24, + 0x1b,0x4c,0x55,0x17,0x23,0x07,0x05,0x55,0x5d,0x4c,0xb3,0x30,0xc6,0xe5, + 0x62,0x7c,0xfc,0xc1,0xe3,0x62,0xaa,0x1b,0x0c,0x52,0x44,0x0e,0x26,0x68, + 0x30,0x25,0x18,0xaf,0xc1,0xc2,0x12,0xc2,0x24,0x97,0x0f,0x72,0x4a,0x72, + 0x84,0x0d,0x06,0xb1,0xb3,0xb2,0xb2,0xfe,0x17,0x16,0x16,0x12,0x85,0xeb, + 0xeb,0xeb,0xc1,0x7a,0x88,0x32,0x18,0xa4,0xa1,0xa1,0xa1,0x01,0x2b,0x76, + 0x70,0x70,0x80,0x63,0x10,0xbf,0xb7,0xb7,0x77,0xb8,0x19,0x1c,0x54,0x1b, + 0xf0,0x3f,0x63,0x3d,0xf9,0x06,0x47,0x4c,0x09,0xf9,0x6f,0x10,0xa0,0x87, + 0x61,0x30,0xb8,0x06,0xb1,0x4a,0xb2,0x00,0x4b,0x80,0x22,0x04,0xa4,0x01, + 0x1b,0x76,0x77,0x77,0x87,0x63,0x10,0x7f,0xd2,0xa4,0x49,0x60,0x3d,0x30, + 0x43,0x51,0x6a,0x10,0x2a,0x56,0x4f,0x21,0x28,0x75,0x1e,0x2d,0x30,0x00, + 0x03,0x3b,0xbe,0x90,0x7a,0x5c,0xaf,0x5d,0x00,0x00,0x00,0x00,0x49,0x45, + 0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_frame_png_len = 400; +static const unsigned char small_frame_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x22,0x49,0x44,0x41,0x54,0x28,0xcf,0xb5,0x93, + 0x31,0x4e,0xc3,0x40,0x10,0x45,0xdf,0x7a,0xc7,0xc4,0xc4,0x0e,0x51,0x24, + 0xd3,0x53,0xd1,0xa4,0x42,0x34,0x94,0x1c,0x81,0x96,0x50,0x50,0x71,0x83, + 0x48,0x1c,0x83,0x53,0x50,0xa4,0x49,0x1b,0x1a,0xa4,0x20,0x0e,0xc0,0x19, + 0x52,0x59,0x8a,0x50,0x84,0x6c,0xd9,0x32,0x89,0xd7,0x4b,0xe1,0x00,0x05, + 0x76,0x42,0x90,0xd8,0x69,0xb6,0x78,0xfa,0xfa,0xa3,0x3f,0x5f,0x59,0x7e, + 0xff,0x9c,0x1d,0x58,0x04,0x94,0x83,0x46,0xa3,0x51,0xa8,0x06,0xca,0x62, + 0x31,0x18,0x85,0x33,0xbc,0x8b,0xae,0x67,0x5d,0xb3,0x41,0xd1,0xe0,0xc7, + 0xde,0x68,0x72,0x0b,0xee,0xd5,0xdb,0x93,0x35,0x5b,0x66,0x62,0x4f,0x12, + 0x8e,0x05,0x3d,0xeb,0x9e,0x31,0x64,0xda,0xa8,0xeb,0x31,0xe0,0x82,0x28, + 0x20,0x14,0xb4,0xa1,0x60,0xca,0xcb,0x0d,0x29,0x39,0x45,0xdd,0x5e,0xfd, + 0xf1,0x00,0xa0,0x23,0x28,0x2a,0x22,0x25,0x62,0x41,0x5e,0x27,0x1d,0x22, + 0x00,0x22,0x28,0x58,0x01,0xe4,0x2c,0x98,0x93,0xd6,0xc0,0xfe,0x9a,0x70, + 0x04,0xd6,0xdf,0x82,0x9c,0xd4,0x26,0x3f,0x59,0xf5,0x49,0x54,0xa1,0x2c, + 0xb7,0xc6,0xb1,0xfc,0x86,0x57,0x5b,0xe1,0xd5,0x1f,0xe1,0x7f,0xb1,0x21, + 0x55,0xf6,0x1e,0x08,0x1e,0x7e,0xed,0x25,0xf9,0xad,0x2f,0xd8,0x1a,0xe0, + 0x9c,0xfe,0x38,0x6c,0x50,0x6d,0x71,0x44,0x4c,0x09,0xa5,0x60,0xfd,0xf8, + 0xf9,0xe0,0x94,0x80,0xbd,0x46,0x13,0x19,0x0f,0xf4,0xb2,0x79,0x21,0x18, + 0x6f,0x74,0x7f,0x19,0x05,0x9b,0x1c,0x97,0xf4,0xb2,0xfd,0x47,0x12,0x85, + 0x4b,0xc0,0x21,0x21,0x1d,0xa4,0xb1,0x37,0x25,0x05,0x09,0xaf,0x0a,0x07, + 0x97,0x36,0x6d,0x5a,0xe8,0x0d,0x4d,0x31,0xbc,0x93,0x29,0xbb,0x43,0xad, + 0x3e,0x00,0x5a,0x69,0x7f,0x4b,0x28,0x09,0xf5,0x31,0x00,0x00,0x00,0x00, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_groupbox_png_len = 439; +static const unsigned char small_groupbox_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x49,0x49,0x44,0x41,0x54,0x28,0xcf,0xcd,0xd3, + 0x3f,0x4e,0x02,0x41,0x14,0xc7,0xf1,0xef,0xfc,0x01,0x0c,0x88,0x85,0xc1, + 0x98,0x58,0x1b,0x7b,0x6c,0xb6,0xe0,0x22,0x9e,0x81,0xc6,0x13,0x78,0x08, + 0x2f,0x20,0xd6,0xd6,0xb6,0x34,0xc6,0x86,0x98,0x50,0xd1,0x90,0x10,0x1a, + 0x2d,0x4c,0xd4,0xc4,0xb0,0xc2,0x66,0x61,0x66,0x9e,0xc5,0x6e,0x14,0x58, + 0xc1,0xc4,0xca,0xdf,0x54,0x33,0xf3,0xc9,0xe4,0xcd,0x9b,0x8c,0x12,0x00, + 0x94,0xc2,0x60,0x31,0x68,0x96,0x13,0xf0,0x38,0xbc,0x64,0x08,0x9b,0x2f, + 0x9b,0x8b,0xc5,0x84,0xf5,0x0c,0xe8,0x1e,0xf1,0x41,0x82,0xfb,0xc2,0x4a, + 0x63,0xa8,0x4d,0xb8,0x2c,0xe0,0x08,0x8e,0x79,0xe6,0x5d,0x25,0x08,0x1e, + 0x6f,0x95,0xbe,0x3e,0x93,0xf6,0x5b,0xeb,0x91,0x9f,0xd2,0xbe,0xdb,0xa3, + 0xc6,0x9c,0x51,0x6f,0xdc,0xe9,0xdd,0x40,0xa9,0x73,0xff,0x24,0xb1,0x9c, + 0x0b,0x85,0x11,0x49,0x57,0xc6,0x12,0x8b,0x97,0x07,0x39,0xed,0x73,0x62, + 0x31,0x71,0xeb,0x90,0x29,0x03,0xa2,0xc2,0xb9,0x0b,0x2c,0xe0,0x71,0x08, + 0x69,0x93,0x86,0xc5,0xcc,0x70,0x04,0xae,0x78,0x61,0x42,0xba,0x82,0x2b, + 0xd4,0x30,0x04,0x1c,0x29,0x0e,0xea,0x16,0x05,0x0e,0x28,0xb3,0x4f,0x95, + 0xb0,0x82,0x35,0x3b,0x94,0x01,0x87,0x07,0xb0,0x16,0x05,0x1e,0x9f,0x6f, + 0xac,0x63,0x8d,0xc6,0x13,0xb2,0xde,0x69,0x0b,0xe0,0x70,0x80,0xc2,0x60, + 0x0a,0x75,0x07,0x02,0xe4,0x8d,0xb6,0xd9,0x45,0xe6,0x6c,0xcf,0xe2,0x1b, + 0xbb,0x7c,0xb2,0x39,0xee,0x8f,0xf8,0x3f,0x94,0x21,0xd3,0x5f,0xf1,0x9c, + 0x98,0x00,0xc1,0x22,0xa3,0x5e,0x3f,0x0a,0xd9,0x1b,0x6d,0x48,0xc2,0x80, + 0x64,0x88,0xb3,0xf8,0x71,0x67,0x58,0x4e,0x9b,0x6e,0x0b,0x0e,0x24,0xc3, + 0xe4,0x96,0x58,0x51,0x62,0x97,0x03,0x1a,0xd4,0xb1,0x6b,0x9f,0x6a,0x59, + 0x3b,0x62,0x5e,0x15,0x9a,0x12,0x55,0xaa,0x54,0x30,0xa8,0x0d,0x58,0xf0, + 0xa4,0xcc,0x94,0x64,0xdf,0xca,0x60,0x50,0x5b,0xb0,0xe0,0xf1,0x9f,0xe4, + 0x0e,0x9a,0x91,0xbd,0x00,0x0b,0xaa,0x00,0x00,0x00,0x00,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_help_png_len = 837; +static const unsigned char small_help_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x02,0xd0,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0xd1,0xc4,0x54,0x20,0x00,0x08,0x20,0x16,0x72,0x35,0xa6,0xa6, + 0xec,0xf8,0xff,0xf0,0xc1,0x47,0x86,0x47,0x8f,0x3f,0x33,0x3c,0x7b,0xfa, + 0x99,0xe1,0xd3,0x97,0x42,0x46,0x64,0x79,0x80,0x00,0x62,0x44,0x0e,0x0a, + 0x57,0x57,0xd7,0xff,0xbb,0x77,0xef,0x66,0xc4,0x30,0x05,0x0d,0x24,0xc4, + 0x6d,0xfd,0x7f,0xee,0xfc,0x4b,0x86,0xeb,0xd7,0xde,0x02,0x79,0xbf,0x81, + 0xf8,0x1f,0x10,0xff,0x61,0xf8,0xcf,0xf0,0x93,0xe1,0xcf,0xdf,0x76,0xb0, + 0x7e,0x80,0x00,0x42,0x71,0x31,0x1b,0x1b,0x1b,0x83,0x84,0x84,0xc4,0xff, + 0x17,0x2f,0x5e,0xe0,0x34,0x3c,0x2a,0x62,0xd3,0xff,0x5d,0xbb,0x1e,0x30, + 0x7c,0xfc,0xf8,0x0a,0x68,0xd0,0x57,0xa0,0x08,0x33,0x03,0x23,0x03,0x1b, + 0x03,0xc4,0x79,0x3f,0xe0,0xea,0x00,0x02,0x08,0x23,0x8c,0x5f,0x3c,0x7a, + 0xc1,0xc0,0xc8,0xc8,0x88,0x35,0x46,0x3d,0xdd,0x57,0xff,0xdf,0xbc,0xf9, + 0x2e,0xc3,0x87,0x8f,0x4f,0x18,0xfe,0xff,0x7f,0x01,0x74,0x5d,0x3f,0xe3, + 0x9f,0xbf,0x3d,0x48,0x8a,0xff,0x30,0xb0,0x30,0x25,0x83,0xb9,0x00,0x01, + 0x84,0x62,0xf0,0xbf,0x7f,0xff,0xc0,0xf4,0xd7,0x77,0x5f,0xb1,0x1a,0xbe, + 0x67,0xcf,0x7d,0x86,0xef,0x3f,0x9e,0x33,0x30,0xfc,0x7f,0xcd,0xf0,0xe7, + 0xdf,0x1c,0xb8,0xaf,0xfe,0xfc,0x6d,0x63,0x64,0x64,0x60,0x85,0x06,0x09, + 0xc4,0xd5,0x00,0x01,0x84,0x62,0x30,0xd0,0x30,0x30,0xcd,0xc1,0xc1,0xc1, + 0xf0,0xf2,0xf1,0x4b,0x0c,0xc3,0xff,0x33,0x7c,0x00,0x12,0x1f,0xc1,0x2e, + 0xc3,0x04,0xcc,0x40,0x39,0x50,0x38,0x43,0xe4,0x00,0x02,0x08,0x6b,0xaa, + 0x60,0x62,0x62,0x62,0xe0,0xe2,0xe4,0x62,0x78,0x7a,0xff,0x29,0xd8,0x70, + 0x20,0x60,0x84,0xb9,0x0c,0x9b,0x7a,0x2d,0xcd,0x39,0x40,0x07,0xfc,0x02, + 0xb2,0x7e,0x32,0xfc,0xfd,0xb7,0x12,0xac,0x06,0x20,0x80,0x50,0x0c,0x86, + 0xb9,0x18,0x18,0x1b,0x60,0x57,0xff,0xf9,0xf3,0x07,0xc3,0x70,0x74,0xe0, + 0xe3,0xb5,0xe6,0xff,0xed,0x5b,0x6f,0x81,0x2e,0xfd,0xc8,0x80,0x1c,0x79, + 0x00,0x01,0x84,0x33,0x1d,0xb3,0xb0,0xb0,0x30,0xb0,0xb3,0xb3,0x83,0xc3, + 0xfd,0xf1,0xdd,0xc7,0x58,0x0d,0x0f,0x0a,0x58,0xff,0xff,0xe2,0x45,0x50, + 0xea,0x78,0x0b,0x0e,0xa2,0x3f,0xff,0x56,0xc0,0xe5,0x01,0x02,0x08,0x25, + 0x8c,0xd1,0xb3,0x37,0x33,0x33,0x33,0x38,0x58,0xfe,0xfe,0xfd,0xcb,0x70, + 0xe9,0xcc,0x25,0x8c,0x30,0xbf,0x75,0xfb,0x1d,0xc3,0x8b,0x17,0xaf,0x80, + 0x1a,0xdf,0x01,0x0d,0x5d,0x84,0x62,0x29,0x40,0x00,0xa1,0x18,0xfc,0xeb, + 0xd7,0x2f,0xa8,0x0d,0xc0,0x64,0xff,0xfb,0x37,0x98,0xff,0xf3,0xd7,0x4f, + 0x86,0x2f,0x5f,0xbe,0x30,0xbc,0x7d,0xf7,0x96,0x61,0xe3,0x9a,0x8d,0x28, + 0x86,0xdf,0xba,0xf9,0x0e,0xa8,0xf4,0x0b,0x4a,0x10,0xc0,0x00,0x40,0x00, + 0xa1,0x04,0xc5,0xfb,0xf7,0xef,0xc1,0x86,0x7e,0xfc,0xf8,0x91,0xe1,0xd7, + 0xef,0x5f,0xe0,0x60,0xf8,0xfa,0xf5,0x2b,0x83,0x8e,0x91,0x0e,0x8a,0x26, + 0x58,0xb0,0xfc,0xff,0xff,0x0f,0xe2,0x0a,0x06,0xcc,0x22,0x07,0x20,0x80, + 0xc0,0xde,0x87,0x61,0x3e,0x3e,0xbe,0xff,0xc0,0x0c,0xf2,0xff,0xf2,0xd9, + 0xcb,0x20,0xd5,0xff,0xef,0x5c,0xbb,0xf3,0xff,0xc6,0xa5,0x1b,0xff,0x21, + 0xa1,0xf4,0x9f,0x81,0x14,0x0c,0x10,0x40,0xa8,0x1c,0xa0,0x01,0xa7,0x8e, + 0x9c,0x82,0x1b,0x04,0x33,0xfc,0xf8,0xa1,0xe3,0x58,0x0d,0x97,0x96,0x9c, + 0xfa,0x9f,0x85,0xa9,0xfa,0x3f,0x33,0x63,0x3a,0x86,0x1c,0x40,0x00,0x61, + 0xa4,0x0a,0x33,0x1b,0x33,0x06,0xe4,0xd8,0xe7,0xe6,0xe6,0x06,0x87,0x37, + 0x36,0xf0,0xf2,0xe5,0x27,0x60,0x40,0x7c,0x67,0x00,0xa5,0x5f,0x74,0x00, + 0x10,0x40,0x18,0x06,0x23,0x1b,0x0a,0x62,0x83,0xc2,0x13,0x94,0x96,0xcf, + 0x1e,0x3f,0x8b,0x25,0xc9,0x7d,0x02,0x2a,0x02,0x45,0xde,0x2f,0x0c,0x83, + 0x01,0x02,0x08,0xc5,0x60,0x5c,0x99,0x00,0x94,0x9e,0x41,0x25,0x1f,0x3a, + 0xf8,0x8d,0x23,0x27,0x82,0x00,0x40,0x00,0x11,0xac,0x41,0x40,0x96,0x89, + 0x48,0x89,0x80,0x93,0xde,0xfa,0x55,0xeb,0x71,0x96,0x7c,0xe8,0x00,0x20, + 0x80,0x88,0xae,0x9a,0x3e,0x7d,0xfe,0xc4,0xf0,0xf1,0xd3,0x47,0x62,0x95, + 0x33,0x00,0x04,0x10,0x4a,0x0d,0x82,0x57,0x21,0xd4,0xa5,0xb8,0x82,0x0b, + 0x1d,0x00,0x04,0x18,0x00,0x29,0x15,0x9b,0x2c,0x53,0x95,0xae,0x38,0x00, + 0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_iconview_png_len = 613; +static const unsigned char small_iconview_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xf7,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0xd5, + 0x4b,0x4b,0x95,0x51,0x14,0xc6,0xf1,0x9f,0x9e,0x93,0x77,0x93,0x04,0x2b, + 0x91,0x28,0x2b,0x23,0xb3,0xf2,0x16,0x74,0xb5,0x20,0xa8,0x81,0x15,0x54, + 0xd6,0x20,0x0c,0x44,0x1a,0x44,0x08,0x41,0xa3,0x90,0x0a,0x22,0x13,0x3f, + 0x41,0x91,0x96,0x23,0x73,0x6c,0x93,0x1a,0xe5,0x20,0xb5,0x59,0x8d,0xfa, + 0x0a,0x45,0x34,0x69,0x50,0x73,0x57,0x93,0xed,0xe5,0xa4,0x47,0x0f,0x41, + 0x34,0x69,0xb0,0xe1,0x7d,0xd9,0xff,0xfd,0xec,0x87,0xb5,0xd6,0xc3,0x16, + 0x11,0xfe,0xc6,0xca,0xfd,0xa1,0x08,0x19,0x64,0xd3,0x2a,0x5e,0x71,0xa0, + 0x00,0x26,0x47,0x38,0x1d,0x68,0x57,0xec,0x1e,0x9e,0xa2,0x1e,0x35,0xa8, + 0xc0,0x86,0x24,0x56,0x5c,0x00,0x53,0xb4,0x28,0x9c,0x44,0x4b,0x35,0xfb, + 0x30,0x3e,0xf3,0x3c,0x5a,0x1e,0x1d,0x08,0xfb,0x7c,0xb6,0xc3,0x94,0x2a, + 0x63,0xd8,0x9b,0x04,0xaa,0xd7,0x60,0x5a,0xb0,0x11,0x25,0x28,0x5a,0x10, + 0xce,0xba,0x2c,0x74,0x0b,0x27,0xc5,0xc0,0xb3,0xde,0x18,0x79,0x33,0x12, + 0x57,0x27,0x7b,0x63,0x70,0xee,0x6e,0x38,0xee,0x1b,0x9a,0xd6,0x64,0x8e, + 0xf9,0x8e,0xc6,0x64,0x20,0xbb,0x20,0x5c,0xe2,0x90,0xb9,0xd9,0xf9,0x77, + 0xd1,0x3a,0xd6,0x12,0x5a,0x84,0x2e,0x31,0xf0,0xa4,0x2f,0x86,0xdf,0x0f, + 0x87,0xeb,0x02,0x5d,0xda,0xf2,0x30,0x73,0x43,0xe1,0x9a,0xc0,0x61,0x34, + 0xa0,0x6c,0x49,0x98,0xce,0xf2,0x87,0xe5,0x11,0x11,0x31,0xfe,0x65,0x3c, + 0xdc,0x11,0xda,0xc4,0xad,0x97,0xfd,0xe1,0x8c,0x79,0x9c,0x47,0xf7,0x6a, + 0xcc,0xcd,0x89,0xbe,0x70,0x4a,0xe0,0x2c,0x76,0xa2,0x72,0xa9,0x14,0xd4, + 0xe2,0x81,0x41,0x31,0xf2,0x69,0x28,0x26,0xbf,0x4e,0x44,0xcf,0xeb,0x9e, + 0x28,0xba,0x2d,0x74,0x08,0x5c,0x4c,0x8e,0x1e,0xff,0xce,0x18,0x10,0xf6, + 0x8b,0x74,0xf9,0x1e,0x54,0x2f,0x6f,0x5e,0x79,0xea,0xf2,0x15,0x59,0x6f, + 0x5d,0x17,0x97,0xa6,0xce,0x45,0xe7,0x68,0x7b,0xa8,0x13,0xb8,0x80,0x83, + 0x68,0x42,0xcf,0x72,0xa6,0x7d,0xb4,0x35,0xd4,0xac,0x22,0x9c,0xc4,0x33, + 0x69,0x6c,0xea,0x53,0x87,0xfb,0x65,0xcc,0x38,0x2a,0xf0,0x03,0xa7,0xb1, + 0x1b,0x75,0xd8,0x9a,0xc3,0x1c,0xc9,0x61,0x1a,0x17,0x4b,0xb1,0x4c,0x3c, + 0x8b,0x4a,0x6c,0xc6,0x2e,0xb4,0xe1,0x04,0xba,0xd2,0x77,0x3d,0xaa,0x0a, + 0x60,0xca,0x56,0x06,0x24,0xe3,0x7e,0x1a,0xfe,0xc6,0xb4,0x9a,0x92,0x40, + 0x43,0x1a,0xa5,0xce,0x75,0x98,0xea,0xe5,0xe3,0x96,0x2f,0x20,0xaf,0x54, + 0x7a,0x91,0x9c,0x6c,0xc1,0x26,0xcd,0x3e,0xe6,0x61,0x3a,0x52,0x99,0x2a, + 0x90,0xf9,0x1f,0x90,0x7f,0x17,0x90,0xe9,0x02,0x02,0x32,0xfd,0xa7,0x01, + 0xb9,0x21,0x6b,0x36,0x0d,0xff,0xcf,0x3c,0x01,0x59,0x8d,0x59,0x35,0x20, + 0x99,0xe4,0xbc,0x16,0xdb,0x93,0xc3,0x85,0xe1,0x6f,0x4f,0x97,0x56,0x16, + 0xc0,0x94,0xc9,0xf3,0xf4,0x64,0x93,0xfb,0xda,0xd4,0xe5,0x6d,0xc9,0x65, + 0x55,0xda,0x5b,0x9f,0xc9,0xfb,0x18,0x2e,0x1d,0x2e,0x4d,0x0e,0xcb,0x16, + 0x44,0x0b,0x61,0x7e,0x01,0x51,0x63,0x2c,0x0f,0x0d,0xdc,0x47,0xb4,0x00, + 0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_konsole_png_len = 1155; +static const unsigned char small_konsole_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xaf,0xc8,0x37,0x05,0x8a,0xe9,0x00,0x00,0x00,0x06,0x62,0x4b,0x47, + 0x44,0x00,0xff,0x00,0xff,0x00,0xff,0xa0,0xbd,0xa7,0x93,0x00,0x00,0x00, + 0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x48,0x00, + 0x46,0xc9,0x6b,0x3e,0x00,0x00,0x04,0x13,0x49,0x44,0x41,0x54,0x38,0xcb, + 0x95,0x95,0xcf,0x6b,0x14,0x67,0x18,0xc7,0xbf,0xcf,0x3b,0xef,0xcc,0xfe, + 0x74,0xa9,0x66,0x83,0x96,0x44,0x1b,0x4c,0x02,0x81,0x42,0xb1,0xc1,0x2a, + 0x48,0x0f,0x82,0x97,0x1e,0x04,0x0f,0x5e,0x8b,0xb7,0x5e,0x05,0x0f,0x05, + 0xff,0x04,0xa1,0x3d,0x08,0x1e,0x2c,0x3d,0xe4,0x94,0x5b,0x28,0xd4,0x6b, + 0x9b,0x1c,0xf6,0x20,0xa9,0x8d,0x25,0x63,0x6b,0x82,0x89,0xab,0x21,0xbb, + 0xd9,0xac,0xeb,0xae,0x1b,0x57,0x77,0x66,0x76,0xe6,0x7d,0xe7,0x7d,0x7a, + 0x71,0xc7,0xdd,0xc4,0x56,0x1d,0x78,0x18,0xe6,0x61,0x9e,0xcf,0xf3,0x7d, + 0x9e,0xe7,0x9d,0x67,0xa8,0x50,0x28,0x1c,0x9b,0x9d,0x9d,0xbd,0x50,0x2c, + 0x16,0x8f,0x30,0x33,0xe3,0x23,0x2f,0x66,0x06,0x11,0x51,0x14,0x45,0xda, + 0x75,0xdd,0xe5,0x6a,0xb5,0xea,0x02,0x00,0xdd,0xb8,0x71,0xe3,0xd7,0x2b, + 0x57,0xae,0x7c,0x53,0x28,0x14,0xe4,0x87,0x72,0xfb,0xef,0xf5,0xef,0x44, + 0x04,0xa5,0x14,0x2d,0x2d,0x2d,0x3d,0xba,0x7a,0xf5,0xea,0xb7,0xcf,0x9e, + 0x3d,0x5b,0xa5,0x72,0xb9,0xac,0x4f,0x9c,0x38,0x61,0xad,0xaf,0xaf,0xc3, + 0xb2,0x2c,0x64,0x32,0x99,0x8f,0x52,0x1c,0xc7,0x31,0x5e,0xbd,0x7a,0x85, + 0x99,0x99,0x19,0x84,0x61,0x88,0xcb,0x97,0x2f,0x7f,0x5f,0x2a,0x95,0x7e, + 0x94,0xb6,0x6d,0x5b,0xaf,0x5f,0xbf,0xc6,0x2f,0x77,0xee,0xe0,0xab,0x73, + 0xe7,0xd0,0x6e,0x34,0xd0,0x7e,0xfe,0x1c,0xc6,0x18,0x10,0xd1,0x7b,0xc1, + 0x5a,0x6b,0xb8,0xae,0x8b,0xeb,0xd7,0xaf,0x63,0x7c,0x7c,0x1c,0x52,0xca, + 0x0c,0x00,0x48,0x21,0x04,0x88,0x08,0xe9,0x54,0x0a,0x99,0x7c,0x1e,0xa7, + 0x67,0x66,0xd0,0x6e,0x36,0x71,0x77,0x71,0x11,0xcf,0xeb,0xf5,0x0f,0x82, + 0x8f,0x8c,0x8c,0x00,0x00,0xa2,0x28,0x4a,0x7c,0x92,0x88,0x20,0x84,0x40, + 0xbb,0xd5,0xc2,0x83,0x95,0x15,0x8c,0x1e,0x3d,0x8a,0xf1,0x89,0x09,0x28, + 0x63,0xb0,0xbb,0xbb,0x0b,0x21,0xc4,0x7b,0xc1,0x96,0x65,0xc1,0xf7,0x7d, + 0x74,0xbb,0xdd,0x44,0x88,0x24,0x22,0x18,0x63,0xf0,0x49,0xb1,0x88,0x53, + 0x67,0xcf,0xa2,0xb4,0xb8,0x88,0x3f,0xef,0xde,0xc5,0x6e,0xa5,0x02,0xad, + 0x14,0x40,0x84,0x7e,0xf2,0xfd,0xc3,0xeb,0xc7,0x06,0x41,0x80,0x20,0x08, + 0x10,0xc7,0xf1,0x5b,0xb0,0x10,0x02,0x52,0x4a,0xfc,0x75,0xef,0x1e,0x7e, + 0xbe,0x7d,0x1b,0x52,0x08,0xd8,0xb6,0x8d,0xcf,0x4e,0x9e,0xc4,0x17,0xa7, + 0x4f,0x83,0x88,0x10,0xf6,0x7a,0x58,0x5d,0x59,0x81,0xef,0x79,0x30,0xc6, + 0x20,0x8e,0x63,0x18,0x63,0x60,0x8c,0x41,0xa7,0xd3,0x49,0x12,0x0c,0xce, + 0x45,0xd2,0x1b,0x45,0x9d,0x97,0x2f,0x51,0xdd,0xde,0x46,0x3e,0x9f,0x47, + 0x2e,0x9b,0x85,0xd7,0xed,0xa2,0xd7,0xeb,0x41,0x08,0x81,0x5e,0x18,0xc2, + 0xf3,0x3c,0x78,0xdd,0x2e,0x8c,0x31,0x50,0x4a,0x21,0x8a,0x22,0x78,0x9e, + 0x07,0xdf,0xf7,0x31,0x3a,0x3a,0xfa,0xdf,0x60,0xc7,0x71,0x90,0xc9,0x64, + 0x90,0x4e,0xa7,0x61,0x49,0x89,0x9d,0x4a,0x05,0xbb,0x3b,0x3b,0x10,0x42, + 0x0c,0x99,0x31,0xe6,0xed,0x80,0xa4,0x84,0x6d,0xdb,0x20,0x22,0x30,0xf3, + 0xbb,0xc1,0xe9,0x74,0x1a,0xd9,0x6c,0x16,0xd9,0x6c,0x16,0xa9,0x54,0x0a, + 0x8e,0xe3,0x40,0x4a,0x09,0xcb,0xb2,0x86,0x02,0x95,0x52,0x50,0x4a,0xc1, + 0xb6,0x6d,0x58,0x96,0x05,0x00,0xb0,0x6d,0xfb,0xa0,0xe2,0xfe,0x50,0xfa, + 0x8a,0xfb,0xe0,0x54,0x2a,0x95,0x04,0xf7,0xc1,0x71,0x1c,0x43,0x6b,0x8d, + 0x28,0x8a,0x86,0xfc,0xa9,0x54,0x2a,0x49,0x9c,0x54,0x33,0x58,0x96,0xe3, + 0x38,0x70,0x1c,0x07,0xe9,0x74,0x7a,0x48,0xb5,0x10,0x02,0xcc,0x0c,0xad, + 0x35,0x94,0x52,0xc9,0x73,0xbf,0x02,0x29,0x65,0x92,0x78,0xa8,0x15,0x00, + 0x30,0x35,0x35,0x85,0x28,0x8a,0x90,0xcb,0xe5,0x86,0x14,0x4b,0x29,0x13, + 0x65,0x7d,0x70,0x18,0x86,0x08,0xc3,0x10,0xbd,0x5e,0x0f,0xbe,0xef,0x27, + 0x42,0x86,0x5a,0x11,0x86,0xa1,0x2a,0x14,0x0a,0xf6,0xb5,0x6b,0xd7,0x10, + 0x45,0x51,0xa2,0x64,0xbf,0xf5,0x8f,0x58,0x1c,0xc7,0x07,0xac,0x0f,0x34, + 0xc6,0x20,0x8a,0x22,0x05,0x00,0x56,0x3e,0x9f,0xff,0xfc,0xf8,0xf1,0xe3, + 0x93,0x00,0x2c,0xad,0xb5,0x51,0x4a,0x99,0x28,0x8a,0x62,0x22,0x12,0xcc, + 0x4c,0x83,0xc0,0x01,0x30,0x07,0x41,0xa0,0x95,0x52,0xe6,0x4d,0xdf,0x59, + 0x29,0xc5,0xab,0xab,0xab,0x5b,0x0b,0x0b,0x0b,0x3f,0x79,0x9e,0xb7,0x45, + 0x8e,0xe3,0x1c,0x9d,0x98,0x98,0x38,0x7f,0xe8,0xd0,0xa1,0x63,0xc6,0x18, + 0x93,0xcd,0x66,0x8f,0xcc,0xce,0xce,0x9e,0xbf,0x74,0xe9,0xd2,0xd7,0xc5, + 0x62,0x51,0x0e,0xaa,0x32,0xc6,0x80,0x99,0xb1,0xb7,0xb7,0x67,0x96,0x97, + 0x97,0x1f,0xdd,0xbf,0x7f,0x7f,0xa9,0xd1,0x68,0x94,0x89,0x88,0xb4,0xd6, + 0x71,0xa5,0x52,0xf9,0xbb,0xd3,0xe9,0xfc,0x01,0xe0,0xed,0xd2,0x00,0x80, + 0xc9,0xc9,0xc9,0x2f,0xe7,0xe6,0xe6,0x7e,0xab,0xd5,0x6a,0x7e,0xa5,0x52, + 0xe1,0x6a,0xb5,0xca,0xcd,0x66,0x93,0x5b,0xad,0x16,0xb7,0x5a,0x2d,0x6e, + 0x36,0x9b,0xbc,0xbd,0xbd,0xcd,0xe5,0x72,0x99,0xdb,0xed,0xb6,0x2e,0x95, + 0x4a,0x8f,0x2f,0x5e,0xbc,0xf8,0x1d,0x11,0x59,0xff,0xb7,0x48,0xec,0x5b, + 0xb7,0x6e,0x2d,0x30,0x33,0x6b,0xad,0xb9,0xdb,0xed,0x72,0xad,0x56,0xe3, + 0x9d,0x9d,0x1d,0xae,0xd7,0xeb,0x5c,0xab,0xd5,0xf8,0xc9,0x93,0x27,0xec, + 0xba,0x2e,0x6f,0x6c,0x6c,0x70,0x10,0x04,0xcc,0xcc,0xec,0xba,0x6e,0x63, + 0x6c,0x6c,0xec,0xcc,0x7e,0x5e,0x72,0xdc,0xe2,0x38,0x36,0x9b,0x9b,0x9b, + 0x2f,0x6a,0xb5,0x1a,0xf2,0xf9,0x3c,0x8c,0x31,0xb0,0x6d,0x3b,0xf9,0x7c, + 0x8d,0x31,0x10,0x42,0x60,0x64,0x64,0x04,0x8e,0xe3,0xa0,0xd7,0xeb,0x21, + 0x08,0x02,0xac,0xad,0xad,0x29,0xdf,0xf7,0x0f,0x28,0x1e,0x74,0xf0,0xc3, + 0x87,0x0f,0xff,0xd9,0xda,0xda,0xca,0x0a,0x21,0x3e,0x25,0xa2,0x8c,0x31, + 0x46,0x0c,0xfe,0xae,0x98,0x19,0x4a,0x29,0xec,0xed,0xed,0xf1,0xfa,0xfa, + 0xba,0x37,0x3f,0x3f,0xff,0xe0,0xe6,0xcd,0x9b,0x3f,0x34,0x1a,0x8d,0xdf, + 0x01,0xe8,0x41,0xf0,0xbb,0xb6,0x78,0xee,0xf0,0xe1,0xc3,0x67,0xa6,0xa7, + 0xa7,0x2f,0x4c,0x4d,0x4d,0x9d,0x1a,0x1b,0x1b,0x1b,0xcf,0xe5,0x72,0x39, + 0x22,0xa2,0x30,0x0c,0x75,0xb3,0xd9,0x7c,0xf1,0xf4,0xe9,0xd3,0xf2,0xc6, + 0xc6,0xc6,0x72,0xbd,0x5e,0x2f,0xc5,0x71,0xfc,0x78,0x3f,0x14,0x00,0xfe, + 0x05,0x28,0xfb,0xab,0x02,0x0e,0x36,0xd1,0x14,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_label_png_len = 953; +static const unsigned char small_label_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x03,0x4b,0x49,0x44,0x41,0x54,0x48,0xc7,0xb5,0x94, + 0x6d,0x48,0x53,0x61,0x14,0xc7,0x97,0x99,0x58,0xcd,0x0a,0x87,0x32,0x97, + 0x89,0x53,0xb0,0x51,0x8d,0x8c,0x04,0xcb,0x24,0xa7,0x6b,0x95,0x61,0x7e, + 0xc9,0xb2,0x08,0xd2,0xe9,0xb2,0x08,0xf4,0x8b,0x04,0x7d,0x88,0x0a,0x5a, + 0xa4,0x11,0x44,0x51,0x69,0x91,0xa1,0x29,0xa1,0x26,0x6a,0xa1,0x89,0x0a, + 0x42,0x2f,0x90,0x51,0x68,0xf3,0x2d,0x28,0x2a,0x2a,0x7b,0x5b,0xea,0xdc, + 0x96,0xd3,0x6a,0xdb,0xbf,0xf3,0x6c,0xf7,0xda,0x36,0xef,0xac,0x3e,0x74, + 0xe0,0xc7,0x1e,0x2e,0x77,0xbf,0x9d,0x9d,0x73,0x9e,0x23,0x02,0x20,0xfa, + 0x1f,0xfc,0x3e,0x88,0x44,0x73,0x72,0x72,0x72,0xa0,0xd5,0x6a,0xa1,0xd3, + 0xe9,0xbc,0x60,0xcf,0x55,0x2a,0x15,0xe4,0x72,0xf9,0x9e,0xe0,0xe0,0xe0, + 0xf9,0xf4,0x6e,0xc0,0xbf,0x88,0xb3,0x35,0x1a,0x0d,0xda,0x4a,0x77,0xc3, + 0x71,0xff,0x24,0x1c,0x0f,0x4e,0x71,0xe8,0xe1,0xe8,0x2c,0x46,0x77,0x49, + 0x2a,0x7b,0xa9,0x9f,0xc4,0xc9,0xf4,0xf9,0x47,0x39,0x8b,0x2c,0x02,0xbe, + 0x38,0x5e,0xb4,0xe1,0x67,0xcb,0x41,0x37,0x0d,0xbb,0x30,0x55,0xad,0x86, + 0x54,0x2a,0x75,0x28,0x14,0x8a,0x67,0xb1,0xb1,0xb1,0x7b,0xc5,0x62,0xf1, + 0x92,0xd9,0xe4,0x22,0x4e,0xc4,0xe4,0x0b,0x93,0x92,0x92,0x30,0x75,0xa7, + 0x00,0xf6,0xa1,0x66,0xb4,0x96,0x1d,0xc1,0xe4,0x8d,0xb4,0x69,0xa6,0x6a, + 0x33,0x61,0xba,0x7b,0x04,0x5d,0x7a,0x35,0x28,0x6b,0x63,0x40,0x40,0x40, + 0x36,0x7d,0x67,0x01,0x31,0xd7,0x6f,0xc6,0xdc,0x21,0x84,0x89,0x27,0x9a, + 0xf7,0xe3,0x5b,0xdd,0x4e,0x58,0x2b,0x53,0x7f,0x53,0xb5,0x09,0x43,0x2d, + 0xe7,0xf1,0xe6,0x61,0x1d,0x2c,0x55,0x9b,0x11,0x1a,0x1a,0xea,0xa4,0x7a, + 0x77,0xcb,0x64,0xb2,0x4d,0xfe,0xca,0x32,0x43,0x6c,0x69,0xc8,0x83,0xf9, + 0xe6,0x0e,0x8c,0x5d,0x53,0xc1,0x54,0xe1,0xa6,0xbf,0xe9,0x0c,0x7a,0x7a, + 0x7a,0x30,0x3c,0xfc,0x1e,0xc6,0xc1,0x7b,0x30,0x75,0x9c,0x40,0x93,0x3e, + 0x8b,0x35,0x73,0x5c,0x22,0x91,0xe4,0x71,0xf2,0xb9,0x7e,0xc5,0x4a,0xa5, + 0x12,0x23,0x55,0x99,0xf8,0x5a,0xa1,0xc1,0xa7,0xf2,0x8d,0x30,0x5e,0x4d, + 0x81,0xa1,0xb1,0x14,0x06,0x83,0x01,0x16,0x8b,0x05,0x0e,0x87,0x03,0x93, + 0x93,0x93,0x30,0xbf,0xea,0xc6,0x68,0x7d,0x3e,0xda,0x8f,0x25,0xb3,0xec, + 0x7b,0xc3,0xc3,0xc3,0x67,0x34,0xd4,0x4b,0xcc,0xea,0x5d,0x9c,0x11,0x85, + 0xe1,0xcb,0xc9,0x2e,0x7a,0x9b,0xce,0x4e,0x4b,0xf9,0x60,0x72,0xeb,0xf8, + 0x28,0x3e,0x3f,0x69,0xc4,0xa7,0xba,0x7c,0x5c,0x29,0xdc,0x80,0x98,0x98, + 0x98,0xe7,0xc4,0x01,0xcf,0x86,0xf2,0x53,0xb1,0x96,0x35,0x8f,0x58,0x49, + 0x38,0x1f,0xeb,0x13,0x31,0x50,0x55,0x84,0x81,0x81,0x01,0x58,0xad,0x56, + 0xf8,0x86,0xdd,0x6e,0x87,0xd9,0x6c,0x86,0xf1,0xe5,0x53,0x7c,0xbc,0x55, + 0x88,0x3b,0x87,0xe3,0x41,0xcd,0x7c,0x1f,0x18,0x18,0x98,0xce,0x97,0x85, + 0x4f,0x7b,0x2d,0xf7,0x60,0x39,0x51,0x51,0x98,0xbe,0x0c,0xbd,0x0d,0x25, + 0xf8,0x31,0x31,0x0e,0x7f,0xe1,0x74,0x3a,0xa9,0x2c,0x36,0x7c,0x78,0x7a, + 0x1b,0x83,0xe7,0x52,0x10,0x16,0x16,0x66,0x8f,0x8b,0x8b,0x7b,0x4c,0x35, + 0xdf,0xe3,0x9a,0x16,0x4e,0xbc,0x85,0x98,0x47,0x48,0x08,0x0d,0xd1,0x1c, + 0x14,0x14,0x64,0xeb,0xb8,0x78,0x08,0x96,0x77,0x7d,0x70,0xd2,0xdf,0x17, + 0x0a,0x96,0x39,0x63,0x6a,0xec,0x03,0xfa,0x4a,0x13,0x71,0xa5,0x40,0xc1, + 0x64,0x26,0x42,0xca,0x8b,0xe3,0x09,0x19,0x37,0x97,0x91,0x44,0x22,0x51, + 0x46,0xd8,0x1e,0x5d,0xd6,0xc2,0x36,0x3a,0x8c,0xd9,0xe2,0xf5,0x93,0xbb, + 0x38,0xbc,0x3d,0x0a,0x09,0x31,0x21,0x4c,0x76,0x9c,0x50,0x78,0x8e,0x07, + 0x93,0x07,0x12,0x8b,0x08,0x39,0x97,0x79,0xab,0x56,0x2d,0x47,0xd7,0xf5, + 0xa3,0xf8,0xf6,0xe5,0x8d,0xa0,0xf4,0x59,0x47,0x0d,0x0a,0xd4,0x91,0x58, + 0x1d,0x25,0x66,0x92,0x0b,0x44,0x26,0xb1,0xc6,0x77,0xa8,0x65,0x5c,0x49, + 0x16,0x73,0x72,0x15,0xab,0x39,0x31,0xd2,0x56,0xb2,0x03,0xa6,0xb7,0xfd, + 0x5e,0xd2,0xde,0x8e,0x6a,0xe4,0xa7,0xca,0xa0,0x74,0x4b,0xcb,0x89,0x5c, + 0x62,0x2b,0xb1,0xc2,0x57,0x1c,0xc1,0xb6,0x1c,0x27,0xe7,0x33,0x5f,0x4f, + 0xd4,0xeb,0xd2,0x22,0xd1,0x59,0x5e,0x8c,0xef,0x13,0x66,0x97,0xb4,0xa7, + 0xbd,0x1a,0x79,0x2a,0x19,0x56,0x2d,0x9b,0x96,0xe6,0x71,0xd9,0xb2,0x41, + 0x58,0xea,0x2b,0x8e,0xf7,0x38,0xf3,0xf2,0x68,0x62,0x3b,0x51,0x4b,0x58, + 0x1b,0x4f,0xef,0x83,0xa1,0xb3,0x06,0xb9,0xaa,0x08,0x21,0x69,0x02,0xd7, + 0xa3,0x85,0x42,0xcb,0x23,0x82,0xdf,0xcf,0x3e,0x72,0x96,0x79,0x25,0xf1, + 0xa3,0x88,0xc6,0x71,0xe5,0x6c,0x52,0x7e,0x8e,0x85,0xc4,0x02,0x99,0xb3, + 0xb2,0x64,0xb0,0x86,0x72,0x1b,0xf1,0x12,0xa1,0x15,0x92,0x7a,0x2d,0x7a, + 0x7f,0x72,0x8f,0xcc,0xf9,0x86,0xae,0xe3,0x4a,0xc3,0x6e,0xec,0x36,0xae, + 0xa6,0x5e,0x52,0xbf,0x62,0x81,0x1f,0xf2,0x94,0x47,0xbb,0xc6,0xc9,0x3d, + 0xeb,0x4a,0x57,0xa3,0x7c,0xa4,0x7f,0x2d,0xf6,0x91,0xb3,0x65,0x15,0xe6, + 0xba,0x5d,0xee,0x9b,0x2a,0xb8,0xec,0x7f,0x01,0xc8,0xec,0xb4,0x80,0x13, + 0x27,0x47,0xab,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; + +static const unsigned int small_lcdnumber_png_len = 558; +static const unsigned char small_lcdnumber_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xc0,0x49,0x44,0x41,0x54,0x38,0xcb,0xb5,0x55, + 0x4d,0x4b,0xc3,0x40,0x10,0xdd,0x4d,0x5b,0x6a,0xc5,0x1c,0x04,0x3d,0x49, + 0xa1,0xbd,0xd8,0xb3,0x50,0x90,0xea,0xaf,0xf0,0xe6,0xd5,0x83,0x08,0xfa, + 0x07,0xbc,0x08,0x82,0x87,0x52,0xf0,0xea,0xc9,0x83,0x77,0x11,0xfc,0x0d, + 0x85,0x40,0x11,0x8a,0x87,0x1e,0x8a,0x85,0x42,0x7f,0x80,0x39,0xb4,0xb4, + 0xb6,0xa4,0x1f,0x59,0xe7,0x2d,0xbb,0x21,0x09,0x69,0x63,0x23,0x1d,0x78, + 0xd9,0x9d,0xd9,0xd9,0x97,0xd9,0x61,0xf3,0xc2,0x19,0x63,0x46,0xad,0x56, + 0x3b,0x77,0x5d,0xf7,0xda,0xb6,0xed,0xd3,0xd1,0x68,0xc4,0xd6,0xb5,0xc1, + 0x60,0xc0,0x5a,0xad,0xd6,0x47,0xbb,0xdd,0x7e,0x21,0xf7,0x95,0x30,0x46, + 0x3c,0x53,0xad,0x56,0xad,0x6e,0xb7,0x2b,0x16,0x8b,0x45,0x62,0xd4,0xeb, + 0x75,0x41,0x5c,0x9f,0x84,0x43,0xc2,0x6e,0x9a,0x1e,0x29,0x54,0x5a,0x28, + 0x14,0x18,0x25,0xb0,0xa4,0x96,0xcb,0xe5,0x30,0x1c,0x11,0xf6,0x08,0x3f, + 0x92,0x18,0xc7,0x9f,0xcf,0xe7,0x4c,0x08,0x91,0x98,0x78,0x3a,0x9d,0xea, + 0xa9,0x49,0xc8,0x82,0x98,0xc3,0xa3,0x1e,0xc7,0x56,0x6c,0x9e,0x99,0xde, + 0x7c,0xf8,0x3e,0x0c,0xac,0xf9,0xf6,0xca,0x62,0x0d,0x4d,0x8c,0x05,0x00, + 0x9b,0xf5,0x3c,0xec,0xf7,0xdf,0xfa,0x1e,0xc2,0x79,0x28,0x4c,0x99,0xe4, + 0x4c,0xfb,0xdf,0x88,0x76,0xc0,0xf4,0xa8,0x2d,0xec,0x47,0xc5,0xc3,0xa7, + 0xdd,0x3c,0x31,0x92,0x66,0xb3,0x99,0x9c,0xeb,0x51,0x5b,0xd8,0x8f,0x8a, + 0x87,0x73,0x02,0xc4,0x40,0xef,0xb9,0xc7,0xf2,0x17,0x79,0x2f,0x01,0xbe, + 0xae,0xac,0x78,0x59,0x8c,0x8c,0xc7,0x56,0xac,0xaf,0x4c,0xe7,0xa9,0xe3, + 0x25,0x80,0x0c,0x7e,0xe9,0xa6,0x14,0x88,0xfb,0xae,0x57,0x64,0xbb,0x22, + 0x7b,0xbc,0xac,0x97,0xcb,0xd6,0x57,0x56,0x8c,0x1e,0xc5,0xf5,0x72,0xd9, + 0xfa,0x46,0x2b,0x5e,0x49,0x1c,0x55,0x51,0xe3,0xa1,0x21,0xe3,0x18,0xcb, + 0xb7,0xe5,0x40,0xbc,0x72,0x57,0x91,0x63,0xec,0x3d,0x8e,0xfb,0xa4,0xad, + 0x7b,0x2b,0xd0,0x53,0xf8,0x7a,0x4f,0x14,0xb1,0x80,0x9e,0xe2,0x28,0x49, + 0xd5,0xcd,0x71,0x1c,0xe6,0xd3,0x71,0x7c,0xdb,0x42,0x12,0x43,0xa4,0x2d, + 0xcb,0x3a,0x86,0xf4,0x25,0x21,0x9f,0x4c,0x26,0xac,0xd9,0x6c,0xca,0x9b, + 0x8a,0x76,0xe3,0x00,0x70,0xb6,0x08,0x57,0x4a,0xa4,0xc5,0x3f,0xf0,0x45, + 0x78,0x24,0x9c,0x10,0x0e,0xa0,0x6c,0x19,0xc2,0x0e,0x61,0x5f,0x89,0xb4, + 0xa9,0x5a,0x64,0xac,0x51,0xb4,0xab,0x2a,0x85,0x96,0xda,0x84,0x6f,0xae, + 0x08,0x40,0xbe,0xad,0x90,0x85,0x9e,0x6a,0x39,0xfd,0xa3,0x09,0x75,0x7c, + 0x47,0xfd,0xef,0xc6,0x1c,0x7f,0x0d,0xce,0xb9,0xa1,0xc8,0x52,0x3e,0xd2, + 0x75,0x89,0x35,0xb9,0xc4,0x2f,0x75,0xa7,0xa1,0xa5,0x37,0x35,0xaa,0x69, + 0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_lineedit_png_len = 461; +static const unsigned char small_lineedit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x19,0x74,0x45,0x58,0x74,0x53, + 0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62,0x65,0x20, + 0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9,0x65,0x3c, + 0x00,0x00,0x01,0x6f,0x49,0x44,0x41,0x54,0x78,0x9c,0xed,0x94,0x4d,0x4e, + 0xc2,0x50,0x10,0xc7,0x7f,0xd3,0x16,0x14,0x3f,0xc2,0x42,0x59,0x79,0x05, + 0x37,0xac,0x4c,0x3c,0x8c,0x5b,0xcf,0xe0,0x8e,0x03,0x48,0xdc,0x70,0x0b, + 0x0f,0xd2,0x18,0x12,0x43,0x48,0x48,0x34,0xe1,0x02,0xa4,0x2e,0xa4,0x35, + 0x10,0xa1,0x8f,0x71,0xd1,0x16,0x9f,0xe5,0xa3,0x96,0x04,0x57,0x4e,0x32, + 0x9b,0x79,0x7d,0xbf,0xf7,0x9f,0x99,0xce,0x88,0xaa,0xb2,0x0f,0x73,0xf6, + 0x42,0xfd,0x07,0xff,0x09,0xd8,0x03,0x10,0x11,0x17,0xb0,0x5d,0x76,0x60, + 0x29,0x60,0x32,0x17,0xc0,0x6d,0xb7,0xdb,0x0f,0x51,0x14,0xdd,0x04,0x41, + 0x50,0x8f,0xe3,0xb8,0x34,0xd1,0x18,0xc3,0x60,0x30,0x08,0x7d,0xdf,0x7f, + 0x04,0xee,0x80,0x0f,0x80,0x6a,0xab,0xd5,0x7a,0xd7,0x9c,0x19,0x63,0x0a, + 0xdd,0xfe,0x6e,0x34,0x1a,0x29,0x10,0x01,0x97,0x40,0xc3,0x03,0xdc,0x20, + 0x08,0xea,0x79,0x15,0x8e,0xb3,0xbd,0xfc,0x22,0x82,0xaa,0xe2,0xba,0x2e, + 0xaa,0xca,0x70,0x38,0x04,0x38,0x01,0xce,0x80,0xc8,0x03,0x5c,0x3b,0x7d, + 0x91,0xef,0xf2,0x66,0x53,0x69,0xc7,0xb2,0xb8,0xaa,0x2e,0xe1,0x00,0xf3, + 0xf9,0x3c,0x3b,0x3e,0x06,0xaa,0x1e,0x56,0xa3,0x9a,0xcd,0x26,0xf6,0x88, + 0xdb,0x17,0x37,0xc5,0x33,0x9b,0xcd,0x66,0xcb,0x64,0x01,0xf1,0xec,0xc3, + 0x5e,0xaf,0xb7,0xa2,0x6e,0x5b,0x26,0xb6,0x59,0x8a,0x05,0xd2,0xdf,0x2d, + 0x9f,0x66,0x11,0xac,0x40,0x31,0x6b,0xc1,0x9b,0xac,0x48,0xf1,0x56,0x70, + 0xfe,0xc2,0xba,0xfa,0xda,0x0f,0xd9,0x0d,0xcc,0x83,0x1d,0x40,0xc7,0xe3, + 0xf1,0x6f,0x85,0x6f,0x7c,0x34,0x0c,0xc3,0xec,0x68,0x01,0xa8,0x07,0x68, + 0xbf,0xdf,0x7f,0xea,0x74,0x3a,0x57,0xb5,0x5a,0x0d,0x63,0x4c,0xe9,0x47, + 0xa6,0xd3,0x29,0xdd,0x6e,0x17,0xe0,0x15,0x88,0x49,0xc6,0x9a,0x43,0xe0, + 0x16,0x78,0x26,0x99,0xf7,0x5d,0xfd,0x05,0xb8,0x07,0xae,0x81,0x0b,0x01, + 0x2a,0x24,0x13,0xd3,0x00,0xce,0x81,0x53,0x92,0xda,0x97,0xd9,0x7c,0x8b, + 0x54,0x69,0x04,0xbc,0x01,0x81,0xa4,0x80,0x0a,0x70,0x94,0xfa,0x01,0xe5, + 0x37,0x5c,0xb6,0xd9,0x3e,0x81,0x09,0x30,0x91,0xb4,0xb3,0x0e,0xab,0x6b, + 0xb3,0x2c,0xf8,0xc7,0xda,0xfc,0x02,0xf9,0x12,0x02,0x4b,0xeb,0xbb,0x9d, + 0xd4,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_line_png_len = 287; +static const unsigned char small_line_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x00,0xb1,0x49,0x44,0x41,0x54,0x28,0xcf,0xb5,0x93, + 0xb1,0x0a,0x83,0x30,0x14,0x45,0x8f,0x98,0x60,0x30,0x75,0x70,0xb0,0x90, + 0xa5,0x43,0x0a,0x1d,0x14,0x0b,0xc5,0x45,0x4a,0x07,0x41,0xd7,0xd2,0xff, + 0xff,0x9a,0x74,0x8c,0xd8,0x18,0x54,0x28,0x67,0x3d,0x3c,0xee,0x7d,0x79, + 0xc1,0xb1,0x1d,0x0e,0xc8,0x24,0x08,0x14,0x9a,0x22,0x80,0x46,0x21,0x48, + 0xbc,0x9c,0x9e,0x63,0x23,0x4b,0x14,0xa9,0x97,0x05,0x05,0x06,0xcb,0x2d, + 0x80,0xc5,0x50,0x20,0x0e,0xca,0xf2,0xe9,0xae,0x2b,0xe0,0xb0,0x94,0x48, + 0x2f,0x67,0xd1,0x35,0xd4,0x54,0x64,0x73,0xb9,0xa2,0xa6,0x67,0x08,0xd0, + 0x2f,0x65,0x49,0x89,0xa5,0xa5,0x0b,0xd0,0x2e,0x63,0xc8,0x8f,0x1b,0xdd, + 0x10,0xa0,0x09,0x64,0x56,0x77,0x77,0x5a,0xcf,0xdc,0x61,0x50,0x5e,0xce, + 0xa3,0x05,0x5f,0x5c,0xc8,0x67,0x93,0x31,0x74,0x4c,0xbc,0x03,0x4c,0xcb, + 0xc9,0x7f,0x2c,0x38,0xba,0xc7,0xda,0xfb,0xfd,0x14,0xd4,0x4d,0xac,0xe0, + 0x84,0x45,0xcf,0x64,0x76,0xc8,0xbb,0xb6,0xb1,0xeb,0x44,0x37,0x7d,0xab, + 0x2f,0x16,0x3a,0x2d,0xfe,0x87,0x4f,0x5c,0x7f,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_listbox_png_len = 386; +static const unsigned char small_listbox_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x14,0x49,0x44,0x41,0x54,0x28,0xcf,0x8d,0x93, + 0xbf,0x2b,0x84,0x61,0x00,0xc7,0x3f,0x99,0x94,0x2c,0xb7,0x29,0xbb,0x4d, + 0x5d,0x36,0xf3,0x2b,0xa5,0x2e,0x3f,0x16,0x65,0x34,0x59,0xcc,0xfe,0x07, + 0xd9,0xe5,0x4a,0xe4,0x16,0xc3,0x95,0xb2,0x28,0x59,0x5e,0x77,0x48,0x14, + 0x57,0xba,0x84,0xa2,0x2b,0xca,0xf2,0xc6,0x66,0xfb,0x18,0xde,0xc3,0x43, + 0xdd,0xf3,0xea,0x53,0xdf,0xe7,0xfb,0xd4,0xa7,0x6f,0xcf,0xf2,0xc0,0x02, + 0xb7,0x58,0xc8,0x3d,0x4b,0x94,0xa0,0xd9,0xf0,0xa3,0x90,0x86,0x5c,0x31, + 0x02,0x66,0x66,0xd6,0xff,0x64,0xdd,0xba,0x59,0xb0,0x9c,0x89,0x8c,0x83, + 0x1d,0x3b,0xd6,0xbe,0x33,0x6f,0x5f,0x3d,0x57,0x6b,0x76,0x44,0x26,0xc1, + 0xb6,0x6d,0xab,0x56,0x6d,0x5b,0xed,0xf6,0x30,0xe9,0x36,0x64,0x0a,0xce, + 0x37,0x3d,0xb3,0xe9,0xb1,0xa9,0xa9,0xa9,0xab,0xdd,0x33,0xfd,0x75,0x5f, + 0x97,0x3b,0x2a,0xb0,0xc4,0xd3,0xb4,0x13,0x26,0x51,0xca,0x22,0x15,0x28, + 0x31,0x3a,0xe1,0xbb,0x6f,0x51,0x32,0x91,0x39,0xe8,0x67,0x38,0x31,0x73, + 0xde,0x65,0x57,0x7a,0x72,0x23,0x32,0x0b,0x7d,0x94,0x12,0x5f,0x7d,0x89, + 0x72,0x2d,0x32,0x83,0x30,0x98,0xf8,0xec,0xa2,0x6b,0x6e,0xf7,0xe4,0x32, + 0x7f,0x73,0x2e,0x3f,0xfa,0x10,0xe5,0x2c,0x94,0xef,0x0b,0x96,0x8f,0x43, + 0xb9,0x6d,0x2b,0xca,0x51,0x28,0xb7,0x0a,0x96,0x0f,0x42,0xf9,0xc2,0x93, + 0x28,0xfb,0xa1,0x7c,0x5a,0xb0,0x5c,0x0f,0xe5,0xd4,0xc3,0x28,0xbb,0xa1, + 0x7c,0x54,0xb0,0xbc,0xf3,0x23,0x97,0xdd,0x73,0x2b,0xca,0xc6,0xb7,0x3c, + 0xf0,0x8f,0x3f,0x28,0x92,0x20,0xf4,0x33,0xc4,0x18,0x09,0x95,0x28,0x09, + 0x63,0x9f,0xe1,0x1b,0x9b,0x55,0xd0,0xe5,0xa7,0x9c,0x00,0x00,0x00,0x00, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_listview_png_len = 759; +static const unsigned char small_listview_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0x89,0x49,0x44,0x41,0x54,0x48,0xc7,0xb5,0x95, + 0x4d,0x48,0x14,0x61,0x1c,0xc6,0x7f,0xba,0xe3,0xee,0xb6,0xee,0xb6,0x7e, + 0x80,0x34,0xb4,0x5b,0x56,0x14,0x85,0x21,0xb5,0x06,0x06,0x96,0x85,0x95, + 0x1e,0xb2,0x50,0x48,0xf2,0x60,0x87,0x0d,0xc1,0x4b,0x44,0x6d,0x91,0xae, + 0x9b,0xc5,0xb2,0x78,0xe8,0xd0,0xa9,0xc5,0x8f,0xa4,0x43,0x1f,0xe7,0xba, + 0x44,0xa7,0x2e,0x8a,0x74,0xea,0xb6,0xe8,0x4d,0x06,0xa5,0x25,0x03,0x41, + 0x48,0x11,0x4f,0x3e,0x1d,0x7c,0x0d,0x5d,0x74,0x2b,0x97,0x06,0xfe,0x33, + 0xcc,0x30,0xef,0x6f,0x9e,0x77,0xde,0xe7,0xf9,0xbf,0x48,0xe2,0x7f,0xd4, + 0xfa,0x09,0x8a,0x00,0x17,0x60,0x99,0x2a,0xfe,0xab,0xc1,0x5b,0xc7,0x95, + 0x98,0x72,0x99,0xe7,0x14,0x01,0xa7,0x29,0x26,0x01,0x0c,0x01,0x36,0x10, + 0x04,0x7c,0x9b,0x5f,0xdc,0x01,0x7a,0x26,0x18,0x0c,0x3e,0xf1,0x7a,0xbd, + 0x8f,0x2d,0xcb,0x4a,0x02,0xb7,0x80,0x32,0x60,0x0f,0x80,0x87,0x1a,0xbe, + 0x8e,0x8e,0x0f,0xab,0x2c,0x59,0x29,0x6a,0xf8,0xc6,0x61,0x3e,0xe0,0xe7, + 0x25,0x70,0x1c,0xd8,0x0b,0xb8,0x73,0xe1,0x80,0xcb,0xb6,0xed,0xe1,0xe5, + 0xe5,0x65,0x49,0x52,0x26,0x93,0x51,0x38,0x1c,0x16,0x90,0x58,0x17,0xd7, + 0x81,0xb8,0x86,0xb8,0x88,0xba,0x87,0xda,0x95,0xfa,0x94,0xd2,0xd5,0x77, + 0xed,0x7a,0x30,0x19,0x13,0x8d,0xfc,0x00,0x0e,0x99,0x19,0x58,0x39,0xe0, + 0x92,0x40,0x20,0xf0,0x42,0xe6,0x98,0x9d,0x9d,0x55,0x5b,0x5b,0x9b,0xaa, + 0xab,0xab,0x05,0x5c,0x81,0x7a,0x26,0x27,0xd6,0xc6,0x65,0x8f,0x96,0x89, + 0x93,0x88,0x0b,0xa8,0x3b,0xdd,0xa1,0xe4,0x97,0xa4,0x88,0x22,0xa0,0x1e, + 0xd8,0x0f,0x78,0x73,0xc0,0x6e,0x9f,0xcf,0x97,0x5e,0x58,0x58,0xd0,0xea, + 0xea,0xaa,0x96,0x96,0x96,0x24,0x49,0x83,0x83,0x83,0x02,0xee,0x03,0xd4, + 0x31,0x80,0x24,0x69,0x2c,0x3b,0x26,0x62,0x88,0x08,0xba,0xfd,0xf6,0xa6, + 0x68,0x61,0x0d,0x68,0x06,0x04,0x94,0x02,0x32,0x50,0x01,0x1e,0x9f,0xcf, + 0x97,0x76,0x1c,0x47,0xf3,0xf3,0xf3,0x9a,0x9b,0x9b,0x93,0x24,0x25,0x12, + 0x09,0x01,0xbd,0x00,0x15,0xc0,0x00,0xbd,0x28,0x95,0x79,0xaa,0x37,0xdf, + 0x5f,0xab,0xf9,0x63,0xb3,0xb8,0x87,0xa8,0x43,0x40,0x2b,0x70,0x0c,0xf0, + 0xe7,0x28,0xf6,0xf8,0xfd,0xfe,0xf4,0xd4,0xd4,0x94,0x66,0x66,0x66,0x34, + 0x3d,0x3d,0xad,0xc5,0xc5,0x45,0xc5,0x62,0x31,0x01,0x71,0xcc,0x0a,0xda, + 0xc0,0x0d,0x2c,0x3e,0x13,0x45,0x97,0xdf,0x37,0xea,0xc0,0x48,0x48,0x54, + 0x6d,0x01,0x07,0x36,0x14,0x6f,0x80,0x43,0xa1,0xd0,0x2b,0xc7,0x71,0x94, + 0xcd,0x66,0xe5,0x38,0x8e,0x56,0x56,0x56,0x14,0x8f,0xc7,0x05,0x0c,0x60, + 0xec,0xe4,0x33,0xf0,0x1a,0x20,0x8a,0xc5,0x04,0x0d,0x08,0xf8,0x09,0x34, + 0x99,0x05,0x2c,0xcd,0xfd,0xc7,0x96,0x65,0xa5,0xa3,0xd1,0xa8,0xba,0xba, + 0xba,0xd4,0xd9,0xd9,0xa9,0x9e,0x9e,0x1e,0x45,0x22,0x11,0x01,0xfd,0xbf, + 0xad,0x63,0x94,0x57,0x00,0x07,0x81,0x5a,0xe0,0x1c,0x70,0x1e,0x38,0x65, + 0x3e,0xea,0xcd,0x51,0x5c,0x02,0x54,0x02,0xd7,0x81,0xbb,0xc0,0x43,0x63, + 0xb5,0x3e,0xe0,0x52,0xae,0xe1,0x2d,0xa3,0xbe,0xc2,0x38,0x21,0x0c,0xec, + 0x03,0xfc,0xdb,0xd8,0xcd,0x05,0x34,0x04,0x02,0x81,0x67,0x6e,0xb7,0xfb, + 0xb9,0x65,0x59,0x43,0x40,0x3f,0x70,0x16,0x38,0xb1,0x53,0x4c,0x2d,0xc0, + 0x63,0x66,0xe1,0x35,0xf7,0x45,0x39,0x8a,0x5d,0xb6,0x6d,0x8f,0x6c,0x13, + 0x90,0x14,0x70,0x74,0xf7,0x4d,0x26,0x7f,0x40,0x5a,0xfe,0x15,0xb6,0xd9, + 0xc7,0xf9,0x03,0x52,0x80,0xe2,0xfc,0x01,0x29,0x04,0x9c,0x37,0x20,0x85, + 0x80,0xf3,0x06,0xa4,0x00,0xf0,0x9f,0x03,0xb2,0x5b,0x57,0x18,0xbf,0xb7, + 0x02,0x77,0x4c,0x47,0xeb,0x03,0x1e,0x01,0x4d,0x85,0x80,0x8b,0x8d,0xcf, + 0xab,0x80,0x23,0xa6,0x1d,0xd4,0x9a,0xeb,0xa1,0xc2,0x36,0xcc,0xf5,0xf4, + 0x79,0x4d,0x83,0x2a,0x37,0x33,0x28,0x07,0x02,0xbf,0x00,0x34,0xf2,0x8f, + 0x1f,0xa8,0x5e,0xd8,0x06,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae, + 0x42,0x60,0x82 +}; + +static const unsigned int small_multilineedit_png_len = 454; +static const unsigned char small_multilineedit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x58,0x49,0x44,0x41,0x54,0x28,0xcf,0x7d,0xd2, + 0x31,0x6a,0x1b,0x41,0x14,0x87,0xf1,0x9f,0xb4,0x83,0x8d,0x02,0x82,0x14, + 0x3a,0x40,0x52,0xb9,0x36,0x08,0x4c,0x50,0x91,0x53,0x04,0x72,0x06,0x57, + 0xb9,0x46,0x4e,0xa1,0xde,0x75,0x7a,0x37,0x02,0x61,0x30,0x21,0x18,0x62, + 0xa2,0x5a,0x4d,0xc0,0x2a,0x62,0x56,0x96,0x90,0x77,0x67,0x37,0x85,0x46, + 0xeb,0xb5,0x6c,0x6b,0x9a,0xf7,0x31,0xf3,0xf1,0xe7,0xbd,0xb7,0x1b,0x74, + 0xbf,0x7f,0xad,0xce,0x17,0xa3,0xa5,0xb7,0xce,0xbd,0x9b,0xab,0xdb,0xb1, + 0x0b,0xab,0x20,0xab,0xce,0xbf,0x8c,0x3e,0x3a,0x74,0x26,0x67,0x9f,0x8f, + 0x5c,0xba,0x0b,0xb2,0xc5,0xe8,0x83,0x78,0x50,0xee,0x71,0x6a,0xe0,0x21, + 0xc8,0x96,0x4a,0xb5,0x1e,0x58,0x6f,0x9f,0x5a,0xbc,0xd6,0x33,0x81,0xbe, + 0xe3,0xa0,0x43,0xe5,0x9d,0x3c,0x65,0xe4,0xb4,0x38,0xd7,0x93,0xfb,0x09, + 0x41,0x16,0x74,0x88,0xe8,0xa7,0xbc,0x27,0xfe,0x97,0x9a,0x8b,0x2a,0xe8, + 0xea,0x84,0x9d,0xb0,0x00,0x03,0x65,0xc3,0xef,0x53,0x2d,0x9b,0x89,0x1a, + 0xb9,0x4c,0x17,0x25,0x06,0xe0,0x6f,0xba,0xdb,0x93,0x4b,0x73,0x05,0x98, + 0x2b,0xcc,0xd3,0x53,0xd1,0xd4,0xe2,0xb9,0x5c,0x1e,0x58,0xdc,0x8b,0xe4, + 0x47,0x27,0x60,0x46,0xa2,0x2d,0xc3,0x63,0x13,0x95,0x7a,0x3e,0xf1,0x1b, + 0x52,0x6d,0xf3,0x8b,0xe4,0xa2,0xe9,0xf0,0x57,0x8b,0x77,0xb5,0xd8,0x4f, + 0xde,0x6d,0x63,0xe8,0x7a,0x6f,0x33,0xed,0x89,0x92,0x3c,0x35,0x04,0x53, + 0x05,0x2d,0xfe,0x64,0x6a,0x68,0xfc,0x5c,0x8e,0xdb,0xef,0x2f,0x92,0x68, + 0xc7,0xd1,0xc4,0x9f,0x46,0xae,0xef,0x5b,0x23,0xbc,0x76,0x36,0x96,0x50, + 0xa9,0x83,0xfa,0xe6,0x6a,0x72,0xd6,0x3b,0xa0,0xaf,0x5d,0x33,0x53,0x8a, + 0x41,0xbc,0x1d,0x7f,0x3b,0x72,0x7a,0xf0,0x87,0x9e,0xf9,0x21,0xb7,0x09, + 0xa2,0x0b,0x97,0x06,0xfa,0x82,0xee,0xab,0x6a,0xa5,0x94,0x5b,0x58,0x05, + 0xd1,0xca,0x9d,0x07,0xc7,0x32,0x9d,0x57,0xe5,0x5a,0xb4,0xb1,0xb2,0x0a, + 0x75,0xd5,0x29,0x2c,0xad,0x65,0x3a,0x6f,0xca,0xb5,0x28,0x8a,0xff,0x01, + 0x48,0x40,0x9e,0xd7,0x6c,0x2b,0x5f,0xd2,0x00,0x00,0x00,0x00,0x49,0x45, + 0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_ordertool_png_len = 587; +static const unsigned char small_ordertool_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xdd,0x49,0x44,0x41,0x54,0x48,0xc7,0xcd,0x94, + 0xcb,0x4b,0x42,0x41,0x14,0xc6,0x2d,0x1f,0x3d,0x7c,0x44,0xe1,0x4d,0x7b, + 0xa0,0x11,0x98,0x62,0x59,0x41,0x11,0x11,0x3d,0x4c,0x6c,0x23,0x85,0x62, + 0x0b,0x91,0x56,0xfd,0x11,0x51,0xbb,0x56,0xd5,0x2e,0x0b,0xc4,0x45,0x50, + 0x10,0xb8,0xa8,0xb4,0x45,0xb4,0x28,0x82,0x82,0x88,0xa0,0x4d,0xbb,0x36, + 0xfd,0x35,0xa7,0x33,0xf1,0x4d,0x4c,0x17,0x93,0x1a,0x37,0x5d,0xf8,0x71, + 0x19,0x66,0xee,0x37,0xdf,0x39,0xf3,0xdd,0xb1,0x10,0x91,0x45,0xc2,0x4f, + 0x13,0x63,0x65,0x6c,0x78,0x37,0xa9,0xf3,0x7f,0xc1,0x2c,0xda,0xc2,0x88, + 0x41,0x07,0xd3,0xae,0x6c,0xe0,0xc0,0xd8,0xc5,0xb8,0xeb,0xe0,0xc2,0x3a, + 0x87,0x2a,0x6c,0x85,0xa8,0x20,0xc8,0x78,0x19,0x67,0x3e,0x9f,0xdf,0xc9, + 0x66,0xb3,0x94,0x4c,0x26,0xeb,0x92,0x48,0x24,0x28,0x12,0x89,0x88,0x6f, + 0x0b,0x8c,0xa1,0x0a,0xdb,0x20,0x26,0x06,0x51,0xa6,0x8f,0xe9,0xcc,0x64, + 0x32,0x74,0x78,0xb1,0x40,0x07,0x97,0xc3,0x54,0xa8,0x46,0xa9,0x78,0x35, + 0x46,0x47,0x37,0xd3,0x74,0xfa,0xb0,0x48,0xe7,0xcf,0x29,0xba,0x7a,0x5d, + 0xa5,0xdb,0xb7,0x35,0xba,0x7f,0x5f,0xa7,0xea,0xcb,0xb2,0x34,0x16,0x33, + 0x3b,0xee,0xc2,0xc4,0x08,0xd3,0xcf,0x74,0x0b,0x17,0x9b,0xa5,0x66,0xda, + 0x28,0x36,0xd3,0x56,0xa9,0x9d,0xb6,0x8f,0x0d,0xda,0x2b,0x0f,0xd0,0x7e, + 0x25,0x4a,0xa5,0xeb,0x49,0x3a,0xb9,0x9b,0xa7,0xf2,0xe3,0x12,0x9d,0x3d, + 0xa5,0xd8,0x40,0x5c,0x0a,0xcf,0x99,0x7b,0xec,0xc1,0x44,0x88,0xf1,0xa3, + 0x82,0x82,0xd2,0xa2,0xdf,0x50,0xf9,0x26,0x0c,0xf1,0x56,0x51,0x3e,0xd3, + 0x83,0xb7,0xe7,0xb3,0x5f,0xa2,0x34,0x8b,0x25,0xce,0xa4,0x98,0x95,0x3a, + 0xa4,0xb0,0x2e,0x26,0x9d,0xda,0x20,0xda,0x01,0x97,0x06,0x4e,0xb9,0x15, + 0xa7,0x6c,0xe0,0x40,0x45,0x25,0x43,0x75,0x08,0x61,0x9d,0x61,0x4e,0x83, + 0xc4,0x8f,0x4d,0x5a,0x80,0x0b,0x1b,0xfa,0x50,0xcd,0x4f,0xf8,0xb0,0xce, + 0x25,0xd3,0x20,0x4a,0x0e,0x20,0x0d,0xa3,0x10,0x17,0x0b,0x3d,0xb9,0x5c, + 0x6e,0x57,0x2b,0x6e,0x8a,0xb0,0xea,0x38,0x8a,0x8d,0xbc,0xe9,0x74,0x5a, + 0x2f,0x6e,0xfc,0xd8,0x31,0x10,0x3d,0x9a,0x62,0x66,0x99,0x09,0x66,0x50, + 0x94,0xa6,0x1d,0x37,0xe5,0x37,0x36,0x13,0x40,0xcf,0x0e,0xb5,0xe2,0x06, + 0x61,0x2f,0x1c,0x8f,0xc3,0xed,0x57,0x2b,0xd0,0x6b,0xad,0xb8,0xd9,0x91, + 0x80,0x80,0x12,0xa7,0xa0,0x12,0x39,0xb7,0x6e,0xdc,0x6c,0x35,0xca,0x91, + 0x93,0x22,0xc3,0x6d,0xff,0x2e,0x6e,0xe2,0x07,0x71,0x9a,0x1c,0xc7,0x64, + 0x2a,0x1a,0x89,0x9b,0x15,0x7d,0x0c,0xe0,0xf0,0x66,0x94,0xf8,0xf5,0x86, + 0xc3,0x61,0xed,0xb8,0xd5,0xfa,0xa5,0xa5,0xe3,0x9e,0x46,0xe2,0x56,0xab, + 0xc7,0x11,0xe5,0x86,0xf3,0xeb,0xc6,0xcd,0xaa,0x5c,0x97,0x3e,0xe5,0x1e, + 0x96,0xb7,0x9b,0x53,0x27,0x6e,0x1f,0xac,0x71,0xb5,0x00,0x3b,0xb1,0x41, + 0x4e,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_pixlabel_png_len = 1229; +static const unsigned char small_pixlabel_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x04,0x5f,0x49,0x44,0x41,0x54,0x48,0xc7,0xa5,0x95, + 0x4d,0x6c,0x54,0x55,0x18,0x86,0x9f,0x73,0xee,0x99,0x3b,0x3f,0xbd,0xed, + 0xf4,0x8f,0xb6,0xd2,0x00,0xa2,0x06,0x44,0x50,0x04,0x13,0x09,0x6d,0xd0, + 0x08,0x9a,0x20,0xba,0x21,0x2e,0x34,0x31,0x2c,0xd4,0x44,0x23,0x71,0xe7, + 0xa2,0x1b,0x13,0xe3,0x4e,0x13,0x37,0x2e,0x4d,0x4c,0xdc,0xe8,0x42,0xe2, + 0xa6,0x75,0x21,0x4a,0x42,0x11,0x21,0x14,0x4d,0xac,0x05,0x3a,0xd3,0x29, + 0xfd,0x9d,0x76,0x6a,0xe7,0xa7,0xe3,0x30,0xb7,0x73,0x3b,0x73,0x7f,0xce, + 0x75,0x41,0x8b,0x12,0x4b,0x22,0xf1,0x4b,0xbe,0xe4,0xac,0x9e,0xf3,0x9e, + 0xf7,0xfd,0xf2,0x1d,0x01,0xc8,0x81,0x81,0x81,0xd7,0xb4,0xd6,0xa7,0x4b, + 0xa5,0x52,0xbf,0x6d,0xdb,0xdc,0x6f,0x55,0xab,0x55,0x52,0xa9,0xd4,0xd5, + 0xc5,0xc5,0xc5,0x2f,0x81,0x33,0x80,0xa3,0x00,0x43,0x6b,0x7d,0x3a,0xf1, + 0xf0,0x33,0xfd,0x2d,0x3b,0x93,0xc4,0x02,0xe8,0xe9,0xdd,0x4e,0x61,0xe2, + 0x22,0x4b,0xdf,0x7d,0xc6,0xc0,0x7b,0x47,0xd9,0xff,0xf2,0x2b,0x48,0xd3, + 0x22,0x0c,0x5d,0x90,0x02,0xaf,0x3a,0x4b,0xf5,0x7a,0x9a,0x0b,0x67,0xc6, + 0xf8,0x61,0xba,0xcc,0xd2,0xad,0x55,0x2a,0xc5,0x95,0x43,0x80,0x09,0x0c, + 0x03,0x45,0x05,0x18,0xa5,0x52,0xa9,0xbf,0x7b,0xff,0x83,0x4c,0x64,0x72, + 0x24,0xac,0x24,0x2d,0x35,0x9b,0x5f,0x07,0xbf,0x40,0xdf,0x1c,0xa3,0x51, + 0xdd,0xcd,0xad,0x95,0x09,0x94,0x61,0x10,0xaa,0x28,0x0d,0xaf,0x86,0xbb, + 0xb2,0x40,0x39,0x73,0x0d,0xd3,0xce,0xd1,0x9a,0xcf,0xb3,0x96,0xb7,0x91, + 0xc2,0x00,0x38,0x00,0x74,0x02,0x35,0x05,0x18,0xb6,0x6d,0xd3,0xa9,0x25, + 0x66,0x2c,0xc1,0xb6,0x9e,0x0e,0xaa,0x37,0x86,0x98,0x1d,0xbd,0xc4,0x0b, + 0xbb,0x7a,0xe8,0xdc,0xd2,0x8e,0x08,0x1c,0x02,0x19,0x05,0xaf,0x41,0x22, + 0x9e,0x24,0x12,0x8f,0xa1,0x1f,0xe9,0x65,0x4f,0x53,0x33,0xed,0xbd,0x1d, + 0x04,0xe7,0xa7,0x98,0x1d,0x5f,0xd8,0x70,0xa6,0x19,0x88,0x2a,0x40,0x00, + 0x74,0x24,0x2d,0xf6,0x9a,0x71,0x92,0x31,0x9f,0xab,0xe3,0x97,0x28,0xba, + 0x9a,0x9e,0xee,0x66,0xac,0x64,0x0b,0x7e,0xc5,0x26,0xb6,0xc5,0xc4,0x88, + 0x45,0x58,0x9d,0x9e,0xa1,0x98,0x9e,0x22,0xde,0x6e,0xa1,0xc3,0x08,0xb5, + 0x40,0xb2,0xea,0x7a,0x68,0x1d,0x6e,0x80,0x15,0x60,0xdc,0x01,0x37,0x3c, + 0x9f,0xba,0x0b,0xb5,0xf2,0x1f,0x2c,0xcf,0x4f,0x62,0x49,0x98,0xc8,0x39, + 0x9c,0xfd,0xea,0x0a,0xab,0xa5,0x0a,0x87,0x4e,0xee,0xe2,0x81,0xee,0x2e, + 0x3e,0x79,0x7f,0x90,0xee,0x96,0x28,0x91,0xf6,0x16,0x46,0xd2,0x4b,0xac, + 0xd6,0x1a,0x24,0x9b,0x62,0xc4,0x0c,0x41,0xf5,0x36,0x58,0x02,0x42,0x6e, + 0x5c,0x13,0x31,0xc0,0xb1,0x4b,0xa4,0xa6,0xb2,0x14,0x6d,0x0f,0x53,0x4a, + 0x0a,0xe5,0x1a,0xf3,0x0b,0x25,0xa6,0x17,0x1d,0x72,0xa3,0x39,0x66,0xa6, + 0x56,0xf0,0x9c,0x3a,0x27,0x4e,0x1d,0xa6,0xe6,0xb9,0x74,0xb7,0x18,0xbc, + 0xf5,0xf6,0x11,0x8e,0x3e,0xf5,0x10,0x8a,0xf0,0xae,0x49,0x51,0x1b,0x87, + 0xd1,0x8b,0x83,0x5c,0x1e,0x3e,0xcb,0xf6,0xc7,0xfa,0x08,0x35,0x54,0x7c, + 0xcd,0x1b,0x27,0x9f,0xe0,0xf9,0x63,0x7b,0x98,0x4f,0x2d,0xb2,0xf5,0x60, + 0x37,0xa5,0x45,0xcd,0x73,0x47,0xb6,0xd1,0xf9,0xa8,0xc5,0xab,0x6f,0xf6, + 0x61,0xb6,0x25,0xe9,0xea,0x68,0xe6,0x9b,0xcc,0x59,0xbc,0x80,0xcd,0xc1, + 0x85,0xcc,0x15,0xec,0xfc,0x1c,0x2b,0x4e,0x16,0x51,0x2f,0xa3,0x91,0xe0, + 0x37,0xd8,0x7a,0x60,0x17,0x3d,0x7d,0x87,0x09,0x5c,0x1b,0xa3,0x3e,0x4d, + 0xbc,0x6f,0x07,0xed,0x7b,0x0f,0xd2,0x75,0x78,0x0f,0xee,0x4a,0x9a,0xb9, + 0x33,0x3f,0x92,0xca,0x94,0x68,0x48,0xb1,0x39,0xd8,0xad,0xdd,0x22,0x74, + 0x6d,0xca,0x79,0x9b,0x78,0x00,0x0a,0xcd,0x8d,0xf4,0x32,0x9e,0x5d,0xa7, + 0x5e,0xaf,0x10,0x8d,0x59,0xa8,0x44,0x27,0x81,0xb3,0x44,0xad,0x58,0xc5, + 0x74,0xa7,0x70,0xa7,0xb3,0x8c,0xff,0xb2,0xcc,0x4c,0xd5,0x06,0x71,0x0f, + 0x2b,0x42,0xad,0xf1,0xdd,0x35,0x74,0xc3,0x05,0x0d,0xa6,0x94,0x8c,0x8e, + 0x97,0xc8,0x0c,0xdf,0xa0,0x7d,0x77,0x1b,0x05,0x27,0xc1,0x4f,0xe7,0x67, + 0x28,0x4e,0xdf,0xe4,0xdd,0x13,0xfd,0x38,0x0b,0x73,0xa4,0xcf,0x5d,0x63, + 0x6c,0xba,0x40,0xc5,0xf5,0x31,0xc4,0xdd,0x8a,0xef,0x84,0x67,0x28,0x85, + 0x94,0x06,0x52,0x4a,0x5c,0x09,0x48,0x49,0xb6,0xd6,0x60,0x74,0x68,0x9c, + 0xb0,0xb8,0x8a,0x8a,0x1a,0x0c,0x0f,0x5e,0xc4,0xf7,0x04,0xd9,0x73,0xa3, + 0xe4,0x47,0x52,0xd8,0xcb,0x36,0xe2,0x6f,0xc4,0xe6,0x60,0x1d,0x6a,0xb4, + 0x0e,0x11,0x4a,0x21,0x91,0x58,0x52,0x51,0xd1,0x1a,0x5b,0x19,0xcc,0x5e, + 0xcb,0x53,0xcb,0x15,0x38,0x75,0xec,0x49,0x74,0xc9,0xe7,0xf7,0x4b,0x29, + 0x64,0x73,0x1c,0x61,0x46,0x71,0x82,0x80,0x46,0x18,0x22,0xb8,0x87,0x62, + 0x89,0x44,0xc5,0x9a,0x88,0x98,0x71,0x4c,0x25,0xf1,0x81,0x3a,0x30,0x74, + 0x3d,0x4b,0xa2,0xab,0x85,0xae,0x1d,0x6d,0xe8,0x98,0x66,0xf7,0xce,0x24, + 0xdb,0x7b,0x3b,0xf9,0x73,0xce,0x26,0x33,0x91,0x67,0xbe,0xe2,0xb0,0xa6, + 0x05,0x42,0xa8,0x7b,0x80,0x23,0x26,0x66,0x53,0x3b,0x51,0xab,0x03,0xd0, + 0x04,0x5a,0xd3,0xa6,0x14,0x97,0x0b,0x45,0x3e,0xfe,0xfc,0x3c,0x28,0x93, + 0xe3,0x1f,0xbd,0xce,0xd3,0x2f,0x3d,0x4e,0xad,0xe0,0x30,0x7c,0x61,0x92, + 0x9f,0xa7,0x72,0x94,0x3d,0x8f,0x35,0xdf,0x47,0x87,0xfe,0xe6,0xe1,0x21, + 0x0d,0x54,0xa2,0x15,0x81,0x8f,0x2e,0x65,0x89,0x4a,0x4d,0x80,0xc6,0x52, + 0x26,0xdf,0xcf,0x15,0xf9,0xe0,0xc3,0x6f,0x79,0xf1,0xd9,0x7d,0xcc,0x8f, + 0x2f,0x31,0x32,0x96,0x25,0x67,0x3b,0xb8,0x12,0x1c,0x61,0x80,0x01,0xc2, + 0xfb,0xf7,0x1c,0x87,0xd5,0x6a,0x95,0x88,0xb5,0x03,0xab,0x2b,0x09,0xda, + 0xa5,0xbe,0x90,0xc6,0x77,0x57,0xf1,0x90,0xf8,0x68,0x4c,0x65,0xf2,0xf5, + 0xc8,0x24,0x43,0x23,0x93,0x58,0x98,0x04,0x31,0x13,0xa5,0x40,0x0a,0x03, + 0x2b,0x26,0x69,0x55,0x06,0x8a,0x80,0xb2,0x73,0x3b,0x2e,0x20,0x54,0x40, + 0x98,0x4a,0xa5,0xae,0x06,0x1d,0xe2,0x10,0x22,0x24,0xf4,0x3d,0x74,0xdc, + 0xc2,0xab,0x55,0x88,0x18,0x8a,0x80,0x10,0xad,0x01,0x0c,0xb6,0x6d,0x6d, + 0x65,0x5f,0x77,0x1b,0xe9,0xa5,0x0a,0xf6,0x9a,0x4b,0x73,0x54,0xd1,0xd1, + 0x14,0x21,0x61,0x2a,0x56,0xd6,0x6a,0x00,0x19,0xc0,0x07,0x02,0x80,0x18, + 0xf0,0x0e,0xf0,0x1b,0x10,0xfe,0x8f,0x9e,0x00,0x3e,0x05,0xfa,0x80,0x5e, + 0x01,0x44,0x00,0x0b,0xd8,0xb2,0xbe,0xa4,0x9b,0xd7,0x2d,0x92,0xf7,0xf1, + 0x3b,0xe9,0x75,0xa5,0x36,0x50,0x02,0x8a,0x62,0x1d,0x10,0x01,0x12,0xeb, + 0x1d,0x05,0x8c,0x8d,0x75,0xfa,0x1f,0x2b,0x5c,0x7f,0x7e,0x03,0x70,0x00, + 0x47,0x84,0x61,0x88,0x10,0x42,0xae,0xc3,0x8c,0x7f,0x40,0xef,0x17,0xbc, + 0x01,0x0f,0x80,0xe0,0x2f,0x1e,0x77,0x0d,0xd9,0xcc,0xde,0x09,0xba,0x00, + 0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_pointer_png_len = 586; +static const unsigned char small_pointer_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xdc,0x49,0x44,0x41,0x54,0x48,0xc7,0x9d,0x95, + 0x4b,0x4b,0x02,0x51,0x18,0x86,0xa7,0xd3,0x80,0x92,0x48,0x08,0x66,0x48, + 0x1b,0x49,0x90,0xd0,0xa4,0x20,0xc9,0x32,0xa9,0x18,0x1a,0x22,0x2b,0xac, + 0x85,0xae,0x5a,0x04,0x41,0x22,0xb8,0x90,0x82,0x20,0x08,0xba,0x51,0x14, + 0x15,0x11,0xd1,0xa2,0x1b,0x65,0x44,0x44,0x05,0x81,0x05,0x45,0x20,0xb4, + 0xea,0x6f,0x7d,0x7d,0xc7,0x3e,0x47,0x8b,0xe6,0xcc,0x8c,0xc2,0xc3,0x9c, + 0x85,0xf3,0xf8,0x9e,0xf7,0x5c,0x94,0x00,0x40,0xfa,0x0b,0x7e,0x1a,0x90, + 0x46,0x44,0xa6,0x67,0xc3,0x7f,0xdf,0x13,0x21,0xe9,0x88,0xe5,0x54,0x2a, + 0xc5,0x07,0xcd,0x88,0x13,0xb1,0x59,0x95,0xeb,0x89,0xed,0x24,0xe6,0xf8, + 0x90,0x16,0xab,0x72,0x3d,0xb1,0x23,0x9b,0xcd,0x42,0x7a,0x2e,0x5c,0x91, + 0x77,0x5a,0x95,0xeb,0x89,0x9d,0xb9,0x5c,0x0e,0x4e,0x8b,0x09,0xe8,0x1f, + 0x93,0xea,0x92,0xeb,0x8a,0x33,0x99,0x0c,0x9c,0x15,0x47,0x61,0xe5,0x82, + 0x41,0x2c,0x61,0x5d,0x2e,0x14,0x9f,0xbf,0xaa,0xb0,0x56,0x60,0xb0,0x7a, + 0xc5,0x60,0x60,0xc2,0x9a,0x5c,0x28,0xbe,0x7c,0x53,0x61,0xf3,0x96,0x95, + 0xd9,0xb8,0x61,0x30,0x38,0x69,0x5e,0x2e,0x14,0x5f,0x7f,0xa8,0xb0,0x7d, + 0xcf,0x34,0xb6,0xee,0x18,0x0c,0x25,0xcd,0xc9,0x85,0xe2,0x42,0x49,0x85, + 0xdd,0x47,0xf6,0x8b,0x9d,0x07,0x06,0xc3,0x53,0xc6,0x72,0xa1,0xf8,0xf6, + 0x53,0x85,0xbd,0x67,0xa6,0xb1,0x8e,0x75,0x2c,0x1e,0x31,0xc8,0xef,0x63, + 0xe7,0x06,0x0b,0x2a,0xee,0xb8,0xd4,0x05,0x4b,0x27,0x0c,0x96,0x4f,0x31, + 0xed,0x13,0x2b,0x8f,0x3b,0x7a,0x34,0x61,0x2d,0x3e,0x3a,0xa1,0x8d,0x86, + 0xe2,0x74,0x3a,0x0d,0x87,0x2f,0x0c,0x82,0x91,0x9f,0x97,0x47,0x52,0x52, + 0x79,0x11,0x49,0x94,0x45,0x66,0x90,0x09,0xa4,0x0f,0xf1,0xd3,0xf1,0x97, + 0x0d,0xc5,0x8a,0xa2,0xd4,0x1e,0x8e,0xf9,0x50,0x28,0x04,0x97,0x9f,0x3e, + 0x88,0x57,0x77,0xc6,0x24,0xd2,0x4b,0x52,0x5e,0x45,0x93,0xa9,0xc4,0x1e, + 0x8f,0xa7,0x22,0x98,0xe6,0x04,0x02,0x01,0x98,0xcd,0x07,0xe1,0xa0,0xa8, + 0xa5,0x1e,0x47,0xc2,0x48,0x2b,0x49,0x65,0x33,0x1d,0x3b,0xe8,0xe5,0x28, + 0x12,0x43,0x22,0x48,0x0f,0x4f,0x5d,0xf8,0xf2,0xc1,0x50,0x75,0x57,0x74, + 0x23,0xee,0xda,0x0a,0x0c,0x6f,0x37,0x9a,0x9e,0x9f,0x16,0xc6,0x8b,0xb4, + 0xf1,0xd4,0x73,0x0b,0x41,0x38,0x7e,0xd7,0x52,0x2b,0x48,0x3b,0x05,0x31, + 0xb5,0xdd,0x64,0x9a,0x5e,0xe5,0x3e,0xb6,0xd3,0xb3,0x9d,0xa7,0xbe,0xf8, + 0xc2,0x53,0x98,0x14,0xa7,0x96,0xcc,0xfe,0x83,0xd0,0xd8,0xcd,0x53,0x27, + 0x66,0x24,0x88,0x28,0x9a,0x38,0xce,0x67,0xc3,0xf7,0xb1,0xa1,0x58,0xf0, + 0x63,0x0e,0xaa,0xa6,0x22,0x4d,0xd2,0x3a,0x78,0xeb,0x16,0xd7,0x54,0xe4, + 0x42,0x02,0x24,0x8c,0xd2,0xd8,0x65,0xaa,0x0a,0x83,0xd4,0x36,0x12,0x79, + 0x09,0xd7,0x7f,0x77,0xc5,0x37,0x58,0xff,0x81,0x01,0x6f,0x58,0xf6,0xf8, + 0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_progress_png_len = 609; +static const unsigned char small_progress_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x01,0xec,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0xd1,0xc4,0x54,0x20,0x00,0x08,0x20,0x9a,0x19,0x0c,0x10,0x40, + 0x34,0x33,0x18,0x20,0x80,0x68,0x66,0x30,0x40,0x00,0xd1,0xcc,0x60,0x80, + 0x00,0x62,0x41,0xe6,0x30,0xaa,0xea,0x51,0x94,0x44,0xfe,0xdf,0xbe,0xc4, + 0x08,0x63,0x03,0x04,0x10,0x0b,0xba,0xe4,0x87,0x33,0x87,0x19,0xfe,0xfe, + 0xfd,0x0b,0xc6,0xff,0xfe,0xfd,0x63,0xc0,0x95,0x1c,0x41,0xe2,0x20,0x35, + 0x5f,0xbf,0x7e,0x65,0x78,0xf8,0xf0,0x21,0x83,0x7b,0x76,0x09,0x8a,0x3c, + 0x40,0x00,0x61,0x04,0x85,0x80,0x53,0x2b,0x83,0xb0,0x6b,0x07,0x58,0x93, + 0x8c,0x5f,0x3f,0x83,0x5e,0xcc,0x0c,0x30,0x3b,0xa4,0x72,0x35,0x43,0x7a, + 0xc7,0x16,0x30,0xbb,0x7b,0xc9,0x31,0x86,0xb9,0x9b,0xce,0x31,0xfc,0xfe, + 0xfd,0x9b,0xe1,0xfd,0xfb,0xf7,0x0c,0x6f,0xdf,0xbe,0xc5,0xb0,0x18,0x20, + 0x80,0x30,0x5c,0x2c,0x29,0x29,0x05,0xa6,0xff,0xfc,0xf9,0xc3,0x20,0x29, + 0x21,0xc5,0xc0,0xcf,0xcd,0x06,0x66,0x0b,0x09,0x09,0x31,0x08,0xf0,0xb0, + 0x83,0xd9,0xdc,0xdc,0xdc,0x0c,0x1c,0x1c,0xac,0x0c,0xdf,0xbf,0x7f,0x67, + 0xf8,0xf4,0xe9,0x13,0xc3,0xc7,0x8f,0x1f,0x31,0x0c,0x06,0x08,0x20,0x0c, + 0x83,0x95,0x95,0x95,0xc1,0x34,0x28,0x18,0x94,0x95,0x95,0x18,0xb8,0xd9, + 0x99,0xc1,0xae,0x94,0x94,0x94,0x64,0xe0,0xe3,0x64,0x01,0xb3,0x05,0x04, + 0x04,0x80,0xe2,0x4c,0x0c,0x3f,0x7f,0xfe,0x64,0xf8,0xf5,0xeb,0x17,0x18, + 0xa3,0x03,0x80,0x00,0xc2,0x30,0x58,0x54,0x54,0x14,0x4c,0x83,0x0c,0x10, + 0x11,0x11,0x61,0xe0,0x62,0x63,0x02,0xbb,0x92,0x8f,0x8f,0x1f,0x68,0x18, + 0x23,0x98,0xcd,0xc1,0xc1,0xc1,0xc0,0xc6,0xfa,0x1f,0x68,0xe0,0x4f,0x70, + 0x70,0x80,0xc4,0xd0,0x01,0x40,0x00,0x61,0x18,0x0c,0xf2,0x1a,0x08,0x7c, + 0xff,0xce,0x07,0x66,0xff,0x01,0xba,0xec,0xf3,0x67,0x66,0x86,0x4f,0x9f, + 0x3f,0x31,0xfc,0xfb,0xc5,0x08,0x64,0xff,0x07,0xe2,0xef,0x0c,0xbf,0x59, + 0xfe,0x33,0x7c,0xe1,0xfc,0x05,0x0e,0x0e,0x6c,0x2e,0x06,0x08,0x20,0x0c, + 0x83,0x6f,0xdf,0xba,0x05,0xa6,0x9f,0x3c,0x61,0x60,0xb8,0x73,0xeb,0x36, + 0x03,0x17,0x07,0x13,0x90,0x2d,0xc5,0x70,0xef,0xce,0x6b,0x06,0x1e,0x10, + 0x5b,0x56,0x98,0xe1,0xc1,0xfd,0x4f,0x0c,0x9c,0x6c,0x8c,0x0c,0xa2,0x0c, + 0x4c,0x0c,0xef,0xde,0xbd,0x63,0xf8,0xf6,0xed,0x1b,0x86,0xc1,0x00,0x01, + 0xc4,0x88,0x9c,0x9c,0x40,0xe9,0x78,0xe7,0xd4,0x1e,0x70,0x2c,0x83,0x22, + 0x04,0xe4,0x12,0x50,0x58,0x63,0x03,0x20,0x71,0x90,0x3c,0xc8,0xd0,0x2f, + 0x5f,0xbe,0x30,0xf4,0x6f,0xde,0x83,0x92,0x8e,0x01,0x02,0x08,0xc3,0x60, + 0xac,0xa6,0x10,0x09,0x90,0x0d,0x06,0x08,0x20,0x46,0x5a,0x95,0xc7,0x00, + 0x01,0x44,0xb3,0xb2,0x02,0x20,0x80,0x68,0x66,0x30,0x40,0x00,0xd1,0xcc, + 0x60,0x80,0x00,0xa2,0x99,0xc1,0x00,0x01,0x44,0x33,0x83,0x01,0x02,0x0c, + 0x00,0x3d,0xd7,0xd8,0x42,0x12,0x79,0x14,0x47,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_pushbutton_png_len = 408; +static const unsigned char small_pushbutton_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x2a,0x49,0x44,0x41,0x54,0x28,0xcf,0x95,0x92, + 0xb1,0x6e,0xc2,0x30,0x14,0x45,0x4f,0x92,0x27,0x10,0x03,0x1b,0x03,0x0b, + 0x52,0x99,0x98,0x99,0x18,0x32,0xf4,0x2b,0x2a,0xf5,0x1b,0x98,0xfa,0x1b, + 0xfd,0x0a,0x76,0xe6,0xee,0x2c,0x2c,0x48,0x1d,0x10,0x52,0x90,0x32,0x75, + 0x60,0x41,0x82,0x05,0x11,0x82,0xc0,0x76,0xdc,0x21,0x2e,0x85,0x88,0x84, + 0xf6,0x2d,0xb6,0xae,0x8e,0x8f,0xae,0x6c,0x0b,0xfe,0xfb,0x6b,0x36,0xdc, + 0x86,0x09,0x65,0xb3,0x63,0x31,0x5b,0x8e,0x18,0x93,0x0a,0x41,0x36,0x7c, + 0x09,0xbb,0x54,0xcd,0x74,0xf0,0x5c,0x63,0xc2,0x46,0x08,0xb6,0xe1,0x13, + 0xa6,0x12,0x6e,0x40,0x9f,0x16,0x07,0x21,0x48,0xd0,0xd8,0x4a,0xf8,0x0c, + 0xd0,0xa4,0x2e,0x78,0x90,0x3d,0x30,0x1b,0x00,0x21,0x10,0x3c,0x30,0x0f, + 0xe0,0x0c,0xc0,0xc7,0x93,0xfc,0xa4,0x7e,0x6c,0x06,0x6e,0xe0,0x36,0x00, + 0x6b,0xa0,0xcd,0xda,0x25,0xeb,0x22,0xac,0x51,0x40,0x87,0x95,0x03,0x56, + 0x70,0x49,0x94,0xdb,0x5f,0xc1,0xb9,0xf9,0xa7,0x8c,0x06,0x3a,0xc0,0x97, + 0x4b,0x0a,0xe6,0xf3,0xef,0x15,0xb9,0x35,0x06,0xba,0xc4,0x37,0x92,0xab, + 0xce,0x11,0x3d,0x00,0x22,0xb4,0x03,0x22,0x7a,0x44,0x45,0xb3,0x72,0xad, + 0xe6,0xe0,0x1a,0xce,0x2f,0x89,0xba,0x6f,0x2e,0x9f,0x02,0xac,0xfe,0x73, + 0xcf,0xe6,0x8f,0xb0,0xdd,0xa1,0x2b,0xe1,0x13,0x49,0xfe,0xe6,0x56,0xb0, + 0x8b,0xd9,0x74,0xd0,0xa8,0xc0,0x8f,0x7c,0x42,0x8c,0xc6,0x08,0x66,0x39, + 0x7a,0xab,0xd1,0xaf,0xec,0x11,0xf3,0xc1,0x9e,0x93,0x60,0x18,0x33,0xa1, + 0x45,0x13,0xc1,0x2f,0xf9,0x74,0x9a,0x3d,0x5b,0x52,0xc1,0x90,0xb2,0xe1, + 0x40,0x9d,0x00,0xef,0x2e,0x6c,0x31,0x9c,0x48,0x49,0xc5,0x66,0x9e,0x22, + 0xe1,0x48,0x80,0x57,0x0a,0x5b,0x0c,0x06,0xf3,0x0d,0xc5,0x5b,0x86,0xab, + 0x30,0x5c,0xf4,0x11,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42, + 0x60,0x82 +}; + +static const unsigned int small_radiobutton_png_len = 586; +static const unsigned char small_radiobutton_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xdc,0x49,0x44,0x41,0x54,0x28,0xcf,0xcd,0xd2, + 0x4d,0x48,0xd3,0x01,0x18,0xc7,0xf1,0xdf,0xf8,0xcb,0xd8,0x0b,0xb2,0x4e, + 0x6e,0x81,0x8d,0x36,0x29,0x46,0x31,0xda,0x56,0x2c,0x92,0xa0,0x51,0x2c, + 0x10,0x09,0x32,0x42,0x28,0xa3,0xc3,0x28,0xf5,0x60,0x61,0x75,0xc8,0x6c, + 0x18,0x09,0x16,0x11,0x64,0x87,0x35,0x22,0x4a,0x82,0xba,0x0c,0xea,0x92, + 0xb6,0x4b,0x44,0x87,0xc1,0x76,0x29,0x69,0x14,0x4a,0x2f,0x64,0x11,0x45, + 0x1d,0x77,0x18,0xbe,0x2c,0xfe,0xdf,0x0e,0xc6,0x16,0xff,0x94,0x3a,0xc6, + 0x73,0xfd,0xf0,0xf0,0xbc,0xfc,0x84,0xfe,0xbd,0xf4,0x5f,0x62,0xd9,0x64, + 0xc8,0x2e,0xa7,0x5c,0x72,0xc9,0x29,0xbb,0x0c,0xd9,0x56,0xc1,0x32,0x4e, + 0xa7,0x8e,0x14,0x76,0x56,0xd6,0x9a,0x3e,0xb3,0xbd,0xd2,0x5d,0x4a,0x0d, + 0xc8,0x23,0x87,0x8c,0x15,0xb0,0x9a,0x7a,0x73,0xdb,0xe7,0x47,0x99,0xe2, + 0x35,0x65,0x1e,0x32,0x4c,0x6c,0xa1,0x7b,0x52,0x3e,0xb9,0xd5,0x64,0xc1, + 0x32,0x8e,0xe7,0x4e,0xd6,0x5e,0xf0,0x9d,0x2f,0x7c,0xe6,0x13,0x73,0xbc, + 0x63,0x8a,0x9e,0x5a,0x57,0x5e,0xad,0x72,0x2f,0x77,0xaf,0xcf,0x3a,0x98, + 0x8a,0xcf,0x3f,0xe7,0x1b,0x1f,0x79,0xcf,0x5b,0x66,0x28,0x33,0x4d,0x89, + 0xdb,0x84,0x17,0x3b,0xd3,0xf2,0xc9,0x21,0x5b,0x03,0x1b,0x87,0x0a,0x23, + 0x7c,0xe5,0x03,0x25,0xce,0x13,0x25,0xc2,0x19,0x1e,0xf3,0x94,0x7b,0xf4, + 0xb2,0xbb,0xac,0x90,0x3c,0x32,0x1a,0xd8,0xbe,0xa3,0xf2,0x80,0x39,0x66, + 0x38,0x57,0x5f,0xa2,0x8f,0x3c,0xb7,0x18,0x63,0x73,0x55,0x71,0x79,0x65, + 0x6f,0x60,0x67,0x8b,0x59,0xe2,0x0d,0x2f,0x89,0xd4,0xf1,0x46,0x72,0xdc, + 0x20,0xc3,0x1a,0x53,0x09,0xf9,0xe5,0x6c,0x60,0x57,0x8b,0xf9,0x8c,0x57, + 0x14,0x09,0xd7,0x71,0x1b,0x77,0x18,0xe7,0x2a,0x1e,0x53,0x49,0x05,0xe4, + 0xfa,0x0d,0x6f,0xad,0xdc,0x64,0x9a,0x27,0xf4,0xd7,0xf1,0x41,0xb2,0x8c, + 0x31,0xc8,0x86,0xaa,0x15,0x3b,0x3b,0x4a,0xfd,0x14,0x78,0xc4,0x04,0x3d, + 0x04,0x09,0x72,0x80,0xcb,0x5c,0x63,0x88,0x7d,0xc4,0x66,0xad,0x63,0xd8, + 0xf7,0x0f,0x84,0x16,0xb2,0xdc,0xe7,0x2e,0x13,0x64,0xb9,0xce,0x38,0x57, + 0x38,0xcb,0x51,0xfc,0x4b,0xe1,0x8c,0x75,0x41,0x43,0x9e,0x3d,0x93,0x1d, + 0xb5,0x11,0x2e,0x31,0xca,0x45,0x2e,0x30,0xcc,0x29,0x0e,0x13,0xfb,0x11, + 0x29,0x2a,0x69,0x3d,0x9d,0x4d,0x0e,0xf9,0x76,0xe5,0xdb,0x16,0xbb,0x38, + 0x41,0x9a,0x21,0x8e,0xb1,0x97,0x75,0x4b,0x5b,0x8a,0xea,0x54,0xd4,0xf2, + 0x14,0x24,0x43,0x6e,0xb5,0xb6,0xa7,0xb7,0x95,0x83,0xd5,0x66,0xb3,0xd9, + 0x5c,0x5f,0x0d,0xcf,0x6e,0xca,0x28,0xa9,0xe8,0x1f,0xef,0x5e,0x0e,0x92, + 0xdc,0xf2,0x29,0xa4,0xb8,0x12,0x4a,0x2a,0xa9,0x84,0xe2,0x0a,0xad,0x18, + 0xa4,0x5f,0xdd,0x1d,0xf2,0xc8,0x2b,0xbf,0x02,0x0a,0xc8,0x2f,0xef,0xaa, + 0x11,0xfd,0x7b,0xf8,0x7f,0x02,0x6c,0x38,0xbb,0x71,0x07,0xb6,0xcc,0x62, + 0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_redo_png_len = 592; +static const unsigned char small_redo_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xe2,0x49,0x44,0x41,0x54,0x48,0xc7,0xd5,0x95, + 0x39,0x4b,0x03,0x41,0x14,0xc7,0xa7,0xb1,0x11,0x16,0xd3,0x2c,0x58,0x84, + 0x6c,0x61,0x97,0x48,0x6c,0x02,0x16,0x6e,0x67,0x6d,0xe1,0xd7,0xf0,0x13, + 0x08,0x76,0x82,0x85,0xa0,0x78,0x5f,0xc1,0x23,0x28,0xa2,0x78,0xa0,0x88, + 0x28,0xa2,0x88,0x22,0x8a,0x78,0x82,0x85,0x42,0xc0,0x42,0x0b,0xef,0xa3, + 0x10,0x04,0x11,0x79,0xfe,0x67,0xe7,0xed,0x3a,0xd9,0x24,0xba,0x11,0x2c, + 0x0c,0xfc,0xd8,0x49,0xb2,0xf9,0xbd,0xff,0xe3,0xcd,0x4e,0x04,0x11,0x89, + 0xbf,0x40,0xfc,0x7f,0x31,0x5e,0xc5,0xc0,0x02,0x51,0x46,0xae,0x8b,0x7f, + 0x2d,0xd6,0x84,0x09,0x40,0x3e,0x12,0x85,0x16,0xd0,0xa5,0x51,0x57,0x54, + 0x95,0xaa,0xa2,0xd8,0x60,0x8c,0x62,0xa9,0x18,0x85,0x93,0x61,0xbd,0x40, + 0x34,0xa8,0xdc,0x15,0xcb,0x34,0x64,0x8f,0xd8,0x14,0x4f,0xc6,0xc9,0xea, + 0xb5,0x48,0xb4,0x42,0xd4,0x0e,0x3a,0x05,0x19,0xc3,0x06,0x85,0x27,0xbc, + 0x02,0xf1,0x20,0x72,0x37,0xad,0xd3,0xbe,0x94,0x8a,0x66,0xf1,0x25,0xed, + 0x02,0x03,0x60,0x18,0xa4,0xc0,0x98,0x08,0x2c,0xf7,0xd2,0x46,0xba,0x23, + 0x24,0xea,0xf1,0xa3,0x06,0xd0,0xe6,0x93,0x4a,0xe1,0x24,0x98,0x02,0xb3, + 0xf9,0xe5,0x1c,0xd2,0xe4,0x2b,0x0f,0xab,0x59,0x1b,0x56,0x07,0xe8,0xf7, + 0x49,0xa7,0xc1,0x3c,0x58,0x04,0x2b,0xd9,0x72,0xbd,0x73,0x0e,0x8b,0xb4, + 0x7d,0x48,0x5b,0xe7,0x7c,0x50,0x03,0x6a,0x9d,0x2f,0x07,0xc1,0xa8,0x4f, + 0xba,0x0c,0xd6,0xc0,0x06,0xd8,0xca,0x90,0x9b,0xfa,0xf0,0x79,0x8d,0x45, + 0x8b,0xf3,0xa6,0x82,0x29,0xe5,0x9b,0x49,0x8c,0x83,0x19,0xb0,0xa0,0x49, + 0x37,0xc1,0x0e,0xd8,0x07,0x47,0x9e,0xa8,0x5a,0x5e,0x8d,0x2b,0x43,0x2f, + 0xa6,0x26,0xcf,0x52,0xd9,0x42,0x11,0xb7,0xa5,0xe4,0x73,0x60,0x09,0xac, + 0x6b,0xd2,0x03,0x70,0x02,0x4e,0x41,0x5a,0xc9,0xed,0x7b,0x9b,0xc4,0x9e, + 0x57,0xa8,0x52,0x89,0x9b,0xbc,0xf8,0xa6,0x6f,0x10,0x4a,0xbe,0xca,0xed, + 0xef,0x82,0x43,0x96,0x9e,0x81,0x73,0x70,0x21,0x28,0x74,0x1d,0x22,0xeb, + 0x11,0x5b,0xb4,0xc7,0x13,0xdb,0x42,0xab,0x20,0xd3,0x96,0xe4,0x98,0xb2, + 0x92,0x6f,0x6b,0x49,0x5d,0xe9,0x25,0xb8,0x06,0x77,0xe0,0x89,0x07,0xee, + 0x13,0x97,0xb1,0xa4,0x28,0xcf,0xd9,0xa1,0xe4,0xc7,0xdc,0x7e,0x2e,0xe9, + 0x0b,0x48,0x66,0x8a,0xcd,0x00,0x9b,0xfd,0x4b,0x9e,0x56,0xed,0x3b,0xd2, + 0x07,0xf0,0xcc,0xd2,0x57,0xde,0x49,0xae,0x38,0xf0,0xa1,0xa2,0x02,0x38, + 0xd3,0x0f,0xdd,0x86,0xb2,0xa5,0x6f,0x60,0xa4,0x40,0xb1,0x7e,0x48,0xd9, + 0x8f,0x36,0x59,0x4f,0x56,0xa6,0xf4,0x1d,0x7c,0xf0,0x63,0x1f,0x54,0xac, + 0x3f,0x51,0xc6,0x8d,0xa1,0x76,0x45,0x2f,0x0f,0x4a,0xb6,0x3e,0xc4,0x49, + 0xa5,0xb4,0xb1,0x30,0xb1,0x99,0xe3,0x7c,0xfe,0x89,0xf2,0xa0,0x89,0xdd, + 0x7f,0x94,0x38,0x6f,0x4d,0xfb,0x1b,0xca,0xe5,0xb6,0xfd,0x04,0x86,0x5a, + 0x64,0x75,0x88,0xdb,0x84,0x51,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44, + 0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_richtextedit_png_len = 834; +static const unsigned char small_richtextedit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0xd4,0x49,0x44,0x41,0x54,0x48,0xc7,0x9d,0x95, + 0x4d,0x48,0x1b,0x41,0x18,0x86,0x17,0x41,0x2a,0x68,0x0f,0x1e,0x14,0xc5, + 0x5b,0x21,0x0a,0x82,0x27,0x3d,0x04,0x15,0x09,0x46,0xe2,0x21,0x46,0xaf, + 0x5a,0x2f,0xde,0x02,0xe2,0x4d,0x2f,0x5e,0x3c,0x09,0x56,0xaa,0xd4,0x5e, + 0x42,0x85,0xf8,0x1f,0x24,0x2a,0x1e,0x14,0x41,0x92,0xaa,0xc1,0x1a,0x48, + 0x11,0x59,0x04,0x6b,0x68,0x4a,0xd0,0xda,0x10,0x50,0x50,0x50,0x22,0x49, + 0x8c,0x59,0xdf,0xce,0x37,0xce,0x2e,0x0b,0xee,0x65,0x73,0x78,0x98,0x77, + 0x66,0x32,0xcf,0xee,0xec,0x66,0xbe,0x95,0x24,0x49,0x2a,0x9a,0x9c,0x9c, + 0xfc,0x38,0x31,0x31,0x11,0x1e,0x1e,0x1e,0x86,0xdb,0xed,0x36,0x4d,0x6f, + 0x6f,0x2f,0xea,0xeb,0xeb,0x7f,0x32,0x97,0x9b,0x51,0xce,0x78,0xc7,0x90, + 0x8a,0x49,0x1a,0x8f,0xc7,0xa1,0x28,0x4a,0xc1,0x1c,0x1e,0x1e,0x82,0xb9, + 0x64,0x46,0xad,0x90,0x4b,0x25,0x74,0xa7,0xf9,0x7c,0x1e,0xb9,0x5c,0xae, + 0x60,0x8e,0x8f,0x8f,0x49,0x4c,0x34,0x33,0x6a,0x48,0x5c,0x4a,0xdb,0xc9, + 0x66,0xb3,0xc8,0x64,0x32,0x9c,0x86,0x86,0x06,0x8c,0x8d,0x8d,0xf1,0xfc, + 0x74,0x74,0x84,0x97,0xea,0x6a,0x28,0x3d,0x3d,0x78,0x61,0xe3,0x39,0xbf, + 0x9f,0x8f,0x93,0x44,0xdf,0x86,0xc3,0x61,0x55,0xdc,0xc9,0xf8,0x40,0xe2, + 0x32,0x12,0xa7,0xd3,0x69,0xa4,0x52,0x29,0xc8,0xb2,0x8c,0xee,0xee,0x6e, + 0x54,0x33,0x19,0xf5,0x33,0x6c,0x8b,0x79,0xd6,0xe7,0x79,0x7b,0x5b,0xcb, + 0x04,0x89,0xd4,0x2c,0x1e,0x05,0xe1,0x64,0x58,0x48,0xfc,0x9e,0xc4,0x34, + 0x79,0x7f,0x7f,0x8f,0xa1,0xa1,0x21,0xac,0xac,0xac,0xf0,0x76,0x6b,0x6b, + 0x0b,0x8f,0x07,0x07,0xfc,0x8e,0x9f,0x5d,0x2e,0x28,0x6d,0x6d,0x78,0x62, + 0xe3,0xf4,0x3b,0x82,0x44,0x6a,0x0e,0x85,0x42,0xaa,0xd8,0x25,0x9e,0xf3, + 0xab,0x98,0x26,0x6f,0x6f,0x6f,0xf9,0x9d,0x76,0x75,0x75,0xa1,0xb5,0xb5, + 0x15,0x83,0x83,0x83,0x78,0x08,0x06,0x91,0x63,0x7d,0x9a,0x23,0xd8,0x4a, + 0x2d,0x4b,0xba,0xbc,0xb7,0xb7,0x67,0x2c,0xbe,0xbb,0xbb,0xc3,0xfc,0xfc, + 0x3c,0xfa,0xfa,0xfa,0x70,0x7d,0x7d,0xcd,0xa9,0xaa,0xaa,0xc2,0xbf,0xf5, + 0x75,0x28,0xac,0x7d,0x72,0x3a,0xf1,0xdc,0xd2,0x82,0xd4,0xf8,0xb8,0x36, + 0x4f,0x22,0x35,0x07,0x02,0x01,0x63,0xf1,0xcd,0xcd,0x0d,0x12,0x89,0x84, + 0x29,0x48,0xa4,0xe6,0x9d,0x9d,0x1d,0x63,0x71,0x32,0x99,0xc4,0xe5,0xe5, + 0xa5,0x29,0x48,0xa4,0x66,0x7a,0x1f,0x86,0xe2,0xab,0xab,0x2b,0xc8,0xbf, + 0x64,0x38,0xbe,0x3a,0x38,0xd6,0xcf,0x56,0xec,0x46,0x76,0xb1,0xb1,0x91, + 0x40,0x65,0xa5,0x02,0x87,0x23,0x0d,0xab,0x35,0x8b,0xc5,0xc5,0x24,0x62, + 0xb1,0x18,0x87,0x44,0x6a,0xde,0xdc,0xdc,0x34,0x16,0x5f,0x5c,0x5c,0x60, + 0xc0,0x3b,0x80,0xd1,0xb5,0x51,0x9c,0x9f,0x9f,0x63,0x2e,0x38,0xc7,0xf3, + 0xda,0xda,0x5f,0x74,0x74,0x3c,0xf2,0xb1,0x50,0xe8,0x0f,0xea,0xea,0x72, + 0x3c,0x13,0x24,0x52,0xf3,0x3a,0x7b,0x17,0x86,0x62,0xba,0xaa,0xfd,0x8b, + 0x1d,0xbe,0xef,0x3e,0x9c,0x9e,0x9e,0x6a,0xf8,0x7c,0x71,0xd8,0xed,0x29, + 0xad,0xcf,0xd6,0xea,0xb2,0xa4,0xe5,0xd5,0xd5,0x55,0x63,0x71,0x34,0x1a, + 0x45,0xff,0xb7,0x7e,0x8c,0xf8,0x46,0x70,0x72,0x72,0x02,0xcf,0xb6,0x87, + 0xe7,0xa5,0xa5,0x18,0xda,0xdb,0x53,0x7c,0x8c,0x72,0x53,0x53,0x9a,0x67, + 0x82,0x44,0x6a,0x5e,0x5e,0x5e,0x36,0x16,0x9f,0x9d,0x9d,0x61,0xff,0xc7, + 0x3e,0x6c,0x53,0x36,0x4e,0xe3,0xa7,0x46,0xf8,0x03,0x7e,0xf6,0x17,0x8c, + 0xa2,0xa2,0x22,0x0f,0x9b,0xed,0x01,0x16,0x4b,0x96,0xf7,0x23,0x91,0x08, + 0x97,0xe8,0xdb,0x85,0x85,0x05,0x63,0x31,0x6d,0x87,0xce,0x7b,0xa1,0x78, + 0xbd,0xde,0x37,0xe2,0x32,0xaa,0xa7,0xb4,0x1d,0x3a,0xef,0x85,0x10,0x64, + 0xa7,0x73,0x66,0x66,0xe6,0x4d,0xad,0x28,0xa5,0x22,0x4d,0x13,0xb3,0xb3, + 0xb3,0xf0,0x78,0x3c,0xa6,0x99,0x9e,0x9e,0xe6,0x27,0x96,0xb9,0x7e,0xeb, + 0xab,0x5b,0x89,0xa8,0xfc,0xb2,0xb8,0x62,0xa1,0x90,0x74,0x4a,0x5f,0x8f, + 0x8b,0x45,0xc5,0xaf,0x15,0x83,0x9d,0x62,0x3b,0x2e,0x13,0x38,0xc5,0xba, + 0x66,0xfd,0x17,0xa4,0x48,0x7c,0xa3,0xca,0xc5,0x95,0x3e,0x88,0x67,0x54, + 0x6b,0x02,0x8b,0x58,0x57,0xa3,0x7d,0xf3,0x40,0x85,0xf0,0x55,0x5e,0x2c, + 0x1e,0x4b,0x29,0xbd,0x50,0xfa,0xb7,0x98,0xa0,0x4c,0xac,0x2b,0x11,0x9e, + 0xa2,0xff,0x1d,0x6e,0x08,0xba,0x78,0xe7,0x80,0x2a,0x00,0x00,0x00,0x00, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_scrollbar_png_len = 408; +static const unsigned char small_scrollbar_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x2a,0x49,0x44,0x41,0x54,0x48,0xc7,0xed,0x94, + 0x31,0x4b,0xc3,0x60,0x10,0x86,0x0f,0x41,0xb0,0xd8,0x2e,0x9d,0xbb,0x49, + 0xf5,0x3f,0xd8,0x1f,0x50,0xc5,0x3a,0xb9,0xd9,0x41,0x10,0x14,0x71,0xad, + 0xa0,0xa0,0xa0,0x0e,0x0e,0x82,0x20,0x08,0x2a,0x41,0x5c,0x5c,0xe2,0xe4, + 0xe6,0xa6,0x9b,0x0e,0x4e,0x2e,0x19,0x0a,0x0e,0x4e,0xfe,0x8e,0xd7,0xf7, + 0x95,0xfb,0x92,0x20,0x56,0x68,0x4d,0x17,0x69,0xe0,0x19,0xee,0x72,0xf7, + 0x70,0x1c,0x97,0x18,0x00,0x1b,0x06,0x36,0x12,0x8f,0xc4,0xff,0x41,0xcc, + 0x67,0x8c,0x8c,0x93,0x12,0x99,0x24,0x65,0x52,0x19,0x80,0xb2,0xf7,0x97, + 0xdc,0x67,0xcb,0xa4,0x4b,0x50,0x00,0x6f,0x64,0x83,0x54,0x25,0x7e,0x8a, + 0xe3,0x18,0x49,0x92,0xfc,0x19,0x79,0xe8,0x7b,0x25,0x33,0x12,0xa7,0x2f, + 0xa2,0x28,0x42,0x88,0xe7,0xdb,0x86,0xa5,0x4d,0x43,0x7b,0xcb,0xb0,0xba, + 0x6b,0x58,0xdb,0xcf,0x50,0xac,0xbc,0xea,0x54,0xaf,0xbe,0xe0,0xf0,0xc9, + 0x67,0x53,0x71,0x90,0x86,0x58,0xd2,0xf5,0x43,0x43,0xe7,0xcc,0xb0,0x77, + 0x6d,0x38,0xb8,0xc9,0x50,0xac,0x7c,0x4e,0x94,0xca,0x3d,0x6e,0x5a,0x48, + 0xe6,0x77,0xa5,0x02,0x4d,0xa4,0xe6,0xa3,0x5b,0xc3,0xe9,0xbd,0xe1,0xfc, + 0x21,0x43,0xb1,0xf2,0x79,0xf1,0x37,0xcf,0x42,0xcf,0x89,0x57,0x76,0x0c, + 0xdb,0x97,0x86,0xe3,0x3b,0xc3,0xc5,0xa3,0xe1,0xea,0x39,0x43,0xb1,0xf2, + 0xbf,0x4c,0xbc,0xd8,0x73,0xc7,0xfd,0x4c,0xfc,0xc3,0x8e,0xbf,0x26,0x7e, + 0x29,0xf8,0x2a,0xba,0x61,0xc7,0xba,0xbb,0xf7,0x82,0xee,0xf8,0x83,0x9c, + 0x84,0xab,0xa8,0xfa,0xdd,0x35,0xc8,0x1c,0x69,0xf9,0x8e,0xfa,0xa5,0xe5, + 0xfd,0x8d,0x70,0xc7,0x13,0x2e,0xaf,0x91,0x29,0x52,0x27,0xd3,0x03,0x50, + 0xf7,0xfe,0x5a,0xf8,0xf2,0x86,0xf2,0xaf,0xf8,0x04,0x10,0x4f,0xeb,0x55, + 0xd2,0x98,0x8b,0x23,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42, + 0x60,0x82 +}; + +static const unsigned int small_searchfind_png_len = 843; +static const unsigned char small_searchfind_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0xdd,0x49,0x44,0x41,0x54,0x38,0xcb,0xb5,0x95, + 0x5f,0x48,0x53,0x51,0x1c,0xc7,0xbf,0xd3,0xab,0x43,0x74,0xf8,0xb2,0xd5, + 0x08,0xe6,0x30,0x0d,0xf2,0x61,0x68,0xae,0x61,0x2d,0x90,0xa1,0xe4,0xa8, + 0xc7,0x2d,0xc5,0x91,0x20,0xac,0x58,0xae,0x87,0x92,0x58,0x56,0x4f,0x3e, + 0x84,0x95,0x2b,0xc4,0xa0,0xd0,0x40,0xc3,0x5e,0x14,0x91,0x7a,0xdb,0xc3, + 0x85,0x05,0xbe,0x48,0xf5,0x20,0x0c,0xf6,0x24,0x4c,0x5f,0x56,0xf3,0xa9, + 0x99,0x60,0x6c,0xea,0xae,0xeb,0xfc,0x8e,0x9e,0xb5,0xab,0x5b,0x0d,0xc1, + 0x1f,0xfc,0xb8,0x3b,0xec,0xde,0xcf,0xf9,0xfe,0xfe,0x9c,0xdf,0x91,0xb2, + 0xd9,0x2c,0x4e,0xc2,0x24,0x9c,0x90,0x15,0x05,0x6b,0x34,0x9a,0xff,0x86, + 0xc2,0xa2,0xd5,0x1c,0x4b,0x71,0x26,0x93,0x51,0xad,0xf7,0xf6,0xf6,0x90, + 0x4c,0x26,0xb1,0xb4,0xb4,0x84,0x40,0x20,0xc0,0x37,0x2f,0x06,0xff,0x27, + 0x98,0x40,0x87,0xd7,0xe4,0x54,0x17,0x8b,0xc5,0x02,0xb7,0xdb,0x5d,0x14, + 0x2e,0x1d,0x0a,0xdf,0xc1,0x1e,0x1e,0xe6,0x4e,0x5a,0xfb,0xfd,0x7e,0xf4, + 0xf4,0xf4,0xa0,0xbd,0xbd,0x5d,0x05,0x16,0xf0,0x81,0x81,0x01,0xec,0xec, + 0xec,0x14,0x84,0x4b,0x79,0xd0,0x5b,0x67,0xac,0x8e,0xa9,0x06,0xa7,0x07, + 0xa6,0xcb,0x9c,0x8b,0xd6,0x1f,0x32,0x46,0x9e,0x3d,0x47,0x2c,0x16,0x43, + 0x7f,0x7f,0x3f,0x07,0x2a,0x8a,0xc2,0x9d,0x6c,0x6b,0x6b,0x0b,0x5e,0xaf, + 0xb7,0x20,0x5c,0x12,0x4a,0x09,0x7a,0x69,0xf0,0x15,0xf4,0x4d,0xd6,0xdc, + 0xae,0xde,0x6b,0x3e,0xb4,0xb4,0x5a,0xf1,0xe4,0x61,0x00,0x66,0xb3,0x19, + 0x76,0xbb,0x9d,0xe7,0x9d,0xd4,0x92,0x13,0x98,0xac,0xaf,0xaf,0xef,0x08, + 0x5c,0x28,0xf6,0x90,0xd2,0x7c,0x28,0x0f,0x9d,0x79,0xf3,0x05,0x2b,0x6e, + 0xf4,0x7a,0xb0,0xb0,0xb0,0x80,0xb6,0xb6,0x36,0x0e,0x2c,0x2b,0x2b,0x43, + 0x75,0x75,0x35,0xd6,0xd6,0xd6,0x72,0xef,0x3a,0x1c,0x0e,0x6c,0x6c,0x6c, + 0xe4,0xe0,0x02,0xec,0x14,0xe1,0xab,0xc0,0xac,0xe1,0xa8,0xe7,0x3a,0xaf, + 0x3a,0x11,0x1c,0x79,0x9a,0x4b,0x41,0x6d,0x6d,0x2d,0xd6,0xd7,0xd7,0x31, + 0x3a,0x3a,0xca,0x95,0x0a,0x4b,0xa7,0xd3,0x25,0x76,0x45,0x76,0x5f,0xb5, + 0x92,0xd7,0x7e,0x92,0x24,0xc1,0x68,0x34,0x62,0x68,0x68,0x88,0x2b,0xdc, + 0xdd,0xdd,0x85,0x38,0xbd,0x2b,0x2b,0x2b,0x08,0x06,0x83,0x2a,0xb0,0x1c, + 0xff,0x22,0xfb,0x9a,0x5c,0x3e,0x15,0x58,0x39,0x50,0x1c,0x96,0x65,0xde, + 0x19,0xa4,0x98,0x20,0x3a,0x9d,0x0e,0xf5,0xf5,0xf5,0x30,0x99,0x4c,0xaa, + 0x96,0xcc,0x1f,0x0f,0x02,0x3c,0xb7,0x2a,0xcf,0xf9,0x0c,0x2c,0xc7,0xf9, + 0x79,0xa6,0x4f,0x22,0xcb,0xcb,0xf8,0x38,0x3f,0x87,0xf3,0xe7,0x1a,0x90, + 0x48,0x24,0x60,0x30,0x18,0xf8,0x7f,0x5a,0xad,0x16,0x95,0x95,0x95,0x2a, + 0x21,0x55,0x55,0x55,0x6a,0x30,0xdb,0x69,0x91,0x25,0xfd,0xf6,0xd7,0xf1, + 0x80,0xaa,0xdd,0x66,0xbe,0xc9,0xf8,0x34,0x3f,0x8b,0x4c,0x3a,0x85,0xef, + 0xd1,0x10,0x9c,0x9d,0xef,0x71,0xf7,0xde,0x23,0xde,0x05,0xe5,0xe5,0xe5, + 0x54,0x28,0x75,0x84,0x8a,0x72,0x34,0xc7,0x0c,0x3e,0xcd,0x5e,0x5c,0x4d, + 0x2c,0x2f,0x8a,0x03,0x62,0xce,0xb0,0xc3,0x71,0xb6,0xce,0x84,0x64,0xec, + 0x33,0xbc,0x4e,0x23,0xae,0xd4,0x25,0xf1,0x72,0xfc,0x05,0x2f,0x18,0xc1, + 0x2b,0x2a,0x2a,0x54,0xf0,0x82,0x60,0xa1,0x9c,0x3d,0x16,0xc5,0x10,0x1a, + 0x1e,0x1e,0x46,0x3c,0x1e,0x47,0xaf,0x7b,0x16,0x2d,0xa7,0x7f,0xe2,0x54, + 0x4d,0x06,0xfe,0x0e,0xe0,0xdd,0xe4,0x18,0x87,0x10,0x9c,0x8a,0x49,0xed, + 0x77,0x78,0x04,0xfc,0x77,0x08,0xe9,0xf5,0x7a,0x78,0xef,0x0c,0xe2,0xcd, + 0xc4,0x18,0x6e,0xda,0x01,0x83,0x0e,0x70,0x5f,0x04,0xa6,0x26,0x5f,0xf3, + 0x03,0x43,0x07,0x87,0xe0,0xa4,0xbc,0xa8,0xe2,0x42,0x60,0x72,0x97,0xcb, + 0x85,0xed,0xed,0x6d,0x7c,0x98,0x7e,0x8b,0xeb,0xcd,0xc0,0xaf,0xdf,0x80, + 0x8e,0xd5,0x29,0x1c,0x0e,0x73,0xd5,0x07,0x11,0x96,0x0e,0x16,0x03,0x87, + 0xac,0xbb,0xbb,0x9b,0xff,0x9e,0x99,0x9e,0x40,0x8d,0x16,0xb0,0xd8,0x3a, + 0xd0,0xd5,0xd5,0xc5,0x37,0xa6,0x42,0x52,0x3a,0x4a,0x06,0xa7,0x52,0x29, + 0x44,0x22,0x91,0x5c,0x8f,0x36,0x36,0x36,0xe2,0xfe,0x83,0xc7,0x88,0x46, + 0xa3,0xb0,0xd9,0x6c,0x7c,0x38,0x51,0xcb,0x89,0x54,0x6c,0x6e,0x6e,0x96, + 0x06,0x16,0xe3,0xb2,0x90,0x85,0x42,0xa1,0xe3,0x5d,0x4d,0xc5,0x6e,0x06, + 0xcd,0xdf,0xfe,0xd2,0xec,0xbf,0x56,0xf8,0x36,0xfe,0x03,0x31,0xcf,0x73, + 0x51,0x2e,0x4c,0xd6,0x43,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae, + 0x42,0x60,0x82 +}; + +static const unsigned int small_shellscript_png_len = 1053; +static const unsigned char small_shellscript_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00, + 0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01,0x00,0x9a,0x9c,0x18,0x00,0x00, + 0x00,0x04,0x67,0x41,0x4d,0x41,0x00,0x00,0xb1,0x8e,0x7c,0xfb,0x51,0x93, + 0x00,0x00,0x00,0x20,0x63,0x48,0x52,0x4d,0x00,0x00,0x7a,0x25,0x00,0x00, + 0x80,0x83,0x00,0x00,0xf9,0xff,0x00,0x00,0x80,0xe9,0x00,0x00,0x75,0x30, + 0x00,0x00,0xea,0x60,0x00,0x00,0x3a,0x98,0x00,0x00,0x17,0x6f,0x92,0x5f, + 0xc5,0x46,0x00,0x00,0x03,0x93,0x49,0x44,0x41,0x54,0x78,0xda,0x62,0xfc, + 0xff,0xff,0x3f,0xc3,0x8c,0x19,0x33,0xfe,0x33,0x50,0x11,0x64,0x64,0x64, + 0x30,0x02,0x04,0x10,0x0b,0x8c,0x63,0xed,0x9f,0xc1,0xf0,0xed,0x07,0x03, + 0xc3,0xf7,0x5f,0x0c,0x0c,0xdc,0x1c,0x0c,0x0c,0x97,0x1e,0xfe,0x65,0xf8, + 0xfa,0xe3,0x1f,0xc3,0x83,0x57,0x3f,0x18,0x5e,0x7d,0xfa,0xcd,0xf0,0xe3, + 0xd7,0x1f,0x86,0x1f,0x7f,0xfe,0x31,0xfc,0x04,0xd2,0xdf,0x7f,0xff,0x05, + 0xf2,0xff,0x32,0x7c,0x03,0x89,0xfd,0xfa,0x07,0xd4,0xf3,0x97,0xe1,0xc3, + 0xb7,0x3f,0x0c,0x8e,0x7a,0x22,0x0c,0x7e,0xdc,0x9b,0xc1,0xe6,0x01,0x04, + 0xe0,0x71,0x5c,0x52,0x00,0x84,0x81,0x28,0x16,0x3a,0xa3,0x0b,0xbd,0xff, + 0x4d,0xd5,0xaa,0x9d,0x8f,0x03,0x42,0x17,0x8f,0x6c,0x42,0x78,0x33,0xdc, + 0x2f,0x28,0x8f,0x5e,0xb1,0x77,0x24,0xfb,0x3a,0xd8,0x34,0x79,0xee,0xe4, + 0x38,0x8d,0xa6,0x83,0x96,0x81,0x88,0x17,0x1d,0x89,0x9f,0x5a,0x5b,0x30, + 0xc2,0xbd,0x7c,0x9b,0xaf,0x3f,0x01,0x04,0x37,0xd8,0x4c,0x19,0xc6,0x62, + 0x82,0xd2,0xcc,0x50,0x9a,0x93,0xe1,0x1f,0x03,0x1f,0xc3,0x3f,0x68,0x60, + 0xfd,0xfd,0xc7,0x00,0x66,0x83,0x82,0xf0,0xff,0xdf,0xff,0x40,0x36,0x10, + 0xff,0xfb,0x07,0xa4,0xff,0x31,0xf0,0x70,0xb1,0x33,0xcc,0x9d,0x05,0x51, + 0x07,0x10,0x40,0x2c,0x98,0x21,0x04,0x32,0x81,0x11,0x89,0x0d,0xb4,0x0a, + 0xa8,0x99,0x11,0x64,0x10,0x98,0xfe,0x0b,0xa4,0x81,0x32,0xff,0xfe,0x83, + 0x0d,0x03,0x8a,0x32,0x70,0x70,0x71,0x40,0x1c,0xc4,0x88,0x30,0x05,0x20, + 0x80,0x50,0x0c,0xbe,0x7f,0xff,0x3e,0x83,0x90,0x90,0x10,0x98,0x0d,0x72, + 0x05,0xc8,0x20,0x14,0x2b,0xa1,0xfc,0xff,0x30,0x4b,0x18,0x19,0x19,0x3e, + 0x7f,0xfe,0x0c,0x16,0x93,0x91,0x91,0x61,0x60,0x65,0x65,0x86,0xab,0x05, + 0x08,0x20,0x98,0xbf,0x19,0x5e,0xbf,0x7e,0xcd,0x20,0x21,0x21,0xc1,0xf0, + 0xeb,0xd7,0x2f,0x86,0xf7,0xef,0xdf,0x83,0xc3,0x8c,0x85,0x85,0x05,0x05, + 0xb3,0xb2,0xb2,0x82,0x31,0x1b,0x1b,0x1b,0x03,0x3b,0x3b,0x3b,0xc3,0x5f, + 0xa0,0x1a,0x45,0x45,0x45,0xb0,0x25,0x9f,0x3e,0x7d,0x42,0x71,0x04,0x40, + 0x00,0xa1,0xb8,0x98,0x93,0x93,0x93,0xa1,0xa2,0xb2,0x92,0x41,0x51,0x49, + 0x89,0xe1,0xdf,0x9f,0x3f,0x0c,0x1f,0x3f,0x7c,0x60,0xe0,0x00,0x8a,0x61, + 0x03,0x20,0x8b,0x2e,0x5f,0xbe,0xcc,0xd0,0xd5,0xd5,0x05,0xd6,0x87,0xee, + 0x3b,0x80,0x00,0x82,0x1b,0xcc,0xc4,0x04,0x71,0xbc,0xa8,0x88,0x08,0x83, + 0x00,0x30,0x38,0x1c,0x5c,0x5c,0x18,0x4e,0x1d,0x3b,0xc6,0xb0,0x69,0xed, + 0x5a,0x60,0xd8,0x31,0x82,0xbd,0x0d,0x03,0x20,0x36,0x2c,0x28,0x40,0x3e, + 0xfc,0x03,0x74,0x04,0x17,0x17,0x17,0x8a,0xc1,0x00,0x01,0x84,0x61,0xf0, + 0xb3,0x67,0xcf,0x18,0xf8,0xc5,0xc4,0x18,0xde,0xbe,0x7b,0xc7,0x70,0xf3, + 0xc6,0x0d,0x86,0x8b,0x97,0x2e,0x81,0xc5,0x41,0xde,0x07,0x05,0x03,0x72, + 0x78,0x83,0x82,0x02,0x14,0xc6,0x20,0xd7,0xc3,0xf4,0xc3,0x00,0x40,0x00, + 0x61,0xa4,0x8a,0x9f,0x3f,0x7f,0x32,0x4c,0x99,0x38,0x91,0xa1,0xae,0xbc, + 0x9c,0x81,0x09,0xe8,0x22,0x77,0x1f,0x1f,0x06,0x4e,0xa0,0x6b,0x6e,0x5e, + 0xbb,0xc6,0x70,0xfd,0xca,0x15,0x06,0x46,0xa0,0x01,0xa0,0x88,0xfd,0xf6, + 0xed,0x1b,0x58,0x3d,0xc8,0xb5,0x20,0x83,0x99,0x99,0x99,0x51,0xcc,0x01, + 0x08,0x20,0xb8,0xc1,0x20,0xc5,0x30,0x83,0x6f,0x01,0x0d,0x01,0x01,0x6e, + 0x6e,0x6e,0x86,0x6f,0x5f,0xbe,0x80,0x9c,0xc7,0xf0,0xf5,0xeb,0x57,0x60, + 0x46,0xf9,0x0a,0x76,0x25,0x08,0x23,0xbb,0x1c,0x84,0xd1,0x5d,0x0c,0x10, + 0x40,0x70,0x83,0x7f,0xff,0xfe,0x0d,0x8f,0x40,0x10,0xe0,0xe1,0xe1,0x01, + 0xc7,0xfc,0xa1,0x03,0x07,0xc0,0x9a,0x98,0x81,0xae,0x02,0x25,0x45,0x50, + 0x98,0x82,0x5c,0xfb,0xe3,0xc7,0x0f,0xb0,0x4b,0x41,0x2e,0x86,0x85,0x3b, + 0x32,0x00,0x08,0x20,0xb8,0xc1,0x30,0xaf,0x80,0xc2,0x12,0x04,0xf8,0xf9, + 0xf9,0xc1,0x11,0x02,0x0b,0x5b,0x90,0xab,0x40,0x96,0xc3,0x0c,0x04,0xf1, + 0x41,0xe2,0x30,0xd7,0x83,0xc4,0x90,0x01,0x40,0x00,0xb1,0x20,0x27,0x1f, + 0x98,0x4b,0xc5,0x80,0x91,0x27,0x2e,0x2e,0x0e,0x36,0x18,0x14,0x1c,0x20, + 0xc3,0x41,0x06,0x80,0x0c,0xfe,0xfe,0xfd,0x3b,0x38,0xc2,0x60,0x16,0x82, + 0xc4,0x41,0xae,0x46,0x77,0x31,0x40,0x00,0xa1,0xa4,0x0a,0x50,0x38,0x97, + 0x95,0x95,0x31,0xa4,0xa5,0xa5,0x81,0xc5,0x40,0xde,0x86,0xb9,0x0e,0xa4, + 0x19,0x64,0x30,0xc8,0x20,0x90,0xe1,0xa0,0x34,0x0c,0x02,0x97,0xa0,0xa9, + 0xe6,0xc8,0x91,0x23,0x28,0x06,0x03,0x04,0x10,0xdc,0x60,0x5e,0x5e,0x5e, + 0x86,0x37,0x6f,0xde,0x80,0x2d,0x00,0x05,0x03,0xc8,0x12,0x58,0x44,0xfd, + 0x85,0xe6,0x42,0x58,0x90,0xc0,0x22,0x1a,0x58,0xee,0xa2,0x18,0x06,0x2c, + 0xd7,0x19,0x32,0x33,0x33,0xe5,0x40,0xe2,0x00,0x01,0x84,0xe2,0x62,0x51, + 0x51,0x51,0xb8,0xb7,0xd0,0xbd,0x06,0xe3,0x83,0x68,0x50,0xca,0x39,0x73, + 0xe6,0x0c,0xd8,0x42,0x58,0xdc,0x40,0x0d,0xd5,0x04,0x32,0x1f,0x83,0xf8, + 0x00,0x01,0xc4,0x82,0xae,0x19,0x39,0x13,0xe0,0x02,0xa0,0xd4,0x02,0x4b, + 0x49,0x20,0x1f,0xcc,0x99,0x33,0x07,0x64,0xa8,0x24,0x50,0xe8,0x05,0x4c, + 0x0d,0x40,0x00,0xb1,0x90,0x53,0xf5,0xc0,0x5c,0x0f,0x0a,0xba,0x2d,0x5b, + 0xb6,0x60,0x18,0x0a,0x02,0x00,0x01,0xc4,0x42,0x49,0xdd,0x06,0x35,0x14, + 0x54,0xce,0xbe,0x47,0x97,0x03,0x08,0x20,0x16,0xe4,0x80,0x27,0x15,0x00, + 0x0d,0x15,0x04,0x52,0x1f,0xb0,0xc9,0x01,0x04,0x18,0x00,0xf8,0x8e,0xa8, + 0xba,0x67,0x19,0x36,0x31,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae, + 0x42,0x60,0x82 +}; + +static const unsigned int small_slider_png_len = 729; +static const unsigned char small_slider_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0x6b,0x49,0x44,0x41,0x54,0x48,0xc7,0xbd,0x95, + 0xdf,0x6b,0x52,0x61,0x18,0xc7,0x5f,0x1c,0x96,0xcb,0x75,0x33,0x2a,0x08, + 0x82,0x2e,0xc4,0x09,0xbb,0xcb,0x81,0x17,0x05,0x41,0x45,0x6b,0x1a,0x5d, + 0x74,0x2e,0x86,0xce,0x60,0x2d,0xa8,0xd4,0x84,0x72,0x8e,0x30,0x42,0xc2, + 0x46,0x85,0x21,0x54,0x98,0x14,0x42,0xc6,0xa1,0x35,0x6c,0xc9,0x5a,0x8e, + 0xa4,0x82,0x41,0xa3,0xa8,0x06,0xb1,0x15,0xc8,0x98,0x0d,0xb6,0xab,0x55, + 0x17,0xd5,0xbf,0xf0,0xed,0x79,0xce,0x79,0x77,0x60,0xe2,0x85,0x3f,0xaa, + 0x03,0x1f,0xe4,0x78,0x9e,0xf7,0xe3,0xfb,0xbe,0xe7,0xfb,0x3e,0x0a,0x00, + 0xe2,0x5f,0x20,0xfe,0x9b,0x98,0x2e,0x13,0x61,0x26,0xda,0x09,0x2b,0xd1, + 0x21,0x3f,0xdb,0xe5,0xf7,0xa6,0x86,0xc5,0x3c,0x28,0x1c,0x0e,0x0f,0x04, + 0x02,0x81,0x25,0xaf,0xd7,0x0b,0x45,0x51,0xe0,0xf1,0x78,0x60,0xb7,0xdb, + 0x97,0xe9,0x59,0x80,0xe8,0x24,0x2c,0xf5,0xc8,0xab,0xc5,0xe6,0x60,0x30, + 0xf8,0x6e,0xea,0xfd,0x39,0xcc,0xae,0xfa,0x31,0xb3,0xa2,0x60,0xba,0xe2, + 0xc2,0x15,0x55,0xf0,0xc3,0x05,0xc2,0x21,0xe5,0xe6,0x46,0xc5,0x16,0xbf, + 0xdf,0x8f,0xd9,0x95,0x41,0xbc,0xaa,0xb8,0x51,0x5c,0x74,0xe2,0xd1,0xbc, + 0xc0,0x8d,0x09,0x4d,0xcc,0xec,0x25,0x76,0x71,0x5d,0xa3,0x62,0x2b,0x2f, + 0xff,0x75,0x45,0xc1,0xb3,0x72,0x0f,0xd4,0x4f,0x02,0xa9,0xa2,0xc0,0xc8, + 0x5d,0x43,0x7c,0x84,0xb0,0x71,0x5d,0xa3,0xe2,0x0e,0x16,0xbf,0x5c,0x54, + 0x50,0xf8,0xec,0xc4,0xc3,0x8f,0x02,0x37,0x27,0x05,0x86,0xef,0x18,0xe2, + 0xa3,0x84,0x9d,0xeb,0x1a,0x15,0x6f,0x65,0xf1,0x8b,0xb2,0x82,0xdf,0xf8, + 0x8a,0x33,0x63,0x02,0x3f,0x50,0x86,0xe7,0xa2,0x21,0x3e,0x46,0x74,0x71, + 0x5d,0x5d,0x62,0xba,0xda,0x88,0x4d,0xc4,0x0e,0x16,0x4f,0x7f,0xd1,0xc5, + 0xa7,0x55,0x5d,0xec,0x1e,0x31,0xc4,0xfd,0xc4,0x1e,0x62,0x27,0xcb,0x6b, + 0xc0,0xd1,0xdc,0x22,0x5d,0x9a,0xf4,0x9a,0x1c,0xa8,0x45,0xec,0xf9,0xbc, + 0x2e,0x3e,0xf5,0x40,0xe0,0x3b,0x89,0x7b,0x87,0x0d,0x71,0x3d,0xdc,0x22, + 0xb6,0x0b,0x19,0x7a,0x44,0x22,0x11,0x64,0xb3,0x59,0x4d,0x3c,0x39,0xa7, + 0xe0,0x17,0x89,0x4f,0xde,0xd7,0xc5,0x87,0xcf,0xeb,0x83,0xe2,0xf1,0x38, + 0xd2,0xe9,0x34,0x54,0x55,0x45,0x3e,0x9f,0xdf,0x40,0xa1,0x50,0x40,0xa9, + 0x54,0xd2,0x3c,0x54,0xdb,0xcd,0xe2,0xcd,0x44,0xca,0xe5,0x72,0x81,0x32, + 0xac,0x89,0x9f,0x7e,0x50,0xf0,0x93,0xc4,0x27,0x32,0x02,0xdf,0x48,0x7c, + 0x28,0xac,0x8b,0x7d,0x3e,0x1f,0x42,0xa1,0x10,0xa2,0xd1,0x28,0x62,0xb1, + 0xd8,0x06,0x12,0x89,0x04,0x72,0xb9,0x1c,0x92,0xc9,0xe4,0x63,0xaa,0xed, + 0x59,0x9f,0xf1,0x36,0xf9,0x2b,0x7d,0x2c,0x7e,0xf2,0x56,0x17,0x0f,0x50, + 0x1a,0xd6,0x48,0x7c,0x30,0x68,0x2c,0x73,0x54,0x9e,0xc0,0x7e,0xf9,0x22, + 0xab,0xf1,0x10,0xfb,0xd7,0x67,0xdc,0x26,0x37,0x9c,0xf7,0xa5,0x9b,0xc5, + 0xe3,0x6f,0x14,0xdc,0x2b,0x39,0x71,0x7d,0x42,0xcf,0xf0,0xd0,0x65,0x43, + 0xcc,0xd2,0x5e,0xf9,0x02,0xbb,0x6a,0xc0,0x51,0xdc,0xad,0xb9,0x6a,0xa5, + 0x62,0x6c,0x46,0x41,0xa6,0xe8,0xc4,0xe8,0x38,0x65,0xf8,0xb6,0xc0,0x60, + 0xac,0x89,0x54,0x54,0x1f,0x10,0xb7,0xdb,0x8d,0xcc,0x94,0xde,0x1f,0x2e, + 0xa4,0x04,0xce,0x5e,0xa5,0xbd,0x8d,0xb4,0x7e,0x40,0xac,0x0e,0x87,0x63, + 0x6e,0xe8,0x92,0x2e,0xf4,0x53,0xcc,0xbc,0x94,0x88,0x03,0xc7,0x35,0xe9, + 0x52,0x2b,0x47,0xda,0x22,0xf7,0x71,0xb5,0x2a,0x9b,0x6b,0x9c,0x9c,0x56, + 0x9a,0x90,0x59,0xb6,0x45,0x6e,0x8f,0xfb,0x38,0x25,0x72,0xf9,0x7d,0xf2, + 0xbe,0xe9,0xb6,0x69,0x92,0xb3,0xee,0x94,0x33,0xb3,0xc9,0x3d,0xb5,0xc9, + 0xfb,0xe6,0x1a,0xfd,0xdf,0xfc,0x6b,0xfa,0x03,0x1c,0x60,0x85,0x9a,0xe9, + 0x45,0x38,0x23,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; + +static const unsigned int small_spacer_png_len = 715; +static const unsigned char small_spacer_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x02,0x5d,0x49,0x44,0x41,0x54,0x48,0xc7,0x63,0xf8, + 0xff,0xff,0x3f,0x03,0x2d,0x30,0xc3,0xa8,0xc1,0xb4,0x37,0x18,0x08,0x18, + 0x81,0x98,0x05,0x88,0x39,0x80,0x98,0x1b,0x8a,0x39,0xa0,0x62,0x8c,0x44, + 0x18,0x80,0x4b,0x3f,0x03,0x4b,0x68,0x68,0xe8,0x7f,0x1f,0x1f,0x9f,0xff, + 0x26,0x26,0x26,0x20,0x95,0x20,0x2c,0x09,0xc4,0xbc,0x20,0x39,0x22,0x0c, + 0xc6,0xa5,0x9f,0x81,0x03,0x24,0xb8,0x79,0xf3,0xe6,0xff,0x8b,0x17,0x2f, + 0x86,0x49,0xc0,0xb0,0x15,0x10,0x6b,0x00,0x71,0x38,0x92,0x18,0xc8,0x42, + 0x7b,0x20,0xce,0x83,0x89,0x61,0xd1,0x6f,0x0c,0x32,0x98,0xdb,0xcb,0xcb, + 0xeb,0xff,0xaa,0x55,0xab,0xfe,0xd7,0xd5,0xd5,0x81,0x25,0x6e,0x3e,0x7b, + 0xf7,0xff,0xf0,0x95,0xbb,0x30,0x45,0x60,0x43,0xaf,0x3f,0x79,0xf3,0xbf, + 0x77,0xe1,0x2a,0xb0,0x58,0x5a,0x69,0xcd,0x5c,0x10,0x7d,0xfe,0xde,0xb3, + 0xff,0x42,0x0a,0xaa,0xff,0x5d,0x5d,0x5d,0x51,0xf4,0x03,0xb1,0x0b,0xc8, + 0x60,0x5e,0x90,0xc1,0x4b,0x97,0x2e,0xfd,0x5f,0x51,0x51,0x01,0x96,0x38, + 0x7c,0xe3,0xd1,0x3f,0x64,0x97,0x9f,0xb8,0xfd,0xe4,0xff,0xf6,0xe3,0x17, + 0x7e,0x22,0x8b,0x1d,0xbb,0xf1,0xe8,0xff,0xe4,0x25,0x6b,0xef,0x80,0xd8, + 0xe8,0xfa,0x81,0xd8,0x17,0x6e,0xf0,0xfc,0xf9,0xf3,0xff,0x17,0x15,0x15, + 0xc1,0x35,0xf2,0x0a,0x08,0x80,0xe9,0xf5,0xc7,0xaf,0x7c,0x5b,0x7d,0xe8, + 0x02,0x8a,0x45,0x5b,0xcf,0xdd,0xfa,0xbf,0x68,0xdb,0x41,0xb8,0x45,0x58, + 0xf4,0x23,0x0c,0x9e,0x31,0x63,0xc6,0xff,0xdc,0xdc,0x5c,0xb0,0x84,0x63, + 0x48,0xcc,0x2e,0x10,0x9d,0x55,0xdf,0xf5,0x7f,0xda,0xf6,0x13,0x60,0x31, + 0x0e,0x2e,0xae,0x52,0x10,0x3d,0x79,0xcd,0xae,0xff,0x13,0xd7,0xef,0x87, + 0x19,0x60,0x09,0xa2,0xed,0xed,0xed,0x51,0xf4,0xa3,0x18,0x3c,0x69,0xd2, + 0xa4,0xff,0xe9,0xe9,0xe9,0x60,0x09,0x36,0x0e,0xae,0xf9,0x20,0xba,0x79, + 0xc9,0xf6,0xff,0x05,0x93,0x96,0x20,0x47,0xe4,0xff,0xda,0xc5,0x3b,0xfe, + 0x27,0x54,0xb4,0xc3,0xc4,0x62,0x40,0xb4,0xb1,0xb1,0x31,0x8a,0x7e,0x14, + 0x83,0xbb,0xba,0xba,0xfe,0x27,0x26,0x26,0xc2,0xbd,0x9b,0xd6,0x3e,0xe3, + 0x41,0x42,0x0f,0xc4,0x50,0x26,0x16,0x96,0x12,0x10,0x5d,0x30,0x6d,0xd5, + 0xb7,0xb0,0xea,0x7e,0x98,0x1a,0x73,0x10,0xed,0xdb,0xb1,0xf0,0xbf,0xae, + 0xae,0x2e,0xba,0x7e,0x84,0xc1,0xcd,0xcd,0xcd,0xff,0x23,0x23,0x23,0xe1, + 0x06,0x47,0xb7,0xcf,0xfb,0xef,0x98,0x5a,0x81,0x92,0xfc,0xfc,0x6a,0xa7, + 0xfd,0x37,0xf4,0x0c,0x83,0xc4,0x81,0x90,0x30,0x98,0x76,0xc8,0x6f,0xfb, + 0x03,0x32,0x18,0x4d,0x3f,0xc2,0xe0,0x9a,0x9a,0x9a,0xff,0xc1,0xc1,0xc1, + 0x60,0x89,0xe0,0xb2,0x9e,0xb7,0x76,0xd9,0xcd,0x28,0x86,0xfa,0x57,0x4f, + 0xfe,0x6b,0x12,0x95,0xf7,0x03,0x59,0xcc,0xb9,0xb8,0xe7,0xbf,0xb6,0x4f, + 0xd4,0x4d,0x33,0x33,0x33,0x14,0xfd,0x28,0x06,0x97,0x96,0x96,0xfe,0xf7, + 0xf5,0xf5,0x05,0x4b,0x58,0x65,0xb5,0x40,0x82,0x80,0x8d,0xab,0x0e,0x44, + 0x5b,0x26,0x57,0x3f,0x32,0x8e,0x2b,0x81,0x69,0xb2,0x05,0xd1,0x76,0xd9, + 0x2d,0x3f,0x75,0x03,0x52,0xc0,0x16,0x39,0x3a,0x3a,0xa2,0xe8,0x87,0x1b, + 0x0c,0xca,0x8a,0x11,0x11,0x11,0x60,0x05,0x48,0x2e,0xaa,0x86,0xe6,0x30, + 0x0d,0x24,0x31,0x50,0xc2,0xe7,0x03,0x62,0x3b,0x24,0x31,0x37,0x2c,0xfa, + 0xc1,0x06,0x73,0xa3,0x65,0x63,0x98,0x01,0x4a,0x20,0x39,0x22,0xca,0x0a, + 0x5c,0xfa,0xc1,0x25,0x91,0x24,0x34,0x7f,0xbb,0x40,0xb1,0x31,0x54,0x8c, + 0x83,0x08,0x83,0x71,0xe9,0x07,0x17,0x79,0xbc,0x50,0x49,0x25,0x28,0x26, + 0xa9,0x74,0xc3,0xa1,0x9f,0x36,0xe5,0x31,0x00,0xda,0xdd,0x5c,0xc0,0x6d, + 0x57,0xec,0xdb,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; + +static const unsigned int small_spinbox_png_len = 455; +static const unsigned char small_spinbox_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x59,0x49,0x44,0x41,0x54,0x28,0xcf,0x7d,0xd3, + 0xb1,0x4a,0x5b,0x51,0x1c,0x80,0xf1,0x8f,0x40,0x48,0x20,0xc9,0x70,0xe7, + 0x6c,0x81,0x64,0xf0,0x11,0xf2,0x02,0x19,0x82,0xbb,0xf5,0x05,0xee,0x03, + 0xf8,0x10,0x52,0xb0,0xe0,0x54,0x28,0x68,0x45,0x45,0x87,0x40,0x87,0x42, + 0x97,0x96,0x42,0x09,0x86,0x46,0x24,0x88,0x50,0x5a,0x14,0xc4,0x50,0x82, + 0xa0,0xa0,0x20,0x08,0x2a,0xc1,0xf2,0x75,0x48,0x4c,0x8e,0x70,0x12,0x7e, + 0xdc,0xc3,0x7f,0xf8,0xe0,0xc0,0xe1,0x7f,0x21,0xf3,0x76,0x79,0xb5,0xb3, + 0x62,0x3a,0xd3,0x92,0x0b,0x87,0xa4,0x24,0xe4,0x20,0xbb,0xda,0x39,0xf7, + 0xdf,0x5c,0x6d,0x39,0xa6,0x46,0x02,0xf9,0x15,0x9f,0x1d,0xce,0xf0,0xd3, + 0xa1,0x43,0x8f,0x44,0xea,0x94,0xa1,0x90,0xfa,0xe4,0x63,0xd4,0x81,0x78, + 0xe0,0xa3,0x1d,0x91,0x06,0x15,0x28,0xa6,0x3e,0x78,0x1f,0xd1,0x16,0x11, + 0xdb,0xa3,0xa9,0x49,0x15,0x4a,0xa9,0xf7,0xde,0x45,0x30,0xf1,0x43,0x64, + 0x91,0x1a,0x94,0x52,0xef,0x6c,0x89,0xd8,0xf2,0x26,0x98,0xa6,0xbe,0x87, + 0xf1,0xad,0x78,0xe5,0x95,0x8c,0xbf,0x97,0xf3,0xc5,0xd7,0x30,0xbe,0x76, + 0x57,0xc4,0x5d,0x07,0x0e,0xc6,0x57,0x0f,0x02,0x5f,0xc2,0xf8,0x52,0xec, + 0xdb,0x1f,0x9f,0xaf,0xa7,0xbe,0x7d,0x3f,0x87,0xf1,0x5f,0x37,0x45,0xdc, + 0xf4,0x2c,0x98,0xa6,0x3e,0x85,0xf1,0x85,0xbf,0x23,0xa6,0xaf,0xd1,0x0a, + 0xe3,0x33,0x4f,0x22,0xf6,0xc6,0xe9,0x9e,0xfb,0x61,0xfc,0xc7,0x5e,0xd4, + 0xb6,0xb8,0x6d,0xcf,0x9d,0x30,0xfe,0x65,0x77,0x86,0x8f,0x76,0xed,0xba, + 0x15,0xc6,0x27,0x76,0xe6,0xda,0x98,0xc4,0xc5,0x25,0x7b,0xb6,0xe7,0xf8, + 0xe6,0xfa,0x64,0x37,0x0a,0x0b,0x87,0xeb,0x7e,0xf0,0xfd,0x4c,0xef,0x7c, + 0x23,0xa7,0xa3,0xad,0xcb,0x93,0x72,0x8c,0x73,0x9d,0xb2,0x36,0xda,0xe7, + 0x2c,0x09,0x35,0xea,0x34,0x68,0xb2,0x18,0xd5,0xa4,0x41,0x7d,0xf4,0xa7, + 0x64,0xc8,0x91,0x50,0xa6,0x42,0x95,0x5a,0x54,0x95,0x0a,0x65,0x12,0x72, + 0x08,0x19,0xb2,0xe4,0x29,0x50,0xa4,0x14,0x55,0xa4,0x40,0x9e,0x2c,0x99, + 0xff,0x6a,0xa0,0x52,0xe8,0x80,0x5e,0x8e,0x49,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_statusbar_png_len = 294; +static const unsigned char small_statusbar_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0xed,0x49,0x44,0x41,0x54,0x78, + 0x9c,0xb5,0xd4,0xb1,0x0e,0x82,0x30,0x10,0x06,0xe0,0xbf,0x80,0x8b,0x10, + 0xc3,0xa6,0x89,0xb8,0xf1,0x00,0x37,0xb1,0x99,0x38,0x9a,0x98,0xb0,0x78, + 0x0f,0xe9,0xc0,0xe6,0x8b,0xf0,0x00,0x6c,0xc6,0xc1,0xcd,0x45,0x17,0x51, + 0x1c,0x4c,0x6b,0x21,0x48,0x25,0xd0,0x5b,0x5a,0x0a,0xf9,0x8e,0xfc,0x90, + 0x13,0x55,0x55,0xc1,0x46,0x39,0x56,0x54,0x9b,0xb0,0x18,0x1b,0xb4,0x15, + 0xad,0xc2,0x05,0x36,0xb0,0xd2,0xc2,0xf3,0x1f,0x5b,0xac,0x17,0x33,0x84, + 0x93,0xf1,0xe2,0x3e,0x9e,0xae,0xf0,0x6e,0x97,0x33,0xc2,0x55,0x88,0x24, + 0x49,0x90,0xa6,0xe9,0x60,0xf4,0xfe,0x7c,0xe1,0xb0,0xdb,0x7f,0xff,0x8a, + 0x28,0x8a,0x06,0xa3,0x00,0x30,0x75,0x3f,0xa4,0x82,0x83,0x20,0xa8,0x3d, + 0xc0,0xcc,0x60,0x66,0xc4,0x71,0xac,0xce,0xf4,0xbd,0xa9,0x5a,0x83,0x95, + 0x40,0x96,0x65,0x20,0xa2,0x5e,0x60,0x27,0x2c,0x51,0x7d,0x6d,0x36,0x36, + 0x35,0x6b,0x85,0x89,0xe8,0xe7,0xb5,0x04,0x8b,0xa2,0xe8,0x0f,0x9b,0xca, + 0x84,0x76,0xc2,0xcc,0xac,0xd6,0x3c,0xcf,0x6b,0xf7,0xfe,0xc9,0xdc,0xa1, + 0xc0,0x05,0x00,0x94,0x65,0xa9,0x0e,0x65,0xae,0x12,0xd7,0xdf,0x50,0xee, + 0x4d,0xb8,0x27,0x37,0xcd,0xe1,0xd1,0xf6,0xd1,0x24,0x6a,0x8a,0xc2,0x9f, + 0x2f,0x21,0x88,0xc8,0xe2,0x38,0xb2,0x50,0xa3,0xce,0x63,0x3d,0xce,0x5e, + 0x70,0x9f,0x21,0x2e,0x6c,0x4d,0xfc,0x37,0x31,0xad,0x4f,0x4d,0xa2,0x0d, + 0xe1,0x14,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_table_png_len = 483; +static const unsigned char small_table_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x75,0x49,0x44,0x41,0x54,0x28,0x15,0x05,0xc1, + 0x3f,0x4b,0x94,0x01,0x1c,0x00,0xe0,0xe7,0xbd,0xfb,0xe1,0x21,0x24,0xb7, + 0x28,0xad,0xe5,0x26,0x4e,0x4e,0x0e,0x37,0x84,0x0e,0x37,0x44,0x0d,0x12, + 0x45,0x9f,0xc1,0xa9,0xaf,0xd1,0x67,0x88,0x70,0x8a,0xe2,0x1c,0x8c,0x94, + 0x1a,0x5d,0x24,0x10,0xa2,0x3f,0x07,0xa7,0x39,0x35,0x54,0x83,0x78,0x8b, + 0x78,0xde,0x71,0xbd,0xef,0xef,0x7d,0x7b,0x9e,0xd0,0x7a,0xf9,0xbc,0xde, + 0x1d,0xf7,0x26,0x00,0x00,0x00,0xae,0x0d,0x4f,0xcf,0xf6,0x0c,0x4c,0x43, + 0xbb,0xde,0x7d,0xda,0xbb,0x0f,0xb6,0x75,0x1d,0x00,0x80,0x81,0x67,0x38, + 0xd9,0x7c,0xb0,0xe0,0xd8,0x55,0x68,0x8f,0x7b,0xf7,0x24,0xe8,0x5a,0x97, + 0x00,0x20,0x25,0x16,0xd9,0xb0,0xec,0x36,0xb4,0x27,0xde,0x6a,0x40,0xc7, + 0x8a,0x77,0x00,0xe0,0x54,0x8d,0x5f,0xb0,0xa4,0x13,0x0a,0x9e,0x48,0x70, + 0x88,0x1d,0x00,0xd0,0xd8,0xc1,0x57,0x08,0xed,0x50,0x90,0x12,0x40,0x02, + 0x80,0x94,0xa8,0xa1,0xa5,0x08,0x78,0xa4,0xab,0x83,0xbb,0x3a,0xde,0x38, + 0x77,0x09,0x80,0x4f,0x00,0x08,0xe8,0x5a,0xb7,0x82,0x8e,0x3b,0x58,0xb3, + 0x0a,0x00,0x60,0x1f,0x04,0xbc,0xf2,0x0f,0x7c,0xc0,0x36,0x00,0x38,0xf4, + 0x18,0x3f,0x00,0x01,0x95,0x0a,0x9c,0x5b,0x53,0x01,0x80,0x54,0x21,0x01, + 0x01,0x07,0x4a,0x70,0x69,0xd5,0x7b,0x00,0xf0,0x5d,0x85,0xdf,0x80,0x80, + 0x87,0x66,0xe0,0x33,0xfa,0x00,0x20,0xf5,0x31,0x02,0x04,0x94,0x4a,0x00, + 0x25,0x00,0x48,0x25,0x2a,0x40,0xc0,0x91,0x39,0x80,0x8f,0x00,0x60,0x28, + 0xf1,0x17,0x10,0xd0,0x37,0x01,0xdf,0xb0,0x05,0x00,0xd2,0x16,0x7e,0x02, + 0x02,0x52,0x02,0x48,0x00,0x50,0x4b,0x24,0x20,0x34,0xd7,0x2a,0x09,0x20, + 0x01,0x40,0x2d,0xcd,0x4d,0xa0,0xd6,0x84,0x66,0x78,0x7a,0xb2,0xb9,0x28, + 0x01,0x23,0x00,0xf0,0xc7,0xc8,0xcc,0x17,0x2e,0x54,0x32,0xe4,0xd9,0xde, + 0x8b,0x05,0x1b,0xc0,0x3e,0x00,0x80,0xd7,0x70,0xe1,0xc8,0x8d,0x79,0x48, + 0x03,0xc7,0x96,0x2d,0x09,0x2d,0x00,0x00,0x50,0xab,0xdc,0x18,0x9b,0x86, + 0x34,0x75,0xe5,0x56,0x47,0x5b,0x01,0x00,0x00,0x1a,0x69,0x6e,0x6a,0x1a, + 0x4d,0x5d,0x94,0x26,0x66,0xda,0x0a,0x05,0x00,0x00,0x68,0x34,0x52,0xca, + 0xff,0xf8,0x11,0x91,0x01,0x37,0xfc,0x06,0x6a,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_tabwidget_png_len = 572; +static const unsigned char small_tabwidget_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xce,0x49,0x44,0x41,0x54,0x48,0xc7,0xd5,0x95, + 0xbd,0x6e,0xd4,0x40,0x10,0x80,0xbf,0x19,0xef,0xe9,0x72,0x09,0xd6,0x91, + 0x44,0x22,0x11,0x12,0xdd,0xb9,0x3b,0x9e,0x80,0x16,0x4a,0xa4,0x74,0x20, + 0x1e,0x21,0x25,0x0d,0x12,0xbc,0x48,0x0a,0xde,0x22,0x45,0x5a,0x5a,0xa8, + 0x10,0x12,0x1d,0xa4,0x02,0x9d,0x52,0x38,0x16,0xe0,0xe0,0x3b,0xff,0x2d, + 0x85,0xd7,0xbe,0x35,0x17,0x09,0x71,0x47,0x0a,0x46,0x1a,0xcd,0x78,0xbc, + 0xfb,0x79,0x3c,0xb3,0x1e,0x8b,0xb5,0x96,0x9b,0x10,0xe5,0x86,0xe4,0xff, + 0x03,0x8b,0xd3,0x00,0x30,0xce,0xfa,0x0f,0xab,0x81,0x0a,0x28,0x9d,0x6d, + 0xf7,0xa8,0xb7,0xd7,0x17,0xeb,0xb4,0x36,0x40,0x30,0x9d,0x4e,0x8b,0x3c, + 0xcf,0xf1,0x1b,0x99,0xa6,0x29,0xb3,0xd9,0x8c,0xc9,0x64,0x82,0xb5,0x16, + 0x11,0x41,0x44,0x7a,0xf7,0xa2,0x28,0x5a,0x59,0x0f,0x84,0x40,0x6e,0x00, + 0x93,0xe7,0x39,0x8f,0x8f,0xaf,0xa8,0xea,0x05,0x08,0xa8,0xc2,0xcf,0x79, + 0xcc,0xc9,0x0b,0x48,0x9e,0xbc,0xa6,0x0e,0x0f,0x91,0xed,0xdb,0xc8,0x60, + 0x08,0x40,0x9c,0xd5,0xf0,0x7c,0x9f,0x77,0x97,0x97,0xcb,0x57,0x8b,0x63, + 0xf6,0x1b,0x37,0x04,0x7e,0x18,0x20,0xb0,0xd6,0x52,0xd5,0x0b,0xae,0xe6, + 0x31,0xaa,0x20,0x0a,0x5f,0x3f,0x37,0xab,0xbe,0x7d,0xf9,0x44,0x19,0xa6, + 0x30,0xda,0x85,0xc1,0x56,0x13,0xfc,0x70,0x0a,0xc0,0x79,0x1c,0x77,0xe0, + 0xd3,0x65,0x39,0xc6,0x40,0x61,0xba,0x9a,0xba,0x4c,0x45,0x1b,0x7b,0xe7, + 0x1e,0xdc,0x7f,0x00,0x17,0x67,0x2f,0x19,0x8f,0xc7,0xab,0xdd,0x89,0x22, + 0x9e,0x7a,0x97,0x69,0x9a,0x42,0x53,0x8a,0x3d,0x20,0x33,0xdd,0xf1,0xf0, + 0xa0,0xa2,0xb0,0x1d,0xc2,0xc3,0x67,0x03,0xb6,0x86,0x0b,0x8c,0x49,0x50, + 0x05,0x0d,0xe8,0x6c,0x10,0xb8,0xf5,0x41,0xa3,0xf3,0x22,0xe6,0xd5,0x11, + 0x00,0x07,0x40,0xd2,0x81,0x7d,0x68,0xbb,0x19,0x29,0xc9,0xcb,0xef,0x94, + 0xd6,0x01,0x6a,0x07,0xb5,0xa0,0x6d,0x8c,0xc6,0x7f,0xff,0xa6,0x4b,0x7e, + 0x07,0x18,0xea,0x75,0x19,0xb7,0x59,0x5c,0xe7,0x07,0x81,0x17,0xf3,0xe2, + 0x22,0xfd,0x6f,0xa3,0x03,0x8b,0xac,0x0f,0x6d,0x93,0x72,0x92,0x01,0x45, + 0x2f,0xe3,0x4d,0xa0,0x1e,0xb8,0x00,0xaa,0x65,0xf3,0xda,0x1a,0xae,0x01, + 0xfd,0xad,0x14,0x15,0x50,0x6b,0x0f,0xbc,0x26,0x54,0xb5,0x07,0xee,0x0f, + 0x21,0xd9,0x04,0xaa,0xab,0x53,0xc3,0xb4,0x87,0x7b,0x9e,0xc7,0x7c,0x7c, + 0xeb,0x35,0xd1,0x65,0xd1,0xd6,0x4f,0x5b,0xdf,0x8b,0x89,0xb8,0x4c,0x05, + 0x92,0x8b,0xd5,0xe9,0xb6,0x03,0xa4,0xff,0x70,0x62,0x3e,0x02,0xce,0x8d, + 0x2b,0xf6,0x5d,0xa7,0xbb,0xc0,0x68,0x03,0x68,0x06,0x24,0x40,0x26,0xae, + 0x1c,0x23,0xe0,0x96,0xb3,0x66,0x03,0x70,0xe9,0xe0,0xe9,0x9f,0x06,0xfd, + 0xdf,0x4a,0xf7,0x63,0xf8,0x05,0xcf,0xaa,0x90,0x2f,0xd4,0xc0,0xa1,0x02, + 0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_textbrowser_png_len = 514; +static const unsigned char small_textbrowser_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x94,0x49,0x44,0x41,0x54,0x28,0xcf,0x7d,0x93, + 0x31,0x48,0x42,0x51,0x14,0x86,0x0f,0x82,0x24,0x68,0x43,0x73,0x9b,0xa0, + 0x41,0xd0,0x5e,0xd6,0xee,0x20,0x0e,0xd1,0x62,0xad,0x0d,0x0f,0xb7,0xa0, + 0xa9,0xa5,0xa8,0x21,0x0b,0x0a,0x9c,0xa2,0x20,0x0a,0x03,0x1b,0xa2,0x86, + 0xa0,0x86,0x22,0x0c,0x49,0xc8,0x32,0x44,0x88,0x22,0x21,0x92,0x88,0xa0, + 0xc0,0x40,0x08,0x2a,0xa2,0xf8,0xfb,0xef,0x7d,0x0f,0xbb,0x85,0xca,0xc7, + 0xbd,0xe7,0x5c,0xef,0xf7,0x38,0xf7,0xf9,0xee,0x11,0x71,0xcd,0x8f,0x24, + 0x72,0xe3,0xb0,0x9a,0x12,0x43,0x77,0x5e,0x2c,0xe9,0x90,0x36,0x11,0x77, + 0x22,0x77,0x8b,0xef,0x96,0x64,0x21,0x45,0x09,0x52,0x17,0xcf,0x38,0xbe, + 0xf0,0xe9,0x50,0xa9,0x67,0x26,0xe7,0x10,0x48,0x48,0x3a,0x45,0xbc,0x16, + 0x3e,0xf0,0xee,0x30,0x54,0xcf,0x6c,0x4e,0xf4,0x9c,0x53,0x72,0x58,0xfc, + 0x22,0x3e,0x0b,0x6f,0x78,0xd5,0x14,0xf8,0x63,0xc1,0xc9,0x15,0x2c,0xcf, + 0x61,0x47,0x89,0x48,0x40,0xa4,0xdd,0xe2,0xb2,0xa6,0x99,0xc6,0x20,0x47, + 0xcd,0x21,0xa3,0x14,0x92,0xc1,0xb1,0x8a,0x51,0x9e,0x5a,0xc9,0x35,0x54, + 0x35,0x93,0x58,0x44,0x8f,0x93,0x57,0x1d,0x55,0x71,0x64,0xca,0x2f,0x78, + 0x22,0x45,0x2c,0x73,0xa8,0xc2,0x4f,0xff,0x38,0x30,0xe5,0x67,0x3c,0x90, + 0x39,0x5c,0x73,0x1e,0xc0,0x84,0x5e,0x99,0xec,0x99,0xf2,0x23,0xff,0xb2, + 0x0a,0xe2,0xd8,0x26,0x71,0xf4,0xeb,0x95,0xc9,0xae,0x29,0xdf,0xa3,0xcc, + 0xe2,0x16,0x66,0x34,0xea,0x20,0xe5,0x3f,0xec,0x98,0xf2,0x1d,0xae,0x30, + 0x85,0x33,0xce,0x8a,0x3e,0xe6,0x2a,0xfe,0xbe,0xe0,0x96,0x29,0x97,0x51, + 0xc2,0x28,0x87,0xcd,0x18,0x7a,0x75,0x4c,0x3b,0x6a,0x1a,0x9b,0xa6,0x7c, + 0xcd,0x97,0xea,0xc2,0x3e,0x2e,0x48,0x96,0x5f,0x51,0x30,0xab,0xf3,0x14, + 0xb3,0x14,0xe3,0x86,0x29,0x5f,0xe2,0xb4,0x09,0x6b,0x7a,0x5e,0x37,0xe5, + 0x12,0xbf,0x7e,0x2b,0x56,0xeb,0xb2,0x2f,0xa6,0x8b,0x37,0xe7,0x10,0xc9, + 0xfa,0xdd,0xf0,0x76,0xe7,0x93,0x58,0xc1,0x52,0x53,0x16,0x31,0x0c,0xb9, + 0xb1,0x6f,0x9d,0x87,0x5d,0x50,0x14,0xb4,0xe4,0x46,0x16,0xec,0xfb,0xec, + 0x66,0x07,0x04,0x99,0x86,0x59,0x28,0xda,0x90,0x08,0xf7,0x42,0x76,0xa7, + 0xb8,0xd8,0x5b,0x1d,0x7c,0xca,0xcf,0x33,0x05,0x1b,0x12,0xe0,0x5e,0xa7, + 0xee,0x41,0x28,0xdd,0xcd,0xc3,0x78,0xc5,0x27,0xed,0x0d,0xf1,0x71,0xcf, + 0x43,0xc7,0xf5,0x03,0x70,0x91,0x55,0x5a,0x29,0x33,0x10,0x51,0x00,0x00, + 0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_textedit_png_len = 497; +static const unsigned char small_textedit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x83,0x49,0x44,0x41,0x54,0x28,0xcf,0x7d,0xd2, + 0x3d,0x6b,0x93,0x61,0x14,0xc6,0xf1,0x5f,0xfa,0xdc,0xa4,0x04,0xcc,0x56, + 0xf0,0x6d,0x51,0x41,0x74,0x11,0xec,0x62,0x87,0x16,0xfc,0x06,0x81,0x0a, + 0x8a,0xb3,0x83,0x43,0x5d,0x04,0x33,0x88,0xdf,0xc0,0x4f,0xe0,0x58,0x07, + 0x17,0x0b,0x6e,0x12,0x5f,0x86,0x16,0x24,0x50,0x0b,0x99,0x0a,0x06,0x3b, + 0xfa,0x8a,0xd0,0x2c,0x25,0x69,0x4a,0x9a,0xe7,0xc5,0x21,0x8f,0xed,0x63, + 0x69,0x9e,0x33,0x9c,0xe1,0x3a,0xff,0x73,0x71,0x71,0x9f,0x3b,0x98,0x79, + 0x7e,0x3f,0x5d,0xe9,0x2d,0x0e,0x4c,0xab,0x3d,0xdb,0x5b,0xdd,0x55,0x6b, + 0x86,0x41,0x94,0xae,0xdc,0x5d,0xbc,0xac,0xac,0xda,0x0b,0xb7,0xab,0x36, + 0xec,0x06,0x51,0x6f,0xf1,0x92,0x24,0x97,0x7f,0xb9,0x78,0x0a,0x5c,0x63, + 0xde,0x9c,0xfd,0x20,0x1a,0x88,0x65,0xb9,0xdc,0xf4,0xea,0x18,0x70,0x90, + 0xf7,0x43,0xa8,0x9b,0x0d,0x2a,0xa4,0xb9,0xf3,0x57,0x6f,0x3c,0x75,0x1d, + 0xf4,0x51,0xd3,0x47,0x3c,0x99,0x06,0x51,0x50,0x21,0xc9,0xe1,0x96,0x65, + 0x2d,0x57,0x0b,0x01,0x26,0x7a,0x0a,0x33,0x2a,0x61,0x22,0xc5,0xf9,0x68, + 0xc9,0x4b,0x8f,0x0a,0x70,0x5c,0x58,0xa1,0x00,0xff,0x76,0xc1,0x2d,0x4f, + 0x7c,0x71,0xad,0x0c,0x8e,0x8d,0xf1,0x51,0x43,0xdd,0x92,0xf7,0xae,0x1c, + 0xc1,0xe3,0x42,0x3f,0x82,0x63,0x7c,0xd3,0xc5,0x0d,0x9f,0x3c,0x2c,0x77, + 0x3e,0xf4,0x47,0xaa,0x8b,0xf3,0x5e,0xf8,0xee,0x5c,0x3e,0x3e,0x2c,0xac, + 0x14,0x32,0xaf,0x7b,0xe0,0x0c,0x78,0x67,0xdd,0xbd,0xe9,0xce,0x63,0x63, + 0x3f,0xcd,0xe6,0xd9,0x16,0x7c,0xb0,0xfc,0x5f,0xe6,0x13,0xce,0xaf,0xb5, + 0xdd,0x71,0x16,0xfb,0x7e,0xf8,0xac,0xe5,0x19,0x3a,0x6e,0xa2,0x73,0x12, + 0x6e,0x68,0xe4,0x3e,0x55,0x4d,0x4d,0x6c,0x62,0x9c,0xf7,0x13,0xef,0x9c, + 0x94,0xfe,0xba,0x63,0x38,0xdb,0xfb,0x77,0xfd,0x29,0x35,0x32,0x98,0xdc, + 0x3c,0x0b,0xb2,0xed,0xad,0xf6,0x42,0xad,0x04,0x3f,0xd0,0x61,0x47,0x2c, + 0x09,0x92,0xee,0xea,0xe3,0xaa,0xf9,0xd2,0x1c,0x3b,0xde,0xea,0x1b,0x05, + 0x89,0x35,0x1b,0xe6,0xd4,0x05,0x33,0xa7,0xa2,0xa9,0x58,0x5f,0xcf,0x30, + 0x48,0x0c,0xed,0xda,0x37,0x2b,0x52,0x39,0x15,0xce,0x24,0x46,0x86,0x86, + 0x21,0x4b,0x2b,0x63,0x03,0x07,0x22,0x95,0xa9,0x70,0x26,0x91,0x48,0xfe, + 0x02,0x5a,0x81,0x9f,0x13,0x68,0xe3,0xbf,0x39,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_textview_png_len = 498; +static const unsigned char small_textview_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x04,0x00,0x00, + 0x00,0x6e,0xbd,0xa4,0xb0,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0x84,0x49,0x44,0x41,0x54,0x28,0xcf,0x7d,0xd2, + 0xbf,0x6b,0x14,0x51,0x14,0xc5,0xf1,0xcf,0xcc,0xec,0x92,0x6c,0x30,0x45, + 0x24,0x2a,0x92,0xc6,0xca,0x2e,0x85,0x82,0x08,0xa6,0x11,0x2c,0x44,0x30, + 0x60,0x69,0x63,0xab,0xa0,0x6d,0xfe,0x87,0x20,0x58,0x69,0x69,0x21,0x36, + 0x49,0x30,0xa6,0xb1,0xb0,0xb0,0x52,0xb2,0x20,0x0b,0x21,0x45,0x50,0x31, + 0x20,0xd8,0x88,0x82,0x2e,0x64,0x63,0xd6,0x95,0x64,0x7e,0x59,0xec,0xb8, + 0xcc,0x64,0x93,0xbd,0xa7,0x79,0xf7,0xbe,0x2f,0x87,0x73,0x1f,0x2f,0x10, + 0x3e,0xbc,0x9d,0xdd,0x6f,0xcf,0x75,0x1d,0x57,0xbb,0xb6,0x5a,0x9f,0x9e, + 0x79,0xa1,0x47,0x7d,0xb1,0xf9,0x25,0x4f,0x47,0xea,0x5d,0x6e,0xd3,0x79, + 0x53,0x35,0x51,0x7b,0xee,0x9c,0xb4,0xe4,0xf4,0xdb,0x9e,0x99,0x8a,0x77, + 0x83,0x0b,0xa6,0xfd,0x09,0x45,0x5d,0x89,0xb4,0xa4,0x15,0x0b,0x95,0x3e, + 0x75,0x00,0x93,0xc6,0x42,0x01,0x99,0xa4,0xa4,0xa7,0xd6,0x7c,0xa8,0x4c, + 0x52,0xa8,0x89,0x42,0x81,0x8a,0xcb,0x7b,0x53,0x58,0xae,0xcc,0x32,0x08, + 0x05,0x21,0xa4,0x25,0x97,0xd7,0x1e,0x9b,0xb5,0x6c,0xe7,0xb0,0x33,0x0e, + 0xc1,0x3b,0xbe,0x3a,0xed,0x8e,0x1f,0x56,0x8f,0x83,0x13,0x71,0xa1,0x35, + 0xd7,0xc5,0x6e,0x3a,0xeb,0xf9,0x60,0x16,0x8b,0xab,0xf0,0x7f,0x35,0xdd, + 0x90,0x68,0xb8,0xe5,0xa3,0xd6,0x90,0x73,0xad,0x0f,0x1f,0x80,0x75,0x1b, + 0x1e,0x80,0x0e,0x5e,0x9a,0x2d,0xa0,0xa4,0x0c,0xa7,0x45,0xfb,0xc6,0x92, + 0x33,0xc5,0xc5,0x82,0x15,0x77,0x8b,0xae,0x92,0xb9,0x9f,0xeb,0x9b,0xcc, + 0xc9,0x41,0xca,0xab,0x78,0x55,0x9c,0x93,0xe1,0xd7,0x78,0xeb,0x62,0x29, + 0xfd,0x35,0x2c,0x0d,0xba,0x0a,0x1c,0x5b,0xb5,0x68,0xdb,0xf7,0xc2,0xab, + 0x63,0x1d,0x3f,0x3d,0xd1,0x11,0x57,0x17,0x4c,0xa5,0xe6,0xcd,0x97,0xf2, + 0x8d,0xbb,0xa4,0x59,0x20,0x69,0x09,0xce,0x77,0x4b,0x8f,0x73,0x54,0xed, + 0xeb,0x42,0x26,0xaf,0xc9,0xb7,0x5a,0xcd,0xcb,0x8d,0x11,0xf8,0x5f,0x1b, + 0x6c,0xf7,0x1d,0xc7,0xdd,0xb3,0x29,0x1f,0xa9,0xcf,0x1e,0xb9,0x62,0x26, + 0x50,0x77,0xc2,0x29,0xd3,0x26,0xd5,0xfa,0xeb,0x0e,0x55,0x26,0xb1,0xa7, + 0xed,0x57,0x20,0x54,0x37,0x61,0xc2,0x98,0x48,0x70,0x24,0x9c,0x4b,0xed, + 0xeb,0xe9,0x05,0xb9,0x20,0x14,0x89,0x44,0x82,0x63,0xe1,0xbc,0xff,0xb1, + 0xff,0x01,0x08,0xb2,0x0b,0x7e,0xbc,0x39,0x06,0x4b,0x00,0x00,0x00,0x00, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_timeedit_png_len = 1520; +static const unsigned char small_timeedit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x05,0x82,0x49,0x44,0x41,0x54,0x48,0xc7,0x4d,0x95, + 0xcb,0x6f,0xdc,0x57,0x15,0xc7,0x3f,0xf7,0xf7,0x9a,0xd7,0x6f,0x5e,0xf6, + 0x78,0x3c,0xb6,0xe3,0x78,0xfc,0xea,0xd8,0x49,0x5c,0x9a,0xc4,0xb5,0x84, + 0x69,0x2a,0x68,0xdc,0x22,0x45,0xe2,0xa1,0x22,0x21,0x60,0xc5,0x06,0x76, + 0x48,0x48,0x2c,0x90,0xd8,0xb2,0x40,0x82,0x7f,0x00,0xb1,0x45,0x42,0x42, + 0x82,0x82,0x84,0xa8,0x90,0x50,0xa1,0x34,0x4d,0x20,0x35,0x4a,0x6b,0xb7, + 0xb1,0x1d,0xdb,0x93,0xc4,0x19,0xdb,0xf3,0xf0,0xcc,0x78,0xde,0x8f,0xdf, + 0xeb,0xb2,0xe8,0xcf,0x28,0x57,0xba,0xba,0x47,0x67,0xf1,0xd1,0x39,0xe7, + 0x9e,0x73,0xbe,0x42,0x4a,0xc9,0xc5,0x11,0x42,0x28,0x23,0x99,0x49,0xa5, + 0xd3,0x6c,0xc6,0xa7,0x66,0x73,0x57,0x26,0xe6,0x96,0x57,0x6d,0xa9,0xce, + 0xda,0x9e,0x48,0x59,0xae,0xcb,0x70,0x60,0x75,0xac,0x5e,0xeb,0xe4,0xfc, + 0xd9,0xa3,0x9d,0xee,0x79,0x29,0x2f,0x5d,0xa7,0x0a,0xb2,0x03,0xf4,0x81, + 0xa1,0x94,0xd2,0xfb,0x3f,0xeb,0x02,0x2c,0x84,0xd0,0x03,0xe1,0x48,0x78, + 0x26,0xb7,0x72,0xe3,0xda,0xfa,0x9b,0xdf,0x37,0x93,0x93,0x1b,0x42,0x38, + 0xe9,0x64,0x54,0xd3,0xe2,0xb1,0x10,0x9e,0x07,0xf5,0x8e,0xc3,0xe3,0xf2, + 0xc0,0x29,0x94,0x9b,0xd5,0xd6,0xf3,0x9d,0xcd,0xda,0xa3,0x7f,0xfe,0xd5, + 0xaa,0x97,0xb7,0x90,0x6e,0x09,0xa8,0x01,0x3d,0xc0,0x93,0x52,0x4a,0x01, + 0x08,0x40,0x33,0xe3,0x23,0xf1,0x57,0x6f,0x7f,0xed,0x9b,0x57,0xd7,0xde, + 0xf8,0x89,0x6b,0x75,0x97,0x66,0xc7,0x3d,0x6e,0xad,0x66,0x18,0x1f,0x8b, + 0xe2,0x0c,0x2d,0x62,0x66,0x10,0x3d,0x68,0x50,0xa8,0xf4,0x79,0x7f,0xab, + 0xc1,0x1f,0x3e,0x6a,0xb1,0xb7,0x9f,0x3f,0x6a,0x3e,0xfc,0xcb,0x1f,0xed, + 0xe2,0xfe,0x7b,0xb8,0xce,0x21,0x50,0x02,0xba,0x80,0xa7,0x02,0x8a,0x11, + 0x08,0x47,0xd7,0xbf,0xfa,0xf6,0xdb,0xaf,0xbc,0x7e,0xe7,0xe7,0xb2,0x5f, + 0xc9,0x6e,0xac,0x86,0x79,0xeb,0x4b,0x33,0xcc,0xcf,0xa4,0x19,0x8d,0x47, + 0xb8,0xff,0xdf,0x22,0xf9,0x13,0x87,0xec,0x74,0x9c,0x91,0x08,0x7c,0x71, + 0x39,0xce,0xea,0x62,0x8c,0xe7,0xed,0x60,0xe2,0xc8,0x49,0xe7,0x68,0x95, + 0x86,0x6e,0xbb,0x7e,0xee,0x43,0x7b,0x3e,0x58,0xa8,0x73,0x2b,0x37,0xd6, + 0x5e,0xbb,0xf3,0xbd,0x5f,0xb8,0xbd,0xca,0xcc,0xb7,0x36,0xc6,0x79,0xe3, + 0xb5,0x1c,0x3b,0xbb,0x25,0x86,0x03,0x8b,0xf4,0x78,0x8c,0x3f,0xdd,0xef, + 0xf1,0xcb,0x77,0xda,0x5c,0x4e,0x7a,0x0c,0x1a,0x67,0xa8,0xba,0xc1,0xf2, + 0x7c,0x86,0xf5,0x65,0x93,0xbd,0x12,0xa1,0x67,0x6d,0xe3,0x92,0x57,0xd9, + 0xaf,0x49,0x7b,0x58,0xf5,0x4b,0xe2,0xa8,0x81,0x50,0x24,0xf1,0xd6,0x77, + 0x7e,0xf8,0x53,0x23,0x14,0xbc,0x7d,0x73,0x5e,0xf2,0x95,0xf5,0x05,0x6c, + 0xdb,0x23,0x95,0x32,0x19,0x19,0x35,0x31,0x8c,0x10,0xbb,0x47,0x03,0x8e, + 0x8a,0x3d,0xbe,0xbd,0x91,0xe2,0x0b,0xcb,0x29,0xa2,0xf1,0x10,0xf5,0x7a, + 0x8b,0x54,0xcc,0xe0,0xca,0x74,0x98,0x0f,0x0f,0xbc,0x68,0xa3,0x56,0x33, + 0x9c,0x5a,0xe1,0x29,0x70,0x04,0x58,0xca,0xe4,0x5c,0xee,0x6a,0x3a,0x9b, + 0x7b,0xd3,0x90,0x0d,0x6e,0xad,0xcd,0xf0,0xf0,0xe3,0x02,0xc5,0x72,0x83, + 0x64,0x32,0x41,0x24,0x12,0x06,0x5c,0x7a,0x7d,0x1b,0xd7,0x95,0x04,0x0c, + 0x0d,0xd3,0x4c,0xa2,0xeb,0x1a,0x9f,0xee,0x9c,0x70,0x90,0xaf,0x70,0x7d, + 0x21,0xc9,0x77,0x5f,0x9f,0x40,0xcb,0x5c,0x59,0x12,0x21,0xf3,0x2a,0x60, + 0x02,0x86,0x32,0xfd,0xd2,0xcb,0xab,0xb6,0xa7,0x8d,0x5f,0x9b,0x8b,0x32, + 0x37,0x33,0xc6,0xe2,0x42,0x9a,0xf4,0x58,0x0c,0x70,0x00,0x89,0xeb,0x49, + 0xaa,0x2d,0x87,0x81,0x07,0x48,0x09,0x58,0x48,0x0f,0x16,0x66,0xd3,0x64, + 0x32,0x09,0x40,0xe5,0xcb,0x2f,0x27,0x59,0x98,0x99,0x88,0x29,0x91,0x91, + 0x45,0x20,0x02,0xe8,0x8a,0xd0,0x83,0xd9,0xee,0xc0,0x52,0x2f,0x65,0x4c, + 0x2a,0x67,0x2d,0x74,0x5d,0x65,0x24,0x19,0x05,0x3e,0x6f,0xc3,0x56,0xcf, + 0xe1,0xf0,0x78,0x80,0x6d,0x7b,0x18,0x01,0x01,0x80,0xae,0x69,0x5c,0x9a, + 0x4a,0x70,0x7e,0xde,0xa5,0xd5,0x6e,0x72,0x39,0x13,0x66,0xe9,0x72,0x5c, + 0xa0,0x47,0x52,0x40,0x10,0xd0,0x35,0x50,0xc7,0x86,0xae,0x44,0xe2,0x71, + 0x72,0x5a,0xc7,0x91,0x2a,0xa9,0x54,0x14,0x45,0x51,0x00,0x50,0x15,0x18, + 0x8b,0xa9,0x14,0x23,0x2a,0x66,0x48,0x03,0x54,0x40,0xd2,0xed,0x59,0x1c, + 0x3c,0xa9,0xa0,0xa9,0x92,0x54,0x26,0xc5,0x68,0x34,0x88,0xa6,0x05,0x42, + 0x2e,0xe8,0x80,0xaa,0xd8,0xae,0x27,0xfa,0x43,0x17,0x50,0x99,0x9b,0x9b, + 0x62,0x39,0x37,0xe1,0x43,0x25,0xe0,0x11,0x0d,0xeb,0xdc,0xba,0x91,0xa0, + 0xd1,0xf6,0xf8,0xdd,0xbb,0x55,0x8a,0xe7,0x7d,0x40,0x21,0x1e,0x0b,0x73, + 0xf3,0x7a,0x96,0x74,0x7a,0x04,0xc7,0xf1,0x50,0x91,0xa8,0x38,0x2a,0xa0, + 0x00,0x8a,0xd6,0xed,0x75,0x5a,0x03,0xc7,0xa3,0x3d,0x54,0x88,0x45,0x83, + 0x1c,0x15,0xaa,0xf4,0xfa,0x43,0xd2,0xa9,0x28,0x20,0x10,0x28,0x4c,0x8f, + 0x1b,0x24,0xc2,0x82,0x9f,0xfd,0xf6,0x84,0x7f,0x6c,0x37,0xf9,0xc1,0x9d, + 0x34,0xaf,0xcc,0x09,0xd2,0xa9,0x20,0xe1,0x70,0x98,0x6a,0xa9,0x49,0xab, + 0xd9,0x45,0xb8,0x96,0x7d,0x31,0xd2,0x4a,0xab,0x51,0x3d,0xb1,0x85,0x70, + 0x37,0x0f,0x3a,0x34,0x9b,0x6d,0x9e,0x1c,0x96,0x69,0xd4,0xbb,0x7e,0xa9, + 0x14,0xc0,0x61,0xe9,0x72,0x88,0x5f,0xfd,0x28,0xcb,0xaf,0x7f,0x9c,0x45, + 0x51,0x74,0xfe,0x7c,0xaf,0xc5,0x83,0x87,0xa7,0x9c,0x1e,0x37,0x00,0x8f, + 0xe3,0xd2,0x80,0xe7,0xc7,0x55,0xe9,0xf4,0x5b,0x5d,0x3f,0x55,0xa9,0x9d, + 0x1d,0x6c,0xef,0x64,0x6e,0xd6,0xce,0xfe,0xd3,0xd7,0x33,0x5b,0xf9,0x73, + 0xd6,0xd6,0xe6,0xb0,0x1d,0x97,0x52,0xa9,0x8a,0xae,0x0b,0x46,0x47,0x4d, + 0x12,0xa6,0xc1,0xab,0xcb,0x41,0xae,0x2f,0x04,0x59,0x9e,0xf0,0x10,0x9a, + 0xc1,0x64,0x32,0x41,0x66,0x2c,0x82,0x65,0xbb,0xfc,0x7b,0xab,0x44,0xb1, + 0xf0,0xb4,0x3f,0x6c,0xd7,0x2b,0x80,0x0b,0x78,0x4a,0xf7,0xbc,0x9c,0x3f, + 0xdd,0xdb,0x7c,0x50,0xb2,0x82,0xfc,0xe6,0xbd,0x33,0x5c,0x45,0x23,0x12, + 0x32,0xd8,0xfa,0xf4,0x88,0xc2,0x71,0x1d,0xcb,0xb2,0x39,0xcc,0x17,0xa9, + 0x54,0x6a,0xb4,0x3b,0x7d,0x86,0x8d,0x1a,0x53,0x71,0x8b,0xf9,0x6c,0x8a, + 0x48,0xc4,0xe4,0x5f,0x0f,0xca,0xdc,0xdf,0xcc,0x73,0xfa,0x64,0xbb,0x8c, + 0x33,0x2c,0x01,0x16,0xe0,0xa8,0x48,0x2f,0xd0,0x3b,0xaf,0x48,0x25,0x95, + 0x5d,0x79,0x3a,0x88,0x27,0x6a,0x95,0x26,0xab,0xb9,0x38,0x2f,0xcd,0xc4, + 0x49,0x8e,0x98,0xb8,0x9e,0x64,0x67,0xb7,0x88,0xed,0xb8,0x4c,0x4d,0x24, + 0x88,0xc5,0x03,0xa4,0x52,0x51,0x74,0xdd,0xe0,0x83,0x8f,0xca,0xfc,0xfe, + 0xdd,0x5d,0x3e,0xbc,0xfb,0x7e,0xab,0x72,0xb0,0xb5,0x2d,0x3d,0xe7,0x33, + 0x60,0x07,0x68,0xaa,0x80,0xea,0x0d,0xfa,0xb6,0xd3,0xae,0xa1,0x25,0xa7, + 0x72,0x5b,0x55,0x3d,0xbc,0x93,0xaf,0x93,0x9d,0x30,0x99,0x9d,0x8c,0x13, + 0x08,0xe8,0x64,0x2f,0x27,0x98,0xc8,0x24,0x51,0xb5,0x20,0xa6,0x19,0xa2, + 0xd1,0x72,0xf9,0xdb,0xdd,0x13,0xde,0xf9,0xfb,0x2e,0x1f,0xdc,0xbd,0xd7, + 0x7f,0xf6,0xc9,0xbd,0x47,0xde,0xb0,0xf3,0x08,0xd8,0x05,0xf2,0x40,0x5b, + 0x00,0x21,0x60,0x1c,0x55,0xcb,0x05,0xc7,0xe7,0xbf,0x1e,0xbe,0x76,0xfb, + 0x1b,0x24,0x66,0xa6,0xd2,0x51,0x85,0xdb,0xcb,0x31,0x6e,0xad,0x8c,0x92, + 0x8c,0x06,0x3e,0x9f,0x42,0x5b,0x72,0x52,0xee,0xf1,0xc9,0xe3,0x33,0x1e, + 0xe7,0x0b,0xec,0x6f,0x7f,0xdc,0x2a,0xee,0x6d,0xee,0xd9,0xbd,0xe6,0x36, + 0x70,0x71,0xf7,0x81,0x86,0xf0,0xbf,0x3e,0x02,0x4c,0x20,0xc4,0x82,0x1a, + 0x8e,0xaf,0x07,0xa7,0x57,0x36,0x8c,0xc9,0xc5,0x25,0x2d,0x94,0x88,0x05, + 0x54,0x4d,0x04,0x34,0x05,0xd5,0x73,0x10,0xae,0x83,0x90,0x3d,0x3a,0xd5, + 0xd3,0xde,0xd9,0xd1,0x6e,0xd9,0xae,0x14,0x0e,0x3d,0xd7,0x3a,0xf0,0x61, + 0xbb,0xc0,0x13,0xe0,0x0c,0xe8,0x09,0x29,0x25,0x42,0x08,0xcd,0x8f,0x7c, + 0x0c,0x98,0x02,0xb1,0x28,0x02,0xc1,0xab,0x4a,0x2c,0xbd,0x88,0x16,0x1a, + 0x55,0x54,0x25,0x8c,0xeb,0x2a,0xae,0x33,0xb4,0xbd,0x7e,0xa7,0x4b,0xbf, + 0x51,0xc5,0x75,0x8a,0xc0,0x29,0x50,0xf0,0x37,0x5a,0xf1,0x05,0x15,0xb1, + 0x2f,0xc0,0x17,0x91,0xeb,0x40,0xc0,0xcf,0xc0,0xf4,0xdf,0xa0,0xef,0x57, + 0xfc,0xde,0x97,0x7e,0x4b,0x59,0xc0,0xe0,0x85,0xe5,0xde,0x03,0x86,0x80, + 0x0d,0x78,0x2f,0x6a,0xde,0x85,0x4c,0xa9,0x80,0x06,0x18,0x3e,0x50,0xf7, + 0x7d,0x2f,0x82,0x3d,0x7f,0xfd,0x39,0x3e,0xc8,0xf6,0x6d,0xef,0x42,0xf3, + 0xfe,0x07,0xd9,0x3f,0x88,0x22,0xef,0xd9,0x4f,0x79,0x00,0x00,0x00,0x00, + 0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_timer_png_len = 1462; +static const unsigned char small_timer_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x06,0x62,0x4b,0x47,0x44,0x00, + 0xff,0x00,0xff,0x00,0xff,0xa0,0xbd,0xa7,0x93,0x00,0x00,0x00,0x09,0x70, + 0x48,0x59,0x73,0x00,0x00,0x0b,0x0e,0x00,0x00,0x0b,0x0e,0x01,0x40,0xbe, + 0xe1,0x41,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07,0xd3,0x09,0x02, + 0x0f,0x2b,0x1c,0x96,0x4a,0x88,0xc0,0x00,0x00,0x05,0x43,0x49,0x44,0x41, + 0x54,0x78,0xda,0x75,0x95,0x4d,0x6c,0x5c,0x57,0x15,0x80,0xbf,0xf7,0x33, + 0x6f,0xc6,0xf6,0x8c,0x67,0xec,0xf9,0xc9,0x58,0xfe,0x1b,0x3c,0x89,0x6b, + 0x2c,0xbb,0x44,0x6d,0x8a,0x4b,0x70,0x68,0xa3,0x62,0x51,0x81,0xac,0x34, + 0x2a,0x15,0x15,0x42,0xa8,0x84,0x0a,0x76,0x41,0x54,0x15,0x5b,0x76,0xac, + 0x58,0x20,0x24,0xab,0x2a,0x0b,0x58,0x20,0x28,0x88,0xb2,0x69,0x8a,0x0c, + 0x24,0xc2,0x45,0x2e,0x25,0xfc,0xb4,0xc8,0x4e,0x88,0xc1,0x96,0x13,0xcf, + 0xc4,0xf6,0x78,0xfe,0x3a,0x33,0x1e,0x7b,0xde,0xbc,0xf7,0xee,0xbd,0x8f, + 0x45,0x6c,0xcb,0x8e,0xc2,0x91,0x8e,0x74,0xcf,0xb9,0x47,0x9f,0xce,0x3d, + 0x3f,0xba,0xda,0xd8,0xd8,0x18,0x07,0x92,0x38,0x9b,0x8d,0xfd,0xb4,0xc3, + 0x32,0x66,0x5d,0xa1,0xb0,0x1d,0x51,0xba,0x93,0x6f,0x7e,0x1e,0xb8,0xc5, + 0xa3,0x65,0xf2,0xfc,0x78,0xfc,0x86,0xa1,0x93,0xf2,0x81,0xdd,0x96,0xb8, + 0xb6,0x7c,0xb7,0x71,0x05,0xa8,0x00,0x98,0x87,0x51,0x13,0x99,0xee,0x37, + 0xaf,0x5e,0xca,0xce,0xf6,0x84,0x03,0x94,0xea,0x2e,0xab,0x9b,0xcd,0xd4, + 0x9d,0x7c,0xf3,0x0a,0xf0,0xdd,0xff,0x03,0xbe,0xf2,0x9d,0x17,0xce,0xa4, + 0xd2,0xbd,0x41,0x5c,0xe1,0x73,0x27,0xb7,0x3b,0x3b,0x77,0x6d,0xfd,0xcd, + 0xd5,0xcd,0xe6,0x8b,0x87,0xe0,0xc4,0x44,0xa6,0xfb,0x27,0xdf,0xff,0xda, + 0xf8,0x0b,0x86,0x06,0xc5,0x9a,0x43,0x75,0xd7,0xa5,0xaf,0x37,0xf4,0x27, + 0xe0,0x8f,0x4f,0x9c,0x8e,0x2d,0x9a,0x86,0x3e,0xe1,0x03,0xbe,0x0f,0xe0, + 0xe3,0x49,0xff,0xf6,0xd2,0x7a,0xfd,0x07,0x86,0xce,0x99,0xfd,0xb6,0x7c, + 0xc6,0x76,0x45,0x38,0xda,0x65,0xf2,0x8d,0x99,0xe1,0xcb,0x6f,0xbc,0xbb, + 0xfe,0xdb,0x7c,0xd9,0xfe,0xb6,0xf6,0xf2,0x97,0x9e,0x7e,0xe7,0xea,0xa5, + 0xec,0x6c,0xac,0x2b,0x40,0xb9,0xe1,0x52,0xac,0xb7,0xb7,0x96,0xef,0x35, + 0x6e,0xdd,0xba,0xb7,0xeb,0x7d,0x71,0x2a,0x3d,0xfb,0xdc,0xd9,0x14,0x89, + 0xee,0x20,0xca,0xf7,0x51,0xca,0x47,0xf9,0x50,0xac,0xb7,0x59,0x58,0x2a, + 0xf3,0xbb,0xbf,0x15,0x7e,0xf3,0xd9,0xf1,0x84,0x7d,0xf1,0xf1,0xe4,0x73, + 0x8e,0x27,0xfb,0x9b,0xb6,0x60,0xbd,0xb0,0xc7,0xfc,0x3f,0x76,0xae,0x99, + 0x86,0xae,0x4d,0xe8,0xba,0x46,0xa9,0xee,0x50,0x6a,0x38,0x5b,0x37,0xfe, + 0x55,0x7a,0xe3,0xdc,0x68,0xef,0xeb,0xaf,0x7c,0x61,0x24,0x96,0x4a,0x0f, + 0xa0,0xc5,0x46,0xd1,0x7a,0xc6,0xf0,0xad,0x18,0xad,0x56,0x8b,0x80,0xda, + 0x27,0x55,0x5d,0xe1,0x72,0x62,0x95,0xf3,0xe3,0xc9,0x97,0x16,0x97,0x4b, + 0xf5,0x5f,0xfd,0xf9,0xfe,0x0f,0x9f,0x99,0x8c,0x7f,0xcb,0x76,0x55,0xbf, + 0xae,0x21,0x0c,0x5d,0x1b,0x37,0x3c,0x3d,0xfc,0x87,0xea,0xae,0x33,0x7d, + 0xbf,0x62,0xb7,0x3f,0x5a,0xab,0xff,0xec,0xe9,0xf1,0xf8,0x6b,0x5f,0xb9, + 0x38,0x12,0x0b,0x0f,0x7e,0x9a,0xfd,0xd4,0x0c,0xc4,0x3f,0x85,0xd9,0x95, + 0xc2,0x37,0x3a,0x58,0xfa,0xf7,0x1a,0xe9,0xcc,0x38,0x6e,0x68,0x88,0xb6, + 0xd5,0x4f,0x38,0xa8,0x91,0x8d,0xb7,0x43,0xc5,0x5a,0xeb,0x89,0x1b,0x1f, + 0x15,0x7f,0x54,0xae,0x39,0x03,0xb7,0x73,0xcd,0xbb,0x77,0x77,0x5a,0x2f, + 0x9b,0xc0,0x7f,0x16,0x6f,0x57,0x2f,0x01,0xe7,0xbf,0xf9,0x7c,0xe6,0xc7, + 0x97,0xa7,0x33,0x31,0xbd,0xff,0x59,0xcc,0xfe,0x0b,0x84,0xa4,0x41,0x3e, + 0x9f,0x27,0x93,0xc9,0x20,0xa5,0x64,0x7e,0x7e,0x9e,0xc9,0xc9,0x49,0x0a, + 0x85,0x02,0xa9,0xd4,0x29,0xb4,0xae,0x19,0x74,0xbd,0x93,0x99,0x27,0x45, + 0xac,0xb1,0xe7,0xbd,0xf6,0xf6,0xe2,0xe6,0x55,0xe0,0x03,0x20,0xaf,0x1f, + 0x74,0x38,0xff,0xd8,0x40,0xe4,0xdc,0xd9,0x6c,0x2c,0x69,0xc6,0x3f,0xc9, + 0x7e,0xf8,0x2c,0x6d,0xa1,0x63,0x18,0x06,0x43,0x43,0x43,0x08,0x21,0x90, + 0x52,0x52,0xab,0xd5,0x10,0x42,0xd0,0xd7,0xd7,0x87,0xa6,0x69,0xb8,0x52, + 0xa7,0xdd,0x3d,0x89,0xd1,0x93,0x65,0x6c,0x30,0x9c,0xcc,0xa4,0xbb,0xce, + 0x01,0x79,0x80,0x43,0x70,0x67,0x32,0x6a,0xbd,0x3a,0x99,0x4d,0x62,0x0c, + 0x5c,0xc4,0x08,0x76,0x91,0xcf,0xe7,0x8f,0x80,0x52,0x4a,0x84,0x10,0xf8, + 0xbe,0x7f,0x74,0x96,0x52,0x52,0x2a,0x95,0xd0,0x03,0x1d,0x98,0xe9,0xcf, + 0x70,0x66,0xb0,0x97,0xde,0x70,0xe0,0x55,0xa0,0xf3,0x38,0x78,0xee,0xf5, + 0x97,0x1e,0x8b,0xfa,0xdd,0x59,0x7c,0xab,0x07,0xd3,0x34,0x19,0x18,0x18, + 0x40,0x08,0x71,0x42,0x7d,0xdf,0x3f,0x82,0x0a,0x21,0x88,0xc7,0xe3,0xe8, + 0xba,0x8e,0x0a,0x44,0xf1,0xc3,0x43,0x7c,0x7d,0x66,0x38,0x0a,0xcc,0x9d, + 0x58,0x10,0xa9,0x14,0x84,0x92,0x08,0x74,0x7c,0x29,0x51,0x4a,0x9d,0x50, + 0x79,0xe0,0x93,0x8f,0xba,0xf3,0x35,0x7c,0xab,0x07,0x29,0xfd,0xa3,0xed, + 0x39,0x02,0x7b,0xc2,0x47,0x68,0x1d,0x6c,0xac,0xad,0xe3,0xba,0x2e,0x83, + 0x83,0x83,0x04,0x02,0x01,0x94,0x52,0xf8,0xbe,0x4f,0x2e,0x97,0xa3,0xd9, + 0x6c,0x52,0xad,0x56,0x89,0x44,0x22,0x28,0xa5,0xb0,0x6d,0x9b,0x5c,0x2e, + 0x87,0x69,0x9a,0x24,0xb4,0x20,0xe2,0x51,0x60,0xa1,0x7c,0x84,0xe7,0x30, + 0x3c,0x3c,0xf4,0x60,0x11,0x1e,0xca,0x6e,0x71,0x71,0x91,0xe9,0xe9,0xe9, + 0x23,0xbf,0x94,0x12,0xd3,0x34,0xc9,0x64,0x32,0xf8,0x4a,0xb1,0x9f,0xcf, + 0xe1,0x3d,0x12,0x2c,0x7c,0x9c,0x66,0x11,0xdd,0xb5,0x71,0x5c,0x85,0xae, + 0x3f,0x28,0xbf,0x52,0x8a,0x95,0x95,0x15,0x52,0xa9,0x14,0x53,0x53,0x53, + 0x07,0xb1,0x02,0xa5,0x14,0x42,0x08,0x5c,0xd7,0xc5,0xd0,0x7d,0xda,0x7b, + 0x15,0x84,0x54,0x47,0xe0,0xc3,0xe6,0xbd,0xb5,0xb0,0x54,0xb2,0xdb,0xd5, + 0x0d,0xec,0x66,0x9d,0x72,0xb9,0x8c,0xe7,0x79,0x48,0x29,0x69,0xb5,0x5a, + 0x5c,0xbf,0x7e,0x9d,0x91,0x91,0x91,0x07,0xbd,0x38,0x36,0x15,0x9e,0xe7, + 0x51,0x2e,0x97,0x69,0x35,0x1b,0xb4,0xeb,0x9b,0x7c,0xb8,0x5a,0xb3,0x81, + 0xb7,0x00,0x8c,0x44,0x22,0x01,0xb0,0xee,0x08,0xf5,0xe2,0xc4,0x40,0xa8, + 0xcf,0x0a,0x75,0x10,0x49,0x9d,0x06,0x4d,0xc7,0x71,0x1c,0x00,0x46,0x47, + 0x47,0x89,0x46,0xa3,0x47,0xa5,0x39,0xcc,0x54,0xd7,0x75,0xac,0x80,0x49, + 0x7b,0x67,0x99,0xea,0xd6,0x2a,0x0b,0x4b,0xe5,0xdb,0xf5,0x3d,0xef,0x7b, + 0xc7,0xc1,0x54,0x1a,0xee,0x7f,0xbb,0x3b,0xcd,0x57,0x06,0x23,0x2d,0xf4, + 0x8e,0x24,0xca,0x08,0x53,0xd8,0xd9,0xc1,0xb2,0x2c,0x82,0xc1,0x20,0x95, + 0x4a,0x85,0x60,0x30,0x88,0x52,0x0a,0xc7,0x71,0x0e,0x6c,0x0b,0x6f,0xf7, + 0x3e,0xbb,0x1b,0x7f,0xe1,0xef,0x2b,0x65,0xfe,0xb9,0x56,0xfb,0x2a,0xb0, + 0x71,0x02,0x0c,0x54,0x1a,0xfb,0x5e,0x64,0x38,0x69,0x3d,0x69,0x79,0x25, + 0x9d,0x40,0x17,0xa1,0xee,0x24,0x86,0x19,0x40,0x4a,0xc9,0xd6,0xd6,0x16, + 0xd1,0x68,0x14,0xa5,0x14,0x9a,0x06,0xa6,0x69,0xe0,0x7e,0xbc,0x41,0xe3, + 0xee,0xfb,0x6c,0xef,0x54,0xc5,0x7b,0xcb,0xe5,0xb9,0xfd,0xb6,0xf8,0x39, + 0xe0,0x3e,0x0c,0x76,0x77,0x5b,0x62,0x7e,0x7d,0x7b,0x2f,0x79,0x2a,0xc2, + 0x94,0x65,0xe7,0x50,0xae,0xfd,0x60,0x42,0x34,0x03,0x29,0xc1,0x0a,0x04, + 0x90,0xce,0x1e,0x4e,0x63,0x9b,0x56,0xe1,0x16,0xbb,0xb9,0x9b,0xe4,0x0b, + 0x15,0xde,0xb9,0x59,0x98,0x2b,0xd6,0xda,0x57,0x0f,0xa1,0x27,0xa6,0xe2, + 0x40,0x3a,0x82,0x01,0x23,0x6b,0xea,0x1a,0xd7,0x3e,0xc8,0xf3,0xb9,0xc7, + 0xdb,0x58,0xdb,0x77,0x30,0xac,0x30,0xbe,0x6e,0x52,0xce,0xf9,0x28,0xe9, + 0xe1,0xd9,0x7b,0xd8,0xf6,0x3e,0x7f,0x5d,0xa9,0xf0,0xd4,0x68,0x0f,0x5d, + 0x41,0x23,0x0b,0x74,0x00,0xf6,0x21,0xe8,0x78,0xc6,0xe9,0xd1,0xfe,0xc8, + 0xaf,0xbf,0x7c,0x61,0xe0,0xf9,0x70,0xa7,0xc9,0xef,0x3f,0xdc,0xd9,0x7b, + 0xf7,0x66,0xe1,0x97,0x9a,0x12,0xe9,0x72,0xb5,0x16,0xde,0xdc,0x2a,0xb3, + 0x59,0x28,0xb3,0x5d,0xfc,0x98,0xb5,0xfb,0xb5,0x9d,0x5f,0x2c,0xe4,0xdf, + 0xf6,0xa4,0x3a,0x7d,0x61,0x22,0x69,0x8d,0xf6,0x47,0xce,0x94,0xea,0xce, + 0x53,0xd5,0xa6,0x7b,0x03,0xd8,0x03,0xd0,0x8e,0x7d,0xa6,0xcf,0x9e,0xea, + 0x09,0x2d,0xf4,0x44,0x02,0x00,0x6c,0xec,0xb4,0x36,0xda,0xae,0xfc,0x04, + 0x30,0x0d,0x24,0x1e,0x7a,0x59,0x05,0x78,0x3f,0x64,0x19,0xf7,0x32,0xe9, + 0xce,0x0c,0x40,0xad,0xe9,0x51,0xac,0xb5,0x2f,0x02,0xef,0x01,0xfc,0x0f, + 0x0a,0x3e,0xe9,0x1a,0x33,0xf0,0xe7,0x05,0x00,0x00,0x00,0x00,0x49,0x45, + 0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_toolbutton_png_len = 1262; +static const unsigned char small_toolbutton_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x04,0x80,0x49,0x44,0x41,0x54,0x38,0xcb,0x95,0x55, + 0x5b,0x48,0x5c,0x57,0x14,0x5d,0x77,0xee,0x63,0xee,0x8c,0x6f,0x67,0x9c, + 0xf1,0x95,0xfa,0x2c,0x21,0x3e,0xf0,0xdd,0xf8,0x8a,0x36,0x06,0x1b,0x13, + 0x3f,0xec,0x87,0xd8,0x4f,0x3f,0x13,0xfa,0xd1,0x62,0xfa,0xd5,0x3f,0xc1, + 0x6f,0xbf,0xac,0x84,0x42,0x91,0x80,0xd6,0xc4,0x26,0x22,0x52,0x09,0x62, + 0xc1,0x28,0x34,0x21,0xa9,0x4d,0xa4,0x01,0xa9,0x18,0xc4,0x2a,0x36,0xd4, + 0x38,0x8e,0x13,0x9c,0xd1,0x71,0x9c,0x99,0xdb,0xbd,0x4f,0xe6,0x4a,0x4c, + 0x22,0xb4,0x07,0xce,0xdc,0x3b,0xf7,0x9c,0xbb,0xce,0xda,0x6b,0xaf,0xbd, + 0xaf,0x02,0x40,0xea,0xed,0xed,0x2d,0xd3,0x75,0xfd,0x3b,0x8f,0xc7,0xd3, + 0xb0,0xb7,0xb7,0x87,0xff,0x3b,0x76,0x76,0x76,0xb0,0xb8,0xb8,0xf8,0x64, + 0x75,0x75,0xf5,0x5b,0xfa,0xbb,0x48,0x73,0x5f,0xa1,0x1f,0x99,0x41,0xeb, + 0xea,0xea,0x1a,0x4a,0x4b,0x4b,0x61,0x18,0xc6,0xa9,0x00,0xbc,0x26,0x49, + 0xd2,0xf1,0x9e,0xb7,0xef,0x87,0x87,0x87,0xcf,0xf7,0xf4,0xf4,0xf4,0xd3, + 0x6d,0x17,0x4d,0x0f,0x03,0x2b,0xcc,0xb4,0xa4,0xa4,0x04,0xa1,0x50,0x08, + 0xd1,0x68,0xf4,0x54,0x50,0x1e,0xd1,0xa8,0x41,0xf7,0xd1,0x18,0xb0,0x05, + 0x16,0x8b,0x24,0xee,0x99,0x14,0x8d,0x0a,0x9a,0xce,0x63,0xc6,0x1c,0x7e, + 0x38,0x1c,0xc6,0xd1,0xd1,0xd1,0xa9,0xa0,0x07,0x07,0x07,0x98,0x9a,0x9a, + 0x42,0x5f,0x5f,0x1f,0xba,0xba,0xbe,0x40,0x67,0x67,0x27,0xb2,0xb3,0xb3, + 0xa1,0x69,0x1a,0x14,0x45,0xa6,0xf5,0xa0,0xb9,0x3d,0x91,0xa6,0xce,0xc0, + 0xe2,0xc8,0x48,0x24,0x22,0xe6,0x87,0xc6,0xda,0xda,0x1a,0xa6,0xa7,0xa7, + 0xb1,0xb5,0xb5,0x85,0x5b,0xb7,0x46,0x30,0x3f,0x3f,0x8b,0x81,0x81,0x01, + 0x5c,0xbc,0xd8,0x82,0x0b,0x17,0x1a,0x11,0x17,0x67,0x17,0xc4,0x62,0x43, + 0x65,0xb2,0xc7,0xc0,0x2c,0xc1,0x87,0x80,0x99,0x2d,0x47,0x12,0x08,0xec, + 0xa3,0xa5,0xa5,0x0d,0x67,0xcf,0x16,0x21,0x33,0x33,0x07,0x4f,0x9f,0x2e, + 0xe0,0xee,0xdd,0x51,0xb1,0x56,0x5f,0x5f,0x8f,0xc3,0xc3,0x37,0x8c,0x2d, + 0x16,0x8b,0x4c,0x58,0x92,0x62,0x02,0xf0,0x89,0x6f,0x9d,0x7a,0x02,0x38, + 0x33,0x33,0x13,0xed,0xed,0xed,0x18,0x19,0x19,0x15,0x21,0x57,0x55,0xd5, + 0xa0,0xa2,0xa2,0x1a,0x1b,0x1b,0xeb,0x98,0x9c,0x9c,0x84,0xdb,0xed,0xa6, + 0xfc,0x1c,0x9a,0xaf,0x08,0xa2,0xc7,0xc0,0xcc,0xf6,0x5d,0x8d,0x4d,0x17, + 0x84,0xc3,0x11,0x24,0x27,0x27,0xe1,0xf2,0xe5,0xcf,0x30,0x36,0x36,0x46, + 0x7b,0xa3,0xa8,0xae,0xfe,0x84,0x12,0x56,0x46,0xb2,0x3c,0xc0,0x93,0x27, + 0xbf,0x21,0x37,0x37,0x47,0xbc,0x43,0x9a,0x2b,0xa1,0x50,0x58,0x3a,0x01, + 0x6c,0x4a,0xc1,0xcc,0x97,0x96,0x96,0xa0,0xeb,0x36,0xe4,0xe5,0xe5,0xc2, + 0x74,0x60,0x46,0x46,0x06,0x1a,0x1b,0x1b,0xc9,0x5a,0x3f,0xd0,0xf3,0x3c, + 0x38,0x1c,0x0e,0x31,0xd7,0xd7,0xd7,0x91,0x92,0x92,0x1c,0x93,0x42,0x91, + 0x15,0x25,0x7a,0x12,0x98,0x01,0x99,0xa5,0xd7,0xeb,0x25,0x26,0xf3,0x14, + 0x41,0x18,0xad,0xad,0xad,0xc8,0xca,0xca,0x82,0x2c,0xcb,0x50,0x55,0x05, + 0x05,0x05,0x05,0xc2,0x66,0xb2,0x2c,0x11,0x3b,0x2b,0x69,0x1b,0x8a,0xe5, + 0x20,0x20,0x70,0x64,0x86,0x8d,0x86,0x4f,0x6a,0xcc,0x3e,0x66,0x60,0xd6, + 0x8d,0x72,0x20,0x6c,0x35,0x34,0xf4,0x3d,0x9a,0x9a,0x9a,0x91,0x9f,0x9f, + 0x0b,0xab,0x55,0xc7,0xe6,0xe6,0x06,0xd9,0x4b,0x81,0xdd,0xae,0xd3,0x1e, + 0xab,0x78,0xd7,0xeb,0xdd,0x86,0xdf,0x6f,0x02,0xcb,0x72,0x24,0x62,0x79, + 0x9f,0x31,0xbb,0x63,0x70,0x70,0x10,0x33,0x33,0x73,0x38,0x73,0x26,0x07, + 0x6d,0x6d,0x1d,0x94,0xfd,0x1f,0x71,0xe9,0x52,0x8b,0x60,0x3a,0x37,0xf7, + 0x00,0xd7,0xaf,0x7f,0x49,0xa1,0x3b,0xa8,0x94,0x5f,0xa3,0xbc,0xbc,0x12, + 0x13,0x13,0xab,0x64,0xc5,0x7f,0x62,0xc0,0xaa,0xa6,0xaa,0x86,0xf2,0x1e, + 0x30,0x5f,0xbb,0xbb,0xbb,0x71,0xe7,0xce,0x08,0xae,0x5d,0xfb,0x9a,0xb2, + 0x5f,0x49,0x4c,0xad,0xe4,0xdb,0x7e,0xb1,0xef,0xc6,0x8d,0x6f,0x44,0xd2, + 0xb6,0xb7,0x3d,0xd8,0xdf,0x3f,0x40,0x5d,0x5d,0x3d,0x45,0x1a,0xc4,0xfd, + 0xfb,0x3f,0x8b,0x75,0xab,0x55,0x4b,0x90,0x65,0x8b,0x76,0x42,0x0a,0xd6, + 0x8a,0x19,0x37,0x37,0x7f,0x8a,0xdb,0xb7,0x47,0xf1,0xf0,0xe1,0x3c,0x6a, + 0x6b,0x1b,0x50,0x5c,0x5c,0x82,0x9b,0x37,0x87,0x60,0xb3,0x69,0x62,0xaf, + 0xc7,0xb3,0x83,0xdd,0x5d,0x9f,0x90,0x8e,0x7c,0x8b,0x86,0x86,0x26,0x51, + 0x3c,0x2b,0x2b,0xcb,0x2c,0x57,0x6a,0x7c,0xbc,0x9a,0x78,0x0c,0x6c,0x16, + 0x08,0x5f,0xe3,0xe3,0xe3,0x50,0x59,0x59,0x85,0x7b,0xf7,0x46,0x85,0x57, + 0x6b,0x6a,0x6a,0xe9,0x59,0x3c,0x25,0x4f,0x13,0xec,0x83,0xc1,0xa0,0x98, + 0xba,0xae,0x09,0x9b,0x79,0xbd,0x3e,0xe1,0x75,0x1e,0x49,0x49,0x89,0x6e, + 0x45,0xd1,0x52,0xde,0x61,0xcc,0x05,0x62,0x50,0x72,0x54,0x62,0x59,0x2c, + 0x22,0x98,0x9d,0xfd,0x05,0x8f,0x1e,0xfd,0x2a,0x0e,0x63,0xdb,0xe5,0xe7, + 0x17,0x92,0x9f,0xaf,0x8a,0x04,0x96,0x97,0x97,0xc1,0xe9,0x74,0x10,0xf3, + 0x23,0x3c,0x7f,0xfe,0x07,0xd2,0xd3,0xd3,0x91,0x9a,0xea,0x70,0x10,0x70, + 0x12,0x03,0x1b,0xdc,0x4f,0x19,0x84,0xbb,0x16,0xbf,0x4c,0x35,0x21,0x98, + 0x15,0x15,0x15,0x53,0x61,0xa4,0x62,0x79,0xf9,0x4f,0xbc,0x7a,0xb5,0x4d, + 0x12,0x78,0xe8,0xa0,0x19,0x72,0xc0,0x3e,0x3a,0x3a,0x3e,0xa7,0x68,0x36, + 0x99,0x21,0xd9,0x4e,0xc5,0x95,0x2b,0x57,0x45,0x89,0x93,0xaf,0x75,0x8a, + 0xcc,0x26,0x80,0xb9,0x49,0x8f,0x8f,0x8f,0x9f,0x67,0x8f,0x9a,0xd5,0xc7, + 0xed,0x91,0xa3,0xe0,0x1e,0xe0,0x76,0xbb,0x84,0x14,0x2e,0x97,0x1b,0x3e, + 0xdf,0x2e,0x9e,0x3d,0x7b,0x4c,0xa5,0xed,0x47,0x61,0xe1,0xc7,0xd4,0x33, + 0x7e,0x17,0xa0,0x1c,0xc1,0xb9,0x73,0xc5,0x87,0xe4,0x1c,0x83,0x23,0x66, + 0xe0,0x08,0x77,0x7e,0xb2,0x58,0x7f,0xac,0x9f,0xfe,0xa7,0xf1,0xe2,0xc5, + 0x8a,0xb8,0xba,0x5c,0x2e,0x2c,0x2c,0x3c,0x26,0x0b,0x7e,0x65,0x64,0x67, + 0x7f,0xf4,0xd2,0xe7,0xf3,0xee,0x92,0x14,0x01,0x06,0x0e,0xc7,0x3e,0x27, + 0x5d,0xb1,0x26,0x9d,0x18,0x6b,0x7d,0x94,0x70,0xd1,0xc5,0x25,0xae,0x7f, + 0x2e,0x55,0xae,0x2a,0x95,0xe2,0xa4,0x8a,0x8b,0xa3,0x72,0x77,0x26,0x24, + 0x24,0xa6,0xa5,0xa5,0x39,0x9d,0x91,0x88,0x61,0x9f,0x98,0xf8,0x49,0xa5, + 0x2f,0xd1,0xae,0xa6,0xe9,0xcb,0x64,0xb9,0x97,0x82,0x31,0x77,0x7c,0x76, + 0x51,0xec,0xaa,0xb3,0xcf,0x19,0xd0,0xfc,0x9a,0x88,0xa6,0x42,0xf5,0xcf, + 0xa5,0x4a,0x95,0xc9,0x07,0x58,0x69,0x29,0x81,0xf2,0x90,0xac,0xeb,0xd6, + 0x14,0x62,0x68,0xa3,0xc6,0x64,0xa1,0x86,0x15,0xb0,0xd9,0x6c,0x7f,0x93, + 0xee,0x7f,0x29,0xb4,0xd1,0xa0,0x07,0x2c,0xac,0x9f,0x66,0xd0,0x04,0x35, + 0xdb,0xdf,0x1b,0xbd,0xb9,0xdc,0xcd,0x7f,0x41,0xc9,0xef,0x7f,0xcd,0xd1, + 0xa8,0x81,0x80,0x97,0x3f,0x20,0xba,0xdd,0xae,0xa9,0xa1,0x90,0x46,0xc0, + 0x7a,0x58,0x92,0xc2,0x7b,0xba,0xae,0x04,0xfe,0x05,0x00,0x12,0x29,0xd3, + 0x40,0xbb,0x4e,0xd5,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42, + 0x60,0x82 +}; + +static const unsigned int small_undo_png_len = 572; +static const unsigned char small_undo_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xd6,0xd8,0xd4,0x4f,0x58,0x32,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x41,0x64,0x6f,0x62, + 0x65,0x20,0x49,0x6d,0x61,0x67,0x65,0x52,0x65,0x61,0x64,0x79,0x71,0xc9, + 0x65,0x3c,0x00,0x00,0x01,0xce,0x49,0x44,0x41,0x54,0x48,0xc7,0xdd,0xd4, + 0x3f,0x28,0x84,0x61,0x1c,0xc0,0xf1,0x5b,0x2c,0x57,0x62,0xb9,0x4d,0x6e, + 0xb8,0xed,0xe4,0x06,0x29,0x72,0x37,0x28,0xab,0xc9,0xa2,0xb0,0x50,0x18, + 0x90,0x0c,0x32,0x30,0xde,0x46,0x51,0x38,0x11,0xf9,0x3b,0x21,0x37,0x89, + 0x4d,0x0c,0xa2,0x64,0xa0,0x2c,0x52,0xca,0x49,0x47,0x29,0x91,0x88,0x7a, + 0x7c,0x1f,0xf7,0x7b,0xbd,0xcf,0x3d,0x71,0x7f,0x94,0x85,0xfa,0x7a,0x1e, + 0x6f,0xdd,0xe7,0x7d,0x3d,0xcf,0x73,0xaf,0x47,0x29,0xe5,0xf9,0x8b,0x3c, + 0xff,0x1f,0xe6,0xc7,0x4b,0x7e,0x0a,0x4a,0x7a,0xee,0xfd,0x35,0x6c,0x80, + 0x95,0xa4,0xac,0x2a,0xed,0x1b,0xe4,0x83,0x06,0x1d,0x68,0x3d,0x1c,0x56, + 0xcb,0x65,0x65,0x6a,0x9e,0x62,0x25,0x25,0xe6,0x0d,0x82,0x0e,0x9e,0x17, + 0xba,0x05,0x18,0x0f,0x85,0xd4,0xb2,0xdf,0xaf,0xc6,0xf9,0x7b,0x8c,0x86, + 0x69,0xb4,0xb0,0x50,0x45,0x5d,0x3c,0x90,0x15,0x36,0xd1,0x9d,0x48,0x44, + 0xc5,0x01,0x17,0x99,0xcf,0x50,0x8c,0x1c,0x7c,0x84,0x06,0x5c,0xb8,0x56, + 0x3e,0xf7,0xf9,0xcb,0x67,0x6f,0x80,0x89,0xee,0x83,0x6e,0x83,0xae,0x31, + 0x5f,0x21,0x13,0xef,0xa5,0x66,0x1a,0xa4,0x76,0xe3,0xa9,0x3d,0xb2,0xe8, + 0xce,0x06,0x78,0x6d,0xf4,0x18,0x74,0x17,0x74,0x93,0xf9,0x06,0x99,0x78, + 0x3f,0xd5,0x1b,0x9b,0x38,0x92,0xfe,0xd4,0xee,0xa6,0xc8,0xdc,0xe7,0x5c, + 0x3b,0x03,0x3d,0x04,0xdd,0x61,0xbe,0x4d,0x26,0x3e,0x44,0x0d,0xee,0xe7, + 0xda,0xa8,0x66,0xae,0xb4,0x54,0x75,0xba,0xd7,0x52,0xc8,0x1d,0x9b,0x22, + 0x17,0xea,0xf4,0x78,0x01,0x7a,0x02,0x7a,0xc8,0x7c,0x4f,0xaf,0xb1,0x81, + 0xeb,0x8d,0x6a,0x74,0x81,0x26,0xf9,0xd7,0x0b,0xa8,0xa8,0xc7,0x86,0xef, + 0x81,0xaf,0xe4,0xe2,0x35,0xe8,0x39,0xe8,0x29,0xf3,0x23,0x32,0x71,0x7d, + 0x0a,0x5a,0xbe,0x41,0x65,0x09,0x0b,0xc6,0x6c,0xf8,0x81,0x33,0x99,0x64, + 0x4c,0x16,0x17,0xab,0x04,0xe8,0x85,0x5e,0x0a,0x32,0x71,0x7d,0x0a,0x5a, + 0x7f,0x40,0x9d,0xa2,0x36,0xfc,0x08,0x7c,0xcf,0x78,0x4b,0x37,0x74,0xa9, + 0x97,0xc3,0xc0,0xf5,0x29,0xe8,0xc8,0x82,0xca,0x53,0x57,0xa5,0xc1,0xcf, + 0xc0,0x0f,0x7a,0x49,0x04,0x4f,0x18,0xf8,0x12,0x75,0xe7,0x80,0x0a,0x1c, + 0x48,0x83,0x5f,0x81,0x9f,0xf4,0x92,0x58,0xf8,0x2a,0xf5,0xe5,0x88,0x1a, + 0x47,0xd5,0xf7,0x05,0xbf,0x03,0xbf,0x30,0xda,0xf8,0x81,0x8b,0x76,0x51, + 0x79,0x26,0xd4,0xba,0x41,0x0a,0x56,0xc0,0x6f,0x8c,0x36,0x9e,0x94,0x25, + 0x11,0xbc,0xe2,0xbb,0x57,0x64,0x46,0x58,0xa3,0x0b,0x34,0x47,0xb3,0x34, + 0x4d,0x53,0x34,0x49,0x13,0xf2,0x4e,0x10,0xbc,0x3a,0x17,0xdc,0xfc,0x4a, + 0xe7,0x93,0x2f,0x17,0xd8,0x79,0x81,0x87,0xe4,0xa8,0x44,0x32,0x54,0x25, + 0x9b,0x97,0xf5,0x89,0x3f,0x00,0xc7,0x8d,0x6d,0x93,0x39,0x21,0x73,0x78, + 0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_editcut_xpm_len = 733; +static const unsigned char small_disabled_editcut_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x34,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x63,0x20,0x23, + 0x38,0x34,0x38,0x32,0x38,0x34,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20, + 0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x63,0x20,0x6e, + 0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c, + 0x73,0x20,0x2a,0x2f,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x20,0x6f, + 0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c, + 0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x6f, + 0x6f,0x2e,0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x6f,0x2e,0x2e, + 0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x6f,0x6f,0x6f,0x2e,0x20,0x20,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x2e,0x2e,0x6f,0x2e,0x2e,0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x2e,0x2e,0x2e,0x20,0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e, + 0x2e,0x2e,0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c, + 0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x20, + 0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x6f,0x2e,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x20,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x2e,0x6f,0x2e,0x20,0x2e,0x20,0x20,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x6f, + 0x20,0x2e,0x20,0x2e,0x20,0x6f,0x6f,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x6f,0x20,0x6f,0x2e, + 0x20,0x2e,0x20,0x6f,0x6f,0x6f,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c, + 0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x2e,0x6f,0x20,0x6f,0x6f,0x2e,0x20,0x2e, + 0x20,0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22, + 0x6f,0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x2e,0x6f, + 0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f, + 0x6f,0x6f,0x2e,0x20,0x6f,0x6f,0x6f,0x2e,0x20,0x6f,0x2e,0x20,0x6f,0x2e, + 0x6f,0x20,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f, + 0x2e,0x20,0x6f,0x6f,0x2e,0x6f,0x20,0x6f,0x6f,0x2e,0x2e,0x6f,0x20,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e, + 0x2e,0x2e,0x6f,0x20,0x6f,0x6f,0x6f,0x6f,0x20,0x20,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x20,0x20, + 0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_disabled_editslots_xpm_len = 899; +static const unsigned char small_disabled_editslots_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x36,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x63,0x20, + 0x23,0x66,0x65,0x66,0x65,0x66,0x65,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63, + 0x20,0x47,0x72,0x61,0x79,0x39,0x39,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x63, + 0x20,0x23,0x63,0x38,0x39,0x61,0x36,0x64,0x22,0x2c,0x0a,0x22,0x4f,0x20, + 0x63,0x20,0x23,0x63,0x38,0x39,0x35,0x34,0x34,0x22,0x2c,0x0a,0x22,0x2b, + 0x20,0x63,0x20,0x23,0x63,0x35,0x38,0x64,0x35,0x32,0x22,0x2c,0x0a,0x22, + 0x40,0x20,0x63,0x20,0x23,0x38,0x34,0x38,0x32,0x38,0x34,0x22,0x2c,0x0a, + 0x22,0x23,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22, + 0x24,0x20,0x63,0x20,0x6e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x22,0x25,0x20, + 0x63,0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63, + 0x20,0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x2a,0x20,0x63,0x20, + 0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x63,0x20,0x47,0x72,0x61, + 0x79,0x30,0x22,0x2c,0x0a,0x22,0x3a,0x20,0x63,0x20,0x47,0x72,0x61,0x79, + 0x30,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c,0x73,0x20, + 0x2a,0x2f,0x0a,0x22,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x22,0x2c, + 0x0a,0x22,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x24, + 0x24,0x24,0x40,0x40,0x40,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x24,0x24,0x40, + 0x40,0x20,0x40,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x24,0x40,0x40,0x20,0x20, + 0x40,0x20,0x24,0x24,0x24,0x40,0x40,0x40,0x24,0x24,0x24,0x24,0x24,0x24, + 0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x40,0x40,0x20,0x20,0x24,0x40,0x20, + 0x24,0x40,0x40,0x40,0x20,0x40,0x40,0x40,0x24,0x24,0x24,0x24,0x22,0x2c, + 0x0a,0x22,0x24,0x24,0x24,0x40,0x20,0x20,0x24,0x24,0x40,0x20,0x24,0x40, + 0x20,0x20,0x20,0x24,0x20,0x40,0x20,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22, + 0x24,0x24,0x40,0x40,0x20,0x24,0x24,0x24,0x40,0x20,0x40,0x40,0x20,0x24, + 0x24,0x24,0x24,0x40,0x40,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22,0x40,0x40, + 0x40,0x20,0x20,0x24,0x24,0x24,0x40,0x20,0x40,0x20,0x20,0x24,0x24,0x24, + 0x24,0x24,0x40,0x40,0x40,0x40,0x22,0x2c,0x0a,0x22,0x40,0x40,0x40,0x20, + 0x24,0x24,0x24,0x24,0x40,0x20,0x40,0x20,0x24,0x24,0x24,0x24,0x24,0x24, + 0x40,0x40,0x40,0x40,0x22,0x2c,0x0a,0x22,0x24,0x20,0x40,0x40,0x24,0x24, + 0x24,0x24,0x40,0x20,0x40,0x40,0x24,0x24,0x24,0x24,0x24,0x40,0x40,0x20, + 0x20,0x20,0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x40,0x20,0x24,0x24,0x24, + 0x40,0x20,0x24,0x40,0x20,0x24,0x24,0x24,0x24,0x40,0x20,0x20,0x24,0x24, + 0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x40,0x40,0x24,0x24,0x24,0x40,0x20, + 0x24,0x40,0x40,0x40,0x24,0x40,0x40,0x40,0x20,0x24,0x24,0x24,0x22,0x2c, + 0x0a,0x22,0x24,0x24,0x24,0x24,0x40,0x40,0x24,0x24,0x40,0x20,0x24,0x24, + 0x20,0x40,0x40,0x40,0x20,0x20,0x20,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22, + 0x24,0x24,0x24,0x24,0x24,0x40,0x40,0x24,0x40,0x20,0x24,0x24,0x24,0x24, + 0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22,0x24,0x24, + 0x24,0x24,0x24,0x24,0x40,0x40,0x40,0x20,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x20,0x20,0x20,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x22,0x2c,0x0a,0x22,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24, + 0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x24,0x22,0x0a, + 0x7d,0x3b,0x0a +}; + +static const unsigned int small_disabled_layout_xpm_len = 931; +static const unsigned char small_disabled_layout_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x31,0x34,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x23, + 0x36,0x37,0x36,0x37,0x36,0x37,0x36,0x37,0x36,0x37,0x36,0x37,0x22,0x2c, + 0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x36,0x66,0x36,0x66,0x36,0x66,0x36, + 0x66,0x36,0x66,0x36,0x66,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20,0x23, + 0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x37,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x35,0x30,0x22,0x2c, + 0x0a,0x22,0x4f,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x35,0x33,0x22,0x2c, + 0x0a,0x22,0x2b,0x20,0x63,0x20,0x47,0x72,0x61,0x79,0x35,0x36,0x22,0x2c, + 0x0a,0x22,0x40,0x20,0x63,0x20,0x23,0x39,0x37,0x39,0x37,0x39,0x37,0x39, + 0x37,0x39,0x37,0x39,0x37,0x22,0x2c,0x0a,0x22,0x23,0x20,0x63,0x20,0x23, + 0x39,0x66,0x39,0x66,0x39,0x66,0x39,0x66,0x39,0x66,0x39,0x66,0x22,0x2c, + 0x0a,0x22,0x24,0x20,0x63,0x20,0x23,0x61,0x37,0x61,0x37,0x61,0x37,0x61, + 0x37,0x61,0x37,0x61,0x37,0x22,0x2c,0x0a,0x22,0x25,0x20,0x63,0x20,0x23, + 0x61,0x66,0x61,0x66,0x61,0x66,0x61,0x66,0x61,0x66,0x61,0x66,0x22,0x2c, + 0x0a,0x22,0x26,0x20,0x63,0x20,0x23,0x62,0x37,0x62,0x37,0x62,0x37,0x62, + 0x37,0x62,0x37,0x62,0x37,0x22,0x2c,0x0a,0x22,0x2a,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x37,0x35,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x37,0x38,0x22,0x2c,0x0a,0x22,0x2d,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x38,0x31,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78, + 0x65,0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x2a,0x2a,0x3d,0x3d,0x3d,0x3d, + 0x3d,0x3d,0x3d,0x2a,0x2a,0x2a,0x2a,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d, + 0x3d,0x2a,0x22,0x2c,0x0a,0x22,0x3d,0x3d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d, + 0x2d,0x3d,0x2a,0x2a,0x2a,0x2d,0x3d,0x2d,0x2d,0x3d,0x2d,0x2d,0x3d,0x3d, + 0x22,0x2c,0x0a,0x22,0x3d,0x2d,0x3d,0x2d,0x3d,0x2d,0x3d,0x3d,0x3d,0x2a, + 0x2a,0x2a,0x2a,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x3d,0x22,0x2c, + 0x0a,0x22,0x26,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x26, + 0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x25,0x26,0x22,0x2c,0x0a,0x22, + 0x25,0x2b,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x40,0x25,0x25,0x23,0x4f, + 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x2b,0x25,0x22,0x2c,0x0a,0x22,0x25,0x4f, + 0x58,0x58,0x58,0x58,0x58,0x58,0x58,0x2b,0x25,0x25,0x2b,0x58,0x58,0x58, + 0x58,0x58,0x58,0x58,0x4f,0x24,0x22,0x2c,0x0a,0x22,0x26,0x24,0x23,0x23, + 0x23,0x23,0x23,0x23,0x23,0x24,0x26,0x26,0x24,0x23,0x23,0x23,0x23,0x23, + 0x23,0x23,0x24,0x26,0x22,0x2c,0x0a,0x22,0x2a,0x26,0x26,0x26,0x2a,0x26, + 0x2a,0x26,0x2a,0x26,0x2a,0x2a,0x2a,0x26,0x2a,0x26,0x2a,0x26,0x2a,0x26, + 0x26,0x2a,0x22,0x2c,0x0a,0x22,0x2a,0x2a,0x3d,0x3d,0x2a,0x3d,0x3d,0x3d, + 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x3d,0x3d,0x2a,0x3d,0x3d,0x2a,0x2a,0x2a, + 0x22,0x2c,0x0a,0x22,0x3d,0x3d,0x2d,0x2d,0x2d,0x2d,0x2d,0x3d,0x2d,0x2a, + 0x2a,0x2a,0x3d,0x2d,0x3d,0x2d,0x2d,0x3d,0x2d,0x3d,0x3d,0x3d,0x22,0x2c, + 0x0a,0x22,0x2a,0x3d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2a,0x26,0x2a, + 0x2a,0x3d,0x2d,0x2d,0x3d,0x3d,0x3d,0x2d,0x3d,0x3d,0x22,0x2c,0x0a,0x22, + 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x26,0x26,0x26,0x26, + 0x26,0x25,0x26,0x26,0x26,0x25,0x26,0x26,0x22,0x2c,0x0a,0x22,0x25,0x40, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x40,0x25,0x25,0x23,0x2b,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x40,0x25,0x22,0x2c,0x0a,0x22,0x25,0x2b,0x6f,0x6f, + 0x6f,0x58,0x6f,0x58,0x6f,0x2b,0x25,0x25,0x40,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x4f,0x25,0x22,0x2c,0x0a,0x22,0x26,0x24,0x23,0x23,0x23,0x23, + 0x23,0x23,0x23,0x24,0x26,0x26,0x25,0x23,0x23,0x23,0x23,0x23,0x23,0x23, + 0x24,0x26,0x22,0x2c,0x0a,0x22,0x2a,0x26,0x26,0x26,0x26,0x26,0x26,0x26, + 0x26,0x26,0x2a,0x2a,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x2a, + 0x22,0x2c,0x0a,0x22,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x26, + 0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x2a,0x22,0x2c, + 0x0a,0x22,0x2a,0x3d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2a,0x2a,0x2a, + 0x3d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x3d,0x2a,0x22,0x2c,0x0a,0x22, + 0x2a,0x3d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2d,0x2a,0x2a,0x26,0x3d,0x3d, + 0x2d,0x2d,0x2d,0x2d,0x2d,0x3d,0x3d,0x3d,0x22,0x2c,0x0a,0x22,0x26,0x26, + 0x26,0x26,0x26,0x26,0x26,0x26,0x26,0x25,0x26,0x26,0x26,0x26,0x26,0x26, + 0x26,0x26,0x26,0x26,0x26,0x2a,0x22,0x2c,0x0a,0x22,0x26,0x23,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x40,0x25,0x25,0x23,0x2b,0x2b,0x2b,0x2b,0x2b, + 0x2b,0x2b,0x23,0x25,0x22,0x2c,0x0a,0x22,0x25,0x4f,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x4f,0x24,0x25,0x4f,0x2e,0x2e,0x2e,0x20,0x2e,0x2e,0x2e, + 0x6f,0x24,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_disabled_left_xpm_len = 733; +static const unsigned char small_disabled_left_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x34,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x63,0x20,0x23, + 0x38,0x34,0x38,0x32,0x38,0x34,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20, + 0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x63,0x20,0x6e, + 0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c, + 0x73,0x20,0x2a,0x2f,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c, + 0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x2e,0x2e,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e, + 0x2e,0x20,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x6f,0x20, + 0x2e,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x2e,0x2e,0x2e,0x6f,0x6f,0x20,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c, + 0x0a,0x22,0x6f,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x20,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22, + 0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e, + 0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x20,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x2e,0x2e, + 0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x20,0x2e,0x2e,0x2e,0x6f, + 0x6f,0x20,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x20,0x2e,0x2e,0x2e,0x6f,0x20, + 0x2e,0x2e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f, + 0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x20,0x20,0x2e,0x2e,0x2e,0x20,0x2e,0x2e, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c, + 0x0a,0x22,0x6f,0x6f,0x6f,0x20,0x20,0x2e,0x2e,0x2e,0x2e,0x2e,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22, + 0x6f,0x6f,0x6f,0x6f,0x20,0x20,0x2e,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x20,0x20,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x20,0x20,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x20,0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_disabled_right_xpm_len = 733; +static const unsigned char small_disabled_right_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x32,0x32,0x20,0x32,0x32, + 0x20,0x34,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x47,0x72, + 0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x63,0x20,0x23, + 0x38,0x34,0x38,0x32,0x38,0x34,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20, + 0x47,0x72,0x61,0x79,0x30,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x63,0x20,0x6e, + 0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c, + 0x73,0x20,0x2a,0x2f,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c, + 0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x2e,0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e, + 0x2e,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x2e, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x2e,0x2e,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x20,0x2e,0x2e,0x2e,0x6f,0x6f, + 0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x20,0x6f,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f, + 0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x20,0x6f,0x6f,0x2e,0x2e,0x2e,0x6f,0x6f,0x22,0x2c, + 0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x20,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x6f,0x22,0x2c,0x0a,0x22, + 0x2e,0x2e,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e, + 0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x6f,0x6f,0x6f,0x6f, + 0x2e,0x2e,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x20,0x6f,0x6f,0x2e,0x2e,0x2e, + 0x20,0x20,0x22,0x2c,0x0a,0x22,0x6f,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x2e,0x2e,0x20,0x6f,0x2e,0x2e,0x2e,0x20,0x20,0x6f, + 0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x2e,0x2e,0x20,0x2e,0x2e,0x2e,0x20,0x20,0x6f,0x6f,0x22,0x2c, + 0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x20,0x20,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e, + 0x2e,0x2e,0x20,0x20,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x2e,0x20, + 0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x2e,0x2e,0x20,0x20,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x20,0x20,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x22,0x2c,0x0a,0x22,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int small_disabled_adjustsize_png_len = 659; +static const unsigned char small_disabled_adjustsize_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x02,0x1e,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xf8,0xff,0xff,0x3f,0x03,0x31,0xf8,0xfa, + 0xf5,0xeb,0xff,0x89,0x55,0x0b,0xc2,0x00,0x01,0xc4,0xc4,0x40,0x02,0x08, + 0x0a,0x0a,0xfa,0x4f,0xac,0x5a,0x80,0x00,0x22,0xc9,0x60,0x52,0x00,0x40, + 0x00,0x31,0x82,0x9c,0x8d,0x0f,0xdc,0xb8,0x71,0x03,0xae,0xe0,0xd4,0xa9, + 0x53,0x0c,0x1f,0x3e,0x7c,0x60,0xc8,0xcb,0xcb,0x63,0x24,0x64,0x30,0x40, + 0x00,0x11,0x34,0x18,0x04,0x4e,0x9f,0x3e,0xfd,0xff,0xc2,0x85,0x0b,0x0c, + 0x57,0xae,0x5c,0x61,0x78,0xfc,0xf8,0x31,0x58,0x6c,0xdd,0xba,0x75,0x78, + 0x0d,0x07,0x08,0x20,0xa2,0x82,0xc2,0xd4,0xd4,0x94,0xf1,0xc9,0x93,0x27, + 0x44,0x1b,0x0a,0x02,0x00,0x01,0x44,0x74,0x2c,0x83,0x70,0x60,0x60,0x20, + 0xd1,0x29,0x03,0x20,0x80,0x88,0x0a,0x0a,0x72,0x00,0x40,0x00,0xa1,0x04, + 0x05,0x72,0x44,0xc1,0x15,0x30,0x31,0xfd,0x97,0x96,0x96,0xfe,0x2f,0x29, + 0x29,0x09,0xc6,0x62,0x62,0x62,0xff,0x95,0x95,0x95,0xff,0x13,0xd2,0x07, + 0x10,0x40,0x2c,0xe8,0x02,0xa0,0x88,0x02,0x85,0x29,0x8c,0x0f,0x34,0x8c, + 0x61,0xda,0xb4,0x69,0x0c,0x0f,0x1f,0x3e,0x64,0xe0,0xe3,0xe3,0x63,0xf8, + 0xf9,0xf3,0x27,0xc3,0x91,0x23,0x47,0x18,0xf6,0xee,0xdd,0xfb,0xdf,0xd9, + 0xd9,0x99,0x11,0x66,0x28,0x28,0x8d,0x23,0x87,0x3d,0x40,0x00,0x31,0x81, + 0x24,0x60,0x18,0x24,0x00,0x8a,0xfd,0xfa,0xfa,0x7a,0xb8,0x0b,0xfe,0xfd, + 0xfb,0xc7,0xf0,0xe0,0xc1,0x03,0x86,0xa7,0x4f,0x9f,0x82,0xd9,0xbc,0xbc, + 0xbc,0x0c,0xfc,0xfc,0xfc,0x0c,0x0a,0x0a,0x0a,0x70,0x97,0xde,0xbd,0x7b, + 0x97,0xc1,0xcd,0xcd,0x8d,0x61,0xd1,0xa2,0x45,0xff,0x37,0x6d,0xda,0x04, + 0x16,0x03,0x08,0x20,0x16,0x0d,0x0d,0x0d,0x46,0x58,0x8e,0x0a,0x08,0x08, + 0x80,0x27,0x29,0x64,0x17,0x80,0x0c,0x02,0x19,0xa8,0xa4,0xa4,0x04,0x76, + 0x31,0x33,0x33,0x33,0xd8,0x52,0x90,0xde,0xed,0xdb,0xb7,0xff,0x3f,0x7f, + 0xfe,0x3c,0xc3,0xb9,0x73,0xe7,0xe0,0xbe,0x5e,0xb0,0x60,0xc1,0x7f,0x80, + 0x00,0x02,0x07,0x05,0xcc,0x80,0x49,0x93,0x26,0xfd,0x47,0x4f,0x52,0x7f, + 0xff,0xfe,0x65,0xf8,0xfe,0xfd,0x3b,0x03,0x0f,0x0f,0x0f,0xc3,0x8f,0x1f, + 0x3f,0x18,0x5e,0xbc,0x78,0xc1,0xf0,0xf1,0xe3,0x47,0xb8,0x21,0x9e,0x9e, + 0x9e,0x8c,0x27,0x4e,0x9c,0xf8,0x8f,0xac,0x07,0x04,0x00,0x02,0x08,0x25, + 0x8c,0x41,0x39,0xea,0xc0,0x81,0x03,0x28,0x61,0x05,0x72,0x29,0x28,0x4c, + 0x41,0xe1,0xcb,0xca,0xca,0x0a,0x36,0x14,0x64,0x38,0x32,0x68,0x6c,0x6c, + 0x64,0x44,0x2f,0x47,0x00,0x02,0x88,0xa8,0xe4,0x06,0x8a,0x28,0x50,0x98, + 0x22,0x03,0x45,0x45,0x45,0x50,0x8a,0xc1,0x99,0x51,0x00,0x02,0x88,0xe8, + 0xcc,0x41,0x6a,0xb1,0x09,0x10,0x40,0x44,0x65,0x69,0x58,0xec,0x83,0x22, + 0x8a,0x18,0xf5,0x20,0x00,0x10,0x40,0x04,0x0d,0x46,0x4e,0x52,0x67,0xcf, + 0x9e,0x45,0x49,0x8a,0xf8,0x00,0x40,0x00,0x11,0x15,0xc6,0xa0,0x88,0x01, + 0xa5,0xd3,0x5d,0xbb,0x76,0xc1,0xc5,0x08,0x15,0x44,0x00,0x01,0x44,0x74, + 0x98,0x2d,0x5c,0xb8,0xf0,0x3f,0x29,0x85,0x10,0x40,0x00,0x11,0x5d,0x83, + 0x08,0x08,0x08,0x10,0xab,0x14,0x0c,0x00,0x02,0x88,0x68,0x83,0xfd,0xfc, + 0xfc,0x08,0x97,0xc1,0x48,0x00,0x20,0xc0,0x00,0x03,0xf1,0xf0,0x41,0xde, + 0x11,0x65,0xed,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; + +static const unsigned int small_disabled_connecttool_png_len = 836; +static const unsigned char small_disabled_connecttool_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x02,0xcf,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0xd1,0xc4,0x54,0x20,0x00,0x08,0x20,0x9a,0x19,0x0c,0x10,0x40, + 0x34,0x33,0x18,0x20,0x80,0x68,0x66,0x30,0x40,0x00,0xb1,0xc0,0x6d,0x60, + 0x62,0xfa,0x2f,0x26,0x26,0x06,0x97,0xf8,0xf7,0xef,0x1f,0xc3,0xaf,0x5f, + 0xbf,0xc0,0x98,0x8d,0x8d,0x8d,0x81,0x85,0x85,0x85,0x81,0x99,0x99,0x99, + 0x81,0x91,0x91,0x11,0xc3,0x10,0x50,0x02,0x10,0x16,0x16,0x66,0x90,0x97, + 0x97,0x97,0xd9,0xbe,0x7d,0xfb,0x53,0x90,0x18,0x40,0x00,0x31,0x82,0x04, + 0x41,0x86,0x46,0x44,0x44,0x30,0x34,0x36,0x36,0x82,0x0d,0x04,0x89,0xfd, + 0xf9,0xf3,0x87,0xe1,0xdb,0xb7,0x6f,0x0c,0xfb,0xf6,0xed,0x63,0x38,0x71, + 0xe2,0x04,0x43,0x78,0x78,0x38,0x83,0x86,0x86,0x06,0x03,0x2b,0x2b,0x2b, + 0xd8,0x30,0x64,0x0b,0x40,0x6a,0x9f,0x3c,0x79,0xc2,0x30,0x6b,0xd6,0x2c, + 0x10,0xd7,0x64,0xe3,0xc6,0x8d,0x67,0x01,0x02,0x70,0x38,0x07,0x35,0x00, + 0xc4,0x20,0x14,0x44,0xff,0x5a,0xa8,0x04,0x34,0xac,0x88,0xba,0xaa,0x32, + 0x2c,0x60,0x80,0x6a,0x68,0x0f,0x5c,0x48,0x08,0x49,0x5b,0xce,0x93,0xbc, + 0xcc,0xed,0x5f,0xa1,0x63,0x0c,0xb8,0x3b,0x22,0xa2,0xe0,0x77,0xba,0xf7, + 0x86,0x99,0x41,0x55,0x21,0x22,0xe8,0xbd,0x83,0x88,0x0a,0x7d,0xf7,0x77, + 0xa8,0xe0,0xcc,0xc4,0x5a,0x0b,0x73,0x4e,0x30,0x33,0x5a,0x6b,0xff,0x11, + 0x40,0x8c,0xe2,0xe2,0xe2,0xff,0x0f,0x1c,0x38,0xc0,0xf0,0xe1,0xc3,0x07, + 0x86,0xd7,0xaf,0x5f,0x83,0x0d,0x02,0x29,0x84,0x05,0x07,0xc8,0x35,0x20, + 0xfa,0xd9,0xb3,0x67,0x0c,0xe7,0xcf,0x9f,0x67,0x30,0x32,0x32,0x62,0x90, + 0x96,0x96,0x06,0x07,0x0d,0x08,0xc3,0x82,0xe2,0xeb,0xd7,0xaf,0x0c,0xaf, + 0x5e,0xbd,0x02,0xfb,0xce,0xcd,0xcd,0x8d,0x01,0x20,0x80,0x98,0x60,0x36, + 0xfe,0xfc,0xf9,0x13,0xc5,0x50,0x68,0xb8,0x83,0x35,0x83,0x5c,0x08,0x74, + 0x00,0x83,0xae,0xae,0x2e,0xd8,0xe5,0x6f,0xde,0xbc,0x61,0x10,0x11,0x11, + 0x61,0x10,0x14,0x14,0x84,0x07,0x0d,0xcc,0x21,0x20,0xb5,0x26,0x26,0x26, + 0x0c,0x00,0x01,0xc4,0x04,0xb3,0x11,0x24,0x88,0x6c,0x28,0x0c,0x80,0x14, + 0x82,0xe4,0x40,0x2e,0xe2,0xe6,0xe6,0x66,0xd0,0xd6,0xd6,0x66,0x38,0x7e, + 0xfc,0x38,0x38,0x28,0x40,0x11,0x06,0x12,0x83,0x99,0x81,0x9c,0x8b,0x01, + 0x02,0x88,0x05,0xc3,0x24,0xb4,0xd8,0x06,0x85,0xf9,0x97,0x2f,0x5f,0xc0, + 0x41,0x05,0xb2,0x00,0xe6,0x42,0x29,0x29,0x29,0x30,0xcd,0xc9,0xc9,0x09, + 0x8e,0x0b,0x98,0x7a,0x10,0x00,0xa5,0x22,0x80,0x00,0xc2,0x69,0x30,0xcc, + 0xd0,0x4f,0x9f,0x3e,0x81,0x35,0x82,0x82,0x0a,0x14,0xa1,0x0f,0x1e,0x3c, + 0x60,0xa8,0xac,0xac,0x64,0xe0,0xe2,0xe2,0x02,0xfb,0x02,0x96,0x8a,0x60, + 0x34,0x4c,0x2f,0x40,0x00,0xb1,0x20,0xa7,0x57,0x6c,0x86,0x82,0x62,0x1b, + 0x94,0x5a,0x40,0x06,0x3f,0x7a,0xf4,0x88,0xa1,0xb8,0xb8,0x18,0x14,0xeb, + 0x60,0x3e,0xc8,0x60,0x90,0x1a,0x90,0x5a,0x50,0xd2,0x04,0xd1,0x20,0x00, + 0xa2,0x01,0x02,0x88,0x05,0xa4,0x08,0x94,0x4c,0x40,0x06,0x83,0x24,0x41, + 0x86,0x82,0xc2,0x1a,0xc4,0x06,0x69,0xfa,0xfe,0xfd,0x3b,0x38,0x28,0x5e, + 0xbc,0x78,0xc1,0x90,0x92,0x92,0xc2,0xc0,0xcf,0xcf,0x0f,0x8e,0x64,0x90, + 0x18,0x28,0xa5,0x80,0x82,0x08,0x16,0x54,0x20,0x33,0x60,0x49,0x10,0x20, + 0x80,0xc0,0x19,0xc4,0xdb,0xdb,0xfb,0xbf,0xb9,0xb9,0x39,0x58,0x10,0x64, + 0x1b,0xc8,0x17,0x20,0x1a,0x84,0x41,0xc1,0x00,0x72,0xb5,0xab,0xab,0x2b, + 0x83,0x8e,0x8e,0x0e,0xd8,0x90,0x97,0x2f,0x5f,0x32,0xbc,0x7d,0xfb,0x16, + 0x6c,0x39,0xc8,0x11,0x20,0x75,0x20,0x43,0xaf,0x5d,0xbb,0xc6,0xb0,0x6c, + 0xd9,0x32,0x30,0x1f,0x20,0x80,0x18,0x61,0xe1,0xe2,0xec,0xec,0xfc,0x1f, + 0x96,0x75,0x61,0x62,0x20,0x8b,0x60,0x2e,0x40,0x07,0xe8,0x61,0x0a,0x52, + 0xb7,0x70,0xe1,0x42,0x06,0x3e,0x3e,0x3e,0x50,0x8a,0x61,0x04,0x08,0x20, + 0x46,0xe4,0x24,0xd2,0xdf,0xdf,0xff,0xdf,0xcc,0xcc,0x0c,0xc5,0x00,0x50, + 0xa6,0x81,0x01,0x51,0x51,0x51,0x3c,0x69,0x88,0x81,0x41,0x55,0x55,0x95, + 0x01,0x58,0xde,0x80,0xf3,0x3a,0x40,0x00,0x31,0xd2,0xaa,0x06,0x01,0x08, + 0x20,0x9a,0x15,0x9b,0x00,0x01,0x44,0x33,0x83,0x01,0x02,0x88,0x66,0x06, + 0x03,0x04,0x18,0x00,0x71,0xa8,0xa9,0xb5,0x42,0xc3,0xb2,0xce,0x00,0x00, + 0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_editbreaklayout_png_len = 1126; +static const unsigned char small_disabled_editbreaklayout_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x03,0xf1,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xf8,0xff,0xff,0x3f,0x03,0x08,0x33,0x32, + 0x32,0xfe,0x37,0x34,0x34,0xfc,0x0f,0xe3,0x93,0x82,0xc5,0xc5,0xc5,0x31, + 0xf4,0x01,0x04,0x10,0x13,0x03,0x10,0x30,0x31,0x31,0xfd,0xf7,0xf1,0xf1, + 0x61,0xb0,0xb7,0xb7,0x67,0x70,0x70,0x70,0xf8,0xaf,0xac,0xac,0xfc,0x9f, + 0x81,0x08,0x00,0xd2,0x27,0x2b,0x2b,0xfb,0xdf,0xc0,0xc0,0x80,0x21,0x23, + 0x23,0x03,0x45,0x0f,0x40,0x00,0x36,0xe7,0xd8,0x06,0x60,0x10,0x06,0x80, + 0xe0,0xb3,0x01,0xb5,0x47,0x60,0x1d,0xc4,0x06,0xde,0xcf,0x85,0x57,0xa1, + 0x80,0x8a,0xc6,0x23,0xb8,0x46,0x51,0x52,0xa7,0x7f,0x9d,0xbe,0xbc,0xa7, + 0xbd,0x77,0xc6,0x18,0xac,0xb5,0xc8,0x4c,0xee,0xbd,0xec,0xbd,0x99,0x73, + 0x72,0xce,0x29,0x7f,0xa0,0x88,0xd0,0x5a,0x43,0x55,0xa9,0xb5,0x12,0x11, + 0xb8,0x3b,0x66,0xf6,0xf5,0x8f,0x00,0x1c,0x8e,0xb1,0x0d,0x00,0x31,0x08, + 0x03,0xfd,0xd2,0x83,0x44,0x8a,0x8c,0x90,0x05,0xd2,0x92,0x86,0x3e,0x63, + 0xa7,0xa5,0x61,0xa8,0xfc,0x43,0x67,0xc9,0x96,0xef,0xde,0x2c,0xd7,0x5a, + 0xa5,0x3f,0xe7,0x04,0x11,0xa1,0xb5,0x06,0x55,0xc5,0x39,0x07,0x66,0x76, + 0xdd,0xbd,0xc6,0x63,0x8c,0x9b,0xd0,0xbd,0x37,0x52,0x46,0x44,0xd0,0x7b, + 0x4f,0x10,0x98,0xb9,0xf2,0xff,0x75,0x23,0xe2,0xf9,0x04,0xe0,0x80,0x0c, + 0x8d,0x00,0x08,0x61,0x20,0x78,0xbc,0xc2,0x50,0x06,0x15,0x50,0x67,0x9a, + 0xa0,0x92,0x18,0x3c,0x2a,0x2e,0x86,0x1e,0x32,0x4c,0x14,0x4f,0xd0,0x77, + 0x62,0x77,0xbf,0x4b,0x95,0x5a,0x6b,0x10,0x91,0xa0,0x43,0x29,0x05,0x39, + 0x67,0xb8,0x7b,0x74,0x47,0xef,0x1d,0xaa,0xfa,0x34,0xd7,0x5a,0xe9,0xa6, + 0x42,0xad,0x15,0x66,0xf6,0xbe,0x7b,0x6f,0xcc,0x39,0x31,0xc6,0x00,0x11, + 0x81,0x99,0x63,0x3b,0xbf,0x00,0x62,0x04,0xb9,0x14,0x06,0x80,0x2e,0xfc, + 0x0f,0xb2,0x00,0x68,0x00,0x58,0x63,0x53,0x53,0x13,0x83,0x90,0x90,0x10, + 0xc8,0x45,0x28,0xc1,0xe1,0xec,0xec,0xfc,0x5f,0x41,0x41,0x81,0x41,0x44, + 0x44,0x84,0xe1,0xe3,0xc7,0x8f,0x0c,0x2d,0x2d,0x2d,0x60,0xd7,0x83,0x7c, + 0x03,0xb4,0x0c,0xac,0x16,0x20,0x80,0xb0,0xc6,0x32,0xd0,0xab,0xff,0x6f, + 0xdf,0xbe,0xfd,0xff,0xef,0xdf,0xbf,0x38,0x53,0x09,0x30,0x4e,0xc0,0x6a, + 0x80,0xae,0xfd,0x0f,0x8c,0x17,0x0c,0x75,0x00,0x01,0x04,0x67,0x80,0x22, + 0xd1,0xd1,0xd1,0x11,0xae,0x00,0x9b,0x62,0x74,0xbc,0x70,0xe1,0x42,0xb0, + 0x9a,0xce,0xce,0x4e,0x0c,0xb5,0x00,0x01,0x04,0x0e,0x0a,0x58,0x72,0xb3, + 0xb6,0xb6,0x66,0x38,0x7e,0xfc,0x38,0x03,0xd0,0x25,0x0c,0x57,0xaf,0x5e, + 0xc5,0x48,0x0d,0xe8,0x00,0x14,0x99,0x39,0x39,0x39,0x0c,0x3b,0x76,0xec, + 0x60,0x90,0x91,0x91,0x01,0xc5,0x07,0x5c,0x0f,0x40,0x00,0x81,0x93,0x5b, + 0x60,0x60,0x20,0x38,0x96,0x41,0x49,0x0c,0x14,0xb6,0x7f,0xfe,0xfc,0x61, + 0xb8,0x75,0xeb,0x16,0x38,0x42,0x1f,0x3c,0x78,0x80,0x35,0xb9,0x49,0x4a, + 0x4a,0x32,0xa8,0xab,0xab,0x33,0xc4,0xc6,0xc6,0x32,0xf0,0xf3,0xf3,0x83, + 0x93,0xdb,0xce,0x9d,0x3b,0x19,0xb6,0x6e,0xdd,0x0a,0x56,0x0f,0x10,0x80, + 0x63,0x32,0xc4,0x01,0x18,0x00,0x61,0x60,0x17,0x48,0x30,0xbc,0x06,0x85, + 0xc6,0xf3,0x66,0x2c,0xbf,0xda,0x56,0x5c,0xc5,0xa9,0xcb,0xf5,0x72,0x63, + 0x15,0x14,0xcf,0x2d,0x22,0x97,0x5b,0x44,0x60,0x66,0x90,0x99,0xef,0xee, + 0x1e,0xcc,0x33,0x90,0xab,0x2a,0x74,0x37,0xcc,0x0c,0xee,0x7e,0xf5,0xa8, + 0xea,0xed,0xff,0x2c,0xf4,0xfe,0x7c,0x02,0x08,0x9c,0xdc,0xcc,0xcd,0xcd, + 0xc1,0x99,0x03,0x96,0xdc,0x40,0x31,0xfc,0xeb,0xd7,0x2f,0xb0,0x86,0x25, + 0x4b,0x96,0xc0,0x93,0xdb,0xe3,0xc7,0x8f,0x19,0x6d,0x6d,0x6d,0x19,0x94, + 0x94,0x94,0xc0,0x19,0x09,0xe4,0x00,0x90,0x0f,0x2f,0x5e,0xbc,0xc8,0x70, + 0xea,0xd4,0x29,0x86,0xa9,0x53,0xa7,0x82,0x93,0x1d,0x28,0xb9,0x01,0x04, + 0x10,0x46,0x72,0xbb,0x74,0xe9,0x12,0x38,0xb9,0x7d,0xfb,0xf6,0x8d,0xa1, + 0xb5,0xb5,0x15,0x6b,0x72,0xb3,0xb3,0xb3,0xfb,0x0f,0x0c,0x5f,0x06,0x41, + 0x41,0x41,0x86,0xcf,0x9f,0x3f,0x33,0xf4,0xf4,0xf4,0x60,0x24,0x37,0x80, + 0x00,0xc2,0x1a,0xdb,0xa0,0x74,0x4a,0x28,0xb9,0xf9,0xf9,0xf9,0xe1,0x4d, + 0x6e,0x00,0x01,0x84,0x92,0xdc,0x40,0x05,0x10,0x39,0xc9,0xad,0xae,0xae, + 0x0e,0x43,0x2d,0x40,0x00,0xc1,0x93,0x9b,0x97,0x97,0x17,0x28,0xa2,0x18, + 0x4e,0x9e,0x3c,0xc9,0x70,0xe7,0xce,0x1d,0x86,0xeb,0xd7,0xaf,0x13,0x4c, + 0x6e,0xa0,0xc8,0x4c,0x4f,0x4f,0x07,0xa7,0x06,0x50,0x2a,0x59,0xb5,0x6a, + 0x15,0x5c,0x0f,0x40,0x00,0x81,0x93,0x9b,0xbf,0xbf,0x3f,0x43,0x40,0x40, + 0x00,0x4a,0x72,0x03,0xa5,0x65,0x50,0x84,0x82,0xca,0x07,0x6c,0xc9,0x0d, + 0x58,0x06,0x33,0x00,0x8b,0x57,0x86,0xb0,0xb0,0x30,0x78,0x72,0x03,0x95, + 0x13,0xbb,0x77,0xef,0x06,0xab,0x07,0x08,0xc0,0x41,0x19,0x1a,0x01,0x10, + 0x84,0x30,0x30,0x37,0xf3,0x8e,0x46,0x30,0x50,0x01,0x9a,0xc6,0xb1,0x38, + 0x0a,0xba,0xbf,0xe0,0x22,0xa2,0x32,0x9b,0xfd,0x54,0x15,0x4f,0xf0,0x78, + 0x7b,0x82,0x99,0xb8,0x51,0x42,0xee,0x8e,0xaa,0xa2,0xe5,0x6e,0x77,0x6f, + 0xf9,0x9d,0x60,0x71,0x8b,0x08,0x64,0xe6,0xf6,0x88,0x18,0xed,0x46,0x2b, + 0x8a,0x08,0xcc,0xec,0xce,0xcc,0xf9,0x05,0xe0,0xa1,0x0c,0x8e,0x00,0x80, + 0x21,0x20,0x78,0x49,0x23,0xba,0x50,0xad,0x02,0x54,0xa3,0xa6,0xdc,0x7a, + 0xc4,0x97,0x31,0x8c,0x5d,0xd7,0x12,0x1c,0x8c,0x43,0x08,0xcb,0xb0,0x49, + 0x2e,0xcc,0x77,0x23,0xba,0xfb,0xe3,0xe6,0xa9,0x4e,0x66,0x2a,0x22,0x96, + 0x1a,0xea,0xd8,0xd0,0x8d,0x34,0x33,0xaa,0x2a,0x99,0xf9,0xc5,0xed,0x09, + 0x20,0x8c,0xe4,0xb6,0x6b,0xd7,0x2e,0x86,0x4f,0x9f,0x3e,0x81,0x8b,0x43, + 0x50,0x32,0xc2,0x96,0xdc,0x40,0x99,0x46,0x5a,0x5a,0x1a,0x9e,0xdc,0x40, + 0xe9,0x17,0x3d,0xb9,0x01,0x04,0x10,0xd6,0xd8,0x06,0xe6,0x3a,0x82,0xc9, + 0x0d,0x18,0x54,0x60,0x35,0xa0,0xd4,0x03,0x74,0x08,0x86,0x3a,0x80,0x00, + 0xc2,0x99,0x94,0x80,0x29,0x83,0x60,0x72,0xc3,0xa7,0x06,0x20,0xc0,0x00, + 0xb7,0x9e,0x55,0xda,0x49,0xd3,0x2b,0x6a,0x00,0x00,0x00,0x00,0x49,0x45, + 0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_editcopy_png_len = 931; +static const unsigned char small_disabled_editcopy_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x03,0x2e,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0x64,0x64,0x64,0xfc,0x2f,0x24,0x24,0xc4, + 0x00,0x02,0xff,0xff,0xff,0x67,0x80,0x01,0x10,0x5b,0x4a,0x4a,0x8a,0xe1, + 0xca,0x95,0x2b,0x8c,0x0c,0x64,0x00,0x80,0x00,0x62,0x14,0x16,0x16,0xfe, + 0x7f,0xf6,0xec,0x59,0xb8,0x61,0xc8,0x78,0xf1,0xe2,0xc5,0x0c,0x8f,0x1e, + 0x3d,0x62,0x98,0x37,0x6f,0x1e,0xc9,0x86,0x03,0x04,0x10,0x13,0xb2,0x0b, + 0xd1,0x31,0x27,0x27,0x27,0x43,0x70,0x70,0x30,0x43,0x74,0x74,0xf4,0x7f, + 0x7c,0x86,0x60,0x03,0x00,0x01,0xc4,0x02,0x33,0x64,0xd7,0xae,0x5d,0x0c, + 0x7f,0xff,0xfe,0x05,0x63,0x0d,0x0d,0x0d,0x06,0x79,0x79,0x79,0xb0,0x38, + 0x3f,0x3f,0x3f,0x83,0xaf,0xaf,0x2f,0xc8,0x82,0xff,0x6b,0xd7,0xae,0x25, + 0xda,0xe5,0x00,0x01,0xc4,0x08,0x0c,0x5f,0x70,0x50,0xa0,0xbb,0x16,0x64, + 0xc1,0xba,0x75,0xeb,0x18,0xbe,0x7d,0xfb,0xc6,0xf0,0xfd,0xfb,0x77,0x86, + 0x77,0xef,0xde,0x31,0xbc,0x7a,0xf5,0x8a,0x61,0xcb,0x96,0x2d,0x44,0x19, + 0x0e,0x10,0x40,0x60,0x83,0xcf,0x9c,0x39,0xc3,0xb0,0x63,0xc7,0x0e,0xb8, + 0x8b,0x35,0x35,0x35,0xc1,0x2e,0xfe,0xf8,0xf1,0x23,0xc3,0xdb,0xb7,0x6f, + 0xc1,0x06,0xbe,0x7f,0xff,0x9e,0xe1,0xc4,0x89,0x13,0x0c,0x6e,0x6e,0x6e, + 0x0c,0x49,0x49,0x49,0x04,0x0d,0x07,0x08,0x20,0xb8,0xc1,0x30,0x97,0x82, + 0x00,0xcc,0xc5,0x5f,0xbf,0x7e,0x65,0xf8,0xf0,0xe1,0x03,0x83,0x8b,0x8b, + 0x0b,0x83,0xa8,0xa8,0x28,0x5c,0x0e,0x19,0x28,0x28,0x28,0x30,0x9c,0x3a, + 0x75,0x0a,0xc3,0x22,0x80,0x00,0x62,0x81,0x31,0xb6,0x6f,0xdf,0x0e,0x36, + 0xec,0xdf,0xbf,0x7f,0x60,0x0c,0x62,0xff,0xfc,0xf9,0x13,0x6c,0x38,0xc8, + 0xd0,0xab,0x57,0xaf,0xc2,0x35,0x21,0x3b,0x62,0xc3,0x86,0x0d,0x0c,0x65, + 0x65,0x65,0xff,0xbb,0xba,0xba,0x50,0x0c,0x07,0x08,0x20,0x16,0x98,0x42, + 0x0f,0x0f,0x0f,0xb0,0x81,0x20,0xc3,0x40,0x86,0xfe,0xfe,0xfd,0x1b,0x6c, + 0x28,0x28,0x6c,0x81,0xc9,0x0d,0xc5,0x50,0x64,0x36,0x0f,0x0f,0x0f,0x83, + 0x97,0x97,0x17,0x43,0x5e,0x5e,0xde,0xff,0x49,0x93,0x26,0xc1,0x0d,0x07, + 0x08,0x20,0x70,0xaa,0x00,0x19,0x08,0x8c,0x71,0x86,0x5f,0xbf,0x7e,0x81, + 0x0d,0x44,0x76,0x31,0x28,0xf2,0x60,0x86,0xc1,0x52,0x0e,0x48,0x5e,0x4d, + 0x4d,0x8d,0x41,0x51,0x51,0x11,0xcc,0x16,0x10,0x10,0x00,0x07,0x57,0x6a, + 0x6a,0xea,0xff,0xd9,0xb3,0x67,0x83,0x0d,0x07,0x08,0x20,0xb0,0x8b,0x3f, + 0x7d,0xfa,0xc4,0x60,0x61,0x61,0xc1,0xf0,0xe5,0xcb,0x17,0xb0,0x61,0x20, + 0x0b,0xfe,0xfc,0xf9,0xc3,0xf0,0xe3,0xc7,0x0f,0x86,0xcf,0x9f,0x3f,0xc3, + 0x5d,0xe7,0xea,0xea,0x8a,0x12,0x0f,0x20,0x35,0x20,0xfa,0xf8,0xf1,0xe3, + 0x60,0x07,0x80,0x72,0x70,0x4c,0x4c,0xcc,0xff,0x25,0x4b,0x96,0x30,0x02, + 0x04,0x10,0x8b,0xb8,0xb8,0x38,0xc3,0xdd,0xbb,0x77,0x19,0x98,0x99,0x99, + 0xc1,0x06,0x83,0x92,0x16,0xc8,0xd5,0x20,0x0c,0xb2,0x04,0xc4,0x87,0x01, + 0x58,0xca,0x01,0xb9,0x12,0x96,0xd6,0x8d,0x8d,0x8d,0x19,0xde,0xbc,0x79, + 0xc3,0xf0,0xe2,0xc5,0x0b,0x70,0xb0,0x80,0x1c,0x02,0x54,0xf7,0x1f,0x20, + 0x80,0x58,0xae,0x5f,0xbf,0xce,0x18,0x12,0x12,0xf2,0x9f,0x8b,0x8b,0x8b, + 0x81,0x89,0x89,0x09,0xee,0x5a,0x58,0x70,0x80,0xd8,0x30,0xe0,0xee,0xee, + 0x8e,0x12,0xce,0x20,0x39,0x16,0x16,0x16,0x06,0x76,0x76,0x76,0x06,0x6e, + 0x6e,0x6e,0xb0,0x0f,0x59,0x59,0x59,0x19,0x94,0x94,0x94,0x18,0x00,0x02, + 0x08,0x1c,0x14,0x6b,0xd6,0xac,0x61,0x04,0x46,0xd0,0x7f,0x7d,0x7d,0x7d, + 0xf4,0x54,0x03,0x06,0x9e,0x9e,0x9e,0xf0,0x94,0x03,0x4b,0x35,0x30,0x8b, + 0x41,0x86,0x81,0x7c,0x2a,0x28,0x28,0xc8,0xc0,0xc6,0xc6,0x06,0x76,0x18, + 0x08,0x00,0x04,0x10,0x3c,0xb9,0x11,0x48,0xf4,0xff,0x41,0xae,0x04,0x59, + 0x00,0x4b,0x39,0x20,0xd7,0x82,0x82,0x0b,0x64,0x28,0x28,0xe5,0x80,0x82, + 0x03,0x84,0x61,0x06,0x03,0x04,0x10,0x0b,0x1e,0xc3,0xd0,0x4d,0x06,0xa7, + 0x1c,0x90,0xa1,0x20,0x03,0x61,0xb9,0x14,0xe4,0x62,0x50,0xb2,0x04,0x95, + 0x29,0xa0,0x20,0x01,0xc9,0x81,0x00,0x40,0x00,0x11,0x65,0x30,0xc8,0x50, + 0x50,0xf6,0x36,0x37,0x37,0x07,0x47,0x0e,0xc8,0x30,0x58,0x5c,0x80,0x22, + 0x17,0x94,0xaa,0x40,0x18,0x64,0x01,0xc8,0x32,0x10,0x00,0x08,0x20,0xa2, + 0x0c,0x96,0x95,0x95,0x65,0xb8,0x7d,0xfb,0x36,0x38,0xe5,0x80,0x0c,0x86, + 0xa5,0x1c,0x90,0xe1,0xb0,0x94,0x03,0x13,0x03,0x56,0x1c,0x60,0x3d,0x00, + 0x01,0xc4,0x88,0x9e,0xf7,0x71,0x81,0xb4,0xb4,0xb4,0xff,0xa0,0xe4,0x04, + 0x4a,0x39,0x20,0x17,0xc3,0x52,0x0e,0xc8,0x30,0x18,0x1b,0x64,0x28,0x28, + 0x97,0x82,0xe4,0x01,0x02,0x88,0x68,0x83,0x41,0x00,0x94,0x3e,0x41,0x49, + 0x09,0x1f,0x90,0x90,0x90,0x60,0xe0,0xe3,0xe3,0x63,0x04,0x08,0x20,0x92, + 0x0c,0x26,0x05,0x00,0x04,0x10,0x13,0x61,0x25,0xe4,0x01,0x80,0x00,0x03, + 0x00,0xdb,0xac,0x42,0x6a,0x5e,0x37,0x98,0xca,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_editgrid_png_len = 735; +static const unsigned char small_disabled_editgrid_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x02,0x6a,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x2e,0xe7,0xd0,0x06,0x00,0x18,0x04,0xa2,0x28,0x25,0xb5,0x04,0x0b, + 0xfb,0x6f,0x05,0x61,0x14,0x68,0x03,0xa2,0xa2,0xe2,0xbe,0x79,0xe6,0x76, + 0x07,0x11,0x8f,0xaa,0x42,0x55,0xcd,0x98,0x19,0xcc,0x6c,0xfd,0x96,0x99, + 0x63,0xee,0xfe,0x4c,0x44,0xa0,0xcf,0xb5,0x11,0x11,0x44,0xc4,0xd8,0x15, + 0x40,0x60,0x83,0x41,0x1a,0x67,0xce,0x9c,0xc9,0xf0,0xfe,0xfd,0x7b,0xb0, + 0x01,0x47,0x8e,0x1c,0x61,0xd8,0xbb,0x77,0xef,0x7f,0x67,0x67,0x67,0x46, + 0x90,0xdc,0xd4,0xa9,0x53,0xe1,0x72,0x47,0x8f,0x1e,0x45,0x91,0xeb,0xef, + 0xef,0x87,0xcb,0x1d,0x3f,0x7e,0x1c,0x2e,0x07,0x10,0x40,0x60,0x83,0x41, + 0x82,0x20,0x49,0x4e,0x4e,0x4e,0x06,0x01,0x01,0x01,0x06,0x11,0x11,0x11, + 0x06,0x05,0x05,0x05,0xb0,0x97,0x40,0xae,0x01,0xc9,0x71,0x70,0x70,0x80, + 0x5d,0x2b,0x2c,0x2c,0x0c,0x97,0x83,0xe9,0x83,0xc9,0x09,0x0a,0x0a,0xc2, + 0xe5,0x00,0x02,0x88,0x09,0xa6,0x00,0x16,0x04,0xcc,0xcc,0xcc,0x60,0x6f, + 0xc1,0x00,0x88,0x4d,0x8c,0x1c,0x8c,0x0f,0x03,0x00,0x01,0xa8,0xa0,0x63, + 0x1b,0x00,0x80,0x10,0x06,0x62,0xfb,0x0f,0x9a,0xb0,0xc6,0xcb,0x5f,0x20, + 0x51,0x9b,0xe2,0xc2,0x2f,0x06,0xe6,0x2b,0x85,0x49,0xf6,0xc0,0xdf,0xcc, + 0x57,0xca,0xda,0x1e,0x33,0x5f,0x29,0x9b,0x99,0xb5,0x27,0x80,0x18,0x61, + 0xa9,0x02,0x14,0x36,0x30,0x6f,0x80,0x80,0xa2,0xa2,0x22,0x28,0x72,0x18, + 0xc9,0x95,0x03,0x08,0x20,0x46,0x5a,0x25,0x37,0x80,0x00,0x42,0x49,0x6e, + 0xc8,0xc9,0xe6,0xce,0x9d,0x3b,0x58,0x93,0x1b,0x72,0x92,0x82,0x25,0x37, + 0x98,0x1c,0x17,0x17,0x17,0xc3,0xc3,0x87,0x0f,0xc1,0x72,0x00,0x01,0x04, + 0x4f,0x6e,0xa0,0x24,0xf5,0xee,0xdd,0x3b,0xbc,0x49,0x0a,0xa4,0x19,0x39, + 0x49,0x81,0x0c,0x6d,0x69,0x69,0x81,0xcb,0x9d,0x3e,0x7d,0x1a,0x2e,0x07, + 0x10,0x40,0xf0,0xe4,0x06,0x32,0x14,0x96,0x6c,0x90,0x93,0x1b,0xba,0x9c, + 0x90,0x90,0x10,0x86,0x1c,0x3b,0x3b,0x3b,0x03,0x0f,0x0f,0x0f,0x38,0xa9, + 0xc2,0xe4,0x00,0x02,0x08,0x9c,0xdc,0x88,0x4d,0x52,0x8c,0x8c,0x8c,0x28, + 0x72,0x7f,0xfe,0xfc,0x01,0xcb,0x81,0x0c,0x45,0x97,0x03,0x08,0x20,0x78, + 0x72,0x03,0x79,0x1f,0x96,0xdc,0x90,0x93,0x14,0x48,0x13,0xc8,0xfb,0x20, + 0x97,0x62,0x93,0x03,0x79,0x1f,0xe4,0x52,0x90,0xdc,0xcb,0x97,0x2f,0xe1, + 0x72,0x00,0x01,0x44,0xb3,0xe4,0x06,0x10,0x40,0x34,0x4b,0x6e,0x00,0x01, + 0x84,0x51,0xba,0x81,0xbc,0x04,0xf2,0xe2,0xbd,0x7b,0xf7,0x30,0x92,0x14, + 0x28,0x4c,0x41,0x72,0x0f,0x1e,0x3c,0x80,0xcb,0x89,0x8b,0x8b,0xc3,0xe5, + 0x40,0xc9,0xed,0xf1,0xe3,0xc7,0x60,0x39,0x80,0x00,0x02,0x1b,0x0c,0xd2, + 0xd8,0xd7,0xd7,0x07,0x2f,0xa5,0x8e,0x1d,0x3b,0x86,0x92,0xa4,0x9a,0x9b, + 0x9b,0xe1,0x72,0xa7,0x4e,0x9d,0x82,0xcb,0x81,0x0c,0x2d,0x2b,0x2b,0x63, + 0xf8,0xf8,0xf1,0x23,0x58,0xee,0xc2,0x85,0x0b,0x70,0x39,0x80,0x00,0x42, + 0x29,0xdd,0x40,0x49,0x8a,0x8f,0x8f,0x0f,0xa3,0x04,0x83,0x25,0x37,0x6e, + 0x6e,0x6e,0x94,0x12,0x0c,0x24,0x07,0x32,0x94,0x8d,0x8d,0x0d,0x2c,0x07, + 0x4a,0x04,0x30,0x39,0x80,0x00,0x42,0x49,0x6e,0x20,0x43,0x41,0xc9,0x06, + 0xe4,0x2d,0x18,0x80,0x25,0x29,0x90,0x46,0x5c,0xc9,0x0d,0x24,0x07,0x0c, + 0x16,0x30,0x1b,0x06,0x00,0x02,0x08,0xec,0x62,0x90,0x81,0x20,0xef,0xc3, + 0x92,0x14,0x72,0x29,0x05,0xd2,0x04,0x4a,0x52,0xb0,0x12,0x0c,0x39,0x49, + 0x81,0xc2,0x14,0xe4,0x7d,0x90,0x4b,0x41,0x86,0xbe,0x7e,0xfd,0x1a,0x2e, + 0x07,0x10,0x40,0x34,0x4b,0x6e,0x00,0x01,0x44,0xb3,0xe4,0x06,0x10,0x60, + 0x00,0xd8,0x8f,0xea,0x4f,0x23,0xea,0x8f,0x33,0x00,0x00,0x00,0x00,0x49, + 0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_edithlayout_png_len = 601; +static const unsigned char small_disabled_edithlayout_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x01,0xe4,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0xd1,0xc4,0x54,0x20,0x00,0x08,0x20,0x9a,0x19,0x0c,0x10,0x40, + 0x34,0x33,0x18,0x20,0x80,0x68,0x66,0x30,0x40,0x00,0xd1,0xcc,0x60,0x80, + 0x00,0xa2,0x99,0xc1,0x00,0x01,0x98,0xa4,0x63,0x14,0x80,0x81,0x10,0x0a, + 0xa2,0x3f,0x4b,0xba,0x05,0x2d,0xc5,0xfb,0xdf,0x4a,0xac,0x3c,0x87,0xba, + 0x21,0x16,0x21,0xf5,0x83,0xa9,0xe6,0x9e,0xfa,0x5a,0x47,0x55,0xf1,0xae, + 0x57,0x55,0x60,0x66,0x98,0xd9,0xf5,0xb7,0xee,0x1e,0x23,0x22,0xb8,0xfb, + 0x67,0x22,0x32,0x96,0x99,0xd8,0x7b,0x23,0x22,0xc6,0x1e,0x01,0x78,0x98, + 0x63,0x23,0x00,0x60,0x08,0x80,0xa2,0xb2,0x85,0x7d,0xec,0x65,0x0b,0x8d, + 0x5d,0x54,0xb4,0x46,0x71,0x46,0x48,0x8e,0x22,0xf5,0xbb,0xff,0x77,0x3c, + 0xa1,0xaa,0x42,0x77,0xef,0xdc,0xdd,0xc1,0xcc,0x2e,0x11,0x9d,0x31,0x11, + 0x81,0xaa,0xda,0x41,0x44,0x7c,0x43,0x44,0x60,0xe6,0xb5,0x19,0x67,0xe6, + 0xb7,0x27,0x00,0x0f,0x64,0x74,0x03,0x00,0x10,0xc1,0xd0,0xce,0x80,0x01, + 0xec,0xbf,0x95,0x98,0x01,0xbf,0x77,0x24,0x7c,0xbf,0xa4,0xaf,0xed,0x5c, + 0xd1,0x61,0xdf,0x84,0xaa,0x02,0x33,0x43,0x44,0xa0,0xaa,0x58,0x66,0x66, + 0xc8,0xcc,0x59,0x42,0x44,0xc7,0x5a,0xe4,0xee,0x88,0x88,0x69,0xdb,0x7c, + 0xd9,0x13,0x40,0x2c,0x30,0xcd,0xac,0xac,0xac,0x60,0x43,0x41,0x18,0xa4, + 0x08,0x19,0x30,0x33,0x33,0xc3,0x0d,0x65,0x67,0x67,0xc7,0x08,0x4f,0x1e, + 0x1e,0x1e,0xb0,0x3e,0x36,0x36,0x36,0xb8,0x18,0x40,0x00,0xa1,0x44,0x1e, + 0xc8,0x02,0x10,0x06,0xb9,0x04,0x19,0x80,0xf8,0x20,0x71,0x90,0x77,0x41, + 0x18,0x19,0x80,0xc2,0x1d,0x24,0x8f,0xae,0x07,0x20,0x80,0xe0,0x06,0x83, + 0x5c,0x09,0x72,0x11,0xc8,0x75,0xc8,0xe5,0x07,0x88,0xcd,0xc9,0xc9,0x09, + 0x76,0x15,0x23,0x23,0x23,0xd8,0x20,0x64,0x39,0x90,0x0f,0x40,0x7a,0x39, + 0x38,0x38,0x50,0x0c,0x06,0x08,0x20,0x16,0x98,0x8b,0x7e,0xfd,0xfa,0x05, + 0xc6,0x20,0x17,0x7d,0xfa,0xf4,0x09,0xc5,0x45,0xa0,0xb0,0x07,0x61,0x50, + 0x58,0x7e,0xfc,0xf8,0x11,0x2e,0xf7,0xfb,0xf7,0x6f,0x86,0x9f,0x3f,0x7f, + 0x82,0xd5,0xbc,0x7a,0xf5,0x0a,0x1c,0x0f,0x30,0x00,0x10,0x40,0x60,0x83, + 0x41,0x49,0x08,0x94,0x12,0x40,0xe1,0x04,0x52,0xf4,0xf4,0xe9,0x53,0xb8, + 0x02,0x90,0x6b,0x8e,0x1d,0x3b,0x06,0x0e,0x63,0x90,0x41,0x2f,0x5e,0xbc, + 0x80,0xcb,0x81,0x7c,0x72,0xf9,0xf2,0x65,0x06,0x01,0x01,0x01,0xb0,0xe3, + 0xde,0xbc,0x79,0x03,0x97,0x03,0x08,0x20,0x46,0x98,0xb7,0x41,0xc9,0x04, + 0x16,0xa3,0x20,0xa0,0xa8,0xa8,0x08,0x4a,0xa7,0x8c,0xe4,0xca,0x01,0x04, + 0x10,0x23,0xad,0xca,0x63,0x80,0x00,0xa2,0x59,0x96,0x06,0x08,0x20,0x9a, + 0x19,0x0c,0x10,0x40,0x34,0x33,0x18,0x20,0x80,0x68,0x66,0x30,0x40,0x00, + 0xd1,0xcc,0x60,0x80,0x00,0x03,0x00,0x1a,0x11,0xec,0xf2,0x8a,0xf2,0x73, + 0x35,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_edithlayoutsplit_png_len = 754; +static const unsigned char small_disabled_edithlayoutsplit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x02,0x7d,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0xb1,0xe0,0x93,0x64,0x62,0x62,0xfa,0x2f,0x29,0x29,0xc9,0x00,0xb2, + 0x1c,0xd9,0x01,0xff,0xfe,0xfd,0x63,0xe0,0xe3,0xe3,0x63,0xb8,0x7d,0xfb, + 0x36,0x23,0x2e,0xbd,0x00,0x01,0x84,0xd7,0x60,0x90,0xa1,0xb3,0x66,0xcd, + 0x62,0x78,0xf4,0xe8,0x11,0x03,0x2b,0x2b,0x2b,0x58,0x8c,0x9b,0x9b,0x9b, + 0xe1,0xd7,0xaf,0x5f,0x0c,0x87,0x0f,0x1f,0x66,0xd8,0xbb,0x77,0xef,0x7f, + 0x67,0x67,0x67,0xac,0x86,0x03,0x04,0x10,0x5e,0x83,0x41,0xae,0x7c,0xff, + 0xfe,0x3d,0x03,0x0b,0x0b,0x0b,0x83,0xb0,0xb0,0x30,0x98,0x2f,0x24,0x24, + 0x04,0x36,0x18,0xc4,0x57,0x50,0x50,0xc0,0xa9,0x17,0x20,0x80,0xf0,0x1a, + 0xfc,0xf7,0xef,0x5f,0xb0,0x61,0xd2,0xd2,0xd2,0x0c,0xc6,0xc6,0xc6,0x0c, + 0xf7,0xef,0xdf,0x67,0x60,0x66,0x66,0x66,0xf8,0xf3,0xe7,0x0f,0x58,0x0e, + 0x1f,0x00,0x08,0x20,0x26,0x7c,0x92,0xa0,0x70,0x04,0x79,0xd9,0xde,0xde, + 0x1e,0x1c,0xae,0x1c,0x1c,0x1c,0x0c,0xdb,0xb7,0x6f,0x67,0xd8,0xb1,0x63, + 0x07,0xc3,0xd3,0xa7,0x4f,0xf1,0x1a,0x0c,0x10,0x40,0x8c,0x84,0x52,0x05, + 0x30,0x28,0xfe,0x7f,0xff,0xfe,0x1d,0x1c,0x24,0x77,0xef,0xde,0x65,0xf8, + 0xf8,0xf1,0x23,0x83,0x95,0x95,0x15,0x58,0x4e,0x51,0x51,0x11,0x14,0xc1, + 0x58,0xc3,0x18,0x20,0x80,0xf0,0x1a,0xfc,0xf8,0xf1,0xe3,0xff,0x3f,0x7e, + 0xfc,0x60,0xf8,0xf0,0xe1,0x03,0xc3,0x83,0x07,0x0f,0x18,0x9e,0x3c,0x79, + 0xc2,0x00,0xb2,0x84,0x9f,0x9f,0x9f,0x21,0x3b,0x3b,0x1b,0x67,0x8a,0x00, + 0x01,0x80,0x00,0x22,0xe8,0xe2,0xa0,0xa0,0x20,0xb0,0x82,0xf8,0xf8,0x78, + 0x86,0x85,0x0b,0x17,0xa2,0xc8,0xad,0x5b,0xb7,0x0e,0xa7,0xe1,0x00,0x01, + 0x04,0x4f,0xa3,0x84,0xf0,0xc5,0x8b,0x17,0xff,0x07,0x06,0x06,0xfe,0x27, + 0x56,0x3d,0x40,0x00,0x1a,0xe9,0xd8,0x06,0x00,0x18,0x84,0x81,0xa0,0x2b, + 0x2a,0xe6,0x62,0x5e,0x96,0xa3,0x40,0x14,0x04,0x5b,0x0a,0x1b,0xe0,0x3f, + 0xa9,0xb8,0xda,0x3b,0x33,0xe8,0x6e,0xd5,0x66,0xf9,0xdb,0x4e,0x76,0xcd, + 0x0c,0x99,0x89,0xf3,0x0a,0x77,0x97,0x5d,0x46,0xfd,0xae,0x79,0x0c,0xcb, + 0x89,0xaa,0x0a,0x11,0xa1,0x2f,0x9e,0x00,0x82,0x07,0x05,0xcc,0xcb,0xb8, + 0x40,0x5d,0x5d,0x1d,0x43,0x53,0x53,0x13,0xde,0x60,0x43,0x0e,0x22,0x80, + 0x00,0x22,0x3a,0x28,0x40,0xbe,0x22,0x25,0x28,0x00,0x02,0x08,0x6f,0xe4, + 0xbd,0x7a,0xf5,0xea,0x3f,0xc8,0xcb,0x20,0xaf,0x7e,0xf9,0xf2,0x85,0xe1, + 0xe5,0xcb,0x97,0x0c,0xcf,0x9e,0x3d,0x63,0xf8,0xf6,0xed,0x1b,0x43,0x54, + 0x54,0x14,0xde,0x54,0x01,0x10,0x40,0x04,0x53,0x05,0x30,0xed,0xfe,0x07, + 0x85,0xfb,0xf3,0xe7,0xcf,0x19,0xae,0x5f,0xbf,0x0e,0xa6,0x2f,0x5f,0xbe, + 0x8c,0xf0,0x32,0x0e,0x00,0x10,0x40,0x04,0x4b,0x37,0x71,0x71,0x71,0x86, + 0x99,0x33,0x67,0x82,0x33,0xc7,0xbd,0x7b,0xf7,0xc0,0x85,0x12,0xc8,0x31, + 0x62,0x62,0x62,0x78,0x1d,0x04,0x10,0x40,0x78,0xb3,0x34,0xc8,0xd0,0xfa, + 0xfa,0x7a,0x86,0x93,0x27,0x4f,0x32,0x80,0x32,0xca,0xae,0x5d,0xbb,0x18, + 0x94,0x94,0x94,0x18,0x8a,0x8a,0x8a,0x18,0xf4,0xf5,0xf5,0xc1,0x29,0x04, + 0x97,0x5e,0x80,0x00,0xc2,0xeb,0x62,0x50,0xd8,0xbe,0x7d,0xfb,0x16,0x91, + 0x36,0x81,0xa5,0x5c,0x4a,0x4a,0x0a,0x38,0x49,0x0a,0x08,0x08,0xe0,0x2d, + 0xdd,0x00,0x02,0x08,0xaf,0xc1,0xa0,0x52,0x0c,0x84,0x41,0x45,0x25,0xa8, + 0x98,0x04,0xb9,0x14,0x54,0x10,0x01,0x23,0x15,0x6c,0x29,0x3e,0x00,0x10, + 0x40,0x78,0x0d,0x06,0x15,0xea,0x67,0xcf,0x9e,0x05,0x97,0x0d,0xa0,0x8c, + 0x02,0x03,0xa0,0x54,0xf1,0xe6,0xcd,0x1b,0xbc,0x06,0x03,0x04,0x10,0xc1, + 0x54,0x01,0x0a,0x47,0x5c,0x5e,0xc6,0x57,0xba,0x01,0x04,0x10,0x41,0x83, + 0xc9,0x05,0x00,0x01,0x06,0x00,0x15,0xce,0x9c,0x41,0x6d,0xbf,0xbf,0x0b, + 0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_editpaste_png_len = 901; +static const unsigned char small_disabled_editpaste_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x03,0x10,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0x11,0x52,0xc0,0xc8,0xc8,0xf8,0x9f,0x8f,0x8f,0xef,0xbf,0x92, + 0x92,0x12,0x49,0x2e,0x00,0x08,0x20,0x46,0x7c,0x2e,0x06,0x19,0xea,0xe5, + 0xe5,0xc5,0x90,0x92,0x92,0xc2,0xf0,0xf8,0xf1,0x63,0x86,0xfd,0xfb,0xf7, + 0x33,0xac,0x5f,0xbf,0x9e,0x91,0x18,0x83,0x01,0x02,0x08,0x6c,0x30,0x13, + 0x13,0xd3,0x7f,0x7e,0x7e,0x7e,0x06,0x74,0x4b,0x6c,0x6c,0x6c,0x18,0x12, + 0x12,0x12,0x18,0xbe,0x7c,0xf9,0x02,0x52,0xc3,0xf0,0xfa,0xf5,0x6b,0x86, + 0xcd,0x9b,0x37,0x33,0x5c,0xb8,0x70,0x01,0x45,0x9d,0x90,0x90,0x10,0xc3, + 0xbd,0x7b,0xf7,0x50,0x2c,0x04,0x08,0x20,0x46,0x90,0xab,0x1c,0x1c,0x1c, + 0x18,0x42,0x43,0x43,0x19,0x7e,0xff,0xfe,0x0d,0x16,0xbc,0x73,0xe7,0x0e, + 0x83,0xaf,0xaf,0x2f,0xc3,0xa7,0x4f,0x9f,0xc0,0x2e,0x05,0x6a,0x62,0x30, + 0x34,0x34,0x64,0x60,0x63,0x63,0x03,0x5b,0x72,0xf5,0xea,0x55,0x06,0x15, + 0x15,0x15,0xb0,0xda,0xbf,0x7f,0xff,0x32,0x3c,0x7b,0xf6,0x0c,0xac,0x07, + 0xd9,0x37,0x00,0x01,0xc4,0x04,0x72,0x29,0xc8,0x50,0x90,0x21,0x9f,0x3f, + 0x7f,0x06,0x2b,0x70,0x73,0x73,0x63,0xf8,0xfa,0xf5,0x2b,0xc3,0xab,0x57, + 0xaf,0xc0,0x86,0x82,0xc0,0xf9,0xf3,0xe7,0xe1,0x06,0xc9,0xcb,0xcb,0x83, + 0xd5,0x81,0xd4,0x7f,0xfb,0xf6,0x8d,0x81,0x93,0x93,0x93,0x41,0x58,0x58, + 0x98,0xa1,0xb1,0xb1,0x11,0xee,0x65,0x80,0x00,0x62,0x01,0x79,0x1f,0xe4, + 0xd2,0x3f,0x7f,0xfe,0xc0,0xbd,0xf1,0xfc,0xf9,0x73,0xb0,0xcb,0x7e,0xfc, + 0xf8,0xc1,0x20,0x27,0x27,0xc7,0xc0,0xcd,0xcd,0x0d,0x0e,0x8a,0x37,0x6f, + 0xde,0x80,0x0d,0xc2,0x06,0xb8,0xb8,0xb8,0x18,0x6c,0x6d,0x6d,0xe1,0x7c, + 0x80,0x00,0x62,0x41,0x57,0x20,0x2e,0x2e,0xce,0x70,0xf9,0xf2,0x65,0x3c, + 0xd1,0x82,0x50,0x87,0x0f,0x00,0x04,0x10,0x86,0xc1,0xc4,0x68,0x22,0x06, + 0x00,0x04,0x10,0xc1,0x74,0x4c,0x2e,0x00,0x08,0x20,0xac,0x2e,0x46,0x06, + 0xb5,0xb5,0xb5,0x0c,0xa2,0xa2,0xa2,0x70,0x3e,0x2c,0x49,0x82,0x68,0x18, + 0x06,0xf9,0xd0,0xc5,0xc5,0x05,0x45,0x1f,0x40,0x00,0xe1,0x35,0x18,0x64, + 0x68,0x6c,0x6c,0x2c,0x43,0x67,0x67,0x27,0xd8,0x80,0x7f,0xff,0xfe,0xc1, + 0x69,0x18,0xde,0xb5,0x6b,0x17,0x38,0xf5,0x48,0x4b,0x4b,0xa3,0xe8,0x05, + 0x08,0x20,0xbc,0x06,0x83,0x5c,0x0a,0x32,0xf4,0xf4,0xe9,0xd3,0x0c,0x3f, + 0x7f,0xfe,0x04,0xa7,0x1e,0x58,0x0a,0x52,0x50,0x50,0x00,0xa7,0x18,0x10, + 0x1b,0xe4,0xda,0xc3,0x87,0x0f,0x33,0x28,0x2a,0x2a,0xc2,0xf5,0x02,0x04, + 0x10,0xc1,0xa0,0x00,0xb9,0xd0,0xc8,0xc8,0x08,0xc5,0x95,0xb0,0x20,0x00, + 0xa5,0x69,0x10,0xff,0xd7,0xaf,0x5f,0x60,0x17,0xcf,0x9e,0x3d,0x9b,0xc1, + 0xc9,0xc9,0x09,0xac,0x0f,0x20,0x80,0x08,0x1a,0x0c,0xd2,0x78,0xf0,0xe0, + 0x41,0xb0,0x8b,0x41,0x06,0x80,0x5c,0x08,0x32,0x50,0x4d,0x4d,0x0d,0xec, + 0x6a,0x90,0xfc,0xb1,0x63,0xc7,0xc0,0x19,0x0a,0x94,0xd9,0x02,0x03,0x03, + 0xff,0x83,0x72,0x20,0x40,0x00,0xe1,0x35,0x18,0x16,0x9e,0xd6,0xd6,0xd6, + 0x70,0xd7,0x21,0x87,0x35,0xc8,0x12,0x2b,0x2b,0x2b,0x86,0x0f,0x1f,0x3e, + 0x30,0xbc,0x7f,0xff,0x9e,0xe1,0xe3,0xc7,0x8f,0x0c,0x87,0x0e,0x1d,0x62, + 0x58,0xb1,0x62,0xc5,0x7f,0x80,0x00,0x02,0x1b,0x0c,0xd2,0x84,0xcb,0x60, + 0x90,0xdc,0xd6,0xad,0x5b,0xc1,0xb9,0x10,0x64,0x10,0x2c,0x38,0x60,0xbe, + 0x01,0xf9,0x04,0x94,0x1b,0x41,0x59,0x1a,0x94,0xfb,0x98,0x99,0x99,0x19, + 0xb4,0xb4,0xb4,0x18,0x00,0x02,0x88,0x05,0x54,0x32,0x81,0x0a,0x11,0x50, + 0x7e,0xc7,0x66,0x30,0xc8,0x30,0x50,0x56,0xfd,0xfe,0xfd,0x3b,0xd8,0x70, + 0x90,0x45,0x30,0x87,0x80,0x68,0x90,0x38,0xc8,0xa5,0x20,0x57,0x83,0xca, + 0x1b,0x90,0x1a,0x10,0x00,0x08,0x20,0x16,0x50,0x71,0x07,0x0a,0x17,0x98, + 0x8d,0xe8,0x06,0x83,0x34,0x6d,0xd8,0xb0,0x01,0xac,0x01,0x94,0x22,0x40, + 0x86,0xc1,0xd2,0x32,0xc8,0xc5,0x20,0x31,0x90,0xe1,0x02,0x02,0x02,0x0c, + 0x3c,0x3c,0x3c,0xf0,0x32,0x07,0x20,0x80,0xc0,0x41,0x01,0x0a,0x6c,0x50, + 0xc9,0x84,0x5c,0x88,0x80,0xc0,0xbe,0x7d,0xfb,0x18,0xee,0xde,0xbd,0xcb, + 0x60,0x60,0x60,0x00,0x2e,0x94,0x40,0x06,0x80,0x0c,0x82,0x05,0x05,0xc8, + 0x12,0x50,0x50,0x80,0x2c,0x05,0xc9,0x81,0x22,0x17,0x06,0x00,0x02,0x08, + 0x6f,0x0d,0x02,0x02,0x51,0x51,0x51,0xff,0x41,0x2e,0x01,0x96,0xdb,0x60, + 0x43,0x60,0x91,0x88,0x1c,0x07,0xb0,0xb0,0x07,0xa9,0x59,0xb2,0x64,0x09, + 0x58,0x1d,0x40,0x00,0x11,0x34,0x18,0x04,0x40,0xb1,0x0c,0x8a,0x10,0x62, + 0x80,0xac,0xac,0x2c,0x83,0xa0,0xa0,0x20,0x23,0x40,0x80,0x01,0x00,0x44, + 0x54,0xe5,0xc1,0x18,0x2f,0x14,0x22,0x00,0x00,0x00,0x00,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_editvlayout_png_len = 617; +static const unsigned char small_disabled_editvlayout_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x01,0xf4,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0xb1,0xe0,0x93,0x64,0x62,0x62,0xfa,0x2f,0x29,0x29,0xc9,0x00,0xb2, + 0x1c,0xd9,0x01,0xff,0xfe,0xfd,0x63,0xe0,0xe3,0xe3,0x63,0xb8,0x7d,0xfb, + 0x36,0x23,0x2e,0xbd,0x00,0x01,0x84,0xd7,0x60,0x90,0xa1,0xb3,0x66,0xcd, + 0x62,0x78,0xf4,0xe8,0x11,0x03,0x2b,0x2b,0x2b,0x58,0x8c,0x9b,0x9b,0x9b, + 0xe1,0xd7,0xaf,0x5f,0x0c,0x87,0x0f,0x1f,0x66,0xd8,0xbb,0x77,0xef,0x7f, + 0x67,0x67,0x67,0xac,0x86,0x03,0x04,0x10,0x5e,0x83,0x41,0xae,0x7c,0xff, + 0xfe,0x3d,0x03,0x0b,0x0b,0x0b,0x83,0xb0,0xb0,0x30,0x98,0x2f,0x24,0x24, + 0x04,0x36,0x18,0xc4,0x57,0x50,0x50,0xc0,0xa9,0x17,0x20,0x80,0xf0,0x1a, + 0xfc,0xf7,0xef,0x5f,0xb0,0x61,0xd2,0xd2,0xd2,0x70,0x83,0x99,0x99,0x99, + 0x19,0xfe,0xfc,0xf9,0x03,0x96,0xc3,0x07,0x00,0x02,0x08,0xaf,0xc1,0xfc, + 0xfc,0xfc,0x60,0x2f,0x8b,0x88,0x88,0x80,0x83,0x00,0x14,0xb6,0x20,0xc3, + 0x3f,0x7d,0xfa,0xc4,0xf0,0xf4,0xe9,0x53,0xbc,0x06,0x03,0x04,0x10,0x23, + 0xa1,0x54,0x01,0x0a,0x47,0x5c,0x5e,0x56,0x54,0x54,0x04,0x45,0x30,0xd6, + 0x30,0x06,0x08,0x20,0x82,0x06,0x93,0x0b,0x00,0x02,0x88,0xe8,0xe4,0x06, + 0x03,0x20,0x36,0x28,0x7c,0x41,0x41,0x73,0xff,0xfe,0x7d,0x9c,0xc9,0x0d, + 0x20,0x80,0x08,0x26,0xb7,0xa9,0x53,0xa7,0x32,0x3c,0x7c,0xf8,0x10,0x1c, + 0x69,0xa0,0x30,0xe6,0xe4,0xe4,0x64,0xf8,0xfe,0xfd,0x3b,0xc3,0xb1,0x63, + 0xc7,0xf0,0x26,0x37,0x80,0x00,0xc2,0x6b,0x30,0xc8,0xa0,0xb7,0x6f,0xdf, + 0x82,0x5c,0x0e,0x8e,0x48,0x90,0x6b,0x79,0x78,0x78,0xc0,0x06,0x83,0xf8, + 0xf8,0x92,0x1b,0x40,0x00,0x11,0x4c,0x6e,0x20,0xc3,0xc5,0xc5,0xc5,0xc1, + 0xe9,0x17,0x94,0xcc,0x18,0x19,0x19,0x19,0xbe,0x7e,0xfd,0xca,0xf0,0xfb, + 0xf7,0x6f,0x7c,0x5a,0x19,0x00,0x02,0x08,0xaf,0xc1,0xa0,0x6c,0x7b,0xe4, + 0xc8,0x11,0xb0,0xa1,0xec,0xec,0xec,0xf0,0xf4,0xfb,0xf1,0xe3,0x47,0x86, + 0x17,0x2f,0x5e,0xe0,0x35,0x18,0x20,0x80,0x68,0x96,0xdc,0x00,0x02,0x88, + 0x66,0xc9,0x0d,0x20,0x80,0x08,0x26,0x37,0x09,0x09,0x09,0x70,0x38,0xc3, + 0x00,0xc8,0x21,0xa0,0xf0,0x05,0xa5,0x0e,0x60,0xee,0xc3,0x99,0xdc,0x00, + 0x02,0x08,0xaf,0xc1,0xa0,0x48,0xab,0xab,0xab,0x63,0x78,0xfc,0xf8,0x31, + 0x98,0x0f,0x0a,0x5f,0x50,0x58,0xff,0xfc,0xf9,0x93,0xe1,0xf2,0xe5,0xcb, + 0x78,0x93,0x1b,0x40,0x00,0x11,0x95,0xdc,0x60,0xc9,0x0c,0xc4,0x07,0x65, + 0x0c,0x90,0x05,0x02,0x02,0x02,0x78,0x93,0x1b,0x40,0x00,0xe1,0x35,0x18, + 0x94,0x0a,0x40,0x18,0x94,0x2a,0x40,0xa5,0x1b,0xc8,0x60,0x0e,0x0e,0x0e, + 0x86,0x57,0xaf,0x5e,0xa1,0x04,0x0f,0x36,0x00,0x10,0x40,0x78,0x0d,0x06, + 0xb9,0xee,0xec,0xd9,0xb3,0xe0,0xcc,0xc0,0xc6,0xc6,0x06,0x17,0xff,0xf6, + 0xed,0x1b,0xc3,0x9b,0x37,0x6f,0xf0,0x1a,0x0c,0x10,0x40,0x34,0x4b,0x6e, + 0x00,0x01,0x44,0xb3,0xe4,0x06,0x10,0x60,0x00,0xc0,0x62,0xf3,0xb9,0xf2, + 0x11,0x7d,0x86,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; + +static const unsigned int small_disabled_editvlayoutsplit_png_len = 752; +static const unsigned char small_disabled_editvlayoutsplit_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x02,0x7b,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0x11,0xab,0xf0,0xfe,0xfd,0xfb,0x24,0xb9,0x00,0x20,0x80,0x88, + 0x36,0xf8,0xf7,0xef,0xdf,0x0c,0x41,0x41,0x41,0x44,0x1b,0x0e,0x10,0x40, + 0x44,0x1b,0xfc,0xf3,0xe7,0x4f,0x62,0x95,0x82,0x01,0x40,0x00,0x11,0x6d, + 0xf0,0xdf,0xbf,0x7f,0x49,0x32,0x18,0x20,0x80,0x88,0x36,0x98,0x99,0x99, + 0x99,0x24,0x83,0x01,0x02,0x88,0x68,0x83,0x99,0x98,0x88,0x56,0x0a,0x06, + 0x00,0x01,0x78,0xa4,0x63,0x14,0x00,0x62,0x10,0x88,0xa2,0x0a,0x6b,0x25, + 0xa4,0x8c,0xa4,0xf0,0xfe,0x87,0xb2,0xd3,0xce,0x33,0x84,0x18,0x5c,0x96, + 0xed,0xff,0x2b,0x06,0xe6,0xf9,0x50,0xad,0xb5,0xa0,0xaf,0xd7,0x93,0xc7, + 0x18,0x60,0x66,0x18,0x11,0xa5,0xaa,0xd8,0x0d,0x11,0xfd,0x28,0x33,0x6b, + 0xce,0x89,0xed,0x44,0x04,0xce,0x39,0xb0,0xf7,0x06,0x66,0x06,0x77,0x7f, + 0xfb,0x2b,0x80,0xc0,0x06,0x83,0x0c,0x9d,0x35,0x6b,0x16,0xc3,0xfb,0xf7, + 0xef,0xc1,0x86,0x1f,0x3e,0x7c,0x18,0xc4,0xfe,0xff,0xe3,0xc7,0x0f,0x70, + 0x4a,0x58,0xb7,0x6e,0x1d,0x23,0x1b,0x1b,0x1b,0xdc,0x60,0x90,0x25,0x77, + 0xef,0xde,0x05,0x1b,0x5a,0x5f,0x5f,0xcf,0xf0,0xf6,0xed,0x5b,0xb0,0xc1, + 0x67,0xcf,0x9e,0x65,0xd8,0xbb,0x77,0xef,0x7f,0x67,0x67,0x67,0x46,0x80, + 0x00,0x3c,0x8f,0xa1,0x11,0x00,0x30,0x08,0x03,0xb3,0x01,0x82,0x05,0xd8, + 0x18,0xcd,0x16,0x8c,0x86,0xe1,0xb0,0x85,0x88,0xba,0x17,0xb9,0x24,0x4f, + 0xbf,0x2b,0xdb,0x25,0xcc,0x0c,0x54,0x15,0xee,0x4e,0xae,0xaa,0x5f,0x96, + 0x99,0x9f,0xef,0xe1,0x99,0x45,0x04,0xd6,0x0a,0xdd,0xcd,0xb7,0x22,0x02, + 0x33,0x63,0xe6,0x09,0x20,0x16,0x98,0xc1,0x20,0x57,0x80,0x0c,0x35,0x36, + 0x36,0x66,0xf8,0xf4,0xe9,0x13,0xd8,0xf5,0x0f,0x1e,0x3c,0x60,0x88,0x8f, + 0x8f,0x67,0xb8,0x74,0xe9,0x12,0xc8,0x15,0x0c,0x0e,0x0e,0x0e,0x20,0xb1, + 0xff,0x8c,0x8c,0x8c,0x0c,0xcf,0x9f,0x3f,0x07,0xb9,0x9a,0x81,0x87,0x87, + 0x07,0xac,0x1f,0xa4,0x17,0xd9,0x57,0x00,0x01,0xc4,0x82,0x1c,0xe0,0x20, + 0x05,0xc0,0x1c,0xc6,0xc0,0xc1,0xc1,0x01,0xf6,0xc1,0x93,0x27,0x4f,0xc0, + 0xc1,0x02,0x02,0x20,0x03,0xbe,0x7c,0xf9,0x02,0x66,0x57,0x54,0x54,0x30, + 0x5c,0xbf,0x7e,0x9d,0xe1,0xde,0xbd,0x7b,0x0c,0xbb,0x76,0xed,0x62,0x60, + 0x61,0x61,0x61,0x28,0x2a,0x2a,0x42,0x89,0x3c,0x80,0x00,0x82,0x47,0x35, + 0xc8,0x2b,0x42,0x42,0x42,0xe0,0x64,0xb5,0x69,0xd3,0x26,0x86,0x8f,0x1f, + 0x3f,0x82,0x83,0x03,0x04,0x40,0x61,0x0c,0x72,0x39,0x8c,0xfd,0xec,0xd9, + 0x33,0xb0,0x8b,0x41,0xf1,0x02,0x4a,0x2d,0x29,0x29,0x29,0x60,0xc7,0x20, + 0x03,0x80,0x00,0x62,0x82,0x85,0xd9,0xaf,0x5f,0xbf,0xc0,0x18,0x64,0x20, + 0x28,0x28,0xac,0xac,0xac,0xc0,0x61,0x06,0x03,0xa0,0x94,0x02,0x03,0xdf, + 0xbe,0x7d,0x63,0xb8,0x7c,0xf9,0x32,0xd8,0x87,0xfe,0xfe,0xfe,0xe0,0xf0, + 0x06,0xa6,0x14,0xb0,0x38,0x0c,0x00,0x04,0x10,0x0b,0x4c,0x13,0xc8,0xcb, + 0xa0,0x70,0x02,0x29,0x7a,0xfa,0xf4,0x29,0x58,0x32,0x3b,0x3b,0x9b,0x11, + 0x14,0xcb,0xe8,0xc9,0x2d,0x2a,0x2a,0x8a,0x71,0xcd,0x9a,0x35,0xa0,0x24, + 0x07,0xb6,0x40,0x40,0x40,0x00,0xec,0xb8,0x37,0x6f,0xde,0xc0,0xd5,0x00, + 0x04,0x10,0xd8,0x60,0x50,0x9a,0x05,0x19,0x00,0x8b,0x51,0x10,0x50,0x54, + 0x54,0x84,0x7b,0x9d,0x01,0x0b,0x80,0x89,0xe3,0xd2,0x07,0x10,0x40,0xf0, + 0xc8,0x03,0xa5,0x3d,0x6c,0x06,0x10,0x02,0xb8,0xf4,0x01,0x04,0x10,0xd1, + 0xf9,0x14,0xe4,0x55,0x52,0x00,0x40,0x00,0x11,0x6d,0x30,0x2c,0x85,0x10, + 0x0b,0x00,0x02,0x88,0x68,0x83,0x41,0xb9,0x8b,0x14,0x00,0x10,0x40,0x44, + 0x1b,0xec,0xe6,0xe6,0x46,0x52,0x1c,0x00,0x04,0x10,0x23,0xad,0x2a,0x53, + 0x80,0x00,0x03,0x00,0x83,0xcb,0x1a,0xf1,0x99,0x41,0xce,0x33,0x00,0x00, + 0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_filesave_png_len = 587; +static const unsigned char small_disabled_filesave_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x01,0xd6,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0xb1,0xc0,0x18,0x4c,0x4c,0x4c,0xff,0x05,0x04,0x04,0x18,0xc8,0xb1, + 0x08,0xa4,0x07,0x84,0x85,0x85,0x85,0x19,0xee,0xdd,0xbb,0xc7,0x08,0x12, + 0x03,0x08,0x20,0x46,0x90,0x00,0xc8,0x50,0x07,0x07,0x07,0x86,0xa8,0xa8, + 0x28,0x86,0x57,0xaf,0x5e,0x31,0x18,0x1b,0x1b,0x93,0x64,0xf0,0xc1,0x83, + 0x07,0x19,0x38,0x38,0x38,0x18,0x3e,0x7d,0xfa,0xc4,0x70,0xfb,0xf6,0x6d, + 0x86,0x8d,0x1b,0x37,0x32,0x02,0x04,0x60,0x74,0x0e,0x4a,0x00,0x00,0x42, + 0x20,0x00,0xee,0x4f,0xb0,0x95,0xcd,0x6c,0x66,0x2a,0x17,0x5f,0x7a,0x68, + 0x82,0x2b,0x30,0xcc,0x8d,0x77,0xba,0x68,0x55,0x21,0x33,0xd1,0xdd,0x88, + 0x88,0x2f,0xd4,0xcc,0x40,0x12,0x22,0x02,0x55,0xbd,0xb5,0xbb,0xcf,0x13, + 0x40,0x2c,0x30,0xaf,0xfc,0xfa,0xf5,0x0b,0x8c,0x41,0x86,0x83,0x0c,0xb6, + 0xb7,0xb7,0x27,0xca,0x60,0x90,0xda,0x3f,0x7f,0xfe,0x30,0xbc,0x7e,0xfd, + 0x9a,0x41,0x50,0x50,0x10,0x6c,0xb8,0xad,0xad,0x2d,0x03,0x40,0x00,0xc1, + 0xc3,0xf8,0xef,0xdf,0xbf,0x60,0x05,0x20,0x1a,0x64,0xd1,0x8e,0x1d,0x3b, + 0x88,0x32,0xd8,0xc3,0xc3,0x03,0xab,0x38,0x40,0x00,0xc1,0x0d,0x86,0x45, + 0x1a,0x8c,0xc6,0xa5,0x01,0x17,0x10,0x11,0x11,0x01,0x3b,0x0a,0x06,0x00, + 0x02,0x88,0x05,0x97,0x42,0x4a,0x5d,0x0c,0x10,0x40,0x38,0x0d,0x26,0xd5, + 0xc5,0xe8,0x00,0x20,0x80,0x68,0xe6,0x62,0x80,0x00,0xa2,0x99,0x8b,0x01, + 0x02,0x08,0xc3,0x60,0x31,0x31,0x31,0xa2,0x5d,0x8b,0xac,0x07,0x94,0xec, + 0x90,0x01,0x40,0x00,0x61,0x75,0xb1,0xb8,0xb8,0x38,0x5e,0x83,0x60,0x59, + 0x18,0x99,0x8f,0x0e,0x00,0x02,0x88,0x89,0x24,0xa7,0x21,0x19,0x0a,0xc2, + 0x20,0x57,0xe2,0x2a,0x5b,0x00,0x02,0x08,0xab,0x8b,0x5f,0xbe,0x7c,0x49, + 0x92,0x65,0xa2,0xa2,0xa2,0x18,0x62,0x00,0x01,0x84,0x33,0xf2,0x70,0x01, + 0x77,0x77,0x77,0x86,0xdf,0xbf,0x7f,0x83,0xb3,0xff,0x91,0x23,0x47,0xc0, + 0x62,0x8c,0x8c,0x8c,0x18,0xea,0x00,0x02,0x88,0x64,0x83,0xb1,0x01,0x98, + 0xc1,0xc8,0x16,0x00,0x04,0x10,0x38,0x8c,0x41,0xe1,0x04,0x72,0x05,0xac, + 0xac,0xc0,0x07,0x40,0xe1,0x8a,0x1e,0xb6,0xc8,0xe1,0x0e,0x03,0x00,0x01, + 0x04,0x2f,0xdd,0x40,0xc5,0x25,0xba,0x24,0x36,0x00,0x0a,0x02,0x90,0x03, + 0x40,0x0e,0xc1,0x67,0x30,0x40,0x00,0x81,0x0d,0x06,0x95,0xa1,0xa0,0x42, + 0x1a,0x54,0xe4,0x11,0x32,0x18,0xe4,0x00,0x90,0xaf,0x90,0xd3,0x2d,0xac, + 0x44,0x44,0x16,0x03,0x08,0x20,0x46,0x98,0x41,0xfe,0xfe,0xfe,0xff,0x41, + 0x16,0x80,0x0c,0xa7,0x04,0x14,0x16,0x16,0x82,0xcd,0x00,0x08,0x20,0x46, + 0x64,0x17,0x82,0x4a,0x7e,0x50,0x21,0x4d,0x09,0xd0,0xd2,0xd2,0x62,0x90, + 0x94,0x94,0x64,0x04,0x08,0x30,0x00,0xcf,0x8a,0xfa,0x9c,0xfa,0xe5,0x97, + 0x27,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_redo_png_len = 531; +static const unsigned char small_disabled_redo_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x01,0x9e,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0xd1,0xc4,0x54,0x20,0x00,0x08,0x20,0x9a,0x19,0x0c,0x10,0x40, + 0x34,0x33,0x18,0x20,0x80,0x68,0x66,0x30,0x40,0x00,0xd1,0xcc,0x60,0x80, + 0x00,0x62,0xc1,0x6b,0x2b,0x13,0xd3,0x7f,0x3e,0x3e,0x3e,0x38,0x5f,0x42, + 0x42,0x82,0xe1,0xc6,0x8d,0x1b,0x8c,0xc4,0x18,0x0c,0x10,0x40,0x8c,0xb8, + 0x92,0x1b,0xc8,0x50,0x03,0x03,0x03,0x06,0x6b,0x6b,0x6b,0x86,0x3f,0x7f, + 0xfe,0x80,0xc5,0x7e,0xfd,0xfa,0xc5,0xf0,0xe4,0xc9,0x13,0x86,0x87,0x0f, + 0x1f,0x62,0x58,0x20,0x20,0x20,0xf0,0xff,0xc3,0x87,0x0f,0x70,0x31,0x80, + 0x00,0xc2,0x6a,0x30,0xc8,0x50,0x3d,0x3d,0x3d,0x06,0x33,0x33,0x33,0x86, + 0xca,0xca,0x4a,0x06,0x7e,0x7e,0x7e,0x90,0x41,0x70,0xf9,0x17,0x2f,0x5e, + 0x30,0x1c,0x3d,0x7a,0x94,0xa1,0xb7,0xb7,0x97,0x11,0xa6,0x5e,0x5b,0x5b, + 0x9b,0x21,0x25,0x25,0x85,0x21,0x3f,0x3f,0x1f,0x2c,0x06,0x10,0x40,0x0c, + 0x20,0x83,0xd1,0x31,0xd0,0xa0,0xff,0xf7,0xee,0xdd,0xfb,0xff,0xf6,0xed, + 0xdb,0xff,0x2f,0x5f,0xbe,0xfc,0x8f,0x4d,0x4d,0x49,0x49,0xc9,0xff,0xa8, + 0xa8,0xa8,0xff,0x42,0x42,0x42,0xff,0x4d,0x4c,0x4c,0xfe,0x67,0x67,0x67, + 0xff,0x07,0x5a,0x06,0x57,0x0b,0x10,0x40,0x38,0x23,0x0f,0xe4,0x4a,0xa0, + 0x26,0x46,0x31,0x31,0x31,0xac,0x61,0xda,0xdd,0xdd,0x0d,0x16,0x2f,0x28, + 0x28,0x60,0x70,0x73,0x73,0x63,0xf8,0xfd,0xfb,0x37,0x8a,0x3c,0x40,0x00, + 0xe1,0x34,0x18,0xd9,0xeb,0xd8,0x00,0xc8,0xfb,0xb7,0x6e,0xdd,0x62,0xf8, + 0xfe,0xfd,0x3b,0xc3,0xd7,0xaf,0x5f,0xe1,0xf1,0x00,0x03,0x00,0x01,0x84, + 0x35,0x55,0x80,0x62,0x1f,0x14,0x8e,0xb8,0x00,0x28,0xa2,0x40,0x61,0x6a, + 0x6e,0x6e,0xce,0x00,0x0c,0x2e,0xb0,0xa1,0xe8,0x06,0x03,0x04,0x10,0xce, + 0x54,0x91,0x9b,0x9b,0xfb,0xff,0xc7,0x8f,0x1f,0x0c,0xb3,0x67,0xcf,0xc6, + 0x1a,0x14,0x13,0x27,0x4e,0xfc,0x6f,0x6a,0x6a,0x8a,0x22,0x06,0xb2,0x88, + 0x99,0x99,0x19,0xac,0x1e,0x20,0x80,0xb0,0x46,0x1e,0x0c,0x27,0x24,0x24, + 0xfc,0x3f,0x72,0xe4,0x08,0xd6,0xc8,0x23,0x84,0x01,0x02,0x08,0xa7,0x8b, + 0x61,0xe0,0xdd,0xbb,0x77,0xa0,0x98,0x27,0x2a,0x53,0x20,0x03,0x80,0x00, + 0x22,0x68,0x30,0xb9,0x00,0x20,0x80,0x68,0x56,0x56,0x00,0x04,0x10,0xcd, + 0x0c,0x06,0x08,0x20,0x9a,0x19,0x0c,0x10,0x40,0x34,0x33,0x18,0x20,0x80, + 0x68,0x66,0x30,0x40,0x80,0x01,0x00,0xf7,0xb3,0xec,0x5d,0x7c,0xf2,0xab, + 0x77,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_searchfind_png_len = 1013; +static const unsigned char small_disabled_searchfind_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x03,0x80,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0xb1,0x60,0x13,0x64,0x62,0x62,0xfa,0x2f,0x2c,0x2c,0xcc,0x80,0xcd, + 0x52,0x98,0x98,0x84,0x84,0x04,0xc3,0xd5,0xab,0x57,0x19,0x71,0x19,0x0c, + 0x10,0x40,0x8c,0xe8,0x9a,0x41,0x86,0x86,0x85,0x85,0x31,0x34,0x34,0x34, + 0xe0,0x75,0xd1,0xb2,0x65,0xcb,0x18,0x5e,0xbc,0x78,0xc1,0x30,0x6b,0xd6, + 0x2c,0xac,0x86,0x03,0x04,0x10,0x13,0xba,0x00,0xc8,0xa5,0x84,0x0c,0x05, + 0x01,0x5e,0x5e,0x5e,0x86,0xf0,0xf0,0x70,0x86,0xb4,0xb4,0x34,0xac,0x61, + 0x09,0x10,0x40,0x18,0x41,0x01,0xf2,0xc1,0xbf,0x7f,0xff,0xc0,0xf4,0xb6, + 0x6d,0xdb,0x18,0x38,0x38,0x38,0x18,0xfe,0xfe,0xfd,0x0b,0xe6,0xab,0xab, + 0xab,0x33,0x28,0x29,0x29,0xc1,0xd5,0x8a,0x89,0x89,0xc1,0x0d,0x47,0x77, + 0x39,0x40,0x00,0x61,0x0d,0xe3,0x9f,0x3f,0x7f,0x82,0x0d,0x77,0x72,0x72, + 0x82,0x78,0x8b,0x89,0x89,0x81,0x99,0x99,0x19,0x8c,0x91,0x83,0x0e,0xc4, + 0x07,0x19,0x1e,0x1a,0x1a,0x8a,0x61,0x38,0x40,0x00,0xa1,0x84,0x31,0x28, + 0x7c,0xf9,0xf9,0xf9,0xe1,0x7c,0x01,0x01,0x01,0x86,0xe4,0xe4,0x64,0x06, + 0x6e,0x6e,0x6e,0xb0,0x45,0xaa,0xaa,0xaa,0x0c,0xca,0xca,0xca,0x60,0x8b, + 0xb6,0x6c,0xd9,0x82,0xe2,0x98,0xcf,0x9f,0x3f,0xa3,0x84,0x39,0x40,0x00, + 0xc1,0x0d,0x06,0x19,0xea,0xee,0xee,0xce,0x50,0x53,0x53,0xc3,0xc0,0xc6, + 0xc6,0xc6,0xf0,0xeb,0xd7,0x2f,0xb0,0xe2,0x5d,0xbb,0x76,0x31,0x78,0x7a, + 0x7a,0x82,0x5d,0x07,0xb2,0x00,0x14,0x34,0x2c,0x2c,0x2c,0x60,0xc3,0x19, + 0x19,0x19,0x19,0xbe,0x7c,0xf9,0xc2,0xf0,0xed,0xdb,0x37,0x30,0x3e,0x76, + 0xec,0x18,0x83,0xac,0xac,0x2c,0x43,0x6a,0x6a,0x2a,0x23,0x40,0x00,0xb1, + 0xc0,0x0c,0xf5,0xf3,0xf3,0x63,0x68,0x69,0x69,0x61,0x78,0xf3,0xe6,0x0d, + 0xd8,0xa5,0x20,0x8d,0x20,0x0b,0xfc,0xfd,0xfd,0x19,0xf6,0xee,0xdd,0x0b, + 0x0e,0xdb,0x3f,0x7f,0xfe,0x80,0x0d,0x80,0xc5,0x01,0x28,0xcc,0x15,0x14, + 0x14,0xe0,0xc1,0x04,0x8a,0x50,0x03,0x03,0x03,0xb0,0x43,0x01,0x02,0x08, + 0x6c,0x30,0xc8,0xfb,0xad,0xad,0xad,0x60,0x97,0x7c,0xfa,0xf4,0x89,0x41, + 0x48,0x48,0x88,0xe1,0xe1,0xc3,0x87,0x70,0x6f,0x6a,0x6a,0x6a,0x82,0x5d, + 0x03,0xb2,0x9c,0x8b,0x8b,0x0b,0x8c,0xd9,0xd9,0xd9,0xc1,0x96,0x83,0x2c, + 0x81,0x45,0x3a,0x32,0x00,0x08,0x20,0x78,0xe4,0x81,0xbc,0x05,0x02,0xbf, + 0x7f,0xff,0x06,0xdb,0x2e,0x2a,0x2a,0xca,0xf0,0xf5,0xeb,0x57,0xb0,0x38, + 0x28,0x82,0x40,0x96,0x3d,0x7f,0xfe,0x9c,0xe1,0xfd,0xfb,0xf7,0x60,0xc3, + 0x40,0x58,0x43,0x43,0x83,0x41,0x51,0x51,0x11,0x5b,0xfc,0x33,0x00,0x04, + 0x10,0xdc,0x60,0x90,0x8d,0x20,0xaf,0xc2,0xd8,0xaf,0x5f,0xbf,0x86,0x2b, + 0x02,0x85,0x2d,0xc8,0x9b,0x20,0x97,0x83,0xc2,0x94,0x8f,0x8f,0x0f,0x1c, + 0xd6,0x20,0x07,0xc0,0x5c,0x8c,0x0e,0x00,0x02,0x08,0x6c,0xb0,0xb4,0xb4, + 0x34,0xc3,0x83,0x07,0x0f,0x18,0xe4,0xe4,0xe4,0x18,0x58,0x59,0x59,0xc1, + 0xae,0x14,0x11,0x11,0x01,0xbb,0x18,0x64,0x20,0x32,0xb8,0x74,0xe9,0x12, + 0xdc,0x72,0x50,0x2a,0xc1,0xe5,0x62,0x80,0x00,0x02,0x1b,0x7c,0xe5,0xca, + 0x15,0x46,0x50,0x3a,0x0c,0x0e,0x0e,0x06,0xbb,0x06,0x14,0x76,0xa0,0x48, + 0x04,0x01,0x1e,0x1e,0x1e,0x86,0x93,0x27,0x4f,0x32,0x48,0x49,0x49,0x81, + 0xf9,0x3a,0x3a,0x3a,0x60,0x31,0x4e,0x4e,0x4e,0x70,0x9c,0xe0,0x02,0x00, + 0x01,0x04,0x97,0x01,0xa5,0x3f,0x90,0xe1,0xde,0xde,0xde,0x60,0x83,0x41, + 0xe1,0x0a,0x0a,0x1a,0x90,0xa1,0xa0,0x20,0xf8,0xf0,0xe1,0x03,0x38,0x42, + 0x41,0x41,0xf1,0xf1,0xe3,0x47,0xb0,0x8b,0x41,0x69,0x1a,0x39,0x27,0x22, + 0x03,0x80,0x00,0x42,0xb1,0x12,0x66,0xb8,0xa4,0xa4,0x24,0x3c,0x08,0x4c, + 0x4c,0x4c,0xc0,0x29,0x05,0x14,0x96,0x20,0xfa,0xce,0x9d,0x3b,0x0c,0x8e, + 0x8e,0x8e,0xe0,0x30,0x06,0xb9,0x1a,0x64,0x39,0xc8,0x12,0xf4,0x54,0x01, + 0x10,0x40,0x18,0x85,0xd0,0xda,0xb5,0x6b,0x19,0x64,0x64,0x64,0x18,0xec, + 0xed,0xed,0xc1,0x18,0x14,0x71,0xdf,0xbf,0x7f,0x07,0x6b,0x14,0x17,0x17, + 0x07,0xbb,0x72,0xdf,0xbe,0x7d,0x60,0x31,0x50,0x1c,0x80,0xd2,0x35,0x28, + 0x33,0x81,0xca,0x13,0x64,0x00,0x10,0x40,0x18,0x06,0x83,0x0c,0xb0,0xb6, + 0xb6,0x06,0x67,0x0e,0x50,0xac,0x83,0x82,0x05,0x64,0xd8,0xa3,0x47,0x8f, + 0xc0,0xe1,0x0e,0x2a,0x87,0x41,0x91,0xb6,0x7f,0xff,0x7e,0xb0,0xc1,0xa0, + 0xdc,0x09,0xa2,0x41,0x86,0x23,0x03,0x80,0x00,0xc2,0x08,0x7d,0x50,0x30, + 0x3c,0x7d,0xfa,0x14,0x1c,0x14,0x20,0x57,0xc0,0x92,0x93,0x9d,0x9d,0x1d, + 0xc3,0xd1,0xa3,0x47,0xc1,0x6c,0x90,0xcb,0x41,0x29,0x07,0xc4,0x37,0x36, + 0x36,0x06,0x3b,0x00,0x96,0x0f,0x60,0x00,0x20,0x80,0x30,0x0c,0x06,0xd5, + 0x0a,0xa0,0x70,0x06,0xb9,0x0c,0x39,0xa9,0x81,0x52,0x00,0x08,0x83,0x22, + 0x10,0x96,0x69,0x40,0x34,0x28,0x79,0x82,0x92,0x2a,0xa8,0x44,0x4c,0x4c, + 0x4c,0x84,0xab,0x07,0x08,0x20,0x8c,0x1a,0x04,0x06,0x66,0xcf,0x9e,0xfd, + 0x1f,0x96,0xef,0x91,0x83,0x09,0x64,0x18,0xa8,0x9c,0x06,0xa5,0x7d,0x50, + 0x51,0x60,0x6a,0x6a,0x0a,0x0e,0x22,0x90,0x1c,0x28,0x4d,0x03,0xd3,0x3f, + 0xd8,0xe9,0x00,0x01,0x04,0x8f,0x51,0x52,0xf1,0x8e,0x1d,0x3b,0xfe,0x5f, + 0xbf,0x7e,0xfd,0x3f,0x30,0xb8,0xfe,0x63,0x93,0x07,0x08,0x30,0x00,0xad, + 0x91,0xb8,0x43,0x2d,0xea,0x93,0x7f,0x00,0x00,0x00,0x00,0x49,0x45,0x4e, + 0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int small_disabled_undo_png_len = 541; +static const unsigned char small_disabled_undo_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x16,0x00,0x00,0x00,0x16,0x08,0x06,0x00,0x00, + 0x00,0xc4,0xb4,0x6c,0x3b,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8b,0x0c,0x91,0xa5,0x1c,0x00,0x00,0x00,0x20,0x63,0x48,0x52, + 0x4d,0x00,0x00,0x6e,0x9a,0x00,0x00,0x74,0x0f,0x00,0x00,0xef,0x68,0x00, + 0x00,0x87,0x88,0x00,0x00,0x6a,0xb8,0x00,0x00,0xf5,0x93,0x00,0x00,0x48, + 0x46,0x00,0x00,0x1e,0x75,0x20,0x95,0x94,0xb3,0x00,0x00,0x01,0xa8,0x49, + 0x44,0x41,0x54,0x78,0x9c,0x62,0xfc,0xff,0xff,0x3f,0x03,0x2d,0x00,0x40, + 0x00,0x31,0xd1,0xc4,0x54,0x20,0x00,0x08,0x20,0x9a,0x19,0x0c,0x10,0x40, + 0x34,0x33,0x18,0x20,0x80,0x68,0x66,0x30,0x40,0x00,0xd1,0xcc,0x60,0x80, + 0x00,0x62,0x21,0x55,0x03,0x13,0x13,0xd3,0x7f,0x3e,0x3e,0x3e,0x38,0x5f, + 0x42,0x42,0x82,0xe1,0xc6,0x8d,0x1b,0x8c,0xe8,0xea,0x00,0x02,0x88,0x11, + 0x5b,0x72,0x13,0x16,0x16,0xfe,0xff,0xf6,0xed,0x5b,0x14,0xc5,0x20,0x03, + 0xf9,0xf9,0xf9,0x19,0xe4,0xe4,0xe4,0x18,0xec,0xec,0xec,0xc0,0x62,0xec, + 0xec,0xec,0x0c,0x3f,0x7f,0xfe,0x64,0x78,0xf5,0xea,0x15,0xc3,0xca,0x95, + 0x2b,0x51,0xd4,0x03,0x04,0x10,0x4e,0x83,0xbd,0xbd,0xbd,0x19,0x16,0x2d, + 0x5a,0xc4,0x08,0x33,0x54,0x57,0x57,0x97,0x61,0xc3,0x86,0x0d,0x0c,0x20, + 0xc3,0x81,0x2e,0x84,0xab,0xdd,0xb8,0x71,0x23,0xc3,0xef,0xdf,0xbf,0x19, + 0xee,0xdf,0xbf,0xcf,0xb0,0x7e,0xfd,0x7a,0xb8,0xe1,0x00,0x01,0x84,0xd5, + 0x60,0x41,0x41,0xc1,0xff,0x29,0x29,0x29,0x0c,0xd7,0xae,0x5d,0x63,0x38, + 0x7e,0xfc,0x38,0x83,0xac,0xac,0x2c,0xd8,0x50,0x90,0x6b,0x99,0x99,0x99, + 0x31,0xbc,0x1d,0x17,0x17,0xf7,0x1f,0xa8,0x87,0x41,0x49,0x49,0x89,0x21, + 0x3f,0x3f,0x1f,0x2c,0x0f,0x10,0x40,0x38,0x23,0x8f,0x97,0x97,0x97,0xc1, + 0xc4,0xc4,0x84,0x21,0x2d,0x2d,0x0d,0xaf,0xa1,0x20,0x00,0xf2,0x19,0xc8, + 0x11,0xa6,0xa6,0xa6,0x70,0x31,0x80,0x00,0xc2,0x6a,0x30,0xc8,0x17,0xbf, + 0x7e,0xfd,0x62,0xf8,0xf1,0xe3,0x07,0x98,0x3e,0x76,0xec,0x18,0x4e,0x43, + 0x61,0xe0,0xcc,0x99,0x33,0x28,0x7c,0x80,0x00,0xc2,0x6a,0xb0,0xa8,0xa8, + 0x28,0xc3,0xd3,0xa7,0x4f,0x19,0xde,0xbf,0x7f,0xcf,0xf0,0xf9,0xf3,0x67, + 0x86,0xed,0xdb,0xb7,0x33,0xf8,0xf8,0xf8,0xe0,0x2c,0x54,0x40,0x71,0x20, + 0x23,0x23,0x83,0x22,0x06,0x10,0x40,0x58,0xc3,0x18,0x04,0x26,0x4e,0x9c, + 0xf8,0x1f,0xd9,0x6b,0x1a,0x1a,0x1a,0x60,0x5a,0x48,0x48,0x08,0x23,0xb5, + 0xe8,0xe8,0xe8,0x80,0x23,0x91,0x9b,0x9b,0x9b,0x41,0x4c,0x4c,0x0c,0x2c, + 0x0f,0x10,0x40,0x60,0x6f,0x53,0x82,0x55,0x54,0x54,0xfe,0x1f,0x39,0x72, + 0xe4,0xff,0x9f,0x3f,0x7f,0xfe,0x23,0x8b,0x03,0x04,0x10,0xc5,0x39,0xef, + 0xf6,0xed,0xdb,0x8c,0x40,0x80,0x11,0x07,0x00,0x01,0x84,0x33,0x28,0x28, + 0x05,0x00,0x01,0x44,0xb3,0xb2,0x02,0x20,0x80,0x68,0x66,0x30,0x40,0x00, + 0xd1,0xcc,0x60,0x80,0x00,0xa2,0x99,0xc1,0x00,0x01,0x44,0x33,0x83,0x01, + 0x02,0x0c,0x00,0x57,0x5a,0xba,0x0b,0x05,0xcd,0x84,0xac,0x00,0x00,0x00, + 0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 +}; + +static const unsigned int mini_down_xpm_len = 1447; +static const unsigned char mini_down_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x31,0x36,0x20,0x31,0x36, + 0x20,0x34,0x39,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x23, + 0x30,0x36,0x30,0x36,0x32,0x64,0x32,0x64,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x30,0x38,0x30,0x38,0x32,0x65,0x32, + 0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20,0x23, + 0x31,0x62,0x31,0x62,0x33,0x66,0x33,0x66,0x66,0x31,0x66,0x31,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x63,0x20,0x23,0x33,0x64,0x33,0x64,0x34,0x65,0x34, + 0x65,0x62,0x62,0x62,0x62,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x63,0x20,0x23, + 0x32,0x66,0x32,0x66,0x35,0x30,0x35,0x30,0x65,0x31,0x65,0x31,0x22,0x2c, + 0x0a,0x22,0x2b,0x20,0x63,0x20,0x23,0x32,0x36,0x32,0x36,0x35,0x31,0x35, + 0x31,0x66,0x62,0x66,0x62,0x22,0x2c,0x0a,0x22,0x40,0x20,0x63,0x20,0x23, + 0x32,0x62,0x32,0x62,0x35,0x39,0x35,0x39,0x66,0x65,0x66,0x65,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x63,0x20,0x23,0x33,0x31,0x33,0x31,0x35,0x34,0x35, + 0x34,0x65,0x32,0x65,0x32,0x22,0x2c,0x0a,0x22,0x24,0x20,0x63,0x20,0x23, + 0x33,0x37,0x33,0x37,0x35,0x65,0x35,0x65,0x66,0x33,0x66,0x33,0x22,0x2c, + 0x0a,0x22,0x25,0x20,0x63,0x20,0x23,0x33,0x63,0x33,0x63,0x36,0x35,0x36, + 0x35,0x65,0x65,0x65,0x65,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63,0x20,0x23, + 0x33,0x61,0x33,0x61,0x36,0x35,0x36,0x35,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2a,0x20,0x63,0x20,0x23,0x34,0x34,0x34,0x34,0x35,0x62,0x35, + 0x62,0x63,0x32,0x63,0x32,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x23, + 0x34,0x38,0x34,0x38,0x36,0x30,0x36,0x30,0x63,0x35,0x63,0x35,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x63,0x20,0x23,0x35,0x30,0x35,0x30,0x36,0x66,0x36, + 0x66,0x63,0x63,0x63,0x63,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x63,0x20,0x23, + 0x34,0x37,0x34,0x37,0x37,0x35,0x37,0x35,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x3a,0x20,0x63,0x20,0x23,0x34,0x64,0x34,0x64,0x37,0x64,0x37, + 0x64,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3e,0x20,0x63,0x20,0x23, + 0x35,0x33,0x35,0x33,0x37,0x63,0x37,0x63,0x65,0x62,0x65,0x62,0x22,0x2c, + 0x0a,0x22,0x2c,0x20,0x63,0x20,0x23,0x36,0x63,0x36,0x63,0x38,0x34,0x38, + 0x34,0x62,0x61,0x62,0x61,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x63,0x20,0x23, + 0x36,0x65,0x36,0x65,0x38,0x37,0x38,0x37,0x63,0x37,0x63,0x37,0x22,0x2c, + 0x0a,0x22,0x31,0x20,0x63,0x20,0x23,0x36,0x62,0x36,0x62,0x39,0x32,0x39, + 0x32,0x65,0x32,0x65,0x32,0x22,0x2c,0x0a,0x22,0x32,0x20,0x63,0x20,0x23, + 0x36,0x35,0x36,0x35,0x39,0x37,0x39,0x37,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x63,0x20,0x23,0x36,0x63,0x36,0x63,0x39,0x64,0x39, + 0x64,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x34,0x20,0x63,0x20,0x23, + 0x36,0x63,0x36,0x63,0x61,0x31,0x61,0x31,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x35,0x20,0x63,0x20,0x23,0x37,0x65,0x37,0x65,0x61,0x32,0x61, + 0x32,0x65,0x61,0x65,0x61,0x22,0x2c,0x0a,0x22,0x36,0x20,0x63,0x20,0x23, + 0x37,0x36,0x37,0x36,0x61,0x36,0x61,0x36,0x66,0x65,0x66,0x65,0x22,0x2c, + 0x0a,0x22,0x37,0x20,0x63,0x20,0x23,0x37,0x66,0x37,0x66,0x61,0x66,0x61, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x38,0x20,0x63,0x20,0x23, + 0x38,0x66,0x38,0x66,0x39,0x39,0x39,0x39,0x62,0x37,0x62,0x37,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x63,0x20,0x23,0x39,0x66,0x39,0x66,0x61,0x32,0x61, + 0x32,0x62,0x33,0x62,0x33,0x22,0x2c,0x0a,0x22,0x30,0x20,0x63,0x20,0x23, + 0x38,0x65,0x38,0x65,0x39,0x65,0x39,0x65,0x63,0x30,0x63,0x30,0x22,0x2c, + 0x0a,0x22,0x71,0x20,0x63,0x20,0x23,0x38,0x32,0x38,0x32,0x61,0x39,0x61, + 0x39,0x65,0x38,0x65,0x38,0x22,0x2c,0x0a,0x22,0x77,0x20,0x63,0x20,0x23, + 0x38,0x37,0x38,0x37,0x62,0x37,0x62,0x37,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x65,0x20,0x63,0x20,0x23,0x38,0x37,0x38,0x37,0x62,0x38,0x62, + 0x38,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x72,0x20,0x63,0x20,0x23, + 0x38,0x65,0x38,0x65,0x62,0x65,0x62,0x65,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x74,0x20,0x63,0x20,0x23,0x61,0x34,0x61,0x34,0x62,0x34,0x62, + 0x34,0x63,0x64,0x63,0x64,0x22,0x2c,0x0a,0x22,0x79,0x20,0x63,0x20,0x23, + 0x61,0x36,0x61,0x36,0x62,0x61,0x62,0x61,0x65,0x63,0x65,0x63,0x22,0x2c, + 0x0a,0x22,0x75,0x20,0x63,0x20,0x23,0x39,0x37,0x39,0x37,0x63,0x38,0x63, + 0x38,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x69,0x20,0x63,0x20,0x23, + 0x39,0x64,0x39,0x64,0x63,0x65,0x63,0x65,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x70,0x20,0x63,0x20,0x23,0x39,0x66,0x39,0x66,0x64,0x33,0x64, + 0x33,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x61,0x20,0x63,0x20,0x23, + 0x61,0x32,0x61,0x32,0x63,0x65,0x63,0x65,0x66,0x36,0x66,0x36,0x22,0x2c, + 0x0a,0x22,0x73,0x20,0x63,0x20,0x23,0x61,0x32,0x61,0x32,0x64,0x31,0x64, + 0x31,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x64,0x20,0x63,0x20,0x23, + 0x62,0x32,0x62,0x32,0x63,0x39,0x63,0x39,0x65,0x65,0x65,0x65,0x22,0x2c, + 0x0a,0x22,0x66,0x20,0x63,0x20,0x23,0x62,0x39,0x62,0x39,0x63,0x61,0x63, + 0x61,0x65,0x65,0x65,0x65,0x22,0x2c,0x0a,0x22,0x67,0x20,0x63,0x20,0x23, + 0x62,0x61,0x62,0x61,0x64,0x36,0x64,0x36,0x66,0x38,0x66,0x38,0x22,0x2c, + 0x0a,0x22,0x68,0x20,0x63,0x20,0x23,0x62,0x35,0x62,0x35,0x65,0x62,0x65, + 0x62,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x6a,0x20,0x63,0x20,0x23, + 0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x22,0x2c, + 0x0a,0x22,0x6b,0x20,0x63,0x20,0x23,0x64,0x61,0x64,0x61,0x66,0x61,0x66, + 0x61,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x63,0x20,0x23, + 0x65,0x31,0x65,0x31,0x66,0x61,0x66,0x61,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x7a,0x20,0x63,0x20,0x23,0x66,0x36,0x66,0x36,0x66,0x66,0x66, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x78,0x20,0x63,0x20,0x4e, + 0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c, + 0x73,0x20,0x2a,0x2f,0x0a,0x22,0x78,0x78,0x78,0x78,0x78,0x39,0x79,0x66, + 0x64,0x71,0x38,0x78,0x78,0x78,0x78,0x78,0x22,0x2c,0x0a,0x22,0x78,0x78, + 0x78,0x78,0x78,0x35,0x7a,0x6c,0x6b,0x73,0x23,0x39,0x78,0x78,0x78,0x78, + 0x22,0x2c,0x0a,0x22,0x78,0x78,0x78,0x78,0x74,0x31,0x68,0x70,0x75,0x32, + 0x4f,0x78,0x78,0x78,0x78,0x78,0x22,0x2c,0x0a,0x22,0x78,0x78,0x78,0x78, + 0x78,0x3c,0x75,0x69,0x72,0x3a,0x6f,0x74,0x78,0x78,0x78,0x78,0x22,0x2c, + 0x0a,0x22,0x78,0x78,0x78,0x78,0x78,0x30,0x77,0x75,0x77,0x3b,0x2d,0x78, + 0x78,0x78,0x78,0x78,0x22,0x2c,0x0a,0x22,0x78,0x78,0x78,0x78,0x78,0x38, + 0x77,0x75,0x77,0x26,0x2c,0x78,0x78,0x78,0x78,0x78,0x22,0x2c,0x0a,0x22, + 0x78,0x78,0x78,0x78,0x78,0x74,0x35,0x75,0x37,0x24,0x39,0x78,0x78,0x78, + 0x78,0x78,0x22,0x2c,0x0a,0x22,0x78,0x78,0x78,0x78,0x78,0x74,0x71,0x69, + 0x37,0x24,0x39,0x78,0x78,0x78,0x78,0x78,0x22,0x2c,0x0a,0x22,0x78,0x74, + 0x78,0x78,0x78,0x38,0x61,0x69,0x77,0x3a,0x2c,0x74,0x78,0x78,0x74,0x78, + 0x22,0x2c,0x0a,0x22,0x78,0x3c,0x61,0x67,0x79,0x77,0x72,0x77,0x77,0x77, + 0x36,0x35,0x35,0x3e,0x2a,0x78,0x22,0x2c,0x0a,0x22,0x78,0x2c,0x25,0x34, + 0x65,0x65,0x77,0x77,0x37,0x77,0x37,0x36,0x26,0x20,0x2d,0x78,0x22,0x2c, + 0x0a,0x22,0x78,0x78,0x2c,0x40,0x33,0x77,0x77,0x77,0x37,0x37,0x36,0x3b, + 0x2e,0x3d,0x39,0x78,0x22,0x2c,0x0a,0x22,0x78,0x78,0x78,0x2c,0x40,0x33, + 0x37,0x37,0x36,0x36,0x3a,0x20,0x6f,0x74,0x78,0x78,0x22,0x2c,0x0a,0x22, + 0x78,0x78,0x78,0x78,0x2c,0x2b,0x32,0x36,0x32,0x3b,0x20,0x6f,0x39,0x78, + 0x78,0x78,0x22,0x2c,0x0a,0x22,0x78,0x78,0x78,0x78,0x78,0x2c,0x2b,0x3a, + 0x3a,0x2e,0x6f,0x74,0x78,0x78,0x78,0x78,0x22,0x2c,0x0a,0x22,0x78,0x78, + 0x78,0x78,0x78,0x78,0x3c,0x4f,0x58,0x2d,0x39,0x78,0x78,0x78,0x78,0x78, + 0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int mini_form_xpm_len = 991; +static const unsigned char mini_form_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x20,0x66,0x6f,0x72,0x6d, + 0x5f,0x78,0x70,0x6d,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x22,0x32,0x30, + 0x20,0x32,0x30,0x20,0x34,0x20,0x32,0x22,0x2c,0x0a,0x22,0x20,0x20,0x09, + 0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x09,0x63, + 0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x22,0x2b,0x20,0x09,0x63,0x20, + 0x23,0x30,0x30,0x30,0x30,0x37,0x39,0x22,0x2c,0x0a,0x22,0x40,0x20,0x09, + 0x63,0x20,0x23,0x46,0x46,0x46,0x46,0x46,0x46,0x22,0x2c,0x0a,0x22,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a, + 0x22,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x22, + 0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x2b,0x20,0x2b, + 0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b, + 0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2e, + 0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x2e, + 0x20,0x2e,0x20,0x2b,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x2b, + 0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2b, + 0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b, + 0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b, + 0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e, + 0x20,0x2b,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e, + 0x20,0x2e,0x20,0x2b,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a, + 0x22,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x22, + 0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x2b,0x20,0x2e,0x20,0x2e, + 0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x2b,0x20,0x2e, + 0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x2b, + 0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2b, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e, + 0x20,0x2b,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e, + 0x20,0x2e,0x20,0x2b,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a, + 0x22,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x40, + 0x20,0x40,0x20,0x40,0x20,0x40,0x20,0x2b,0x20,0x2e,0x20,0x2e,0x20,0x22, + 0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b, + 0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b, + 0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2b,0x20,0x2e,0x20,0x2e, + 0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x22,0x2c,0x0a,0x22,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x2e, + 0x20,0x2e,0x20,0x2e,0x20,0x2e,0x20,0x22,0x7d,0x3b,0x0a +}; + +static const unsigned int mini_image_xpm_len = 510; +static const unsigned char mini_image_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x63,0x68,0x61,0x72,0x20, + 0x2a,0x69,0x6d,0x61,0x67,0x65,0x5f,0x78,0x70,0x6d,0x5b,0x5d,0x20,0x3d, + 0x20,0x7b,0x0a,0x22,0x31,0x37,0x20,0x31,0x35,0x20,0x39,0x20,0x31,0x22, + 0x2c,0x0a,0x22,0x20,0x09,0x63,0x20,0x23,0x37,0x46,0x37,0x46,0x37,0x46, + 0x22,0x2c,0x0a,0x22,0x2e,0x09,0x63,0x20,0x23,0x46,0x46,0x46,0x46,0x46, + 0x46,0x22,0x2c,0x0a,0x22,0x58,0x09,0x63,0x20,0x23,0x30,0x30,0x42,0x36, + 0x46,0x46,0x22,0x2c,0x0a,0x22,0x6f,0x09,0x63,0x20,0x23,0x42,0x46,0x42, + 0x46,0x42,0x46,0x22,0x2c,0x0a,0x22,0x4f,0x09,0x63,0x20,0x23,0x46,0x46, + 0x36,0x43,0x30,0x30,0x22,0x2c,0x0a,0x22,0x2b,0x09,0x63,0x20,0x23,0x30, + 0x30,0x30,0x30,0x30,0x30,0x22,0x2c,0x0a,0x22,0x40,0x09,0x63,0x20,0x23, + 0x30,0x30,0x30,0x30,0x46,0x46,0x22,0x2c,0x0a,0x22,0x23,0x09,0x63,0x20, + 0x23,0x36,0x43,0x46,0x46,0x30,0x30,0x22,0x2c,0x0a,0x22,0x24,0x09,0x63, + 0x20,0x23,0x46,0x46,0x42,0x36,0x39,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x2e,0x2e,0x58, + 0x58,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e, + 0x6f,0x20,0x20,0x20,0x2e,0x58,0x58,0x58,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x6f,0x2e,0x20,0x20,0x58,0x58,0x58, + 0x2b,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x4f,0x40,0x40,0x40,0x40,0x40,0x40, + 0x2b,0x2b,0x2b,0x58,0x58,0x58,0x2b,0x2b,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x4f,0x40,0x40,0x40,0x40,0x40,0x40,0x4f,0x2e,0x58,0x58,0x58,0x2b,0x2b, + 0x2b,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x4f,0x40,0x40,0x40,0x40,0x40,0x40, + 0x4f,0x58,0x58,0x58,0x2b,0x2b,0x2b,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x4f,0x23,0x23,0x23,0x23,0x23,0x23,0x58,0x58,0x58,0x2b,0x2b,0x2e,0x2e, + 0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x4f,0x23,0x23,0x23,0x23,0x23,0x58, + 0x58,0x58,0x2b,0x2b,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x4f,0x23,0x23,0x24,0x23,0x24,0x58,0x58,0x2b,0x6f,0x2b,0x2e,0x2e,0x2e, + 0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x4f,0x23,0x24,0x24,0x24,0x24,0x24, + 0x2b,0x2e,0x6f,0x2b,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x4f,0x23,0x23,0x24,0x24,0x23,0x23,0x4f,0x2e,0x6f,0x2b,0x2e,0x2e,0x2e, + 0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f,0x4f, + 0x4f,0x2e,0x6f,0x2b,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x20,0x2e, + 0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x2e,0x6f,0x2b,0x2e,0x2e,0x2e, + 0x2e,0x22,0x2c,0x0a,0x22,0x20,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f,0x6f, + 0x6f,0x6f,0x6f,0x2b,0x2e,0x2e,0x2e,0x2e,0x22,0x2c,0x0a,0x22,0x2b,0x2b, + 0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2b,0x2e,0x2e,0x2e, + 0x2e,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int mini_left_xpm_len = 1405; +static const unsigned char mini_left_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x31,0x36,0x20,0x31,0x36, + 0x20,0x34,0x37,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x23, + 0x30,0x66,0x30,0x66,0x33,0x63,0x33,0x63,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x31,0x36,0x31,0x36,0x33,0x39,0x33, + 0x39,0x65,0x66,0x65,0x66,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20,0x23, + 0x31,0x38,0x31,0x38,0x33,0x66,0x33,0x66,0x66,0x62,0x66,0x62,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x63,0x20,0x23,0x32,0x37,0x32,0x37,0x33,0x66,0x33, + 0x66,0x64,0x31,0x64,0x31,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x63,0x20,0x23, + 0x31,0x37,0x31,0x37,0x34,0x35,0x34,0x35,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2b,0x20,0x63,0x20,0x23,0x31,0x64,0x31,0x64,0x34,0x33,0x34, + 0x33,0x66,0x32,0x66,0x32,0x22,0x2c,0x0a,0x22,0x40,0x20,0x63,0x20,0x23, + 0x31,0x64,0x31,0x64,0x34,0x63,0x34,0x63,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x63,0x20,0x23,0x33,0x30,0x33,0x30,0x35,0x36,0x35, + 0x36,0x64,0x38,0x64,0x38,0x22,0x2c,0x0a,0x22,0x24,0x20,0x63,0x20,0x23, + 0x33,0x61,0x33,0x61,0x35,0x32,0x35,0x32,0x64,0x34,0x64,0x34,0x22,0x2c, + 0x0a,0x22,0x25,0x20,0x63,0x20,0x23,0x32,0x30,0x32,0x30,0x34,0x37,0x34, + 0x37,0x66,0x63,0x66,0x63,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63,0x20,0x23, + 0x32,0x63,0x32,0x63,0x35,0x36,0x35,0x36,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2a,0x20,0x63,0x20,0x23,0x33,0x34,0x33,0x34,0x36,0x32,0x36, + 0x32,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x23, + 0x33,0x62,0x33,0x62,0x36,0x62,0x36,0x62,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x63,0x20,0x23,0x36,0x33,0x36,0x33,0x37,0x37,0x37, + 0x37,0x62,0x38,0x62,0x38,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x63,0x20,0x23, + 0x34,0x62,0x34,0x62,0x36,0x33,0x36,0x33,0x63,0x34,0x63,0x34,0x22,0x2c, + 0x0a,0x22,0x3a,0x20,0x63,0x20,0x23,0x34,0x38,0x34,0x38,0x36,0x37,0x36, + 0x37,0x63,0x39,0x63,0x39,0x22,0x2c,0x0a,0x22,0x3e,0x20,0x63,0x20,0x23, + 0x35,0x31,0x35,0x31,0x36,0x64,0x36,0x64,0x63,0x64,0x63,0x64,0x22,0x2c, + 0x0a,0x22,0x2c,0x20,0x63,0x20,0x23,0x34,0x35,0x34,0x35,0x37,0x34,0x37, + 0x34,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x63,0x20,0x23, + 0x34,0x63,0x34,0x63,0x37,0x64,0x37,0x64,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x31,0x20,0x63,0x20,0x23,0x37,0x61,0x37,0x61,0x38,0x63,0x38, + 0x63,0x62,0x64,0x62,0x64,0x22,0x2c,0x0a,0x22,0x32,0x20,0x63,0x20,0x23, + 0x35,0x36,0x35,0x36,0x38,0x35,0x38,0x35,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x63,0x20,0x23,0x35,0x66,0x35,0x66,0x38,0x62,0x38, + 0x62,0x66,0x61,0x66,0x61,0x22,0x2c,0x0a,0x22,0x34,0x20,0x63,0x20,0x23, + 0x37,0x36,0x37,0x36,0x38,0x62,0x38,0x62,0x63,0x30,0x63,0x30,0x22,0x2c, + 0x0a,0x22,0x35,0x20,0x63,0x20,0x23,0x36,0x37,0x36,0x37,0x39,0x37,0x39, + 0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x36,0x20,0x63,0x20,0x23, + 0x36,0x61,0x36,0x61,0x39,0x38,0x39,0x38,0x66,0x34,0x66,0x34,0x22,0x2c, + 0x0a,0x22,0x37,0x20,0x63,0x20,0x23,0x36,0x66,0x36,0x66,0x39,0x66,0x39, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x38,0x20,0x63,0x20,0x23, + 0x37,0x66,0x37,0x66,0x61,0x33,0x61,0x33,0x65,0x39,0x65,0x39,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x63,0x20,0x23,0x37,0x36,0x37,0x36,0x61,0x36,0x61, + 0x36,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x30,0x20,0x63,0x20,0x23, + 0x37,0x36,0x37,0x36,0x61,0x38,0x61,0x38,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x71,0x20,0x63,0x20,0x23,0x37,0x65,0x37,0x65,0x61,0x66,0x61, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x77,0x20,0x63,0x20,0x23, + 0x37,0x66,0x37,0x66,0x62,0x31,0x62,0x31,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x65,0x20,0x63,0x20,0x23,0x38,0x66,0x38,0x66,0x61,0x36,0x61, + 0x36,0x65,0x39,0x65,0x39,0x22,0x2c,0x0a,0x22,0x72,0x20,0x63,0x20,0x23, + 0x38,0x33,0x38,0x33,0x62,0x31,0x62,0x31,0x66,0x35,0x66,0x35,0x22,0x2c, + 0x0a,0x22,0x74,0x20,0x63,0x20,0x23,0x38,0x32,0x38,0x32,0x62,0x35,0x62, + 0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x79,0x20,0x63,0x20,0x23, + 0x39,0x34,0x39,0x34,0x63,0x34,0x63,0x34,0x66,0x61,0x66,0x61,0x22,0x2c, + 0x0a,0x22,0x75,0x20,0x63,0x20,0x23,0x39,0x37,0x39,0x37,0x63,0x62,0x63, + 0x62,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x69,0x20,0x63,0x20,0x23, + 0x39,0x66,0x39,0x66,0x63,0x36,0x63,0x36,0x66,0x31,0x66,0x31,0x22,0x2c, + 0x0a,0x22,0x70,0x20,0x63,0x20,0x23,0x39,0x66,0x39,0x66,0x64,0x34,0x64, + 0x34,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x61,0x20,0x63,0x20,0x23, + 0x62,0x62,0x62,0x62,0x65,0x34,0x65,0x34,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x73,0x20,0x63,0x20,0x23,0x63,0x30,0x63,0x30,0x63,0x30,0x63, + 0x30,0x63,0x30,0x63,0x30,0x22,0x2c,0x0a,0x22,0x64,0x20,0x63,0x20,0x23, + 0x63,0x65,0x63,0x65,0x64,0x63,0x64,0x63,0x66,0x64,0x66,0x64,0x22,0x2c, + 0x0a,0x22,0x66,0x20,0x63,0x20,0x23,0x63,0x33,0x63,0x33,0x65,0x36,0x65, + 0x36,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x67,0x20,0x63,0x20,0x23, + 0x64,0x38,0x64,0x38,0x65,0x31,0x65,0x31,0x66,0x39,0x66,0x39,0x22,0x2c, + 0x0a,0x22,0x68,0x20,0x63,0x20,0x23,0x65,0x36,0x65,0x36,0x65,0x61,0x65, + 0x61,0x66,0x61,0x66,0x61,0x22,0x2c,0x0a,0x22,0x6a,0x20,0x63,0x20,0x23, + 0x65,0x34,0x65,0x34,0x66,0x39,0x66,0x39,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x6b,0x20,0x63,0x20,0x23,0x65,0x65,0x65,0x65,0x66,0x66,0x66, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x63,0x20,0x4e, + 0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c, + 0x73,0x20,0x2a,0x2f,0x0a,0x22,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c, + 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x22,0x2c,0x0a,0x22,0x6c,0x6c, + 0x6c,0x6c,0x6c,0x34,0x65,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c, + 0x22,0x2c,0x0a,0x22,0x6c,0x6c,0x6c,0x6c,0x65,0x67,0x68,0x65,0x6c,0x6c, + 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x22,0x2c,0x0a,0x22,0x6c,0x6c,0x6c,0x31, + 0x68,0x6b,0x69,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x22,0x2c, + 0x0a,0x22,0x6c,0x6c,0x31,0x6b,0x6b,0x70,0x30,0x31,0x6c,0x6c,0x6c,0x6c, + 0x6c,0x6c,0x6c,0x6c,0x22,0x2c,0x0a,0x22,0x6c,0x34,0x6b,0x6b,0x79,0x77, + 0x71,0x34,0x6c,0x65,0x31,0x65,0x34,0x65,0x38,0x34,0x22,0x2c,0x0a,0x22, + 0x31,0x64,0x6b,0x79,0x39,0x71,0x39,0x35,0x38,0x69,0x61,0x61,0x66,0x61, + 0x74,0x23,0x22,0x2c,0x0a,0x22,0x69,0x6a,0x75,0x71,0x39,0x39,0x37,0x71, + 0x79,0x79,0x72,0x74,0x30,0x39,0x2c,0x26,0x22,0x2c,0x0a,0x22,0x36,0x74, + 0x77,0x39,0x39,0x37,0x37,0x37,0x35,0x35,0x37,0x37,0x35,0x35,0x2c,0x6f, + 0x22,0x2c,0x0a,0x22,0x2d,0x25,0x33,0x39,0x37,0x37,0x39,0x2a,0x58,0x25, + 0x26,0x2a,0x3d,0x2c,0x2a,0x2b,0x22,0x2c,0x0a,0x22,0x6c,0x24,0x40,0x32, + 0x35,0x37,0x37,0x3e,0x31,0x31,0x3b,0x24,0x6f,0x2e,0x2b,0x3b,0x22,0x2c, + 0x0a,0x22,0x6c,0x6c,0x3e,0x4f,0x2c,0x35,0x37,0x31,0x6c,0x6c,0x6c,0x6c, + 0x6c,0x6c,0x31,0x6c,0x22,0x2c,0x0a,0x22,0x6c,0x6c,0x6c,0x3a,0x58,0x3c, + 0x32,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x22,0x2c,0x0a,0x22, + 0x6c,0x6c,0x6c,0x6c,0x2d,0x20,0x40,0x34,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c, + 0x6c,0x6c,0x22,0x2c,0x0a,0x22,0x6c,0x6c,0x6c,0x6c,0x6c,0x2d,0x2e,0x34, + 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x22,0x2c,0x0a,0x22,0x6c,0x6c, + 0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c,0x6c, + 0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int mini_resetproperty_xpm_len = 180; +static const unsigned char mini_resetproperty_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x20,0x72,0x65,0x73,0x65, + 0x74,0x70,0x72,0x6f,0x70,0x65,0x72,0x74,0x79,0x5f,0x78,0x70,0x6d,0x5b, + 0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x22,0x37,0x20,0x36,0x20,0x34,0x20,0x31, + 0x22,0x2c,0x0a,0x22,0x20,0x09,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c, + 0x0a,0x22,0x2e,0x09,0x63,0x20,0x23,0x43,0x30,0x30,0x30,0x30,0x30,0x22, + 0x2c,0x0a,0x22,0x2b,0x09,0x63,0x20,0x23,0x46,0x46,0x30,0x30,0x30,0x30, + 0x22,0x2c,0x0a,0x22,0x40,0x09,0x63,0x20,0x4e,0x6f,0x6e,0x65,0x22,0x2c, + 0x0a,0x22,0x2e,0x2b,0x40,0x40,0x40,0x2b,0x2e,0x22,0x2c,0x0a,0x22,0x40, + 0x2e,0x2b,0x40,0x2b,0x2e,0x40,0x22,0x2c,0x0a,0x22,0x40,0x40,0x2e,0x2b, + 0x2e,0x40,0x40,0x22,0x2c,0x0a,0x22,0x40,0x40,0x2b,0x2e,0x2b,0x40,0x40, + 0x22,0x2c,0x0a,0x22,0x40,0x2b,0x2e,0x40,0x2e,0x2b,0x40,0x22,0x2c,0x0a, + 0x22,0x2b,0x2e,0x40,0x40,0x40,0x2e,0x2b,0x22,0x7d,0x3b,0x0a +}; + +static const unsigned int mini_right_xpm_len = 1573; +static const unsigned char mini_right_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x31,0x36,0x20,0x31,0x36, + 0x20,0x35,0x35,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x23, + 0x30,0x32,0x30,0x32,0x32,0x35,0x32,0x35,0x66,0x65,0x66,0x65,0x22,0x2c, + 0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x30,0x36,0x30,0x36,0x32,0x61,0x32, + 0x61,0x66,0x62,0x66,0x62,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20,0x23, + 0x31,0x63,0x31,0x63,0x33,0x63,0x33,0x63,0x65,0x35,0x65,0x35,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x63,0x20,0x23,0x32,0x32,0x32,0x32,0x33,0x37,0x33, + 0x37,0x64,0x36,0x64,0x36,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x63,0x20,0x23, + 0x33,0x62,0x33,0x62,0x35,0x33,0x35,0x33,0x63,0x62,0x63,0x62,0x22,0x2c, + 0x0a,0x22,0x2b,0x20,0x63,0x20,0x23,0x32,0x36,0x32,0x36,0x34,0x61,0x34, + 0x61,0x65,0x62,0x65,0x62,0x22,0x2c,0x0a,0x22,0x40,0x20,0x63,0x20,0x23, + 0x32,0x63,0x32,0x63,0x34,0x66,0x34,0x66,0x65,0x65,0x65,0x65,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x63,0x20,0x23,0x33,0x33,0x33,0x33,0x35,0x62,0x35, + 0x62,0x66,0x31,0x66,0x31,0x22,0x2c,0x0a,0x22,0x24,0x20,0x63,0x20,0x23, + 0x33,0x32,0x33,0x32,0x35,0x61,0x35,0x61,0x66,0x61,0x66,0x61,0x22,0x2c, + 0x0a,0x22,0x25,0x20,0x63,0x20,0x23,0x33,0x35,0x33,0x35,0x36,0x35,0x36, + 0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63,0x20,0x23, + 0x33,0x39,0x33,0x39,0x36,0x34,0x36,0x34,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2a,0x20,0x63,0x20,0x23,0x33,0x65,0x33,0x65,0x36,0x39,0x36, + 0x39,0x66,0x65,0x66,0x65,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x23, + 0x34,0x39,0x34,0x39,0x35,0x64,0x35,0x64,0x62,0x63,0x62,0x63,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x63,0x20,0x23,0x36,0x32,0x36,0x32,0x37,0x37,0x37, + 0x37,0x62,0x62,0x62,0x62,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x63,0x20,0x23, + 0x36,0x38,0x36,0x38,0x37,0x64,0x37,0x64,0x62,0x38,0x62,0x38,0x22,0x2c, + 0x0a,0x22,0x3a,0x20,0x63,0x20,0x23,0x34,0x30,0x34,0x30,0x35,0x64,0x35, + 0x64,0x63,0x61,0x63,0x61,0x22,0x2c,0x0a,0x22,0x3e,0x20,0x63,0x20,0x23, + 0x34,0x39,0x34,0x39,0x36,0x33,0x36,0x33,0x63,0x36,0x63,0x36,0x22,0x2c, + 0x0a,0x22,0x2c,0x20,0x63,0x20,0x23,0x35,0x30,0x35,0x30,0x37,0x31,0x37, + 0x31,0x64,0x66,0x64,0x66,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x63,0x20,0x23, + 0x34,0x63,0x34,0x63,0x37,0x35,0x37,0x35,0x65,0x39,0x65,0x39,0x22,0x2c, + 0x0a,0x22,0x31,0x20,0x63,0x20,0x23,0x35,0x63,0x35,0x63,0x37,0x61,0x37, + 0x61,0x65,0x61,0x65,0x61,0x22,0x2c,0x0a,0x22,0x32,0x20,0x63,0x20,0x23, + 0x37,0x39,0x37,0x39,0x38,0x39,0x38,0x39,0x61,0x66,0x61,0x66,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x63,0x20,0x23,0x35,0x34,0x35,0x34,0x38,0x34,0x38, + 0x34,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x34,0x20,0x63,0x20,0x23, + 0x35,0x64,0x35,0x64,0x38,0x65,0x38,0x65,0x66,0x64,0x66,0x64,0x22,0x2c, + 0x0a,0x22,0x35,0x20,0x63,0x20,0x23,0x36,0x65,0x36,0x65,0x38,0x35,0x38, + 0x35,0x63,0x35,0x63,0x35,0x22,0x2c,0x0a,0x22,0x36,0x20,0x63,0x20,0x23, + 0x36,0x37,0x36,0x37,0x39,0x36,0x39,0x36,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x37,0x20,0x63,0x20,0x23,0x36,0x64,0x36,0x64,0x39,0x38,0x39, + 0x38,0x66,0x30,0x66,0x30,0x22,0x2c,0x0a,0x22,0x38,0x20,0x63,0x20,0x23, + 0x36,0x64,0x36,0x64,0x39,0x62,0x39,0x62,0x66,0x61,0x66,0x61,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x63,0x20,0x23,0x37,0x39,0x37,0x39,0x39,0x38,0x39, + 0x38,0x65,0x38,0x65,0x38,0x22,0x2c,0x0a,0x22,0x30,0x20,0x63,0x20,0x23, + 0x36,0x63,0x36,0x63,0x61,0x30,0x61,0x30,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x71,0x20,0x63,0x20,0x23,0x37,0x66,0x37,0x66,0x61,0x30,0x61, + 0x30,0x65,0x33,0x65,0x33,0x22,0x2c,0x0a,0x22,0x77,0x20,0x63,0x20,0x23, + 0x37,0x36,0x37,0x36,0x61,0x36,0x61,0x36,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x65,0x20,0x63,0x20,0x23,0x37,0x63,0x37,0x63,0x61,0x38,0x61, + 0x38,0x66,0x32,0x66,0x32,0x22,0x2c,0x0a,0x22,0x72,0x20,0x63,0x20,0x23, + 0x37,0x66,0x37,0x66,0x61,0x66,0x61,0x66,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x74,0x20,0x63,0x20,0x23,0x38,0x38,0x38,0x38,0x61,0x32,0x61, + 0x32,0x66,0x30,0x66,0x30,0x22,0x2c,0x0a,0x22,0x79,0x20,0x63,0x20,0x23, + 0x38,0x36,0x38,0x36,0x62,0x36,0x62,0x36,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x75,0x20,0x63,0x20,0x23,0x38,0x38,0x38,0x38,0x62,0x37,0x62, + 0x37,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x69,0x20,0x63,0x20,0x23, + 0x38,0x63,0x38,0x63,0x62,0x38,0x62,0x38,0x66,0x30,0x66,0x30,0x22,0x2c, + 0x0a,0x22,0x70,0x20,0x63,0x20,0x23,0x38,0x66,0x38,0x66,0x62,0x66,0x62, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x61,0x20,0x63,0x20,0x23, + 0x39,0x35,0x39,0x35,0x63,0x37,0x63,0x37,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x73,0x20,0x63,0x20,0x23,0x39,0x37,0x39,0x37,0x63,0x38,0x63, + 0x38,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x64,0x20,0x63,0x20,0x23, + 0x39,0x64,0x39,0x64,0x63,0x66,0x63,0x66,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x66,0x20,0x63,0x20,0x23,0x39,0x66,0x39,0x66,0x64,0x32,0x64, + 0x32,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x67,0x20,0x63,0x20,0x23, + 0x61,0x32,0x61,0x32,0x64,0x30,0x64,0x30,0x66,0x30,0x66,0x30,0x22,0x2c, + 0x0a,0x22,0x68,0x20,0x63,0x20,0x23,0x61,0x31,0x61,0x31,0x64,0x30,0x64, + 0x30,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x6a,0x20,0x63,0x20,0x23, + 0x61,0x39,0x61,0x39,0x64,0x65,0x64,0x65,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x6b,0x20,0x63,0x20,0x23,0x62,0x31,0x62,0x31,0x64,0x37,0x64, + 0x37,0x66,0x32,0x66,0x32,0x22,0x2c,0x0a,0x22,0x6c,0x20,0x63,0x20,0x23, + 0x62,0x65,0x62,0x65,0x64,0x62,0x64,0x62,0x66,0x35,0x66,0x35,0x22,0x2c, + 0x0a,0x22,0x7a,0x20,0x63,0x20,0x23,0x62,0x63,0x62,0x63,0x64,0x39,0x64, + 0x39,0x66,0x65,0x66,0x65,0x22,0x2c,0x0a,0x22,0x78,0x20,0x63,0x20,0x23, + 0x61,0x64,0x61,0x64,0x65,0x32,0x65,0x32,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x63,0x20,0x63,0x20,0x23,0x62,0x39,0x62,0x39,0x65,0x35,0x65, + 0x35,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x76,0x20,0x63,0x20,0x23, + 0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x63,0x30,0x22,0x2c, + 0x0a,0x22,0x62,0x20,0x63,0x20,0x23,0x63,0x63,0x63,0x63,0x66,0x30,0x66, + 0x30,0x66,0x32,0x66,0x32,0x22,0x2c,0x0a,0x22,0x6e,0x20,0x63,0x20,0x23, + 0x63,0x64,0x63,0x64,0x66,0x36,0x66,0x36,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x6d,0x20,0x63,0x20,0x23,0x65,0x32,0x65,0x32,0x66,0x66,0x66, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x4d,0x20,0x63,0x20,0x4e, + 0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65,0x6c, + 0x73,0x20,0x2a,0x2f,0x0a,0x22,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, + 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x22,0x2c,0x0a,0x22,0x4d,0x4d, + 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x71,0x32,0x4d,0x4d,0x4d,0x4d,0x4d, + 0x22,0x2c,0x0a,0x22,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x62, + 0x72,0x35,0x4d,0x4d,0x4d,0x4d,0x22,0x2c,0x0a,0x22,0x4d,0x4d,0x4d,0x4d, + 0x4d,0x4d,0x4d,0x4d,0x4d,0x64,0x6a,0x36,0x35,0x4d,0x4d,0x4d,0x22,0x2c, + 0x0a,0x22,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x71,0x73,0x64, + 0x77,0x35,0x4d,0x4d,0x22,0x2c,0x0a,0x22,0x32,0x74,0x71,0x71,0x35,0x71, + 0x4d,0x4d,0x32,0x79,0x70,0x70,0x61,0x36,0x2d,0x4d,0x22,0x2c,0x0a,0x22, + 0x69,0x6d,0x6e,0x63,0x6c,0x6c,0x67,0x6b,0x7a,0x79,0x72,0x79,0x79,0x70, + 0x34,0x3b,0x22,0x2c,0x0a,0x22,0x65,0x78,0x61,0x61,0x73,0x61,0x64,0x68, + 0x61,0x72,0x72,0x72,0x72,0x72,0x38,0x3c,0x22,0x2c,0x0a,0x22,0x37,0x66, + 0x75,0x79,0x72,0x77,0x77,0x30,0x72,0x72,0x72,0x72,0x77,0x36,0x2a,0x58, + 0x22,0x2c,0x0a,0x22,0x2c,0x30,0x33,0x2a,0x25,0x24,0x40,0x2b,0x26,0x72, + 0x72,0x77,0x38,0x25,0x2e,0x3b,0x22,0x2c,0x0a,0x22,0x32,0x58,0x6f,0x4f, + 0x3e,0x3b,0x32,0x32,0x2d,0x38,0x77,0x38,0x25,0x20,0x3d,0x4d,0x22,0x2c, + 0x0a,0x22,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x39,0x36,0x24, + 0x20,0x3e,0x4d,0x4d,0x22,0x2c,0x0a,0x22,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, + 0x4d,0x4d,0x4d,0x31,0x25,0x2e,0x3e,0x4d,0x4d,0x4d,0x22,0x2c,0x0a,0x22, + 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x23,0x20,0x3e,0x4d,0x4d, + 0x4d,0x4d,0x22,0x2c,0x0a,0x22,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, + 0x4d,0x3a,0x2d,0x4d,0x4d,0x4d,0x4d,0x4d,0x22,0x2c,0x0a,0x22,0x4d,0x4d, + 0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d, + 0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int mini_up_xpm_len = 1378; +static const unsigned char mini_up_xpm_data[] = { + 0x2f,0x2a,0x20,0x58,0x50,0x4d,0x20,0x2a,0x2f,0x0a,0x73,0x74,0x61,0x74, + 0x69,0x63,0x20,0x63,0x68,0x61,0x72,0x20,0x2a,0x6d,0x61,0x67,0x69,0x63, + 0x6b,0x5b,0x5d,0x20,0x3d,0x20,0x7b,0x0a,0x2f,0x2a,0x20,0x63,0x6f,0x6c, + 0x75,0x6d,0x6e,0x73,0x20,0x72,0x6f,0x77,0x73,0x20,0x63,0x6f,0x6c,0x6f, + 0x72,0x73,0x20,0x63,0x68,0x61,0x72,0x73,0x2d,0x70,0x65,0x72,0x2d,0x70, + 0x69,0x78,0x65,0x6c,0x20,0x2a,0x2f,0x0a,0x22,0x31,0x36,0x20,0x31,0x36, + 0x20,0x34,0x36,0x20,0x31,0x22,0x2c,0x0a,0x22,0x20,0x20,0x63,0x20,0x23, + 0x31,0x36,0x31,0x36,0x33,0x36,0x33,0x36,0x65,0x62,0x65,0x62,0x22,0x2c, + 0x0a,0x22,0x2e,0x20,0x63,0x20,0x23,0x31,0x37,0x31,0x37,0x33,0x61,0x33, + 0x61,0x65,0x63,0x65,0x63,0x22,0x2c,0x0a,0x22,0x58,0x20,0x63,0x20,0x23, + 0x31,0x61,0x31,0x61,0x33,0x66,0x33,0x66,0x66,0x33,0x66,0x33,0x22,0x2c, + 0x0a,0x22,0x6f,0x20,0x63,0x20,0x23,0x31,0x62,0x31,0x62,0x34,0x33,0x34, + 0x33,0x66,0x65,0x66,0x65,0x22,0x2c,0x0a,0x22,0x4f,0x20,0x63,0x20,0x23, + 0x33,0x66,0x33,0x66,0x35,0x36,0x35,0x36,0x64,0x31,0x64,0x31,0x22,0x2c, + 0x0a,0x22,0x2b,0x20,0x63,0x20,0x23,0x32,0x62,0x32,0x62,0x35,0x63,0x35, + 0x63,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x40,0x20,0x63,0x20,0x23, + 0x33,0x31,0x33,0x31,0x35,0x66,0x35,0x66,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x23,0x20,0x63,0x20,0x23,0x33,0x36,0x33,0x36,0x36,0x37,0x36, + 0x37,0x66,0x65,0x66,0x65,0x22,0x2c,0x0a,0x22,0x24,0x20,0x63,0x20,0x23, + 0x33,0x62,0x33,0x62,0x36,0x36,0x36,0x36,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x25,0x20,0x63,0x20,0x23,0x33,0x66,0x33,0x66,0x36,0x65,0x36, + 0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x26,0x20,0x63,0x20,0x23, + 0x36,0x39,0x36,0x39,0x37,0x62,0x37,0x62,0x62,0x38,0x62,0x38,0x22,0x2c, + 0x0a,0x22,0x2a,0x20,0x63,0x20,0x23,0x34,0x64,0x34,0x64,0x36,0x35,0x36, + 0x35,0x63,0x63,0x63,0x63,0x22,0x2c,0x0a,0x22,0x3d,0x20,0x63,0x20,0x23, + 0x35,0x31,0x35,0x31,0x36,0x63,0x36,0x63,0x63,0x65,0x63,0x65,0x22,0x2c, + 0x0a,0x22,0x2d,0x20,0x63,0x20,0x23,0x35,0x35,0x35,0x35,0x37,0x32,0x37, + 0x32,0x63,0x65,0x63,0x65,0x22,0x2c,0x0a,0x22,0x3b,0x20,0x63,0x20,0x23, + 0x35,0x38,0x35,0x38,0x37,0x31,0x37,0x31,0x63,0x37,0x63,0x37,0x22,0x2c, + 0x0a,0x22,0x3a,0x20,0x63,0x20,0x23,0x34,0x32,0x34,0x32,0x36,0x64,0x36, + 0x64,0x65,0x64,0x65,0x64,0x22,0x2c,0x0a,0x22,0x3e,0x20,0x63,0x20,0x23, + 0x34,0x37,0x34,0x37,0x37,0x37,0x37,0x37,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x2c,0x20,0x63,0x20,0x23,0x34,0x61,0x34,0x61,0x37,0x61,0x37, + 0x61,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x3c,0x20,0x63,0x20,0x23, + 0x36,0x34,0x36,0x34,0x37,0x62,0x37,0x62,0x63,0x30,0x63,0x30,0x22,0x2c, + 0x0a,0x22,0x31,0x20,0x63,0x20,0x23,0x37,0x32,0x37,0x32,0x38,0x37,0x38, + 0x37,0x62,0x62,0x62,0x62,0x22,0x2c,0x0a,0x22,0x32,0x20,0x63,0x20,0x23, + 0x35,0x30,0x35,0x30,0x38,0x35,0x38,0x35,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x33,0x20,0x63,0x20,0x23,0x35,0x63,0x35,0x63,0x38,0x61,0x38, + 0x61,0x66,0x37,0x66,0x37,0x22,0x2c,0x0a,0x22,0x34,0x20,0x63,0x20,0x23, + 0x36,0x61,0x36,0x61,0x38,0x39,0x38,0x39,0x64,0x37,0x64,0x37,0x22,0x2c, + 0x0a,0x22,0x35,0x20,0x63,0x20,0x23,0x36,0x30,0x36,0x30,0x38,0x65,0x38, + 0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x36,0x20,0x63,0x20,0x23, + 0x36,0x36,0x36,0x36,0x39,0x37,0x39,0x37,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x37,0x20,0x63,0x20,0x23,0x36,0x37,0x36,0x37,0x39,0x38,0x39, + 0x38,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x38,0x20,0x63,0x20,0x23, + 0x36,0x61,0x36,0x61,0x39,0x62,0x39,0x62,0x66,0x34,0x66,0x34,0x22,0x2c, + 0x0a,0x22,0x39,0x20,0x63,0x20,0x23,0x36,0x65,0x36,0x65,0x39,0x65,0x39, + 0x65,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x30,0x20,0x63,0x20,0x23, + 0x37,0x36,0x37,0x36,0x61,0x37,0x61,0x37,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x71,0x20,0x63,0x20,0x23,0x37,0x37,0x37,0x37,0x61,0x39,0x61, + 0x39,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x77,0x20,0x63,0x20,0x23, + 0x37,0x38,0x37,0x38,0x61,0x31,0x61,0x31,0x66,0x37,0x66,0x37,0x22,0x2c, + 0x0a,0x22,0x65,0x20,0x63,0x20,0x23,0x37,0x65,0x37,0x65,0x61,0x66,0x61, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x72,0x20,0x63,0x20,0x23, + 0x38,0x39,0x38,0x39,0x62,0x64,0x62,0x64,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x74,0x20,0x63,0x20,0x23,0x39,0x30,0x39,0x30,0x63,0x36,0x63, + 0x36,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x79,0x20,0x63,0x20,0x23, + 0x39,0x36,0x39,0x36,0x63,0x63,0x63,0x63,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x75,0x20,0x63,0x20,0x23,0x39,0x39,0x39,0x39,0x63,0x39,0x63, + 0x39,0x66,0x39,0x66,0x39,0x22,0x2c,0x0a,0x22,0x69,0x20,0x63,0x20,0x23, + 0x39,0x64,0x39,0x64,0x64,0x31,0x64,0x31,0x66,0x66,0x66,0x66,0x22,0x2c, + 0x0a,0x22,0x70,0x20,0x63,0x20,0x23,0x62,0x32,0x62,0x32,0x63,0x36,0x63, + 0x36,0x66,0x34,0x66,0x34,0x22,0x2c,0x0a,0x22,0x61,0x20,0x63,0x20,0x23, + 0x62,0x66,0x62,0x66,0x65,0x36,0x65,0x36,0x66,0x65,0x66,0x65,0x22,0x2c, + 0x0a,0x22,0x73,0x20,0x63,0x20,0x23,0x63,0x30,0x63,0x30,0x63,0x30,0x63, + 0x30,0x63,0x30,0x63,0x30,0x22,0x2c,0x0a,0x22,0x64,0x20,0x63,0x20,0x23, + 0x64,0x31,0x64,0x31,0x65,0x30,0x65,0x30,0x66,0x63,0x66,0x63,0x22,0x2c, + 0x0a,0x22,0x66,0x20,0x63,0x20,0x23,0x64,0x62,0x64,0x62,0x66,0x39,0x66, + 0x39,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x67,0x20,0x63,0x20,0x23, + 0x65,0x34,0x65,0x34,0x65,0x62,0x65,0x62,0x66,0x63,0x66,0x63,0x22,0x2c, + 0x0a,0x22,0x68,0x20,0x63,0x20,0x23,0x65,0x37,0x65,0x37,0x66,0x66,0x66, + 0x66,0x66,0x66,0x66,0x66,0x22,0x2c,0x0a,0x22,0x6a,0x20,0x63,0x20,0x47, + 0x72,0x61,0x79,0x31,0x30,0x30,0x22,0x2c,0x0a,0x22,0x6b,0x20,0x63,0x20, + 0x4e,0x6f,0x6e,0x65,0x22,0x2c,0x0a,0x2f,0x2a,0x20,0x70,0x69,0x78,0x65, + 0x6c,0x73,0x20,0x2a,0x2f,0x0a,0x22,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x31, + 0x70,0x77,0x31,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x22,0x2c,0x0a,0x22,0x6b, + 0x6b,0x6b,0x6b,0x6b,0x31,0x67,0x66,0x69,0x3e,0x3b,0x6b,0x6b,0x6b,0x6b, + 0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x6b,0x6b,0x6b,0x31,0x67,0x68,0x75,0x72, + 0x65,0x3e,0x26,0x6b,0x6b,0x6b,0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x6b,0x6b, + 0x31,0x67,0x68,0x74,0x65,0x30,0x30,0x39,0x40,0x3c,0x6b,0x6b,0x6b,0x22, + 0x2c,0x0a,0x22,0x6b,0x6b,0x31,0x6a,0x68,0x72,0x30,0x30,0x39,0x39,0x39, + 0x39,0x23,0x26,0x6b,0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x31,0x64,0x68,0x79, + 0x30,0x30,0x39,0x39,0x39,0x39,0x39,0x39,0x2b,0x26,0x6b,0x22,0x2c,0x0a, + 0x22,0x6b,0x34,0x61,0x75,0x71,0x30,0x39,0x39,0x39,0x39,0x37,0x36,0x33, + 0x24,0x2e,0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x31,0x6b,0x31,0x6b,0x31,0x3e, + 0x39,0x39,0x24,0x2a,0x6b,0x77,0x31,0x31,0x6b,0x22,0x2c,0x0a,0x22,0x6b, + 0x6b,0x6b,0x6b,0x6b,0x6b,0x3a,0x71,0x37,0x6f,0x31,0x6b,0x6b,0x6b,0x6b, + 0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x6b,0x6b,0x6b,0x6b,0x6b,0x33,0x65,0x36, + 0x2b,0x31,0x6b,0x6b,0x6b,0x6b,0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x6b,0x6b, + 0x6b,0x6b,0x31,0x38,0x65,0x39,0x40,0x3b,0x6b,0x6b,0x6b,0x6b,0x6b,0x22, + 0x2c,0x0a,0x22,0x6b,0x6b,0x6b,0x6b,0x6b,0x31,0x65,0x71,0x36,0x24,0x4f, + 0x6b,0x6b,0x6b,0x6b,0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x6b,0x6b,0x6b,0x6b, + 0x31,0x72,0x30,0x36,0x3e,0x2e,0x6b,0x6b,0x6b,0x6b,0x6b,0x22,0x2c,0x0a, + 0x22,0x6b,0x6b,0x6b,0x6b,0x6b,0x34,0x65,0x36,0x35,0x2c,0x2e,0x6b,0x6b, + 0x6b,0x6b,0x6b,0x22,0x2c,0x0a,0x22,0x6b,0x6b,0x6b,0x6b,0x6b,0x2d,0x32, + 0x25,0x23,0x23,0x58,0x31,0x6b,0x6b,0x6b,0x6b,0x22,0x2c,0x0a,0x22,0x6b, + 0x6b,0x6b,0x6b,0x6b,0x31,0x2e,0x2e,0x2e,0x20,0x3d,0x6b,0x6b,0x6b,0x6b, + 0x6b,0x22,0x0a,0x7d,0x3b,0x0a +}; + +static const unsigned int background_png_len = 15068; +static const unsigned char background_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0xa5,0x08,0x02,0x00,0x00, + 0x00,0x47,0xb7,0x21,0x3d,0x00,0x00,0x00,0x07,0x74,0x49,0x4d,0x45,0x07, + 0xd4,0x08,0x03,0x00,0x22,0x0a,0x20,0xd9,0xbf,0x88,0x00,0x00,0x00,0x06, + 0x62,0x4b,0x47,0x44,0x00,0xff,0x00,0xff,0x00,0xff,0xa0,0xbd,0xa7,0x93, + 0x00,0x00,0x00,0x09,0x70,0x48,0x59,0x73,0x00,0x00,0x0b,0x10,0x00,0x00, + 0x0b,0x10,0x01,0xad,0x23,0xbd,0x75,0x00,0x00,0x3a,0x69,0x49,0x44,0x41, + 0x54,0x78,0xda,0xb5,0x7d,0xdb,0x92,0xe3,0x48,0x8e,0x25,0x00,0x77,0x4a, + 0x8a,0xc8,0x2e,0xb3,0x7d,0xea,0xff,0x7f,0xea,0x4f,0x9b,0x97,0x9d,0x59, + 0xb3,0xe9,0x0c,0x5d,0xe9,0xee,0xd8,0x07,0x90,0x20,0xe8,0x37,0xba,0x94, + 0xd5,0xd1,0xd5,0x59,0x51,0x91,0x0a,0x8a,0x22,0x1c,0xf7,0x83,0x03,0xfc, + 0xd7,0xbf,0xfe,0x05,0x00,0x88,0xc8,0xcc,0xcc,0x0c,0x00,0xfa,0xa7,0x7c, + 0x13,0x63,0xe4,0x14,0xbc,0xf7,0xde,0x7b,0x24,0xe2,0x94,0x52,0x8c,0x89, + 0x13,0x30,0x00,0x82,0xfc,0x2e,0x00,0x20,0xe0,0x7a,0x1d,0x40,0xc4,0xf3, + 0xe5,0xcc,0x40,0x21,0x84,0x94,0x12,0x33,0xcb,0x6b,0xe4,0x82,0x21,0x84, + 0xd7,0xeb,0x75,0x3a,0x9d,0xfe,0xfa,0xeb,0xaf,0xd7,0xeb,0xf5,0x7a,0xbd, + 0xf4,0xbd,0xf4,0x6b,0xb9,0x26,0xa2,0x7c,0x23,0xdf,0xc7,0x18,0x43,0x08, + 0xe7,0xf3,0xf9,0xd7,0xaf,0x5f,0x88,0x18,0x42,0x90,0xeb,0x97,0xf7,0xac, + 0x5f,0xd9,0x87,0xb2,0x97,0x95,0x5f,0x74,0xce,0x8d,0xff,0x4a,0x76,0x7b, + 0xcc,0x1c,0x63,0x64,0x66,0xe7,0xdc,0x5f,0x7f,0xfd,0xe5,0x9c,0xbb,0xdd, + 0x6e,0x7a,0x3f,0xf6,0x22,0x7a,0x65,0xfd,0xab,0x18,0xa3,0x73,0x6e,0x9a, + 0x26,0x79,0xfd,0xfa,0x82,0xf4,0x7a,0xcd,0x44,0x38,0x4d,0xa7,0xbf,0xfe, + 0xfa,0x07,0x22,0xdd,0x6e,0x37,0x00,0x40,0x04,0xf9,0xd5,0x94,0x38,0xa5, + 0x94,0x52,0x94,0x4b,0x7d,0x7f,0xff,0xf2,0xde,0xdf,0xef,0x77,0x79,0xc8, + 0x7a,0xfd,0xce,0x3d,0xeb,0x9f,0x64,0xef,0xc9,0xde,0xdc,0xee,0x17,0xd0, + 0x85,0x79,0x0e,0xf3,0xcc,0x31,0x21,0x22,0x39,0x47,0x48,0x48,0x08,0x80, + 0x60,0xa4,0xbe,0x7c,0x4f,0x48,0x84,0xf2,0x93,0xe5,0x6a,0xeb,0xa7,0x65, + 0xe6,0x94,0x12,0x27,0x7d,0xa0,0x72,0x8b,0x08,0xfb,0xaf,0xea,0x7d,0xeb, + 0x47,0x72,0xce,0x95,0x8f,0x32,0xbb,0xe7,0x52,0x84,0x7a,0xb5,0xec,0xb2, + 0xfa,0x5b,0xe5,0x0b,0x70,0xff,0x05,0xed,0xaf,0x18,0xa3,0xbe,0x61,0xf9, + 0x30,0xb3,0x5b,0x5a,0xdf,0xae,0xfa,0x01,0x97,0x9f,0x13,0x11,0x00,0x99, + 0x13,0x06,0x7a,0xa4,0x11,0x45,0x6a,0xc8,0x0c,0xd7,0xeb,0xf5,0xf5,0x7a, + 0x9e,0xcf,0x67,0x22,0xb2,0x8f,0x48,0x7f,0xb1,0x25,0x75,0x00,0x20,0x7d, + 0x45,0xa9,0xf1,0xf2,0x73,0x22,0x42,0x44,0x20,0xf7,0x7a,0x85,0x10,0xe6, + 0x94,0x12,0x22,0x12,0x39,0x44,0x5a,0x6f,0x1c,0xf5,0xb3,0xa8,0xfa,0xdb, + 0xf7,0x83,0x4c,0x81,0x96,0x9f,0x2d,0xc7,0x54,0x9f,0x57,0x47,0xea,0xf2, + 0x9f,0xcb,0x9d,0xd4,0x9e,0x69,0x55,0xbd,0xac,0x50,0xad,0x20,0xf5,0x87, + 0xfa,0xbc,0x96,0x67,0x41,0x24,0xa7,0x2a,0x93,0x77,0xeb,0x21,0xea,0x0b, + 0xbc,0xf7,0xf2,0x6e,0x55,0x45,0x6f,0x7c,0x61,0xe3,0x47,0x08,0x20,0x87, + 0x9b,0x5b,0x9f,0xce,0x7c,0x0a,0xbe,0x5e,0x6f,0x62,0x05,0xe5,0xb3,0x94, + 0x02,0x6e,0x6a,0x7c,0x66,0x24,0xab,0x4f,0x50,0x1e,0x3b,0x3a,0x91,0x7d, + 0xe0,0xc4,0xe8,0xc8,0x39,0x47,0x44,0x88,0xb4,0xda,0x7b,0x5c,0xcd,0xfd, + 0xa2,0xfa,0x56,0x00,0xe5,0xc5,0xf5,0x1d,0x46,0xa4,0x9e,0x19,0x58,0xfd, + 0xa6,0xbc,0x78,0x29,0xf5,0xaa,0x25,0xe7,0xf5,0xdc,0x11,0xd1,0xe9,0x74, + 0x12,0x4f,0x67,0x4f,0x43,0x4b,0xd7,0x4b,0xd5,0x2f,0xcf,0x62,0x55,0xf6, + 0xfb,0x83,0x08,0x6a,0xe1,0xed,0xa7,0xc3,0xf5,0x64,0x87,0x10,0x86,0xb4, + 0x11,0x90,0x08,0xaf,0xd7,0x9f,0xd7,0xeb,0x75,0xb9,0x5c,0xe4,0x87,0xe5, + 0x6d,0x67,0x0f,0x50,0xfe,0xd6,0xb7,0xb4,0x27,0x7b,0x63,0x79,0x22,0x8c, + 0x10,0x42,0x44,0x80,0x09,0x4f,0x48,0x44,0x0e,0x39,0x45,0x66,0x94,0xd3, + 0xb9,0x1a,0x7d,0x51,0x6a,0x04,0x80,0xbd,0x03,0xab,0x1c,0xdb,0xaa,0xd4, + 0x3b,0x66,0x9f,0x88,0x88,0xc8,0xfa,0xf5,0xce,0x3d,0x97,0xa6,0x2f,0x8b, + 0x36,0xe4,0x61,0x01,0xc0,0x3c,0xcf,0x29,0x25,0xb9,0x78,0xdf,0xaa,0x97, + 0x8f,0x92,0x99,0x43,0x08,0x55,0xfd,0xe9,0x5c,0x60,0x35,0x2d,0xf5,0xf3, + 0xe4,0xbd,0xb7,0x16,0xa1,0x25,0xfb,0x94,0xa2,0x08,0xe7,0x7e,0xbf,0x33, + 0xf3,0xd7,0xd7,0xd7,0xeb,0xf5,0x5a,0xfd,0x4e,0xf3,0x86,0x97,0x5f,0xaf, + 0x06,0x74,0xad,0x4f,0x8b,0x48,0x48,0x6e,0x0e,0x21,0xc4,0xc0,0x9c,0x08, + 0x90,0xc8,0x11,0x11,0x12,0x88,0xb3,0xb6,0xd6,0xbe,0xef,0x80,0x33,0x63, + 0x60,0x4f,0x43,0x4b,0xc9,0xe4,0x9b,0x7e,0x34,0x57,0xc6,0x04,0xd5,0xc3, + 0xe1,0x9c,0xfb,0xf5,0xeb,0xd7,0xe9,0x74,0x4a,0x29,0x85,0x10,0x24,0x46, + 0x2b,0x9f,0x4e,0x2b,0xf8,0xc8,0x7e,0x2e,0x11,0xa2,0x9e,0xf2,0xd6,0x2d, + 0x95,0xbe,0x66,0xb1,0x94,0xfa,0xb7,0xeb,0xc5,0x63,0x0c,0x50,0xb3,0x1f, + 0xc5,0xb3,0xa2,0xf5,0xf7,0xf8,0x7e,0xbf,0x85,0x30,0x9f,0x4e,0x27,0x1b, + 0x03,0x15,0x6f,0xb7,0x3d,0x0a,0x3f,0x18,0x12,0xab,0xc2,0x31,0x33,0xe3, + 0x34,0xcf,0x33,0x03,0x4c,0xde,0x3b,0x72,0x8c,0xcc,0x8c,0x6c,0xe3,0x7c, + 0x40,0x40,0x60,0x4e,0xd5,0xe8,0x26,0x2d,0xc1,0x1d,0x94,0x91,0x73,0xf5, + 0x49,0x65,0x1f,0x40,0x1f,0x71,0xd5,0x98,0xb7,0x8e,0x82,0x8d,0xef,0x2e, + 0x97,0x8b,0x7c,0xf3,0x78,0x3c,0xe4,0x52,0x44,0x24,0xe2,0x1f,0xd4,0x78, + 0x6b,0x42,0x24,0x44,0xef,0x8b,0xbc,0x34,0x6c,0x99,0xf1,0x33,0x1f,0x18, + 0x98,0x01,0x10,0x53,0x62,0xe7,0xac,0xcf,0xac,0x5c,0x9c,0x08,0x01,0x28, + 0xa5,0x84,0x80,0x8c,0x78,0xbd,0x5e,0xbf,0xbf,0xbf,0xce,0xe7,0xf3,0xeb, + 0x35,0x5b,0xbd,0xcf,0x1e,0xa3,0xdc,0xb3,0x1f,0x0c,0x89,0x6d,0x04,0xc4, + 0xcc,0x0c,0x3e,0x86,0x88,0x80,0x38,0x2d,0x9e,0x85,0x13,0x32,0x32,0x83, + 0xfc,0x0f,0x20,0x81,0x08,0xb8,0x26,0x15,0x11,0x36,0xf5,0x63,0xf8,0xc3, + 0xe8,0x7a,0xc4,0xb5,0x67,0x7a,0x3c,0x4d,0x93,0x28,0x84,0x18,0xe7,0xaa, + 0x9c,0x4a,0x1f,0xd4,0x91,0x7a,0xf9,0x9f,0x9d,0x48,0xbe,0xfa,0x16,0xf2, + 0x8d,0xf9,0xa4,0xc4,0x9c,0x38,0x71,0x4a,0xc9,0x39,0x97,0xbd,0x51,0x29, + 0x22,0x44,0x20,0xc2,0x94,0x08,0x81,0x11,0xe1,0xf1,0x78,0x00,0xe0,0xe9, + 0x74,0x9a,0x67,0x94,0x40,0xa1,0x8c,0x90,0x16,0x6f,0xd2,0x72,0x93,0xd5, + 0x70,0x66,0xbb,0x3f,0xe7,0x52,0xc2,0x18,0xa3,0x23,0x44,0x9c,0x88,0x00, + 0x1d,0x72,0xc2,0xc4,0x89,0x39,0x01,0x42,0xea,0x2a,0x9f,0x9c,0xd6,0xcc, + 0x3c,0xee,0x6e,0x51,0xed,0xde,0x12,0x3d,0x2e,0x67,0x0e,0x80,0xcb,0x74, + 0xae,0x1a,0x5b,0x65,0xba,0x2e,0x41,0x9c,0x73,0x4e,0x53,0xff,0xf2,0x59, + 0x7c,0xfc,0x25,0xc2,0x23,0x22,0xef,0xbd,0xa6,0xd4,0x55,0x79,0x9b,0xef, + 0xb7,0x0f,0x65,0x23,0x21,0x7d,0xa5,0xfc,0x50,0x94,0xa7,0xf1,0xa1,0xc0, + 0xa4,0x27,0xc8,0x9c,0x98,0xc5,0xe6,0xdf,0x89,0xe8,0x74,0x9a,0x34,0xcf, + 0x2c,0xb3,0xe2,0xc5,0xc7,0x67,0x77,0x59,0xbd,0xef,0x32,0x50,0x74,0xce, + 0x91,0xf3,0x73,0x08,0x21,0x04,0x66,0x00,0x24,0x74,0x48,0x48,0x40,0x44, + 0x8e,0x00,0xd8,0x56,0x15,0xcc,0x65,0x13,0x00,0xfe,0xcf,0xff,0xfc,0x37, + 0x91,0x5b,0x2f,0x88,0x12,0x55,0x69,0x08,0x49,0x1a,0x9e,0xae,0xae,0x43, + 0xaf,0xe3,0x9c,0x17,0xc1,0xc7,0x18,0xe5,0xfa,0x65,0x6d,0xa4,0xbc,0xed, + 0xd3,0xe9,0x34,0x4d,0x13,0x00,0xd8,0xd8,0xa7,0x34,0xe9,0x1a,0x4b,0x57, + 0xad,0x7d,0xe6,0x8f,0x54,0x5f,0x45,0x48,0x8f,0xc7,0xe3,0xf1,0xb8,0x8b, + 0x20,0xa7,0x69,0xf2,0xde,0x4f,0xd3,0x34,0x4d,0x93,0x8d,0xb4,0xb3,0xab, + 0xc9,0x47,0x50,0xb5,0x36,0x29,0x2b,0x88,0xdf,0x89,0x31,0x4e,0xd3,0xa4, + 0x36,0x32,0x4b,0xfc,0xcc,0x0d,0x00,0x11,0x3a,0x47,0x44,0x80,0x88,0x84, + 0x78,0xbb,0x5e,0x5f,0xaf,0xd7,0xf9,0x7c,0xb6,0x17,0xcf,0x1e,0x94,0x1f, + 0x39,0xf2,0x9d,0x1a,0x10,0x90,0x8f,0x29,0x62,0x80,0x69,0xf2,0x62,0xbf, + 0x31,0x02,0x20,0xa6,0x68,0xa5,0x02,0x7a,0xeb,0xcc,0xc0,0x9c,0xfe,0xf9, + 0xcf,0x7f,0xea,0xa1,0x26,0xca,0x1c,0xfc,0x56,0xa9,0x00,0x63,0xed,0xad, + 0x3d,0x4c,0x29,0xc9,0x53,0xab,0x86,0x8a,0x5b,0xe0,0x4a,0x24,0x5a,0x68, + 0x6a,0x2c,0x15,0x47,0x9b,0x85,0xfa,0x23,0xc1,0x7c,0x96,0x9b,0xc8,0xed, + 0xc5,0x98,0x62,0x4c,0x7b,0x6d,0x46,0x44,0xf0,0xde,0xdb,0x5a,0xa1,0xb9, + 0xcd,0xa4,0x07,0x7d,0xff,0xd6,0xc8,0x6b,0x8d,0x6e,0xfd,0xbc,0x9c,0x1b, + 0x4d,0x71,0x97,0x6b,0x05,0x45,0xfe,0x21,0xc2,0x94,0x12,0x03,0x20,0xe2, + 0xe3,0xfe,0x00,0xc0,0xcb,0xe5,0x3c,0xcf,0x4b,0xe8,0x9a,0x29,0x86,0x1f, + 0x74,0xed,0xd5,0x47,0xb0,0xf8,0x7b,0x46,0x79,0xac,0xf2,0x88,0x9d,0x73, + 0x08,0x94,0x38,0x18,0x49,0x14,0xd1,0x29,0x40,0x08,0xb3,0xba,0xf9,0xe5, + 0xe7,0x4b,0x21,0xa0,0x52,0x41,0xb3,0xe2,0x14,0x91,0x67,0xea,0x5e,0xa6, + 0x70,0xce,0x39,0x79,0xe2,0xf2,0xe2,0x6a,0x94,0xdb,0x0f,0xbf,0x47,0x5c, + 0x80,0xad,0x02,0x59,0xb1,0xc8,0x4d,0xad,0x6f,0x1b,0xf5,0x65,0x44,0xe4, + 0xbd,0x14,0x89,0x71,0x75,0x79,0x84,0x48,0xcc,0xd1,0xbc,0x35,0xa4,0x04, + 0x9c,0x58,0x8a,0xc1,0x35,0x5f,0xc0,0xa6,0xe2,0x63,0x14,0x12,0x90,0x88, + 0x34,0xa6,0x7e,0xdc,0x6f,0xde,0xbb,0xd3,0xe9,0xf4,0x7a,0xbd,0x34,0xe1, + 0xdc,0xa2,0xfa,0x96,0x9b,0xac,0x56,0x00,0x32,0x79,0xac,0x7e,0x17,0x42, + 0xe0,0xe7,0xf3,0xb9,0xd8,0x7f,0x72,0x89,0x6d,0xd2,0x85,0xe5,0x5b,0x10, + 0x62,0x4a,0x8c,0x68,0xe5,0xb1,0x84,0x7b,0x36,0x65,0x97,0xbf,0xcd,0xd2, + 0xa4,0xaa,0xd4,0xed,0xa3,0x11,0x63,0x2b,0x87,0x52,0x3e,0x70,0xb5,0x16, + 0x5b,0x8d,0x04,0x25,0x9b,0x2f,0xb5,0xbf,0x55,0xe8,0xed,0x1c,0xa0,0x4c, + 0x61,0xe4,0x9e,0x53,0x4a,0xf3,0x8b,0x91,0x90,0x88,0xa6,0xc9,0x23,0x11, + 0x00,0x38,0x47,0x29,0x59,0x07,0x84,0x00,0x3c,0xcf,0x33,0x11,0x3a,0xf7, + 0xe5,0x9c,0x8b,0x31,0xe8,0x9d,0xea,0x1f,0xb9,0xef,0xd0,0x22,0x0a,0x3a, + 0xe6,0x24,0xb9,0xc1,0xcf,0xcf,0xcf,0xaf,0xef,0xef,0xd3,0xf9,0x42,0x44, + 0xf3,0xbc,0x84,0xfa,0x72,0xb7,0xbe,0xda,0x42,0xe8,0x1b,0xf9,0xbc,0xdb, + 0x11,0xa3,0x28,0xba,0x26,0x1f,0xab,0x60,0xf2,0xc7,0xa1,0x02,0x5b,0xca, + 0xbd,0xb5,0xf2,0x78,0xf6,0x34,0xed,0x5d,0x95,0xe5,0x91,0x4c,0xea,0x62, + 0x36,0x45,0x4b,0xf4,0x8c,0x57,0xdf,0x22,0xbb,0x82,0x9a,0x62,0x11,0x7c, + 0x5f,0xe3,0x3f,0x0e,0x06,0x71,0xed,0x65,0x2c,0xad,0x2f,0x66,0xef,0x51, + 0x4a,0xe0,0x59,0xdc,0xb0,0x06,0x01,0x72,0x3f,0xc5,0xcd,0xa0,0x1a,0xf9, + 0x4c,0xea,0xfa,0xb7,0xc4,0xc0,0x0c,0xec,0x08,0x1f,0xf7,0x3b,0x30,0x9f, + 0x2e,0x5f,0x36,0xf3,0x5c,0x7c,0x7c,0x55,0xde,0x07,0xae,0x7d,0x8b,0x6b, + 0x62,0x4c,0x29,0xc5,0x30,0x4d,0x5e,0xfa,0x0b,0xa2,0xee,0x56,0x29,0xb3, + 0xb7,0x20,0xe9,0xe2,0x20,0x8a,0x6b,0x28,0xcb,0xc3,0x65,0xd5,0xa2,0x7a, + 0x28,0xad,0xd4,0xc5,0x2a,0x4e,0xd3,0x24,0xf2,0x2b,0xa5,0x9e,0x7d,0x84, + 0xf2,0x52,0x62,0xae,0xe4,0x9b,0x7e,0x51,0x68,0xc4,0xf7,0x1f,0xe6,0x81, + 0xb6,0x14,0x61,0xcb,0x91,0x65,0x85,0x60,0x31,0xa2,0x29,0x14,0x75,0x7e, + 0xac,0x76,0x00,0x10,0x10,0x08,0x90,0x81,0x19,0x45,0xfc,0xd7,0xdb,0x0d, + 0x08,0x4f,0xd3,0x59,0xed,0x25,0x48,0x0b,0xa8,0xfa,0xe8,0xfb,0x4d,0xbd, + 0xed,0x03,0xc4,0x94,0x52,0x70,0x8e,0x9c,0xf3,0x44,0x08,0x88,0x31,0xc6, + 0x79,0x9e,0x4d,0x35,0x3e,0xaf,0xcf,0x4b,0x83,0x87,0x16,0x2b,0xe7,0x54, + 0x0c,0xa5,0x5a,0x97,0xff,0xd9,0xaa,0x62,0xca,0x31,0x12,0x45,0x37,0x76, + 0x05,0xab,0xb2,0xaf,0x5e,0xd3,0x16,0xf0,0xab,0xde,0xad,0x5f,0x25,0x1c, + 0xb4,0x04,0xf6,0x5d,0xf4,0x7b,0x1b,0xdf,0x49,0x5a,0x28,0x0f,0x47,0x4e, + 0x30,0x00,0x48,0x4a,0xb2,0xb7,0xa0,0xa8,0xff,0x89,0xe6,0x24,0xac,0xdd, + 0x12,0x6d,0x69,0x49,0xea,0x8d,0x3f,0xbf,0x7f,0xee,0x8f,0xbb,0xf7,0x4e, + 0xdb,0x39,0x54,0x2d,0x77,0x8c,0xe4,0x33,0x00,0x12,0x80,0x24,0x47,0xce, + 0x4f,0x13,0xae,0x41,0x99,0x18,0x93,0x46,0x95,0x9e,0x11,0x4d,0x83,0x88, + 0x28,0x93,0x6e,0x55,0x36,0x23,0xbd,0xb8,0x4e,0x9d,0x35,0xbb,0xf3,0x32, + 0xdd,0xb7,0x92,0x6e,0x25,0xdf,0x7f,0x9e,0xeb,0x57,0xfb,0x4c,0x9a,0x9e, + 0x88,0x94,0x4a,0x47,0xa6,0xb2,0x97,0xdc,0xa7,0x6c,0xe6,0xa1,0x69,0xea, + 0x2d,0xff,0xb5,0x44,0xc8,0x60,0x7a,0x78,0x40,0x88,0xf7,0xdb,0xed,0x71, + 0xbf,0x39,0xe7,0xa4,0x29,0xe5,0xab,0xed,0x93,0x6a,0xdd,0xa6,0x7c,0x82, + 0x31,0x45,0x44,0xf2,0xde,0xad,0x05,0x17,0x92,0x4f,0xd2,0x51,0x08,0x39, + 0x89,0x7a,0x1a,0xab,0xda,0x39,0xd2,0x6e,0xaf,0x16,0xc8,0xb2,0x8a,0x58, + 0x35,0xa0,0xeb,0xf8,0x8e,0xec,0xbc,0xfe,0xe7,0xbe,0x6c,0x9f,0x49,0x6c, + 0x6f,0x66,0x5f,0x55,0x25,0x62,0x5c,0x32,0x02,0xe7,0x7c,0x4a,0xaf,0x8a, + 0x85,0xdf,0x80,0x10,0xe6,0x20,0xac,0xcd,0x70,0x51,0x7d,0x46,0x96,0xd3, + 0x70,0xbb,0xde,0x10,0xe9,0x74,0x3a,0xc3,0xf9,0x4c,0xb6,0x8d,0x5f,0xed, + 0x40,0x57,0x9b,0xd3,0xab,0x80,0xd9,0x7b,0x5a,0x5a,0x05,0x44,0x9c,0x78, + 0x9e,0x83,0x0d,0xe2,0x8a,0x00,0x58,0x52,0x5b,0x52,0x6b,0x56,0x95,0x7a, + 0x35,0xde,0x3e,0xac,0xc6,0xdb,0xc7,0x57,0xb6,0x43,0xaa,0x52,0xaf,0x66, + 0x71,0x9a,0x3d,0x1f,0xe2,0x2f,0x3e,0x8b,0xf8,0x6c,0xea,0x2f,0x52,0x0f, + 0x21,0x68,0xc4,0x63,0x1d,0xbf,0x24,0x44,0x31,0x86,0x79,0x9e,0x9d,0x93, + 0x82,0x84,0x4d,0xde,0x60,0x87,0x86,0xd8,0x5a,0x64,0x6a,0xa2,0x98,0x81, + 0x11,0x80,0x70,0x01,0xc6,0x90,0xa3,0xdf,0xbf,0x7f,0x8b,0xde,0x93,0x77, + 0x74,0x3a,0x9d,0x6c,0x73,0x62,0x44,0xd7,0x53,0x4a,0x00,0x4c,0x4b,0x83, + 0x48,0x32,0x75,0x0e,0x36,0xc3,0x36,0x16,0x72,0xdf,0xed,0x76,0xf6,0x99, + 0x56,0xcd,0x4c,0x07,0xc7,0x52,0xcd,0xb2,0xec,0x89,0xc9,0xba,0x2c,0xad, + 0x34,0xac,0x0e,0x34,0x02,0xa8,0x66,0xfc,0x7f,0xd7,0x57,0x51,0xa1,0x43, + 0xeb,0xe9,0x9d,0xdb,0x55,0x72,0xa4,0x10,0x2b,0x55,0xdb,0x94,0x62,0x4a, + 0x2c,0xb5,0xb9,0x12,0xb6,0xb1,0x73,0xed,0xf6,0x53,0xb2,0x39,0x20,0x2b, + 0x68,0xc6,0x11,0xde,0x6e,0xb7,0xc7,0xed,0x4a,0xcf,0xe7,0xc3,0x3b,0xa7, + 0xb2,0xef,0x84,0xf1,0xb9,0xd1,0x06,0x70,0x8b,0x91,0x47,0x22,0x08,0x91, + 0xb5,0xe4,0xd9,0x7a,0xca,0xfa,0x99,0x5b,0x52,0x6c,0xe1,0xfe,0x3a,0x0e, + 0xbe,0x53,0x63,0xc8,0x4a,0x40,0xfd,0x92,0xbe,0x3d,0x3d,0x83,0x52,0x1f, + 0x0f,0xe6,0x3b,0xd8,0x18,0x55,0x7a,0x66,0xc8,0x4e,0xad,0x1a,0xc5,0x18, + 0xd3,0x1c,0x02,0x22,0x49,0x94,0x87,0x0d,0xf8,0x8e,0x29,0xe7,0x2c,0x80, + 0x20,0x60,0x90,0xb4,0x1a,0xb5,0x01,0x42,0x88,0x88,0xd7,0xdf,0xff,0x97, + 0x7e,0xfe,0xfb,0xbf,0xee,0xf7,0x9b,0x77,0xee,0x72,0xb9,0x64,0xad,0xdc, + 0xca,0x9f,0x88,0x49,0x02,0x51,0x04,0x3f,0x79,0x04,0x02,0x04,0x42,0x08, + 0x11,0x24,0x92,0x57,0x3b,0x09,0x46,0x30,0x22,0x3f,0x71,0x54,0xab,0xc7, + 0x72,0xfb,0xb4,0x1e,0x4b,0xd9,0x74,0x1a,0x86,0xad,0x27,0x68,0xa0,0x29, + 0x95,0x30,0xbe,0xe3,0xda,0xed,0xdb,0xd9,0xc4,0xfa,0xef,0x92,0x7a,0x27, + 0x08,0x15,0x75,0x97,0xca,0xbc,0x94,0x1a,0x6b,0x85,0x23,0xe6,0x18,0xe7, + 0x39,0x20,0xd2,0x69,0x9a,0xb6,0x1e,0xc6,0xde,0xc8,0x33,0x02,0x30,0xf0, + 0x52,0xcf,0xdd,0x74,0x7e,0xa9,0xef,0x12,0xd2,0x5a,0x27,0x73,0xa7,0xbf, + 0x88,0xbe,0xfe,0xcf,0xe3,0xf1,0xfb,0xf1,0xb8,0x3b,0x42,0xd1,0xfb,0x4e, + 0x0a,0x97,0x62,0x4c,0x31,0x22,0xb0,0x73,0x6e,0x3d,0x40,0x10,0x13,0xac, + 0x65,0x81,0x64,0x31,0x55,0x72,0x09,0x63,0xe4,0x51,0x05,0x63,0xc5,0xdc, + 0x71,0xc0,0x83,0x68,0xaa,0x6a,0x44,0xf2,0xc1,0x79,0x1a,0x94,0x65,0xe9, + 0xa7,0xde,0x32,0xf2,0x16,0xd1,0xa4,0xfe,0x45,0xa3,0xf7,0x4c,0xf6,0x52, + 0x8c,0x62,0x86,0xc4,0x1c,0x63,0x0c,0x31,0x91,0x23,0xe7,0x3d,0x1a,0xa0, + 0xa3,0x1a,0x79,0x5c,0x65,0xbc,0xfc,0xc9,0xbb,0x4e,0xc9,0x5a,0x38,0x5b, + 0x8c,0x3e,0x11,0x21,0xe1,0xe9,0x76,0xff,0x7f,0xaf,0xd7,0xd3,0xb9,0x25, + 0xcf,0xab,0x56,0xe8,0x96,0xbe,0x08,0x27,0x7d,0xb8,0x84,0x90,0x18,0x62, + 0x8a,0x6b,0x62,0xba,0xb4,0x0b,0x37,0xa1,0x6e,0x2d,0x17,0x29,0x53,0x6c, + 0x3d,0x09,0x85,0x5d,0x57,0xd3,0x98,0x41,0x34,0x55,0xbf,0x8b,0xdf,0x0a, + 0x17,0x3a,0x41,0x43,0xdf,0xc7,0xb5,0xf2,0x8e,0xb7,0x12,0xb9,0x4e,0x72, + 0xaf,0x39,0x7d,0x35,0xe4,0x8c,0x31,0x86,0x79,0x8e,0x31,0x39,0xe7,0x9c, + 0xf7,0x8a,0x70,0x5e,0xe1,0xab,0xfb,0x4f,0xb7,0x29,0x3d,0xab,0xdc,0x97, + 0x74,0x7a,0xb1,0xd3,0x84,0x48,0xe8,0xdd,0xaf,0xeb,0xcf,0xff,0x3e,0xee, + 0x57,0x47,0xa4,0xed,0xbc,0x0c,0x85,0x9e,0x52,0xe2,0x14,0x01,0xd8,0x79, + 0x27,0x1a,0x9c,0x00,0xe7,0x10,0x63,0xd4,0x72,0x04,0x64,0xaa,0xac,0xdf, + 0x4f,0x7e,0xf2,0x7e,0x5a,0x61,0xb5,0x4d,0x83,0x79,0x08,0xaa,0x69,0x15, + 0xde,0x35,0x48,0xee,0x84,0x8a,0x1d,0xa9,0x5b,0x8d,0xb7,0x2e,0xa3,0x83, + 0xb4,0x3c,0xac,0xe7,0xb4,0x02,0xcc,0xea,0x97,0x73,0xce,0x7b,0x27,0x23, + 0x06,0x52,0x7f,0xdc,0xf7,0x81,0xb4,0x01,0x18,0x43,0x08,0x31,0x26,0xef, + 0xbd,0x77,0x93,0x3e,0x83,0x45,0xc0,0xbc,0x37,0xee,0x59,0x98,0xb7,0xba, + 0x00,0x44,0xa0,0x25,0xa9,0x16,0xf5,0x75,0xd3,0xe3,0xf1,0x78,0x3c,0x96, + 0x96,0x8e,0x02,0x8d,0xb7,0x0f,0xc9,0x09,0x11,0xa6,0x69,0x12,0xbd,0x4d, + 0x0c,0x76,0x9e,0x61,0x39,0x67,0x46,0xea,0x5a,0x9e,0xf2,0xde,0x9d,0xcf, + 0x27,0x3d,0xb6,0x5a,0x1f,0xdd,0x5d,0xbc,0x8b,0xce,0x1b,0xa9,0x2a,0x66, + 0x65,0xaf,0x32,0x54,0x1c,0x8c,0x1b,0x5a,0x4d,0x8a,0x56,0x93,0xe6,0x2d, + 0x8f,0x5e,0x3d,0x31,0x6b,0x51,0x85,0x52,0x4a,0xcf,0xe7,0x93,0x99,0x35, + 0xb5,0x5b,0x2f,0xb2,0x9d,0x42,0x91,0x7d,0x08,0xd1,0x79,0xa7,0x7e,0x41, + 0xc5,0xbb,0x21,0xa0,0x16,0x23,0xcf,0x59,0x3f,0x0f,0x78,0x05,0x3d,0x48, + 0xa7,0x88,0x50,0xfe,0x8d,0xf7,0xfb,0xfd,0xf5,0x7c,0x6a,0x9c,0xaf,0x4f, + 0x50,0x04,0x2c,0xd0,0x25,0x72,0xc4,0x0c,0xf3,0x1c,0xa4,0xfd,0xbc,0x06, + 0x74,0xe5,0x33,0x92,0x52,0x1d,0x4e,0xd3,0x49,0x70,0xdc,0x52,0xb8,0x50, + 0x48,0xd0,0xc8,0x68,0xc4,0x21,0x24,0xa4,0xf4,0xeb,0xb6,0x0a,0x36,0x1e, + 0x2a,0xb6,0x0e,0xd3,0xdf,0x92,0xb8,0x57,0x6d,0x8c,0x9a,0x96,0xf3,0xf9, + 0xac,0xb5,0xac,0x18,0xe3,0xeb,0xf5,0xd2,0xf8,0xd7,0x46,0xf8,0xb4,0xa6, + 0x64,0x8b,0xd9,0x0f,0x11,0xc9,0x7b,0x3f,0xe1,0xa6,0xe3,0x16,0xf8,0x60, + 0xd4,0xde,0x9a,0xfc,0x35,0x20,0x94,0x54,0x7c,0x11,0xbb,0x43,0x37,0x39, + 0x7f,0xbd,0xfe,0xbe,0x3f,0x6e,0xce,0x2d,0x36,0x5f,0x6b,0x35,0x82,0x2b, + 0x41,0x72,0x9c,0xe0,0xf9,0x7a,0xad,0xd8,0xa0,0x54,0xa2,0x2d,0x6c,0x15, + 0xe2,0x72,0x39,0x7b,0xef,0x15,0x37,0xa1,0x93,0x50,0x65,0x94,0xd4,0x91, + 0xba,0xed,0xa1,0xb5,0xf0,0xd7,0x5a,0x34,0xcc,0x0c,0xc9,0x78,0x15,0xc8, + 0x86,0x5a,0x36,0xf8,0x6a,0xc1,0xd6,0x3e,0x08,0xe0,0xcb,0x77,0x97,0x0e, + 0xb2,0x42,0x3d,0x05,0x08,0x14,0x42,0x70,0x79,0xda,0x0e,0x8b,0xa2,0x6e, + 0x37,0x19,0x43,0x08,0x80,0xe4,0xbc,0x47,0x22,0xc0,0xac,0x9c,0xcf,0xbb, + 0xf6,0x3d,0xe7,0x45,0x3f,0x5a,0x1a,0xf8,0x32,0x12,0x45,0x00,0x08,0xde, + 0xf9,0xe7,0xfd,0xf1,0xb8,0xdf,0x05,0xbe,0x22,0x35,0x20,0x47,0xe4,0xfd, + 0x04,0x48,0x29,0xa6,0x79,0x9e,0xb5,0x35,0x9e,0xa1,0x03,0xf6,0xd9,0x30, + 0x78,0x3f,0x4d,0xd3,0x49,0xbb,0x81,0xb6,0xc5,0x5e,0x0d,0xa4,0x5b,0x52, + 0x3f,0x6c,0x1f,0x68,0x6f,0xad,0x6c,0x31,0x1f,0x4a,0x3d,0xab,0xf1,0x69, + 0x0d,0xaa,0xd2,0x9b,0x68,0xbb,0x8c,0xf1,0xac,0xcf,0xde,0x9b,0xc2,0xf4, + 0x14,0x24,0x23,0x91,0xef,0xeb,0xf5,0xb2,0xa8,0xac,0xaa,0x6d,0x13,0x8c, + 0x4e,0x08,0x21,0x31,0x10,0x12,0x92,0x5b,0x4b,0xb5,0xbb,0xfb,0xe3,0x2c, + 0xd1,0x5a,0xd0,0x3a,0x8a,0x81,0x11,0x9d,0xd7,0x3f,0x1c,0x3e,0xee,0xb7, + 0xf9,0xf5,0x00,0x4e,0xce,0x11,0x21,0x4e,0xa7,0x13,0x20,0xa5,0x18,0x43, + 0x8c,0x51,0x74,0xdd,0x80,0x35,0xcc,0x1b,0x21,0x00,0x70,0x4a,0x52,0x83, + 0x14,0xc8,0x9f,0xc4,0x2c,0x6a,0xde,0x35,0x4e,0xd1,0x42,0x5b,0xa9,0x49, + 0x87,0x33,0x94,0xad,0x96,0xab,0x3d,0x5e,0x87,0x38,0xd2,0xa3,0x21,0x82, + 0xbc,0xe8,0xfb,0xe7,0x16,0x3e,0x2b,0x39,0x48,0xbf,0x44,0xc6,0x39,0x0c, + 0x98,0x91,0x98,0x59,0x9d,0x7d,0x29,0x7b,0xf5,0x65,0x6b,0xac,0x17,0xa3, + 0x00,0xae,0x68,0x49,0xd5,0x35,0xac,0x37,0x0e,0xdf,0x94,0xcd,0x11,0x10, + 0xc0,0xa3,0xa9,0xfa,0x11,0xe2,0x72,0x40,0x10,0x1d,0xc1,0xfd,0xfe,0x98, + 0x26,0x0f,0x48,0xe7,0xf3,0x05,0x10,0x53,0x8a,0x21,0x2e,0x7e,0x9d,0x05, + 0xd1,0xc9,0x8a,0xa4,0x02,0x1b,0x5a,0x8b,0x80,0xcf,0xe7,0x0b,0x33,0xcc, + 0xf3,0x2b,0x9b,0x59,0x74,0xce,0x49,0xeb,0x56,0xa1,0x45,0x9d,0xe6,0xdb, + 0x60,0x9b,0x58,0x5f,0x2f,0x5d,0x8d,0x0c,0xe0,0xd6,0xb9,0x72,0x79,0x59, + 0x75,0x2b,0x59,0x09,0xef,0x2d,0x75,0xaf,0xf6,0x03,0xb3,0xfb,0x91,0x28, + 0xca,0x4a,0xdd,0x98,0x74,0x10,0x00,0xe7,0xe5,0x72,0x39,0x9d,0x4e,0x22, + 0xdd,0x6a,0x16,0x23,0xe2,0x5f,0xc2,0x7e,0xc9,0xd7,0x10,0x11,0xd2,0xe6, + 0x79,0x99,0x33,0x23,0x2f,0x12,0xf7,0xdb,0x5d,0xda,0x87,0x8b,0x08,0x0c, + 0xe8,0x5c,0x62,0x26,0xc4,0x05,0x34,0x94,0xe2,0x0a,0x95,0x2f,0xf1,0x5f, + 0x5b,0x0d,0x1f,0x11,0x25,0x2f,0x90,0x7b,0xb2,0x85,0xb0,0xed,0x9b,0x05, + 0x76,0x17,0x6c,0x07,0xa8,0xaa,0x8b,0x2d,0xd4,0x7d,0xf5,0xe1,0xea,0x38, + 0x5c,0x0b,0x92,0xdc,0xaa,0xf5,0x5a,0x65,0xb2,0xa3,0xdd,0xa5,0x93,0xfe, + 0x93,0xc4,0xdd,0x1a,0x79,0x05,0xd3,0x55,0xfb,0x81,0xda,0x8f,0x7f,0x3e, + 0x9f,0x97,0xcb,0x45,0x2a,0xb5,0x59,0x49,0xd1,0xf6,0xb5,0x53,0x62,0x00, + 0x26,0x42,0x66,0x48,0xbc,0xa6,0xf6,0x8c,0x00,0x09,0xd0,0xfa,0x7b,0xd4, + 0x62,0x9f,0x47,0x24,0x10,0xf4,0x3a,0x0a,0x2c,0x08,0x59,0x5b,0xed,0xbc, + 0x85,0x6f,0xe2,0x51,0x6c,0x5e,0xb8,0x7b,0x08,0xb8,0xc5,0x5f,0x9a,0x9c, + 0xc8,0x13,0xac,0x4f,0xc4,0x11,0x41,0x8c,0x89,0x53,0x08,0x41,0x52,0x97, + 0x52,0x9b,0x5b,0xbf,0xdb,0xaa,0xc9,0x8b,0xc8,0x05,0xb2,0x72,0xd8,0xc8, + 0xef,0x9c,0x27,0x71,0xba,0x25,0x3a,0xef,0x4f,0xfc,0x7a,0xf9,0x25,0x31, + 0x5d,0xa9,0xee,0x45,0xa1,0x3e,0x49,0x2d,0xfc,0x74,0x3a,0xc9,0x8b,0xdb, + 0x1e,0x47,0xb1,0x9d,0xb6,0x66,0x27,0x6a,0x4c,0xb0,0x45,0xf8,0xcb,0x07, + 0xf3,0xbc,0xb8,0x79,0x5c,0x55,0x77,0xd3,0x69,0x79,0x95,0xfa,0xe3,0x5a, + 0xec,0xcd,0x6b,0xa1,0x70,0x41,0xd3,0x3a,0xef,0x2e,0xe7,0x0b,0x33,0xdb, + 0xbb,0xac,0x96,0x53,0x88,0x08,0xd2,0x32,0xd1,0xa2,0xb2,0x97,0x9f,0x77, + 0xf0,0x33,0x55,0xa9,0xeb,0x5f,0xa9,0xd4,0x3b,0x36,0xb6,0xef,0x3b,0x54, + 0x0b,0xb5,0x24,0x60,0x3f,0xfb,0x9f,0x48,0xdd,0xda,0xa4,0xcb,0xe5,0xe2, + 0xbd,0x9f,0xe7,0x39,0x6b,0x6b,0x95,0xb2,0x67,0xc6,0x94,0xd2,0xeb,0xf5, + 0x92,0xb3,0x12,0x63,0x10,0x0d,0xac,0x41,0x48,0x24,0x7a,0xd8,0xa0,0x2e, + 0xac,0x1f,0x96,0xcd,0xdc,0xd2,0x22,0x6a,0x34,0xda,0xb6,0x3e,0x4f,0x5b, + 0xbb,0xce,0xe6,0xd7,0x1b,0xb2,0x17,0x41,0xa2,0xf7,0x5e,0x62,0xf8,0x52, + 0xd7,0x3b,0xa3,0x4f,0x22,0x7b,0x8b,0xc1,0xca,0x3c,0xeb,0x61,0x9b,0xd8, + 0xfe,0xad,0x16,0x88,0x0e,0x8b,0x01,0x6f,0x05,0xe1,0x6f,0x41,0xea,0xfa, + 0xa9,0xbf,0xd4,0x42,0xa4,0x2b,0x33,0x58,0xf5,0x13,0x45,0x5a,0x2b,0xf9, + 0x29,0x43,0x3c,0xc0,0x6e,0x84,0x16,0xab,0x60,0xf3,0x5d,0x70,0x07,0x80, + 0x88,0xde,0x96,0x3e,0xad,0xa1,0x68,0x01,0x16,0x8a,0x1f,0x32,0x33,0x08, + 0x7b,0x87,0x28,0xae,0x26,0x7b,0xd0,0x98,0x3e,0xb1,0x8d,0x5d,0xf9,0x5e, + 0x9c,0xbd,0x58,0xbf,0xe7,0xf3,0x29,0xfe,0xaf,0x0c,0xfa,0x3a,0x25,0xf4, + 0xaa,0x4e,0xf7,0x3b,0x3a,0xf5,0xd1,0xb0,0xbf,0x15,0x68,0x05,0x95,0xf9, + 0x56,0x14,0x87,0xad,0xf9,0xdb,0xc0,0x49,0x5a,0x2c,0xb6,0x58,0x88,0xaf, + 0xaf,0x0b,0x11,0x89,0x0d,0x18,0x81,0x75,0x57,0x01,0x99,0x0a,0xb6,0xcc, + 0x40,0xab,0xbc,0x1f,0x82,0xa9,0x27,0xd6,0x8a,0x9f,0xf4,0xde,0x9d,0xcf, + 0x17,0xa1,0x73,0xb1,0x99,0x5b,0x15,0x57,0xb3,0xab,0xc9,0xec,0xdd,0xb3, + 0x64,0x29,0x3a,0xde,0x46,0x44,0xd5,0x8e,0x45,0xe7,0x3c,0x01,0x34,0x01, + 0xbe,0x50,0x67,0x94,0x80,0xb2,0xb7,0x2b,0xb7,0xd1,0x99,0xec,0x1f,0x2f, + 0xd7,0xec,0x51,0x15,0xa4,0x45,0x3a,0x89,0xd2,0xc7,0x1b,0xb9,0x16,0xb0, + 0x74,0xbb,0xdd,0x99,0xf9,0x74,0x3a,0x09,0x2b,0xd1,0xe0,0x69,0xdb,0xc5, + 0x76,0x0c,0xbb,0xa8,0xde,0x9e,0x00,0xd8,0xa7,0x6a,0xd5,0xbc,0x48,0x59, + 0x40,0x4e,0xa7,0x09,0x71,0x89,0x53,0x32,0x43,0x3d,0xe2,0xf0,0xa4,0x58, + 0xad,0x4a,0x20,0x35,0x0d,0xc9,0x5e,0xb2,0x71,0xd1,0x6a,0x40,0x57,0x76, + 0xd3,0x53,0x4a,0x16,0xc6,0x34,0x12,0xd0,0x95,0x20,0xad,0xec,0xf8,0xbe, + 0x6b,0x03,0xb2,0xb3,0xa8,0xc3,0x5c,0x12,0x34,0xbc,0x85,0xec,0xb3,0xf5, + 0x09,0xc1,0x66,0xde,0xef,0x77,0x91,0xba,0x7d,0x6e,0xad,0x84,0xa8,0x75, + 0x55,0x6f,0x40,0x1b,0xa6,0xa7,0xb7,0x03,0xef,0x54,0x31,0x93,0x5b,0x52, + 0x4e,0xe4,0x14,0x16,0x58,0x56,0x3c,0xaa,0xc9,0x8c,0x4a,0x5d,0x91,0xd1, + 0x52,0xae,0x5a,0xe9,0x55,0x96,0x2e,0xb0,0x1c,0x2c,0x4b,0x3b,0xd0,0x69, + 0xb9,0x66,0x3f,0xb1,0x48,0xce,0x11,0xa7,0x5e,0xf6,0xa0,0xc7,0xa1,0x38, + 0x9d,0x1a,0xbe,0x06,0x1c,0x2a,0xfe,0x7e,0x40,0xd7,0xe9,0x4a,0xa8,0x89, + 0x14,0x61,0xcb,0x48,0xa5,0x4d,0x0b,0xed,0x09,0xa8,0xdc,0xb6,0xce,0xa8, + 0x22,0x22,0x82,0xaf,0x45,0x5d,0x43,0x80,0x27,0x99,0x63,0x4e,0x29,0xcd, + 0xf3,0x2c,0x8d,0x7c,0x0d,0x80,0x5b,0x2e,0xb6,0x94,0xba,0x24,0x2a,0x88, + 0x28,0x85,0x2a,0x1d,0x30,0x53,0x5c,0x8a,0x1c,0x8b,0x0c,0x06,0xd9,0x31, + 0xc2,0x9a,0x19,0x67,0xf6,0x60,0xb0,0x0a,0x64,0x13,0x04,0x1d,0xa7,0xfa, + 0x93,0x76,0xbb,0xd4,0x33,0xe6,0x79,0x9e,0xe7,0x99,0x88,0x24,0x9e,0xb7, + 0xf5,0xbb,0x77,0x1d,0x87,0x73,0x84,0x48,0x92,0xb8,0xcb,0x65,0xe5,0xf9, + 0x1c,0x98,0x93,0xdd,0x87,0x44,0xd1,0x78,0xd8,0x4f,0x33,0x56,0x63,0xb1, + 0x94,0x49,0xdd,0x72,0x2c,0xc9,0x9b,0xa9,0xe5,0xd1,0x26,0x47,0xcb,0xe1, + 0x59,0x4f,0xaf,0x3e,0x4f,0x6b,0x1a,0xb6,0xc1,0xb3,0x96,0xa5,0xc8,0x56, + 0xad,0x55,0x87,0x5a,0xb1,0x67,0x69,0xfa,0x06,0xa5,0x9e,0x9d,0x95,0xb7, + 0x52,0xb8,0x96,0x6d,0x97,0xe7,0x23,0x98,0xb7,0xe7,0xf3,0x29,0x1f,0xf9, + 0x5d,0xd9,0x6f,0xae,0x87,0x90,0x96,0x09,0xc3,0xed,0x0d,0x4d,0xb7,0x93, + 0x9c,0x73,0xda,0xd6,0x33,0x43,0xb2,0x2b,0x52,0x8b,0x19,0x04,0x71,0x8b, + 0xe0,0xa5,0xff,0xa6,0xa5,0xb7,0xaa,0xd7,0xd4,0x63,0xb1,0x41,0x6f,0x0c, + 0x6c,0x52,0xc4,0x26,0x7a,0x2f,0xa3,0xe1,0x72,0x2b,0x25,0xc6,0x2d,0x73, + 0xed,0x5a,0xc4,0x90,0x32,0x8e,0x96,0xa0,0x33,0x3c,0x85,0xa2,0x8f,0x6d, + 0x92,0x5d,0x9d,0xac,0xb3,0x15,0x4d,0x3d,0x43,0x83,0xb5,0xbf,0xd6,0x8c, + 0xa3,0xce,0x37,0x75,0x46,0x6b,0x33,0xa9,0x6b,0x86,0xb2,0x4d,0x6d,0x02, + 0x12,0x51,0x4c,0xf1,0xf9,0x7a,0x22,0xe2,0xe9,0x34,0xad,0xdd,0xaf,0xba, + 0xec,0xab,0xbd,0x2b,0x5a,0xa1,0xe9,0xc5,0xb9,0x5c,0x26,0x73,0x53,0x4a, + 0x2b,0x4d,0x9e,0x80,0x74,0xfc,0x82,0x7e,0xcb,0x4b,0xc2,0x08,0x00,0x7e, + 0xd3,0xfe,0x15,0x9b,0xa5,0x38,0x19,0x1d,0xe1,0x5c,0x5f,0xbd,0xcd,0xfa, + 0xaa,0xc6,0xdb,0xfb,0x16,0xd5,0xd7,0x13,0xbd,0x0e,0x52,0x71,0x35,0xa0, + 0x13,0xac,0x87,0x30,0x15,0x74,0xa4,0xae,0xf9,0x9e,0x1e,0x14,0x75,0xc0, + 0xd5,0x5c,0x43,0x5c,0x8f,0x34,0x94,0x61,0x8c,0x5d,0xa7,0x25,0x4b,0xb1, + 0xa2,0xfa,0xc4,0xed,0xa8,0x69,0xc7,0x09,0x4a,0xe8,0xae,0x55,0x39,0x1b, + 0x12,0x91,0x81,0x5a,0x48,0x58,0x5e,0x4e,0x1d,0xd5,0x15,0xdd,0x0e,0x44, + 0x55,0x06,0xff,0x6c,0x5e,0x26,0x5c,0x6a,0x41,0x3b,0xd4,0xce,0x91,0x8c, + 0xce,0xaf,0x84,0x6a,0xcb,0xb9,0x91,0xf7,0xe6,0x75,0xea,0x02,0x99,0xc1, + 0xb9,0x45,0x8f,0xe7,0x79,0x9e,0xa6,0x53,0x8b,0x14,0xd0,0x06,0x5c,0xd6, + 0xaf,0x8b,0x33,0x93,0xb0,0x53,0xa9,0x66,0xec,0x84,0xb3,0xd5,0xf5,0x75, + 0x28,0x30,0x97,0x7a,0x59,0xc1,0x50,0x9b,0x6f,0xd1,0x60,0xa5,0xc1,0x17, + 0x5b,0x97,0x57,0x2d,0xc6,0x6a,0x7f,0xb6,0x3d,0x63,0x83,0x0c,0xbd,0x72, + 0x75,0xe0,0xcb,0x86,0x93,0x32,0xa1,0x8d,0x88,0xaf,0x15,0xaf,0x50,0xf6, + 0x02,0xb4,0x12,0x67,0x19,0xaa,0x5a,0x71,0x55,0x66,0xc0,0xf4,0xb1,0x1f, + 0x96,0x95,0x4c,0xb5,0x40,0x14,0xd8,0x89,0xc1,0x16,0xab,0xc0,0xbc,0x9a, + 0x7a,0x5a,0x74,0x77,0xf9,0x98,0x22,0x75,0xdb,0xe2,0xb4,0x4e,0x3d,0xfb, + 0xf0,0x25,0xdb,0x80,0xf5,0xfa,0xd2,0x76,0xb4,0xba,0x2e,0x3f,0x97,0x96, + 0xa2,0x06,0x6e,0x99,0xd4,0xab,0xc0,0x78,0xbd,0x25,0x15,0x6d,0xf5,0xe1, + 0xaa,0xfc,0xe4,0x29,0x0f,0x42,0x6b,0x1a,0x04,0x5d,0x79,0x87,0x49,0x35, + 0x26,0x23,0x7a,0xd1,0x6c,0x2d,0xad,0x5f,0x25,0x24,0x44,0x2b,0x16,0x22, + 0x7b,0x25,0x63,0xca,0x47,0xfc,0x57,0x4e,0x01,0xab,0xe8,0x99,0xd4,0x33, + 0x84,0x6a,0x16,0xf0,0x6a,0x26,0x2c,0x62,0xce,0xd8,0x56,0x16,0xc1,0x4b, + 0xa1,0xad,0x2c,0xa3,0xa6,0x94,0x74,0xd6,0xa9,0x1c,0x65,0xed,0x3b,0x48, + 0x79,0x99,0x40,0x88,0x44,0x09,0xd4,0xec,0x8b,0x46,0xaa,0xd4,0xab,0xba, + 0xde,0xaa,0xcf,0xcb,0xf3,0xd2,0xf3,0x64,0xed,0xde,0xee,0x04,0x98,0xd9, + 0xe3,0x6a,0xc5,0xb7,0xc3,0x95,0xbb,0xeb,0x79,0x2c,0x44,0x5e,0x79,0x31, + 0x44,0x6b,0x4d,0x96,0x56,0x4a,0x72,0x93,0xd7,0xeb,0xa5,0xc1,0x50,0xf5, + 0x3c,0xe9,0x59,0xd4,0x8e,0xbb,0xe8,0xbd,0xfc,0x50,0x5d,0x18,0xc2,0x82, + 0x84,0xb4,0x69,0x85,0x6d,0xe5,0xb5,0xd2,0x36,0xdb,0xab,0x3d,0x9d,0x4e, + 0x00,0x10,0x63,0x02,0xc0,0x6c,0xc8,0x9e,0x99,0xbd,0x24,0x06,0xd5,0x6c, + 0xd8,0x6a,0x79,0x35,0xba,0xe9,0x54,0xe3,0xb5,0x3b,0x9e,0x99,0x68,0xf1, + 0x9a,0xb6,0x21,0xdb,0x91,0x7a,0xc9,0x86,0xa2,0xed,0x1f,0x3d,0x8e,0x7b, + 0x75,0xdc,0xcd,0x4e,0x1c,0x12,0xf9,0x76,0xe0,0xb6,0x29,0x69,0x3b,0x7b, + 0x8b,0xa8,0x97,0x71,0x85,0x35,0xe3,0x50,0xf3,0x23,0x5a,0xab,0xb5,0xea, + 0x0e,0xac,0x08,0xf6,0x13,0x93,0x6a,0xf3,0x45,0xea,0x9b,0x75,0x21,0x44, + 0xa8,0x78,0xd5,0x91,0xe0,0xdf,0xda,0x03,0x4b,0x21,0xa5,0x2d,0x37,0x58, + 0x89,0x11,0xb8,0x43,0x74,0xd6,0x19,0x77,0xea,0xd4,0xd1,0x32,0x64,0x84, + 0x2a,0xb7,0x84,0xb2,0x86,0x34,0x85,0x0e,0xcf,0x53,0xa9,0xfa,0x72,0x9c, + 0x4b,0x02,0x3f,0xb9,0xb8,0xfc,0x55,0x08,0x61,0x99,0x36,0xea,0xca,0xbe, + 0x3f,0x2b,0x6f,0xdb,0xf3,0x00,0x80,0x2c,0x7a,0x43,0x6a,0x6c,0xd5,0xbc, + 0x97,0x43,0xf9,0x7d,0x07,0xac,0xaf,0x49,0x9c,0xc4,0x2e,0xda,0xde,0x74, + 0x06,0x0f,0xc9,0x7c,0xca,0x08,0xfa,0xc3,0xe2,0x9d,0xc4,0xda,0x03,0xe4, + 0x25,0x2f,0x9f,0x55,0xe3,0xb7,0x54,0x18,0xd8,0xa2,0x6c,0x3b,0x15,0xa5, + 0x2a,0x7c,0x3d,0xc3,0xd6,0x85,0x10,0xc4,0xf2,0x98,0x2e,0x13,0x96,0x52, + 0xaf,0x82,0x9a,0xcb,0xda,0x91,0x7a,0x5f,0x45,0xdb,0xc9,0x27,0x14,0x26, + 0x7c,0xbd,0xac,0x14,0x34,0xfa,0x27,0xb5,0x4d,0xda,0xbc,0x2b,0xb7,0xc9, + 0x03,0x49,0x09,0x10,0xa3,0x54,0x2a,0x45,0x53,0x35,0x9b,0x3d,0x72,0x1c, + 0x95,0x88,0x35,0xa5,0x84,0xbc,0xb0,0xee,0xb7,0x7a,0x45,0x55,0xc5,0xe8, + 0x5f,0x59,0x1f,0xf8,0xfa,0x88,0xc8,0xc0,0xaf,0xf7,0x1a,0x5f,0x05,0x28, + 0x8a,0xa9,0x29,0x0b,0x52,0x6f,0xa1,0xcd,0x33,0x2c,0xa9,0xb4,0x70,0x34, + 0xee,0x38,0x9c,0x84,0xea,0xb7,0x49,0x98,0x13,0x22,0x79,0x3f,0x89,0x60, + 0xf4,0x09,0x66,0x23,0xf2,0x2d,0xbd,0xef,0x64,0x65,0xe2,0x98,0xac,0x7f, + 0xcd,0xc0,0xce,0x55,0xf3,0x5b,0xde,0x70,0x9f,0x4a,0x43,0x43,0xdd,0x56, + 0x8a,0xf1,0xae,0xd4,0xab,0x11,0x6e,0x55,0xea,0x90,0xd1,0x9d,0x95,0x29, + 0x69,0x07,0xd5,0x5a,0xbe,0x4d,0x76,0x7a,0xf4,0xb9,0x48,0xec,0x2a,0x2d, + 0xa9,0xbe,0xd4,0x0f,0x81,0xad,0xfb,0x08,0x19,0x52,0xda,0xea,0x74,0x2b, + 0x14,0x29,0x29,0xcf,0x96,0xad,0xf7,0x75,0x02,0x91,0xaa,0xde,0x97,0x92, + 0x2e,0xa3,0x0d,0x05,0x44,0x97,0x5d,0x8c,0x11,0x90,0xb5,0xfc,0x8d,0x6d, + 0x4f,0x54,0x39,0x60,0xde,0xfa,0x32,0x60,0xac,0x04,0x35,0xb2,0x6f,0xcd, + 0xf8,0x7d,0x2b,0x8f,0xb4,0x1c,0xde,0x2d,0xd2,0x8a,0xd6,0x54,0xa2,0xad, + 0x49,0x29,0x82,0x58,0xcf,0x41,0x2b,0x4e,0x39,0x34,0xc5,0xa5,0xe1,0x91, + 0xf1,0x03,0x6d,0x55,0x09,0x0f,0xbc,0x14,0x98,0x05,0x9a,0x9e,0x31,0x23, + 0x76,0x5c,0x7b,0xa7,0x32,0x93,0x0d,0x3b,0xda,0xc9,0x8d,0x56,0x78,0x75, + 0x68,0x8d,0x57,0x1a,0x5a,0x67,0xa1,0xf2,0x87,0xbf,0xfe,0x96,0xba,0xa7, + 0x94,0x74,0x1a,0xcb,0x48,0x7d,0xb9,0x06,0x35,0xa0,0xa8,0xb9,0x83,0xaf, + 0x56,0xb6,0xfb,0x34,0x13,0x76,0xec,0xa3,0x1c,0x8d,0xee,0x87,0x8a,0xd0, + 0x98,0x74,0xac,0xda,0x09,0xc5,0x30,0x39,0xe7,0x2d,0x1e,0xd9,0x9e,0xdd, + 0x7e,0x33,0xb7,0xf3,0x88,0xb3,0x99,0xf5,0x8c,0xb7,0xe8,0x90,0xfe,0x95, + 0x6b,0x5f,0xf6,0xca,0x9d,0xd2,0x48,0x49,0xfb,0xf0,0x96,0xf6,0x9b,0x8c, + 0x7f,0xeb,0xbe,0xaa,0xd9,0xf7,0x25,0xf1,0xe8,0x9a,0xf9,0xd1,0x60,0x3a, + 0x74,0x38,0xac,0xa4,0x48,0xea,0xaa,0xba,0xf7,0xad,0x71,0xeb,0xbc,0x67, + 0x09,0x9b,0xce,0x18,0x0b,0xab,0xeb,0xca,0x8c,0x8e,0x1d,0xd0,0x5f,0xbf, + 0x97,0xfa,0x41,0x07,0xb6,0xec,0x0b,0x77,0x5e,0x5c,0xd2,0x82,0x8c,0xf4, + 0xd1,0x0f,0xe7,0xb7,0x2d,0x68,0xd1,0x14,0xaf,0xb8,0xdc,0x07,0xe2,0x6b, + 0xdd,0x77,0xce,0xfa,0x6f,0x2d,0xd9,0xf7,0x0d,0xa6,0x66,0x6b,0x16,0x32, + 0x96,0xb1,0x23,0x1d,0xf2,0xd0,0x75,0xb8,0xce,0xb2,0x08,0x79,0x9e,0xe7, + 0x18,0x93,0xf7,0x82,0x0f,0x58,0x38,0x17,0xe5,0x1d,0xc7,0xef,0xb9,0x13, + 0xc9,0x1e,0x36,0xf2,0x0f,0xa7,0x3f,0x2d,0xe5,0x55,0x69,0x15,0x46,0x80, + 0x02,0x2d,0x93,0xd9,0x0a,0x41,0x14,0x24,0x91,0xf5,0x57,0x73,0xbe,0x7a, + 0x3b,0x45,0x90,0x95,0x8d,0x0e,0x65,0x73,0x78,0x1e,0xe7,0x79,0xd6,0x41, + 0x49,0x3b,0xe4,0xd6,0x0f,0xbb,0xa0,0x3d,0x53,0x0e,0xfb,0x0d,0x0a,0xe2, + 0xdd,0x99,0x75,0x99,0xcf,0x31,0xd5,0x4a,0x47,0xea,0x65,0xfd,0xa7,0x75, + 0x14,0xc6,0x21,0x3a,0xe3,0x23,0x19,0x55,0x5b,0xa2,0xdd,0xb9,0x7e,0xab, + 0xb0,0x5a,0xe9,0x2b,0xaf,0xe9,0x0f,0xb1,0x1f,0xa5,0x09,0x1a,0x9f,0x45, + 0xcd,0x1e,0x8a,0xc8,0x5e,0xdc,0xb0,0xad,0x77,0x56,0x1d,0x70,0xeb,0xfa, + 0x9d,0x0d,0x0a,0xe2,0xa7,0x9c,0x73,0x44,0xcb,0x6e,0x33,0xdb,0xd4,0x39, + 0x3c,0x4f,0x99,0x0e,0xf4,0x11,0x5a,0xad,0x14,0x6e,0xdc,0x13,0x8f,0x54, + 0x42,0x6d,0x65,0x45,0xf3,0x94,0x91,0x3d,0x0a,0x76,0xdb,0x52,0x55,0x34, + 0x1e,0x0a,0xea,0x75,0xed,0x71,0x95,0xc5,0xb8,0x0f,0x08,0x2c,0xb2,0x87, + 0xae,0x10,0x71,0x6d,0x74,0xb6,0x08,0xd5,0xe1,0x88,0xc0,0xa2,0xc5,0x83, + 0xbb,0x8c,0x8c,0xa5,0x98,0x62,0x44,0x93,0x98,0x8c,0x5c,0x79,0x44,0xea, + 0x9d,0xfe,0x29,0x74,0x49,0xb1,0x47,0x8e,0xc2,0xda,0x59,0xd9,0xa9,0x56, + 0x06,0x07,0xea,0xab,0x7b,0x39,0x68,0x60,0x0b,0x59,0x9b,0xc6,0x57,0x19, + 0x3c,0xb3,0xcf,0x70,0x48,0x30,0xd1,0xd7,0xc8,0xec,0xfa,0xda,0xb7,0xcd, + 0x64,0xdf,0x91,0xc4,0x9b,0xa8,0x18,0x4c,0x29,0x25,0x06,0x5e,0x08,0xd9, + 0x8e,0xad,0xc8,0x48,0x45,0xac,0xf5,0xcd,0x5b,0xc0,0xfb,0xc1,0x9a,0x6b, + 0xab,0x74,0x51,0x6d,0x48,0x76,0x62,0x91,0x8e,0x53,0xf0,0xd5,0x0f,0xdf, + 0xc2,0x35,0x8f,0x04,0xdb,0x87,0x35,0xe4,0xac,0x70,0x6b,0x0f,0xe3,0x20, + 0xc3,0xdd,0x31,0x35,0x06,0x10,0x02,0xa4,0x94,0x9c,0x1b,0x75,0xed,0x2d, + 0xf0,0xf5,0x20,0x20,0x6e,0x5c,0xea,0x1f,0xa0,0x37,0x65,0xd8,0x48,0x39, + 0x9f,0x0f,0xc7,0x0d,0x6c,0x9d,0xbf,0x1a,0x3f,0x31,0xb3,0xd7,0x12,0x95, + 0xad,0x75,0x94,0x34,0x81,0xe3,0xc1,0x76,0x07,0xce,0x6c,0x6d,0x86,0xf8, + 0x7b,0xa5,0x05,0xf8,0xc3,0x2b,0x57,0x6f,0x35,0x84,0xa0,0x05,0x5d,0x18, + 0x58,0xb6,0x35,0x82,0xd0,0x82,0x4f,0x99,0x70,0xca,0x53,0x3b,0x78,0x98, + 0xc4,0xc8,0x8b,0xd4,0xfb,0x21,0x7d,0x2b,0xe9,0xb5,0xb0,0x7c,0x55,0x3f, + 0x6d,0x0a,0xa1,0x14,0x6d,0x24,0xff,0xd1,0x62,0xa7,0x05,0x42,0x8d,0x07, + 0xdb,0xd0,0xdd,0x2d,0xa5,0xdf,0xdb,0xc6,0x94,0x1d,0x0d,0x19,0x99,0x72, + 0x3d,0xac,0x31,0x48,0xe1,0x42,0x91,0x30,0x23,0x84,0x28,0x23,0x0a,0xda, + 0x79,0xc4,0x7f,0x6e,0xe4,0xab,0x52,0x57,0x3d,0x6c,0x15,0x8b,0x3a,0xf1, + 0x5d,0x8c,0xf1,0xf1,0x78,0x38,0xe7,0xcb,0x07,0xa8,0x3f,0xda,0x94,0x49, + 0xd9,0x6f,0xaa,0xc9,0xc0,0xb8,0x6b,0x6f,0x21,0xdd,0xac,0xcd,0x17,0x79, + 0x0b,0x4a,0x73,0x44,0xf6,0xe3,0xbb,0x53,0x2d,0xd2,0x74,0x24,0x54,0xec, + 0x1f,0xd3,0x3e,0xc9,0xe7,0x07,0xfa,0xdd,0x7a,0x97,0x12,0x8b,0x6c,0x89, + 0xfd,0x0f,0x1d,0x7c,0x69,0xba,0x52,0x4a,0xcc,0x73,0xf9,0x02,0x5f,0x5d, + 0x3f,0xa0,0xdd,0x46,0xd8,0x2f,0x8b,0x18,0x91,0xfa,0xa1,0xe3,0xb1,0xb2, + 0x97,0xf1,0x7f,0xd9,0x12,0x25,0xdb,0x53,0xfe,0xf0,0xca,0xe3,0x55,0xc5, + 0xea,0x6e,0x86,0x71,0xa9,0x0f,0x6e,0x13,0x3d,0xcc,0x0e,0x3a,0x09,0xa1, + 0x6d,0x35,0x1d,0x16,0x79,0xca,0x47,0x64,0x97,0xe4,0x96,0xa7,0xd0,0x67, + 0x80,0x0d,0x9b,0x35,0xc2,0xd8,0xc6,0xdc,0xfe,0x92,0xba,0x96,0x9b,0x34, + 0xab,0xd5,0xd2,0xe3,0xf1,0x90,0x73,0x3d,0x4d,0x93,0x80,0xcf,0xfb,0xb2, + 0x19,0x21,0x44,0x81,0x61,0xee,0xbc,0xbe,0xd9,0xec,0xf4,0x70,0xff,0xfc, + 0xab,0x8c,0x7e,0xca,0x18,0xb6,0xa5,0xee,0x2d,0xd2,0x8d,0xc3,0x60,0x3c, + 0x2f,0xd9,0x56,0x01,0x17,0x83,0x47,0xfb,0x5d,0xda,0x92,0x32,0xd6,0x13, + 0x79,0x8b,0xcd,0x97,0x98,0x7f,0xb0,0x23,0x0c,0x63,0x5c,0xf7,0x7d,0x7f, + 0xfc,0x6e,0x40,0x77,0x28,0xfb,0x43,0x0b,0xdf,0x7a,0x0e,0x59,0x33,0xde, + 0xc2,0x70,0x3f,0x2b,0xe0,0xb7,0xf4,0x93,0x3a,0xf6,0xb3,0x55,0xa1,0xab, + 0xce,0xc4,0x8c,0xef,0x34,0xc9,0x10,0x26,0xfa,0xca,0xe7,0xf3,0x19,0x63, + 0x10,0xbd,0x6f,0x19,0xf9,0xc3,0x51,0x98,0xce,0x4a,0x9b,0x7e,0x37,0xe5, + 0xd0,0x8a,0x8c,0xd3,0x5f,0x8d,0xd4,0x03,0x3a,0xeb,0x49,0xed,0xca,0x12, + 0x25,0x41,0xe9,0x60,0xef,0xdf,0xcd,0x1b,0xb7,0xe0,0xae,0xd3,0x0e,0x3f, + 0xac,0x9c,0x8f,0xa4,0x58,0xad,0x2c,0x48,0xe3,0x6d,0xf5,0x49,0x21,0x44, + 0xa2,0xe5,0x98,0x8b,0x0d,0x78,0x6b,0x14,0xe6,0x2d,0x5e,0xc3,0x91,0xf5, + 0xd1,0x9d,0x72,0xca,0x07,0x0f,0xbd,0x5f,0xf1,0xb5,0x5f,0x76,0x8f,0x1f, + 0xfc,0x4d,0x7b,0x33,0xb2,0xf7,0xa2,0x3f,0x0f,0x8e,0xfa,0x61,0x7c,0xa3, + 0xaa,0x9a,0x43,0x9d,0x64,0xee,0x0b,0x80,0x1f,0x8f,0xbb,0x4e,0x63,0x75, + 0x0c,0x66,0x6b,0x83,0xc2,0xc8,0x3d,0xdb,0xe5,0x45,0x19,0x0d,0x26,0x8c, + 0x81,0x71,0xa1,0x4b,0x47,0x3c,0x68,0xe4,0xfb,0x7d,0xdb,0x3e,0x82,0xe1, + 0xcf,0xbf,0x7c,0x55,0x36,0x87,0xed,0xcb,0xce,0x2a,0xe6,0x41,0xa9,0x67, + 0x54,0x33,0xce,0x7b,0x04,0x94,0xce,0xbd,0x6c,0xf7,0x16,0xd0,0xb1,0x01, + 0x0d,0xe2,0x5b,0xe7,0xa9,0x13,0x84,0x4a,0x0f,0xf7,0xeb,0xeb,0x22,0x6b, + 0x51,0x17,0x5a,0xaf,0xfd,0x2c,0x66,0x27,0x8e,0xf9,0xc0,0xd7,0x1e,0x76, + 0x77,0xb2,0xca,0xbc,0xb6,0x33,0xaa,0xb4,0x58,0x83,0xb5,0xbf,0xfe,0x71, + 0xf1,0x1f,0xb4,0x5c,0x3f,0x60,0x1f,0xcc,0xaa,0x40,0xe5,0x98,0x23,0xa1, + 0x12,0x9f,0x20,0x00,0x8b,0x9d,0xd7,0x29,0x85,0x3f,0x0f,0xe3,0xb3,0x82, + 0x34,0x00,0x3c,0xee,0x8f,0xf3,0xc9,0x23,0x39,0x21,0x14,0x74,0x6e,0x42, + 0x02,0x00,0x42,0x40,0x34,0x5b,0xe0,0x54,0xe1,0x3e,0xf6,0xeb,0xef,0x16, + 0xda,0xec,0x42,0xb2,0xff,0x90,0xba,0x2f,0x1c,0x38,0xef,0xb6,0x5c,0x3f, + 0x08,0xe3,0xb3,0x1e,0x9d,0x25,0x2c,0xd1,0x41,0xa1,0x3d,0x40,0x03,0x9e, + 0xcf,0x07,0x22,0x9c,0xcf,0x17,0xad,0xed,0xf7,0x4f,0xd5,0x61,0xcb,0xd5, + 0xde,0xf3,0x32,0x0a,0x13,0x93,0x63,0x40,0x80,0x04,0x1c,0xd3,0x73,0x61, + 0x7c,0x23,0x44,0x72,0x24,0x87,0x91,0x9c,0xa5,0x61,0x5d,0x46,0x68,0x85, + 0x58,0x6e,0x3f,0xba,0xf0,0x59,0x3d,0xa0,0xbc,0x5b,0x81,0x4e,0xc8,0x89, + 0xef,0xc0,0x73,0xb3,0x79,0xc5,0x0f,0xc0,0x01,0xbe,0x25,0x9b,0xb7,0x5c, + 0x7b,0xdf,0x13,0xb7,0xd2,0x42,0x95,0x81,0x4e,0x14,0xa7,0x94,0x90,0x10, + 0x92,0xd0,0xea,0xf1,0xfd,0xfe,0x20,0x5a,0x78,0xb4,0xa5,0xb6,0xd3,0xf7, + 0xc1,0xe3,0xf7,0xbc,0xad,0x43,0xe6,0x84,0xc0,0x7e,0x4f,0x8d,0xc7,0x31, + 0xa4,0xd5,0xfa,0x08,0xb5,0x13,0x22,0x12,0x3a,0x61,0x72,0x8e,0x21,0x02, + 0x11,0x18,0x3b,0x3c,0x32,0xe6,0x72,0x58,0xfb,0xb3,0x8c,0xbf,0x76,0x6c, + 0x6d,0x24,0x5d,0x2c,0xcf,0xc1,0xa1,0xdf,0xf1,0x87,0xe4,0x9b,0x9d,0x46, + 0xfb,0x48,0x6f,0xb1,0xfa,0x32,0xed,0x19,0xe8,0xaa,0xf8,0xcd,0x99,0xf1, + 0xee,0x77,0x1f,0x8f,0x87,0xee,0x85,0x96,0x11,0x9c,0x0e,0x38,0x60,0x64, + 0x1b,0x81,0xbd,0x07,0x06,0xe0,0x84,0x31,0x24,0x42,0x72,0xde,0xc9,0x62, + 0x4e,0x58,0x36,0x71,0xcb,0xbd,0x00,0x08,0x6f,0x24,0xa7,0x00,0x81,0x81, + 0xc3,0xfc,0xd2,0x15,0xe1,0xba,0x3e,0xc8,0xb9,0x49,0x26,0x94,0x2c,0xbc, + 0xb8,0x53,0x16,0xac,0x6a,0xb3,0x65,0x88,0xcc,0x5e,0x09,0xc3,0xeb,0x14, + 0xdf,0x30,0xf5,0x9f,0xb9,0xf6,0xc1,0x2c,0xab,0x24,0x0f,0x2a,0x91,0xd7, + 0x58,0xb0,0x4c,0xd9,0xeb,0x11,0x61,0x08,0x81,0x16,0x72,0xdc,0xb3,0xfa, + 0xfb,0xf1,0x0a,0x5d,0xa7,0x75,0x24,0x96,0x9d,0x11,0x43,0x08,0x08,0xe0, + 0xfd,0xe4,0x1c,0x01,0x51,0x4c,0x69,0x25,0x13,0x60,0x40,0x40,0x06,0x5e, + 0x76,0xfd,0xac,0x8b,0x9d,0x98,0x63,0x02,0x66,0x88,0xba,0xca,0x97,0xc8, + 0x89,0x5f,0x40,0xa5,0xfc,0xee,0x71,0xf5,0x94,0xf7,0x6c,0xb7,0xbc,0x2b, + 0x16,0xa3,0x45,0x1e,0xd6,0xf1,0x2c,0x83,0x25,0x64,0xff,0x77,0xb5,0x5c, + 0xb3,0x36,0x4c,0xd6,0x27,0xc8,0x9c,0x93,0x8e,0x8a,0x49,0x73,0x16,0xf6, + 0x5c,0x48,0x0a,0xfb,0x14,0x5d,0xf7,0xde,0xdf,0x1f,0x8f,0x69,0xf2,0xe7, + 0xf3,0x19,0xf1,0xac,0xfe,0xfe,0x6f,0xb9,0x67,0x5c,0x77,0x71,0x86,0x18, + 0x19,0xe0,0x44,0x13,0x91,0xf3,0xe4,0x52,0x0c,0x31,0x25,0x48,0x6c,0x56, + 0x00,0x88,0xed,0x47,0x86,0x65,0xfc,0x50,0xe6,0x8d,0x93,0x30,0xff,0xc6, + 0x04,0x31,0x45,0x42,0xe7,0xbc,0xac,0x55,0x56,0xba,0xb6,0x4c,0x89,0x6d, + 0xeb,0xa8,0xdc,0x90,0x2e,0x63,0x59,0x19,0x6d,0x53,0xb9,0x57,0x3d,0x6b, + 0xb4,0xb7,0xb6,0xa7,0xb6,0x64,0xbf,0x69,0xfc,0x9f,0x3c,0x41,0xb3,0x26, + 0x9a,0xaa,0x4e,0x68,0xa5,0xe2,0xde,0xde,0x55,0x3e,0xb9,0x72,0x58,0xfb, + 0x69,0x87,0x85,0x15,0xd6,0xce,0x85,0x46,0x66,0x19,0x09,0x60,0xa9,0xe7, + 0x9f,0xcf,0x17,0x1d,0xb8,0xff,0xac,0x4d,0x5c,0x1e,0x7f,0x21,0x85,0xe1, + 0x75,0x89,0xef,0xe4,0x01,0xc9,0xa1,0x73,0xc4,0x90,0x88,0x39,0x2e,0xbb, + 0xdb,0x36,0x3a,0xb0,0x95,0x53,0x06,0xcc,0x0a,0x38,0xe5,0x7e,0x26,0x42, + 0x02,0x0a,0xab,0x12,0x4b,0xb0,0x26,0xd3,0x1d,0x5b,0x60,0xb5,0x96,0xdf, + 0x65,0xe2,0xc0,0xf2,0x45,0x68,0xdf,0xbd,0x1a,0x44,0xdb,0xed,0x05,0x55, + 0x9f,0x3b,0x9e,0x02,0xf8,0xc3,0x30,0xbe,0x25,0xf5,0x2c,0x29,0x17,0x73, + 0xbd,0x1d,0x73,0x42,0x47,0x0e,0x77,0x6e,0x8f,0x95,0x58,0x26,0x23,0xc8, + 0x48,0x71,0x19,0x7f,0xd1,0x4b,0xc2,0xb2,0x6d,0x9c,0xfc,0xca,0x1b,0x40, + 0xb4,0xf8,0x78,0x91,0xbd,0xc6,0x7a,0xef,0xd6,0x97,0x9a,0xcd,0x5c,0x22, + 0x60,0x8c,0x91,0x01,0x82,0xf7,0x80,0x44,0xe4,0x88,0x23,0x23,0xc6,0x75, + 0x26,0x4b,0x4e,0xee,0xb6,0xe3,0x69,0x3d,0xca,0x7b,0xe1,0x37,0x92,0x1a, + 0xf9,0xa4,0x96,0x18,0x6c,0x1d,0x02,0x71,0x9a,0xda,0x48,0x4d,0x29,0x83, + 0x41,0xa8,0x96,0xcb,0x29,0xd1,0x95,0x0c,0x23,0x0d,0xdf,0x9e,0x8f,0x7f, + 0xab,0x2e,0x5b,0xd5,0x1e,0x8d,0x65,0x84,0x60,0x3b,0xe3,0x1a,0x84,0xfd, + 0xf4,0x49,0x76,0x59,0xa5,0x91,0x54,0x7b,0xb0,0x92,0x70,0x2f,0x63,0x31, + 0x44,0xee,0x35,0x3f,0x75,0x48,0xe0,0xf1,0x78,0x00,0xc0,0xf9,0x7c,0x39, + 0x9d,0x4e,0x5a,0xd3,0xfd,0xf3,0x36,0x31,0x18,0x9e,0x92,0x10,0x43,0x8c, + 0x71,0x9a,0x4e,0xce,0xa1,0x23,0x92,0x11,0x13,0xa3,0xef,0xa8,0x4b,0x5e, + 0x70,0xb7,0xe8,0x95,0xd5,0x09,0x93,0x27,0x4a,0x3a,0xb1,0xb6,0x2c,0x82, + 0x56,0x1d,0x50,0x7e,0xba,0x75,0xb5,0x4c,0xc8,0xe0,0x6e,0xc9,0x60,0x08, + 0xd4,0xd3,0x0b,0xde,0x52,0xe3,0xdc,0xb7,0x86,0x73,0xab,0x5f,0xf4,0x6e, + 0xd3,0xba,0x93,0x43,0x2b,0xef,0x8d,0x30,0xa9,0x44,0xb3,0x6a,0xb6,0x0f, + 0x7d,0xc9,0xe0,0xb6,0xba,0x21,0x75,0xb3,0x1e,0xcb,0xb8,0x2f,0x12,0xd1, + 0xf3,0xf9,0x7a,0x3e,0x9f,0xce,0x91,0x3d,0x64,0x23,0x8d,0xf6,0xc3,0x36, + 0xf1,0xfa,0x8d,0x4b,0x89,0xe7,0xf9,0x15,0x62,0x62,0x00,0x02,0xd9,0xd3, + 0x45,0x7a,0x75,0x80,0x62,0x93,0xbb,0xee,0x46,0x5f,0xf6,0xfa,0x82,0x19, + 0xab,0xdb,0x7d,0xea,0xd2,0x3d,0x43,0xb1,0x7b,0x60,0xdb,0xe2,0x57,0xdc, + 0x76,0x46,0x6a,0xf2,0xb1,0x9d,0x07,0x45,0xd9,0x7e,0xfc,0x04,0xab,0x7d, + 0xb3,0x56,0x2b,0xaf,0x5a,0x33,0xcf,0x40,0xdc,0x72,0x54,0x34,0xbf,0x07, + 0x80,0x18,0xd3,0x42,0xa7,0xcf,0x9c,0x98,0x01,0xf8,0xf9,0x7c,0x30,0x27, + 0xa9,0xed,0x88,0x0d,0x78,0x2b,0xd5,0xa9,0x5a,0xfe,0xdd,0x58,0x24,0xb9, + 0x18,0x03,0xf3,0x0b,0xa6,0x89,0xd0,0x2d,0x63,0xb8,0x91,0x18,0xe2,0x4e, + 0xde,0x00,0x76,0x9f,0xab,0x25,0x1f,0x00,0xc3,0x9a,0x51,0x3e,0x13,0x65, + 0xcc,0xcd,0x1e,0x4b,0x8a,0x89,0xa1,0x47,0x7e,0xa1,0xd5,0xeb,0xec,0xf4, + 0xf4,0x9b,0x08,0xd5,0x84,0x90,0x46,0x9a,0xd6,0x23,0x08,0xd4,0x6c,0x93, + 0x73,0x19,0x2a,0x1e,0xe6,0xfd,0xdb,0xf2,0xbc,0x3d,0xd7,0x12,0xac,0xeb, + 0x90,0x45,0xfd,0x61,0xe5,0xf2,0xbd,0xdf,0xef,0xce,0xd1,0xe5,0x72,0xe9, + 0x03,0x63,0xca,0xed,0x32,0xfd,0xaa,0xe2,0x62,0xf6,0x9d,0x8f,0x91,0x9f, + 0xcf,0x57,0x4c,0x01,0x80,0xd7,0x05,0x50,0x64,0x91,0x6a,0x7a,0x6f,0xe6, + 0x0c,0x08,0x7b,0x60,0x1d,0xfd,0x62,0x3c,0x1a,0xac,0x9b,0x3e,0xc1,0x8e, + 0x60,0xc6,0x14,0x95,0x62,0xee,0xb0,0xd3,0x33,0x52,0xa4,0x2b,0x0b,0xe4, + 0xfa,0xfd,0x86,0x40,0xed,0xcf,0x09,0x77,0x20,0x69,0xfd,0xc4,0xba,0xba, + 0xc6,0xb9,0x74,0xf9,0x06,0x19,0xbd,0x7d,0xb0,0xc5,0x60,0x8a,0x67,0x45, + 0xe0,0x6d,0x47,0x2d,0x12,0xe1,0xe3,0xf1,0x78,0x3e,0x9f,0xc2,0x2b,0xf7, + 0x56,0x55,0x71,0x70,0x7e,0x96,0x1c,0x25,0xe6,0xd7,0x6b,0x8e,0x31,0xf2, + 0x32,0x46,0xba,0xae,0x66,0xdd,0xa8,0x41,0xb7,0x34,0x4f,0x36,0x00,0x24, + 0x43,0x46,0x58,0xbe,0x2f,0x91,0xac,0x49,0x4b,0x90,0xf3,0x45,0x1f,0x8c, + 0x57,0x77,0xb6,0xaa,0x76,0xfa,0x87,0x99,0xbc,0xd5,0xed,0xc6,0x18,0x17, + 0xf6,0xd3,0x16,0xe2,0xf8,0xb0,0xe5,0x3a,0x02,0x1f,0xeb,0xb9,0x0f,0xa2, + 0xec,0x32,0xea,0xe0,0x8b,0x1a,0xa4,0xfe,0x49,0x0b,0x8f,0x2e,0xc2,0xfd, + 0xfe,0xb8,0xdd,0xae,0x88,0x28,0xb2,0x1f,0xa7,0x2c,0x3e,0x9c,0x9f,0x85, + 0x65,0x29,0x90,0x13,0xaa,0xad,0x18,0x22,0x00,0x90,0x43,0x42,0x87,0x84, + 0xab,0xc8,0x45,0xdb,0x17,0x9d,0x5f,0x2a,0x02,0x5d,0x9d,0xb3,0xe9,0xcc, + 0x78,0x31,0x2e,0xab,0x88,0x54,0x47,0xfc,0xfb,0x06,0x3b,0x13,0x4d,0x8c, + 0x71,0xb7,0xd1,0x50,0x7a,0xc0,0x3a,0x9c,0x97,0x11,0x2a,0x8e,0xe0,0xe9, + 0x6c,0xb6,0xd6,0x1f,0x1a,0x85,0x6d,0x37,0x42,0x16,0x27,0x6e,0x84,0xfe, + 0xdb,0x66,0xa4,0xdd,0x87,0x61,0xbb,0x0d,0xf0,0xf5,0x7a,0x5d,0xaf,0x57, + 0xe5,0x93,0x1c,0x41,0xec,0xf4,0x9b,0xb9,0x39,0xcc,0x9e,0x5c,0x4a,0xfc, + 0x7a,0x3d,0x43,0x88,0xcc,0x40,0x8e,0x08,0xdd,0xba,0x91,0xdb,0xc8,0x7e, + 0x15,0xbb,0x10,0x56,0x75,0x4e,0x95,0xdd,0x15,0x0b,0xb5,0xc9,0xdf,0x56, + 0xd0,0xae,0x50,0xf4,0xc3,0x60,0xbe,0xb5,0x6c,0xcb,0x4a,0x93,0x74,0x58, + 0xce,0x2e,0x83,0x19,0x21,0x8d,0xc9,0x5e,0x99,0xf1,0x8f,0x8d,0x74,0x30, + 0x13,0xa7,0xf2,0x28,0xa8,0x8d,0xb4,0x25,0xcc,0xea,0x13,0x5c,0xfd,0x28, + 0x85,0x30,0xdf,0xef,0x37,0x5d,0xfe,0x60,0x3f,0xe4,0x08,0x9a,0xaa,0x13, + 0x84,0xae,0x0f,0x69,0x89,0xf3,0x65,0xf5,0x1a,0xb9,0x75,0x27,0xeb,0x6a, + 0x9e,0x96,0x8b,0xe5,0xb1,0x5e,0x5d,0xed,0x74,0x16,0x0e,0xc6,0x46,0xb2, + 0x95,0xe0,0x49,0x83,0xbb,0xd2,0x6d,0x43,0x7b,0xbc,0xa9,0x05,0x0e,0x26, + 0xc1,0xba,0x68,0xdb,0xdf,0xc6,0x68,0x2d,0x8f,0x52,0xfd,0x49,0x36,0x96, + 0xd7,0x01,0xa8,0x6c,0x32,0x96,0x1c,0xa9,0xb8,0x98,0x76,0x41,0x8e,0x1c, + 0xc7,0xc6,0xad,0xfb,0x7a,0xbd,0x6e,0xb7,0x9b,0xd5,0xfb,0x91,0x76,0x59, + 0xbf,0x5e,0x69,0xe3,0x61,0x72,0x9e,0x19,0xe6,0x79,0x8e,0x21,0x29,0x4d, + 0x3f,0x21,0xc1,0xe2,0xef,0x8d,0xed,0xc2,0xdd,0x26,0x67,0x7b,0x4d,0x4b, + 0xc7,0x35,0xa2,0x4b,0xa5,0x65,0x2d,0xbb,0x76,0x87,0x7b,0x59,0xeb,0x2a, + 0x97,0x12,0x7d,0x7f,0x7f,0x4b,0x53,0x41,0x09,0xdd,0x06,0x31,0x68,0xe5, + 0x37,0x59,0xa1,0xa6,0x33,0xd4,0xb9,0x0b,0xaf,0xc0,0x5e,0x67,0xa8,0xd9, + 0x6a,0x53,0x26,0x22,0x92,0x4b,0xbe,0xe6,0xd7,0xf5,0x76,0x95,0x95,0xb8, + 0x9d,0x85,0x26,0xd0,0xa5,0x5a,0xa9,0x1e,0x53,0xd5,0x7b,0x06,0x78,0xcd, + 0xaf,0x14,0x22,0x00,0xe0,0xd2,0x94,0x41,0xdd,0xdf,0xbe,0x44,0x1e,0xb0, + 0x90,0x86,0xb6,0x04,0xc0,0xb5,0x33,0xd1,0x87,0x35,0xb4,0xe9,0x8b,0x87, + 0xf6,0xb2,0x66,0xbf,0xc8,0xcc,0xe7,0xf3,0x79,0x69,0x84,0x67,0x6b,0x13, + 0x0e,0x07,0x07,0xcb,0x90,0x78,0xb0,0x4f,0x60,0x33,0xb4,0x9a,0xdf,0xcd, + 0x8f,0xd1,0x21,0xc8,0x42,0xc9,0x1b,0x1d,0x51,0x0c,0xe1,0x76,0xbb,0x23, + 0xc2,0xf9,0x7c,0xea,0xa3,0x42,0x46,0x10,0x85,0xb9,0xd2,0x13,0x11,0x39, + 0x00,0x9c,0xc3,0x9c,0x96,0xc6,0xb9,0x23,0x72,0x8b,0xf6,0xe2,0xd6,0xf3, + 0x39,0x68,0x87,0x4b,0xe1,0xf7,0x1d,0xa9,0xdb,0x3c,0x1e,0xba,0x3b,0x73, + 0x3b,0x30,0x51,0xf9,0xc6,0x7b,0x7f,0xb9,0x5c,0xce,0xe7,0x33,0xe9,0x74, + 0x59,0x8b,0x35,0x7c,0x04,0xd8,0x55,0x36,0x9a,0xfa,0x99,0x86,0x92,0xde, + 0xb7,0x66,0x82,0xd6,0xf5,0x17,0xf1,0x30,0xf6,0x96,0x0d,0x8b,0xa2,0x79, + 0xce,0x51,0x08,0xf3,0xe3,0x71,0x47,0xc4,0xcb,0xe5,0xd2,0x7a,0x94,0x23, + 0xf5,0xa5,0xea,0x73,0x24,0x22,0x72,0x94,0x58,0xe8,0x03,0x23,0x80,0x54, + 0xf5,0xdc,0x52,0xda,0xdb,0x5c,0x3d,0xa4,0x46,0x89,0x5a,0xfb,0xd1,0xa5, + 0x52,0x0e,0xf2,0x30,0x54,0x39,0xbb,0xe1,0x88,0x57,0x40,0x6e,0xfe,0x7c, + 0x3e,0xeb,0x5e,0x53,0xfa,0x70,0x85,0x55,0xf1,0x1a,0x65,0x1f,0xa9,0x92, + 0xe7,0xf4,0x23,0x6d,0xfb,0x2b,0x52,0xa5,0x61,0x06,0x4e,0x4b,0xd1,0xbe, + 0x1b,0x37,0x64,0x36,0x9f,0xe4,0x53,0x5d,0xaf,0x57,0x91,0x7d,0x56,0x48, + 0xe9,0xd4,0x97,0x46,0x9a,0x52,0xeb,0x0e,0x00,0x9f,0x18,0x74,0x49,0x24, + 0x11,0x3a,0x72,0x8b,0xbf,0x67,0x16,0xf6,0xf8,0x72,0xbb,0xd8,0x5e,0xc5, + 0x97,0x1f,0xb4,0x74,0xdd,0xc6,0xe1,0xda,0x98,0xc9,0xfc,0xd7,0x21,0x73, + 0xbe,0xfd,0xde,0x7b,0xff,0xf5,0xf5,0x25,0x6c,0x83,0xa2,0xea,0x54,0x35, + 0x26,0x83,0x22,0xcf,0xd8,0x4b,0xe5,0x59,0xf8,0xed,0xcb,0xd9,0xdb,0x2d, + 0x39,0x3c,0xf4,0xfc,0xee,0x05,0x23,0x75,0x1a,0xc5,0x26,0xa4,0xa6,0x15, + 0x31,0xf2,0x92,0x7e,0xe8,0x4a,0x14,0xe2,0x62,0x8c,0xf7,0xfb,0x0d,0xd6, + 0xc5,0xbd,0xd5,0xdb,0x7e,0xb7,0x99,0xbb,0xef,0x32,0x7b,0x06,0x9c,0xc3, + 0x1c,0x39,0x2d,0x1c,0xa0,0x6e,0x59,0xd5,0x8a,0x84,0x5c,0xc3,0xce,0xf2, + 0xb2,0x8e,0x93,0xef,0xb7,0xab,0xc4,0x25,0xd5,0x44,0x97,0xa4,0x29,0x49, + 0xb4,0x27,0x2c,0xdf,0xe8,0xde,0xa1,0xe0,0x46,0xe3,0x46,0x01,0x48,0x15, + 0x49,0x46,0x13,0xa5,0x09,0xae,0x54,0xc9,0xbe,0xac,0x06,0x77,0x94,0xbe, + 0x85,0xa3,0xd2,0x91,0x77,0xa1,0xa5,0x86,0x75,0x67,0x8e,0xbc,0xdc,0x6e, + 0xd3,0x28,0x59,0x43,0xc4,0xf1,0x98,0xa4,0x00,0x57,0xd6,0x4a,0xa1,0xdf, + 0x4e,0xde,0xfb,0x10,0xe6,0xaa,0x80,0x6a,0xd9,0xa0,0x94,0xfa,0x29,0x84, + 0x70,0xbf,0xdf,0xbf,0xbf,0xbf,0x04,0xb7,0x33,0x68,0x12,0x47,0x6a,0x7f, + 0xeb,0x03,0x75,0xc0,0x29,0xcc,0x81,0x60,0x42,0x2f,0x19,0x86,0x64,0x5b, + 0x24,0x78,0xcc,0xd6,0x39,0xfd,0xfa,0xfe,0x45,0xe4,0xd8,0x64,0xa4,0xd9, + 0xbb,0xc8,0xce,0xd6,0x05,0xf4,0xb1,0x17,0xa4,0x34,0x64,0xcb,0x8d,0x43, + 0x4d,0xda,0x8b,0x95,0x4e,0x61,0xa3,0x62,0xd6,0x4d,0x93,0x60,0xc6,0xe7, + 0xc1,0xb0,0xe2,0x8d,0x2f,0xe1,0x84,0x62,0x8d,0x01,0x00,0x84,0x10,0x99, + 0x83,0xad,0x1e,0x28,0xf9,0xd8,0x46,0xaf,0xba,0x40,0x89,0x51,0x0a,0x47, + 0xf6,0xcc,0x89,0x31,0xd0,0x1d,0x60,0xce,0xb9,0x18,0x22,0x67,0xcf,0x31, + 0x3f,0x8b,0xf2,0x91,0xe4,0x4a,0x09,0x11,0x43,0x98,0x6f,0xb7,0xf4,0x8f, + 0x5f,0x7f,0x5d,0x2e,0xe7,0xe7,0xf3,0x35,0x42,0x83,0x33,0x38,0xe9,0xbd, + 0xfe,0x15,0xa5,0x94,0xe6,0x10,0x3c,0x80,0x73,0x08,0x08,0x8e,0x08,0x10, + 0x63,0x88,0x96,0x49,0x32,0xbb,0xbe,0x73,0x04,0xc0,0xd1,0x44,0xd3,0x88, + 0xdb,0xa2,0x77,0xb1,0x79,0x4b,0x81,0xa8,0x78,0x6b,0x5d,0x33,0x66,0x23, + 0xaa,0x2a,0x63,0x8a,0xb2,0x18,0x59,0xca,0x57,0x7b,0x94,0x7d,0xa6,0xeb, + 0x9d,0x14,0x73,0xd0,0xd9,0x67,0xcf,0xc8,0x2a,0xba,0x32,0x5d,0x69,0xfe, + 0x2d,0x5b,0xa8,0xb4,0x17,0x9e,0xfd,0xa2,0xb4,0xab,0x65,0x37,0xf5,0xae, + 0x33,0x06,0xfa,0x21,0x6d,0xa7,0x4c,0xdd,0xa7,0x44,0x09,0xc9,0x11,0xc6, + 0x10,0x6f,0xf7,0xeb,0xf7,0xf7,0xaf,0xf3,0xf9,0x5c,0x2e,0xf1,0xfd,0x6c, + 0xe6,0xd7,0x7e,0x2f,0x4b,0x17,0x5e,0xcf,0xc7,0xe9,0x7c,0x21,0x42,0x09, + 0xfb,0xf7,0xb0,0xaa,0x8a,0x49,0x7f,0xbd,0x5e,0x2b,0xa9,0xb4,0x7e,0x80, + 0xbc,0x66,0x57,0xe6,0x6f,0x5a,0x66,0xcf,0xa4,0x5e,0x5d,0xce,0xa2,0xc0, + 0xe5,0x56,0x9c,0xe8,0xb3,0x93,0xa2,0x7b,0x62,0xa0,0x98,0x9f,0xed,0x70, + 0x55,0x77,0xa8,0x9e,0xaa,0x68,0x40,0x31,0xec,0x31,0x46,0xe7,0x08,0xc9, + 0x55,0x59,0xb9,0x60,0x4f,0xf8,0x84,0xa8,0xfb,0x4e,0xd9,0x94,0xc8,0xb0, + 0xac,0xf3,0x4b,0x3d,0x85,0x81,0x18,0xd9,0x11,0x85,0x10,0xee,0xb7,0xdb, + 0xf7,0xf7,0xb7,0xac,0x80,0x53,0xe0,0xc3,0x48,0x53,0xaa,0xdf,0x91,0x32, + 0xb4,0xf3,0x0b,0x46,0x83,0x08,0x63,0xe2,0x8c,0x46,0xa4,0xa8,0x0a,0x68, + 0x77,0x7f,0x13,0x34,0x22,0x41,0x6d,0xf4,0xb3,0x5c,0xb3,0x95,0xb1,0x55, + 0x64,0x7e,0x5d,0x46,0x4e,0xf5,0xb9,0x75,0x1a,0xd0,0x39,0x89,0x71,0xb6, + 0xc5,0x7b,0xa4,0x0b,0x34,0x22,0xfe,0xf2,0x09,0x9a,0xdc,0xc6,0x69,0xb9, + 0xd0,0xde,0x86,0x38,0x9d,0x10,0x82,0x14,0x64,0x88,0xdc,0xae,0x38,0xb8, + 0xb7,0xf0,0x65,0x7f,0x9c,0x10,0x99,0x91,0x99,0x1d,0x41,0x98,0xe7,0x9f, + 0x9f,0x9f,0xef,0x5f,0xbf,0xa4,0x97,0x53,0x8e,0x61,0x67,0x70,0x50,0x18, + 0x1b,0x11,0x59,0x21,0x24,0xec,0x84,0x63,0x09,0x29,0x25,0xf1,0x71,0x6c, + 0xa9,0xa2,0x61,0x3f,0x24,0x6a,0x9b,0x20,0xad,0xfe,0x56,0xab,0x93,0x59, + 0xee,0x02,0xc8,0x88,0xe1,0x15,0xab,0x73,0xd8,0x80,0xae,0x2c,0xf8,0xa8, + 0xee,0xbb,0xed,0xf3,0x6f,0xbe,0x85,0xee,0xb6,0x1d,0xe8,0x95,0x8e,0x92, + 0xb5,0x1e,0x59,0x5a,0x97,0x95,0x12,0x93,0x20,0xc7,0xbe,0x54,0x2a,0x23, + 0xd6,0x72,0x6a,0x7e,0x8f,0x8e,0x42,0x08,0xb7,0xeb,0x35,0xc5,0x20,0x7b, + 0xbf,0xaa,0x87,0xf8,0xdd,0x25,0x75,0x31,0x46,0x4e,0x91,0x63,0xf4,0xde, + 0xd1,0xd2,0x38,0xe6,0xfd,0xbe,0xf9,0xcd,0x84,0x08,0xba,0x44,0xc8,0x17, + 0x6d,0x9e,0xb6,0x7f,0x14,0xf5,0x2e,0x6a,0xa7,0xe5,0xaa,0xd1,0xb1,0xc4, + 0x7d,0xb6,0xfc,0xda,0xea,0xa2,0x6d,0x40,0x8c,0xc3,0xd2,0xcf,0x38,0x81, + 0xf2,0xb8,0xc6,0xdb,0xe1,0x34,0x4b,0xdb,0x58,0x64,0xd5,0x69,0x85,0x9b, + 0x79,0x5b,0xbd,0xcf,0x74,0xdd,0xa2,0xdf,0x10,0xb4,0x3d,0x26,0xfd,0x73, + 0x40,0x00,0xe7,0x30,0x84,0xf9,0x7a,0xbb,0xa6,0x18,0x5b,0x7b,0xbf,0xde, + 0x6d,0xe6,0x8a,0x74,0xbc,0xa0,0x74,0x08,0x00,0x68,0x9e,0x43,0x75,0xda, + 0x2d,0xad,0x2b,0x6e,0x74,0x7d,0x5f,0x63,0x75,0x60,0xbd,0xc6,0x70,0x48, + 0xec,0xa0,0x5b,0x00,0xc6,0x5b,0x91,0x94,0xed,0x32,0x6c,0x69,0xfc,0xdf, + 0xfe,0x65,0x7a,0xcc,0xdb,0x8e,0x19,0xab,0x6a,0x6b,0xce,0x2a,0xa8,0xe7, + 0xdd,0x2e,0xb4,0xcc,0xb4,0x6f,0x40,0x08,0x8b,0x7b,0xb3,0xb0,0x18,0x20, + 0x60,0x24,0xa4,0xf0,0x9a,0x7f,0x7e,0x7e,0xcb,0x56,0x44,0x69,0xe5,0x0d, + 0x96,0x98,0xca,0x27,0x98,0x52,0x82,0xb4,0xc0,0x26,0xc5,0x73,0x8b,0xde, + 0xf6,0x63,0x46,0xcd,0xce,0xcb,0x66,0xe6,0x21,0x8b,0x64,0xcb,0xaf,0xb7, + 0xe6,0xf7,0xfa,0x0d,0x68,0x2a,0x6d,0xdd,0xc7,0xa4,0x9c,0x6f,0xfd,0x56, + 0x86,0xd3,0xb2,0x6e,0xbe,0x3c,0x88,0xf3,0x1c,0x74,0x49,0x5d,0x1e,0xc6, + 0x6b,0x9f,0x07,0x0d,0xf2,0x71,0x8d,0x02,0x99,0x19,0x65,0x1a,0x86,0x04, + 0x42,0x4d,0x31,0x84,0xdb,0xcf,0xef,0x94,0x72,0xbd,0x1f,0x9f,0xf9,0x5d, + 0x5b,0xc6,0xc9,0x79,0x2f,0x61,0xbc,0xf4,0x89,0x62,0x88,0x2d,0xe3,0x6c, + 0x71,0xb4,0x76,0x2e,0xa2,0xcc,0x9c,0x5b,0xbf,0x7b,0xf8,0xe4,0x4b,0x66, + 0xfe,0x7e,0x03,0x9a,0xaa,0x46,0x38,0xdb,0xd3,0xfa,0x9f,0x50,0x77,0xfb, + 0x76,0x6a,0xed,0x33,0xef,0x6b,0x10,0x89,0x29,0x84,0xc0,0x0c,0xde,0x4f, + 0xba,0x0e,0xb5,0x8c,0xeb,0x8d,0xa2,0xaf,0xe3,0x4e,0x4b,0x21,0x10,0x10, + 0x68,0xf9,0x97,0xa3,0x39,0x84,0xeb,0xcf,0x8f,0xf8,0xfb,0x6c,0x13,0xe9, + 0xc8,0x38,0x58,0x58,0xd2,0x74,0x26,0x27,0x58,0x1c,0x06,0xa2,0x18,0x62, + 0x58,0x41,0x6c,0xad,0xda,0x97,0x56,0x3b,0xaa,0x3b,0x5f,0xca,0x28,0x6a, + 0x84,0x95,0xcf,0x4a,0x34,0xab,0x51,0xf6,0x1b,0xd0,0xd4,0xda,0x17,0x51, + 0x46,0x9e,0x7f,0x8b,0x77,0x2f,0x2f,0xae,0xe9,0xa9,0x72,0xdc,0x66,0xb2, + 0x07,0x80,0x18,0x53,0x88,0x21,0xa5,0xe4,0x1c,0x4d,0xde,0x6d,0x53,0x0c, + 0x68,0x95,0xbe,0x44,0xbe,0xe8,0xbf,0x60,0x2d,0xa7,0xca,0x3e,0x37,0x9c, + 0xe7,0xfb,0xef,0x7f,0xff,0x2f,0x73,0x14,0x9b,0x3f,0xd8,0x23,0x31,0xde, + 0x3a,0x4d,0xde,0xcb,0x90,0xa5,0x23,0x4c,0x31,0x85,0x18,0xb7,0x70,0xac, + 0xc2,0x98,0xc2,0x36,0xa0,0x2b,0xb1,0x9d,0x23,0xf0,0x8a,0xb2,0xe5,0x9a, + 0x03,0x67,0x8d,0xbc,0x0e,0xe9,0x61,0xa8,0x7a,0x7c,0xc6,0xdd,0xfc,0xdf, + 0x62,0x0f,0x64,0xe8,0x5c,0x54,0xbf,0xc9,0xa1,0x2b,0x38,0x88,0x98,0x9c, + 0xf7,0x6b,0x84,0x6f,0x5d,0x3d,0x5a,0x8d,0x57,0x17,0x09,0x9b,0xe2,0xb3, + 0x3d,0x7a,0x8e,0xa6,0x10,0x6f,0x3f,0xbf,0x7f,0x52,0x5a,0xe2,0xfc,0x43, + 0xd7,0x6e,0x0e,0x14,0x7b,0xe7,0x10,0x89,0x65,0x66,0x16,0x20,0xec,0x71, + 0x8b,0x58,0xe0,0x07,0xf5,0x04,0x97,0xe4,0x2b,0x55,0xb0,0xec,0xe0,0x9c, + 0x72,0x95,0x4a,0x29,0x73,0xed,0x2d,0x7a,0x18,0x6a,0xa5,0x8f,0x23,0x7c, + 0x8c,0x6f,0xad,0x4b,0x69,0x11,0x6b,0x2d,0xce,0x65,0x1d,0x2b,0x51,0xee, + 0x97,0x2c,0x64,0x65,0x66,0x60,0x58,0x0d,0xbe,0x27,0xc2,0x2d,0xb0,0x33, + 0xad,0x7d,0xd6,0xff,0xf3,0xae,0xa0,0xbf,0x81,0x77,0x69,0x09,0xfe,0x9c, + 0xfb,0x0e,0xe1,0xe7,0x7a,0xbd,0x72,0x0a,0x76,0xa7,0x7b,0x07,0xb8,0x11, + 0x53,0x62,0x4e,0xde,0x11,0x92,0x5b,0x31,0x42,0x18,0x22,0xc7,0x98,0x34, + 0xea,0xda,0x6b,0xd8,0x8e,0x03,0x40,0x83,0xf9,0x6c,0x17,0xe6,0x21,0x02, + 0xac,0x05,0x75,0xcf,0x9e,0x67,0xb9,0x58,0xa2,0x73,0xe5,0xfa,0x04,0xde, + 0xe1,0x1e,0xa5,0xc3,0xb4,0x7e,0xd0,0x48,0xe8,0x09,0xd5,0x8d,0xa8,0x92, + 0x95,0x66,0x9f,0x41,0x64,0x1f,0x62,0x48,0x31,0xca,0xa4,0xb4,0x9f,0x26, + 0xb7,0xec,0xc6,0xde,0xd7,0xec,0x64,0x8e,0x59,0x8e,0xc9,0xba,0x5f,0x7b, + 0x2d,0x9a,0x33,0xc3,0x52,0x5f,0x13,0xe0,0x8c,0x77,0xdf,0x21,0x5c,0x7f, + 0x7e,0x7e,0x8b,0xec,0x85,0x87,0xa2,0xb5,0x7f,0x36,0x84,0xc0,0x29,0x12, + 0x20,0x92,0x43,0x40,0x47,0x08,0x00,0x21,0x26,0x29,0x8b,0x6a,0x5c,0x54, + 0x23,0xae,0xdf,0x96,0x4b,0x64,0x0d,0x11,0xf8,0xb3,0x89,0xd5,0x4c,0xf1, + 0xec,0xf2,0xa5,0xc3,0x2b,0x53,0x0b,0x08,0x3b,0x12,0xd9,0x8d,0x8b,0xbc, + 0x4f,0xc3,0x68,0xcb,0x71,0x31,0x86,0x72,0xae,0x58,0xef,0x44,0x86,0xb2, + 0xe6,0x39,0x28,0x6d,0x95,0x66,0xf2,0x6b,0xff,0x92,0xf3,0x1a,0x8f,0x1c, + 0x02,0xd0,0xd1,0x27,0x75,0x90,0x04,0x08,0x9e,0xbe,0x62,0x0c,0xd7,0x9f, + 0x6b,0x8a,0x41,0x86,0x55,0xab,0x59,0x50,0x08,0x01,0x80,0x21,0x25,0x72, + 0x32,0x2f,0x01,0x80,0x18,0xe3,0xe2,0x13,0xd3,0xd2,0x8e,0xe3,0xb2,0x61, + 0xa8,0x40,0x1d,0x68,0x4c,0x6e,0x7c,0x46,0x3c,0x53,0x6a,0x60,0x99,0xc4, + 0xf7,0xd1,0x98,0x94,0x9d,0x05,0x9b,0xca,0x57,0x51,0xd5,0x1f,0xcf,0xea, + 0x1d,0x62,0xb9,0xa6,0x69,0x22,0x72,0xf3,0x1c,0x42,0x98,0xa5,0xd3,0x50, + 0x46,0x2e,0xb2,0x59,0x2e,0xc6,0x18,0x42,0x14,0x0a,0x02,0x12,0x51,0x18, + 0xa9,0xab,0x4f,0xdf,0x7f,0x5c,0xd6,0x97,0x68,0x7e,0x27,0x03,0x12,0xce, + 0x4d,0x31,0x86,0xeb,0xf5,0x9a,0x52,0x1e,0xeb,0x2d,0xd6,0x48,0x8a,0xe4, + 0x31,0x92,0x73,0xb8,0x60,0xad,0x28,0x44,0x0e,0x5a,0xa4,0x5b,0xcf,0x52, + 0xb5,0x0c,0x2c,0x31,0x44,0x99,0x2b,0xbd,0x4b,0x12,0xdc,0x21,0x08,0xcd, + 0xe1,0x81,0x0d,0x31,0xed,0x1a,0xaa,0xd5,0xa8,0x41,0x23,0x91,0xce,0xe6, + 0xf5,0x3f,0x11,0x79,0x49,0x7c,0xa5,0x95,0xd4,0x94,0xd2,0xf3,0xf9,0xd2, + 0x9d,0x1a,0xa5,0xb3,0x07,0x80,0x94,0xe2,0xb2,0xe1,0x1e,0xc9,0x4f,0x27, + 0x47,0x1e,0xf7,0x52,0xdf,0x2b,0x3d,0x6f,0x0d,0x52,0x5e,0x5b,0x62,0xb8, + 0x42,0xa9,0x16,0xb2,0x23,0x17,0x63,0xb8,0xfe,0xfe,0x2d,0x75,0x3d,0xb5, + 0xf9,0xcb,0x33,0x4d,0x89,0xd3,0x62,0x0f,0xbc,0x23,0x44,0x17,0xd6,0x29, + 0x57,0x5b,0x4d,0x29,0xf7,0x48,0x30,0xa7,0xcb,0x65,0xab,0x14,0xc9,0xae, + 0x4d,0x68,0x8c,0xb9,0xb7,0xea,0xb2,0xfd,0x38,0xc9,0x42,0x8c,0xb2,0x32, + 0x70,0xa7,0xce,0xbf,0x0b,0xee,0xf2,0x2a,0x74,0xb7,0x7c,0xfb,0xee,0xe2, + 0x9d,0x3e,0xcd,0xbb,0x40,0xbc,0x85,0x97,0x40,0xee,0x5b,0xe9,0xcc,0x8b, + 0xb2,0x8f,0x3c,0x32,0xe9,0x4c,0x2f,0x4f,0x9f,0x84,0x4f,0x65,0x19,0x5d, + 0x37,0x81,0xdd,0xaa,0x8c,0xbb,0x0e,0xbe,0x6d,0xee,0x88,0xd6,0x13,0x09, + 0xd5,0x4a,0xe2,0x78,0xbb,0xfd,0x88,0xcd,0x17,0xbd,0x5f,0xc3,0x8e,0x28, + 0x33,0xdb,0xce,0x39,0x40,0x12,0x6c,0xea,0xfe,0xe0,0x82,0xa9,0xc8,0xda, + 0x8d,0xba,0x27,0xef,0x27,0x4b,0x6d,0xa2,0xab,0xc6,0x2d,0xec,0xae,0xe5, + 0xda,0xab,0xb1,0x76,0x35,0xf5,0x10,0x2b,0xd8,0xd9,0xfe,0x5d,0xd9,0x5e, + 0xd0,0xcf,0x10,0xf6,0x00,0xa0,0xb7,0xcb,0x73,0xd0,0xdd,0xd4,0xae,0x2a, + 0xe2,0xd7,0x4e,0xa2,0x56,0xb2,0x24,0xad,0x2f,0x4b,0x3a,0x06,0xf0,0x8a, + 0x6b,0x35,0x37,0xa4,0x94,0xc8,0x2d,0x80,0xd7,0x02,0xa8,0xb1,0xb5,0x4a, + 0x76,0x26,0xdf,0x34,0x70,0x57,0xa3,0x8f,0xde,0xf9,0x18,0xe3,0xed,0x76, + 0x4d,0x71,0x16,0xfd,0x5e,0x6e,0x09,0x68,0xf2,0x13,0x2d,0x52,0x8f,0x21, + 0x86,0x15,0x47,0xd5,0xeb,0xe5,0x7b,0xef,0x74,0xe7,0x92,0xad,0xd0,0x65, + 0x0b,0xae,0x0f,0x17,0xe4,0x1c,0xee,0x61,0xc9,0xfa,0x5b,0x83,0x2b,0xfb, + 0xa8,0x4c,0x0f,0x64,0x57,0x48,0x59,0x3c,0x6f,0x6d,0x46,0xfc,0x00,0xa3, + 0x67,0xd5,0x65,0x9a,0x26,0xef,0x9c,0xe4,0x72,0x16,0x39,0xf9,0x7a,0xbd, + 0x74,0x5d,0x59,0x2d,0xf0,0xa4,0xb5,0xea,0x27,0x50,0xb2,0x94,0x00,0x10, + 0x05,0xf4,0x08,0x56,0xf3,0x37,0x23,0x6f,0x5b,0x3a,0x66,0xa2,0x5d,0xda, + 0x78,0x48,0x08,0x84,0xce,0xbb,0x18,0xe2,0xcf,0xf5,0x27,0xc5,0xb0,0xc6, + 0x19,0xec,0xa7,0x89,0xbc,0x97,0x42,0x82,0xe4,0x93,0xeb,0xcd,0x57,0xc6, + 0x72,0xc5,0x97,0x7b,0xef,0xa6,0xe9,0x34,0x4d,0x93,0x42,0xd7,0xd5,0x0e, + 0x6b,0x63,0xa2,0xdc,0x25,0xfc,0xae,0xd4,0x6d,0x35,0x6c,0x70,0xe1,0x92, + 0xfe,0xd0,0x97,0x0a,0x2d,0x6c,0xd9,0xd5,0xda,0xef,0x5b,0x05,0xe4,0x56, + 0xae,0xbf,0x5b,0x66,0xed,0xbd,0x28,0x56,0x86,0x8d,0x21,0xc2,0x94,0x16, + 0xb2,0x10,0xc1,0x0a,0xea,0x9a,0x76,0x73,0x4b,0xd2,0x17,0x61,0x44,0x0e, + 0x71,0xa1,0xa4,0x14,0x56,0x13,0x80,0xc4,0x4a,0x5d,0x91,0x45,0xf9,0xdb, + 0xdc,0x8b,0xa9,0xf1,0x23,0xad,0x51,0x02,0xa3,0x77,0x9c,0xd2,0xfd,0x76, + 0x9b,0x4e,0x13,0xa2,0x98,0x6b,0x0f,0xc0,0x21,0x46,0xcb,0x55,0x01,0x06, + 0x19,0xa2,0x6d,0x37,0x1d,0x45,0x9a,0xa6,0x93,0x73,0xce,0x82,0x10,0x15, + 0xeb,0xa0,0x1e,0xad,0x55,0x08,0x19,0x69,0x18,0x56,0x3b,0x34,0x59,0xf9, + 0xab,0x1f,0x2a,0x52,0xd5,0x6e,0x64,0x92,0xf8,0xcc,0xd4,0x77,0x72,0x7d, + 0x35,0xf2,0x8a,0x1e,0x2c,0x2e,0xbb,0xe4,0xee,0xf3,0x3c,0x57,0x4b,0xb9, + 0xf2,0xd0,0xd6,0x58,0x06,0x38,0x49,0x11,0x28,0xa5,0xc4,0x31,0x41,0x62, + 0x5c,0x49,0xd9,0x71,0xe7,0xdd,0x1b,0x7d,0xd7,0x85,0xc6,0x42,0xe0,0xd3, + 0x42,0x16,0x8e,0x18,0x42,0x92,0xdb,0x60,0xe6,0x10,0x62,0x8c,0x31,0x31, + 0x67,0xe8,0xaf,0xfd,0x30,0xc9,0x22,0xf5,0xd3,0x69,0x72,0xce,0xc5,0x98, + 0xca,0x7d,0x0f,0x5a,0xb0,0x12,0x67,0x5f,0xd6,0xed,0x5b,0x1b,0x14,0x3a, + 0xea,0x6e,0x5b,0x3e,0xd0,0xa0,0xad,0x2b,0xcf,0x93,0xaf,0x62,0x8c,0x34, + 0xaa,0xca,0x16,0x90,0x7f,0x60,0xe4,0x5b,0x26,0x48,0xa8,0xbd,0x84,0x3a, + 0xa5,0x35,0x56,0x21,0x88,0x2b,0x71,0xf6,0x82,0xce,0xb3,0xfb,0x29,0x61, + 0x3f,0x89,0xa8,0x2c,0xb0,0xb0,0x07,0x5e,0x03,0x10,0x90,0x25,0x2b,0xb2, + 0x8a,0x2e,0xcd,0x9b,0x85,0xf8,0x8a,0x90,0x12,0xe8,0xd5,0x92,0x74,0x32, + 0x52,0x8c,0x0c,0x90,0x8d,0x39,0x5a,0x9c,0x85,0xb5,0xd5,0xce,0xb9,0xd3, + 0x69,0x72,0xce,0x8b,0x3d,0xaf,0x12,0xd5,0xe9,0xe0,0x8a,0x94,0x29,0xb3, + 0xa7,0x54,0x96,0x3a,0x0e,0x27,0x6c,0x44,0x40,0xfa,0xe7,0x61,0x77,0x67, + 0x39,0x70,0x2d,0x20,0xa9,0xda,0xa8,0xcf,0x1a,0xb5,0xfd,0x12,0xb4,0x94, + 0xe7,0x4e,0xa7,0x93,0x42,0x69,0xdb,0x9e,0x82,0xc4,0x02,0xbd,0x5e,0x2f, + 0x09,0xfe,0xab,0x81,0xeb,0x3a,0x7b,0x83,0xd9,0xf2,0x83,0x95,0x76,0x16, + 0x01,0x08,0xd0,0x01,0x12,0x80,0x03,0x20,0x00,0x02,0x94,0x7f,0x10,0x90, + 0x18,0x09,0x76,0x52,0xdf,0x70,0xf0,0xa9,0x80,0x33,0x97,0xdb,0x78,0xb5, + 0x31,0x7a,0x3a,0x9d,0x54,0xea,0xd0,0x18,0xe4,0xd0,0xe7,0x99,0x41,0x9e, + 0xfb,0x55,0xed,0xce,0x0b,0x54,0xe3,0x4b,0x38,0x5e,0xd5,0xc1,0x2b,0xc9, + 0x5b,0x13,0x59,0x96,0x75,0x8b,0xc7,0xd5,0xbd,0x4f,0xd9,0x20,0xec,0x4d, + 0xc2,0xe4,0xa7,0xf3,0x28,0x9d,0x4b,0x89,0xa4,0x65,0x04,0x84,0x88,0xa6, + 0xc9,0x67,0x41,0x6c,0x86,0xc2,0x33,0x73,0x46,0xa9,0xd8,0x6f,0xbb,0x16, + 0x78,0x57,0xca,0x12,0x58,0x99,0x2c,0x4c,0x5f,0x67,0xb5,0xde,0x6b,0x9a, + 0x54,0x62,0x99,0xf5,0xee,0xac,0xd4,0xcf,0xe7,0x93,0x80,0x6e,0x2d,0xa2, + 0x19,0x1a,0x83,0x1c,0x72,0x93,0xaf,0xd7,0x2b,0x23,0x7e,0x6a,0x11,0x12, + 0x74,0x10,0x60,0xb6,0xbc,0x58,0x6d,0xb2,0x54,0xab,0x40,0x95,0x7d,0xd1, + 0x5a,0xbc,0x7b,0x37,0x94,0xeb,0x94,0x6b,0x60,0x3f,0x7d,0x28,0x8a,0x5b, + 0x0e,0x06,0x74,0x64,0x2f,0xaf,0x17,0x2a,0x7b,0x5d,0x5f,0xd2,0x4a,0x55, + 0xd5,0xf7,0x77,0xbb,0x09,0xb8,0xeb,0xf0,0xac,0x9d,0xde,0x0c,0x21,0xd9, + 0xed,0x9a,0x6c,0x90,0xb7,0xf3,0xf9,0xec,0x9c,0x0f,0x21,0xea,0xd3,0xef, + 0x48,0xdd,0x56,0xf7,0x64,0xa0,0x49,0xb1,0x53,0x96,0x5c,0xbb,0x93,0xbf, + 0x41,0x7b,0xf0,0x3d,0x33,0xcf,0xad,0xe9,0x4c,0x6a,0x1d,0xa8,0xea,0xa4, + 0xd6,0x07,0xc8,0x9c,0x8c,0x97,0x41,0x22,0x79,0xe7,0x9d,0x38,0xb9,0x77, + 0x71,0x5a,0xcc,0xfc,0x7c,0x3e,0xc5,0x3b,0x2a,0xae,0xb4,0xf5,0xbe,0x1d, + 0x82,0x09,0x30,0xe2,0xce,0xe0,0xcc,0x55,0x3a,0x1a,0x73,0x86,0xf2,0xf4, + 0x44,0x16,0xa7,0x49,0x0e,0x2c,0x10,0xb1,0xc3,0x47,0x51,0x62,0x0f,0x65, + 0xda,0x44,0x69,0xef,0x5a,0x2b,0x5e,0xfb,0x74,0x73,0xe5,0xa6,0xaa,0x4e, + 0x58,0xe6,0x5b,0x8d,0x48,0x11,0x8c,0xee,0xad,0xfe,0xc3,0x72,0x8d,0xc6, + 0x3e,0x12,0x9f,0x5b,0x7c,0xfb,0x5b,0x3d,0x1e,0xf9,0x20,0xcf,0xe7,0x33, + 0xa5,0x24,0xf5,0x35,0x9d,0xd9,0x1b,0x75,0x3a,0xca,0x4b,0xbd,0xc6,0xfb, + 0x32,0xa7,0x57,0x4b,0x56,0x39,0x7b,0x86,0xf6,0x1b,0xf1,0x15,0xd3,0x74, + 0x3a,0x9d,0x26,0x09,0xe0,0x2d,0x8e,0xbd,0xd5,0x15,0xcd,0x70,0xb4,0x99, + 0x3d,0x50,0xd6,0x43,0x4d,0xfa,0xcb,0xd6,0x0b,0xb4,0xb1,0xd8,0xd9,0xde, + 0xf0,0x16,0x18,0x7a,0x9b,0x9d,0x2b,0xa5,0x6e,0x23,0xf9,0x41,0x66,0xad, + 0x8e,0xe1,0xb5,0x8d,0x6a,0x69,0xa9,0x65,0x84,0xa4,0xe3,0x27,0x09,0x11, + 0xc5,0x73,0xbf,0xe6,0xa5,0x9e,0x2f,0x0a,0xa7,0x9e,0xb5,0xa4,0x05,0xa8, + 0x5e,0xae,0x63,0x8a,0x0f,0x39,0x26,0xf4,0xf7,0xa4,0x44,0x23,0x27,0xaf, + 0xca,0x95,0xd8,0xd2,0x75,0xcb,0x14,0x24,0xd5,0x3d,0x09,0x5f,0x74,0xe8, + 0x49,0x00,0x86,0x55,0xd9,0x57,0xb9,0x0e,0xf4,0xe2,0x72,0x68,0x60,0x80, + 0xc0,0x99,0x3a,0x31,0xa4,0xdd,0xf5,0xfb,0x56,0x24,0x9f,0xfd,0x8a,0xb6, + 0xda,0x54,0x2d,0xca,0x4a,0xf0,0xa0,0xec,0x53,0x5a,0x72,0x6b,0x47,0x4e, + 0xee,0x50,0x2d,0xbf,0xf7,0xde,0x4f,0xbe,0x9c,0x8d,0x2d,0x0c,0x7c,0xb3, + 0x3e,0x9d,0xb5,0x5b,0xaa,0x47,0x79,0xf3,0x1b,0x6b,0x25,0x5f,0x6a,0x8b, + 0x55,0x36,0x3d,0x38,0x5a,0xcd,0x2a,0xf5,0x7f,0x2d,0x3c,0x5b,0xad,0x93, + 0x73,0xac,0xa7,0xa1,0x5a,0x67,0x6b,0xdd,0x6a,0x26,0xfb,0xaa,0x77,0xf0, + 0x9d,0x20,0xdc,0x0e,0x53,0x7e,0x90,0xbf,0xe9,0xb2,0xa7,0x25,0xd6,0x4d, + 0x31,0xc5,0xf4,0x7c,0x3e,0x89,0x96,0xaa,0x08,0x1c,0xad,0x58,0x6a,0x35, + 0x3a,0xb3,0x0f,0x26,0x05,0x66,0x19,0xba,0x10,0x3f,0x52,0x2f,0x0a,0x19, + 0xcc,0x86,0x21,0xb1,0x80,0xfd,0xd4,0x4b,0x6b,0xd7,0xf4,0x2e,0x98,0xd7, + 0x1b,0x98,0xe7,0x59,0x10,0xd6,0x5a,0x95,0xeb,0x38,0x75,0xfb,0x91,0xc5, + 0x55,0x49,0xbb,0x56,0x0b,0x79,0x60,0x66,0x9b,0xe5,0xe7,0x3a,0xe6,0x5d, + 0x6d,0xe1,0x67,0x5f,0x62,0x7b,0x64,0x84,0xea,0x90,0xca,0xd7,0x97,0xfe, + 0xc3,0x52,0xcc,0x6a,0x67,0xe9,0x30,0x95,0x2f,0x6d,0xa3,0x88,0x5c,0xcf, + 0x2f,0x21,0xa1,0xc3,0x10,0xc2,0xf5,0x7a,0xfb,0xfe,0xfe,0xd6,0x1a,0x51, + 0x7f,0x35,0x76,0x66,0x45,0x2c,0x4a,0x33,0x5b,0x3c,0xbf,0x36,0xa8,0x16, + 0x6a,0x8c,0x8d,0xf8,0x1d,0x96,0x2d,0x13,0x96,0x22,0xd7,0x5e,0x79,0x4d, + 0x5c,0x99,0x01,0x74,0x27,0xd2,0x2a,0xc2,0x0d,0x3b,0xb9,0xa6,0x78,0x64, + 0xc9,0x17,0xb5,0xc0,0xa0,0xb3,0xc0,0x7a,0x57,0x55,0xd7,0xae,0x52,0x97, + 0xc4,0x24,0x2a,0xa0,0x68,0xcf,0x5b,0xad,0xe7,0x40,0x04,0x29,0xa7,0xb9, + 0xba,0x0c,0xbd,0x9c,0x3c,0x87,0x75,0x94,0xb3,0xe3,0x7a,0xb6,0x65,0x44, + 0x2d,0xf3,0x28,0x7e,0xd4,0xd2,0x6d,0x0d,0x21,0x27,0x53,0x92,0x02,0xbb, + 0x72,0xb6,0x67,0x6d,0x8c,0xc7,0xe3,0x71,0x3e,0x9f,0x0f,0xf5,0xde,0x94, + 0x42,0x97,0x02,0xbe,0x64,0x76,0x55,0xf8,0x8a,0x05,0x58,0x4a,0x91,0x75, + 0x9b,0x52,0x23,0xcc,0x30,0x49,0x19,0x08,0x42,0xd5,0x9a,0x97,0x6d,0x43, + 0xf9,0x23,0x55,0xee,0x96,0xb2,0x2f,0x62,0xf7,0xaa,0x88,0xfc,0xf4,0x23, + 0xb7,0x84,0xa4,0x52,0xd7,0x2e,0x94,0x85,0x64,0x65,0x0f,0x53,0x1c,0x99, + 0xbc,0x6c,0x3f,0x9f,0x05,0xd5,0x17,0xdb,0xd2,0x45,0xa7,0x99,0xeb,0x3b, + 0x05,0xa3,0xac,0x62,0x6f,0xc3,0xc5,0x4e,0x1b,0x51,0x78,0x26,0xe5,0x83, + 0xd9,0x4c,0xdd,0x2e,0xcc,0x91,0xcb,0x0a,0xc4,0x71,0xc5,0xac,0xa5,0xb2, + 0xb9,0xa9,0x46,0xd8,0x3e,0x6e,0x7b,0xbc,0x46,0x12,0xa7,0x10,0x02,0x12, + 0xa6,0x98,0x74,0x2d,0x06,0x11,0xea,0xbb,0x2d,0x1d,0xbc,0xb4,0xc9,0x1e, + 0x8d,0xf3,0xd6,0xa7,0x62,0x21,0xf1,0x76,0xe8,0xd3,0x1e,0x3e,0xed,0x23, + 0x6b,0x40,0x53,0xea,0x83,0xa4,0xec,0xa2,0x12,0xf2,0x7a,0x05,0x65,0x64, + 0x5b,0x29,0xec,0x2f,0xce,0xf3,0x2c,0xd8,0x10,0x65,0xaa,0xaf,0x6a,0xbc, + 0x1e,0x68,0x6b,0xd2,0x5a,0xb5,0x3f,0xdf,0x5a,0x79,0xc2,0xcc,0xb4,0x7b, + 0x04,0xb9,0x73,0xad,0x52,0xf4,0xe9,0x70,0xb6,0xb6,0x23,0xf3,0x59,0xbd, + 0x35,0x5f,0x90,0x70,0xe6,0xeb,0xeb,0x4b,0x65,0x9f,0x61,0x4f,0x55,0x82, + 0x65,0x35,0x43,0x0b,0x1d,0x25,0x27,0x80,0xbd,0x19,0x29,0xef,0x8b,0x2d, + 0x25,0x4f,0x19,0x70,0x25,0xc6,0x44,0x24,0xec,0x15,0xe0,0x3c,0x29,0x22, + 0x36,0x46,0x31,0xc0,0xf7,0xf3,0xf9,0x57,0x95,0x42,0xa7,0x6a,0x5d,0xd5, + 0xfb,0x88,0x68,0x89,0x88,0x81,0x53,0xdc,0x46,0x21,0x75,0x49,0xb0,0x4c, + 0x6b,0x4b,0x5e,0x23,0x51,0x61,0xe7,0x82,0xfa,0xb7,0x62,0xf3,0x15,0x9c, + 0x52,0xad,0x73,0x6b,0x16,0xa0,0x11,0x62,0x67,0xd2,0xdb,0x43,0x7b,0x26, + 0x92,0x0b,0xdb,0x6e,0x6d,0x5d,0xd9,0x58,0xd3,0x1e,0xab,0xe2,0x4c,0xaa, + 0xfd,0x7b,0x2b,0xbf,0xe7,0xf3,0xa9,0x7a,0x9f,0x53,0x67,0x21,0xc8,0xf0, + 0x43,0x39,0x6c,0xd5,0x6a,0xea,0x58,0x2d,0x11,0x19,0x78,0xef,0xa5,0x5b, + 0x2a,0x83,0x4e,0x3a,0xad,0x27,0xc1,0x9a,0x5e,0x27,0xc6,0xc8,0xcb,0xfa, + 0x29,0x96,0xea,0x9b,0x73,0x67,0x45,0x7a,0x65,0xd1,0x65,0x07,0xfe,0xa6, + 0x42,0x92,0xdf,0xb5,0x35,0x50,0x0d,0x75,0x55,0xd7,0x75,0x22,0xac,0x3f, + 0x80,0xac,0x61,0xe3,0x3c,0xcf,0x36,0x7d,0x28,0x4f,0x4c,0x09,0x9f,0xe9, + 0x0c,0x06,0xf9,0xce,0xd2,0xdc,0xaa,0x17,0xb1,0x40,0x71,0x7b,0xd6,0x6c, + 0xed,0xa9,0x0f,0xd2,0xb2,0x1e,0x28,0xb3,0xf9,0xa2,0x88,0x42,0x78,0x44, + 0x48,0x65,0xd3,0xba,0x24,0xbf,0x83,0x3a,0x3b,0x38,0x1b,0x53,0x9c,0xb2, + 0x8f,0x62,0x68,0x4a,0x76,0x91,0xc1,0x8a,0x84,0xdf,0xa4,0xdb,0xee,0x1a, + 0xd7,0x23,0x50,0x4d,0xbb,0x75,0xed,0x88,0x8a,0x4d,0x99,0xab,0xc4,0xd4, + 0xb5,0xa4,0xde,0xda,0xf8,0xaa,0xe6,0xa4,0x5c,0xb9,0x5b,0x2d,0x99,0x58, + 0x86,0x91,0x6a,0xfd,0xc7,0xb7,0xfc,0xb4,0x65,0xc3,0x5f,0xd9,0xa7,0x70, + 0x37,0x02,0xb1,0xd6,0x76,0x74,0x38,0xdb,0x56,0xd0,0xfa,0x2d,0x7c,0x3d, + 0xb0,0x22,0x7b,0x66,0x56,0x9b,0x4f,0x04,0x6b,0x1a,0xb1,0x2b,0x1b,0xdb, + 0x70,0xe9,0xad,0x82,0xcf,0xea,0x4a,0x10,0x00,0x8b,0xa4,0x3a,0x4b,0xb7, + 0x14,0xa6,0xc5,0x2a,0x98,0x91,0xd5,0xf2,0x59,0xf3,0x4d,0x2f,0x28,0x65, + 0x99,0x65,0xcb,0xda,0xda,0xf3,0xd4,0xe2,0xcc,0xb8,0xd4,0x6d,0x6d,0x4e, + 0x98,0xda,0x33,0x4c,0x83,0xed,0xf6,0x56,0x03,0x85,0xf2,0x9e,0x7d,0xb5, + 0x20,0x60,0xbb,0xfa,0xab,0x47,0x5c,0x1d,0xf0,0x02,0x6e,0x22,0x93,0xa6, + 0x53,0x5c,0x9d,0xd9,0x78,0x71,0xd7,0x16,0x07,0xc5,0x88,0xd9,0xe0,0x2b, + 0x8b,0x25,0xab,0xe1,0xee,0x21,0x08,0x40,0x6b,0x20,0xfb,0xbb,0xda,0x89, + 0x7b,0x7f,0x9d,0x3c,0x50,0xea,0xc8,0x06,0x8e,0x06,0x4b,0xb6,0xd0,0x12, + 0x51,0x72,0x1c,0xa1,0x99,0x29,0x37,0x0e,0xb5,0x64,0x53,0x42,0xa7,0xb5, + 0x44,0xb1,0xe7,0x5e,0x73,0xb6,0xd7,0xc7,0xcc,0x92,0xfd,0x67,0x30,0x90, + 0xec,0x9e,0x7d,0xb5,0xba,0xa4,0x56,0xce,0x96,0x91,0x4d,0x32,0xca,0x44, + 0x6c,0x86,0x60,0xf6,0xb1,0x95,0x72,0xb3,0x35,0xfa,0x45,0xa5,0xec,0x75, + 0x05,0x17,0x22,0xca,0xe1,0x29,0xf9,0x71,0xe1,0xfd,0xaf,0xfd,0x59,0x44, + 0x8b,0xae,0x2f,0xab,0x5e,0x6a,0x24,0x2d,0x93,0x73,0xf5,0xce,0x0f,0xb7, + 0xf1,0x96,0x56,0x57,0x75,0x5d,0x63,0xf8,0x11,0x56,0x91,0xf2,0xca,0xd6, + 0xdc,0x12,0xa1,0x73,0x5e,0x9d,0x91,0x2e,0x01,0xaa,0x16,0xdc,0x7a,0x1a, + 0x5f,0xca,0xde,0x9a,0x3b,0x8b,0x13,0x52,0x2f,0xa0,0x1d,0x85,0xb2,0x16, + 0x2e,0x79,0x51,0x15,0x8a,0x53,0x54,0xf7,0x16,0xd0,0x74,0x99,0x5f,0x94, + 0x89,0xc3,0x48,0x9b,0x38,0xd3,0x95,0xda,0x26,0xd2,0xed,0xdb,0xec,0x82, + 0x0a,0x9b,0x69,0xc2,0x3d,0xba,0x3b,0x4e,0xcb,0x91,0x01,0xe9,0x22,0x02, + 0x80,0x98,0xe8,0x8c,0x0d,0xa4,0x73,0xe5,0x4e,0xfb,0x60,0x6d,0x58,0x6c, + 0xfb,0x8b,0xac,0x87,0xd5,0x76,0x5f,0xb5,0x41,0xac,0x57,0xf6,0x9d,0xa6, + 0xbb,0x55,0xbb,0x72,0x22,0x57,0xe7,0xd4,0x4b,0x74,0x4a,0x06,0x3f,0xed, + 0x94,0xf4,0xcb,0x79,0xec,0x6a,0x41,0x6a,0x5c,0xea,0x50,0x4c,0x2a,0xd5, + 0x18,0x56,0x2a,0x52,0x2f,0x37,0xcf,0x96,0x71,0x4f,0xe9,0x89,0x5b,0xb2, + 0x51,0x63,0x23,0x52,0x97,0x30,0xbe,0x23,0xf5,0x4e,0x7a,0xd2,0x80,0xfd, + 0x2c,0xb6,0x5d,0x1c,0xc7,0xca,0x1e,0xb2,0xae,0xe7,0x6d,0xdf,0xf3,0xf6, + 0x01,0x3b,0x15,0xff,0x6a,0xb6,0x60,0xc2,0xe6,0xb4,0x1f,0x3d,0xae,0xcb, + 0x2f,0xad,0x5f,0xd0,0x5c,0x06,0x90,0xcf,0x7f,0xfc,0xf9,0xd2,0x74,0x7d, + 0xc4,0x0a,0x6d,0x2e,0xe0,0xf6,0xdc,0x02,0xb1,0x6b,0xa2,0x55,0xd2,0x4e, + 0x76,0x96,0xd6,0xb7,0xea,0xf3,0x36,0xfd,0x69,0x01,0x29,0x5b,0x61,0x5d, + 0x7f,0x83,0x82,0xe2,0x38,0x6c,0x2f,0x47,0x53,0x59,0x1b,0xf4,0x55,0x13, + 0x10,0xea,0xd4,0xff,0x06,0xa0,0x54,0x9b,0x5c,0xab,0x02,0xb3,0x8d,0xb8, + 0x52,0x39,0x14,0x26,0xdb,0xe8,0x80,0x1d,0xe3,0x90,0xfa,0x4a,0x6f,0xab, + 0xaa,0x5c,0xe4,0x70,0x50,0x5b,0xd7,0x23,0x3c,0x8c,0x2d,0xd0,0x63,0xab, + 0x31,0xda,0xe2,0x9f,0x17,0xd8,0x08,0xac,0x94,0xba,0xfd,0x91,0xa8,0xc1, + 0x2b,0x97,0x86,0xf3,0xf9,0x7c,0xa6,0x18,0x15,0x99,0x62,0x99,0x95,0x3a, + 0x57,0xf6,0xd0,0x5d,0x65,0xf0,0x01,0xf2,0xa2,0x35,0x64,0x5f,0xee,0x38, + 0xaf,0x0e,0x7b,0x66,0x35,0xb8,0xce,0xd2,0x82,0x91,0xfb,0x31,0xd5,0x43, + 0x34,0xed,0x96,0xa6,0x82,0xa6,0x94,0xa4,0xc1,0x3b,0x12,0x76,0x75,0x64, + 0x63,0xcb,0xba,0xcf,0xe7,0x53,0x30,0x23,0xe5,0x52,0x80,0x7e,0x40,0xd7, + 0xfa,0xb0,0x65,0x8d,0xf6,0x35,0xcf,0x9e,0x19,0x11,0xbc,0x77,0xc2,0xd4, + 0xa2,0x2c,0xb1,0xad,0x50,0x91,0x3a,0x0f,0xb1,0x05,0x67,0xe8,0x4b,0xa5, + 0xea,0xaa,0x3b,0xb5,0xe5,0x2c,0x23,0xb2,0x3e,0xa2,0xaa,0x22,0xe5,0x30, + 0x65,0x55,0xea,0xc5,0x91,0xca,0xa5,0x5e,0x7d,0xa0,0x0a,0x47,0xeb,0xef, + 0x5a,0x3b,0x9c,0x6d,0xce,0x30,0x04,0xd2,0x8c,0x29,0x71,0x82,0xad,0x2b, + 0xf7,0xe7,0x1d,0xcb,0x2d,0x43,0xcc,0x02,0x43,0x62,0xe5,0x52,0x83,0x82, + 0xce,0x23,0x1f,0x8b,0x86,0xb1,0xed,0x92,0x7d,0xa9,0x8f,0xd0,0x29,0x54, + 0xd3,0x2d,0xfb,0x55,0x5e,0xdf,0x2e,0xde,0x54,0x87,0x72,0x68,0xf9,0xf7, + 0x44,0x45,0x41,0xdb,0xca,0xfd,0x5e,0x8e,0x7d,0x4c,0xe5,0x98,0x70,0x35, + 0x71,0x6f,0xc9,0xde,0xc6,0xad,0x16,0x54,0x29,0x36,0xbf,0x65,0xde,0x3f, + 0xd8,0x9b,0x61,0x90,0xa8,0x92,0xca,0x47,0xc5,0x6f,0x65,0x4b,0x0f,0x4b, + 0x3f,0x5b,0x5f,0x83,0xd9,0xda,0x0d,0xd9,0x61,0x73,0xee,0x2b,0xd3,0xb8, + 0x9b,0x28,0x09,0x3d,0xd5,0x4c,0xe9,0x8a,0xbc,0x43,0x72,0xed,0x92,0x81, + 0xbf,0x85,0x3d,0x2d,0x7b,0x0a,0x2a,0xf8,0x96,0xf5,0x86,0x81,0xed,0xa9, + 0x55,0xc3,0x23,0x2d,0x0c,0x43,0x8d,0xd7,0x0c,0x15,0x47,0xf6,0x66,0x64, + 0x1a,0xb2,0xe6,0x59,0xa0,0xcb,0xb1,0xaa,0xf1,0xd3,0x2e,0xaa,0xef,0x03, + 0x5b,0x47,0x9e,0xef,0xc7,0x18,0xdc,0xc1,0x03,0x61,0x01,0x0e,0xef,0x02, + 0x00,0x15,0x9e,0xd1,0x8f,0x15,0x68,0x87,0xc6,0xc3,0xd2,0xf0,0xf4,0xc1, + 0x93,0xd5,0x87,0x9b,0x45,0xa6,0xca,0xec,0xa5,0x63,0x21,0x1d,0x34,0xd5, + 0xe0,0x42,0xef,0x1d,0x62,0x9a,0x08,0x80,0x63,0x8a,0xf3,0xfc,0x8a,0x29, + 0x66,0xbc,0x62,0xd9,0x3d,0xd3,0xe1,0x81,0x6a,0x19,0xf9,0x16,0xc2,0x77, + 0x9c,0xf7,0xec,0x5d,0x9c,0xae,0x36,0x25,0xab,0xe9,0x43,0x0b,0xf5,0x56, + 0xa5,0xf5,0xaf,0x44,0xe0,0x6b,0xa2,0x51,0x36,0xe5,0x3e,0x90,0x4d,0x66, + 0x8a,0x6d,0x8f,0x43,0xe3,0x7c,0xd5,0xfb,0xce,0xea,0xc3,0xce,0xa3,0x68, + 0x90,0x95,0x10,0x00,0x11,0x12,0xb4,0x59,0x74,0x2a,0xe4,0x47,0xe3,0x52, + 0xff,0x2c,0x05,0x68,0xd9,0xc3,0xc3,0x08,0x51,0x24,0x27,0x8a,0xd2,0xff, + 0xdd,0x56,0xc8,0x66,0xc5,0x59,0xd2,0xed,0xb5,0xa8,0x01,0xab,0x8f,0x78, + 0x44,0xf6,0xe5,0x18,0xb3,0xf5,0x89,0xda,0x8c,0xcf,0xc0,0x83,0x87,0xbc, + 0x86,0xfd,0xed,0xce,0x66,0x87,0x25,0x64,0x05,0x8c,0xf2,0xca,0x1e,0xda, + 0x4b,0xe2,0x3b,0xea,0x78,0x48,0xb1,0x32,0xa2,0xf4,0x65,0x18,0xd1,0x9f, + 0x8e,0xb0,0x1b,0x59,0x0e,0xfb,0xf1,0x59,0x50,0x5d,0xb2,0x8f,0xec,0xde, + 0x7d,0xdd,0x14,0x27,0x4d,0x94,0xcc,0xe5,0x43,0x9b,0x2d,0xae,0x7a,0x94, + 0x5b,0xa3,0x4f,0x59,0xac,0x77,0xb9,0x5c,0x4e,0xa7,0x93,0x54,0x60,0x46, + 0x02,0x3a,0x18,0xa0,0x59,0xd6,0xfe,0x7d,0x4c,0xac,0xf4,0x22,0xd5,0x2b, + 0xfb,0x0f,0x28,0xea,0x5a,0x80,0xfe,0x3f,0xf1,0xe5,0x9d,0x89,0x2f,0xf1, + 0xee,0x92,0x0b,0x55,0x51,0x18,0xfd,0x31,0x33,0xd1,0xb0,0x82,0xe3,0x31, + 0xe9,0x7a,0x55,0x1b,0xcc,0x2b,0x9a,0xbd,0xba,0x3b,0x67,0x30,0xa0,0x83, + 0xee,0x74,0xa3,0xf6,0x3f,0x1f,0x8f,0x87,0xac,0x80,0x7b,0x3e,0x9f,0xad, + 0x12,0xf5,0xbb,0x53,0xd3,0x19,0x50,0xb3,0x53,0x30,0x25,0xe8,0x0e,0xe5, + 0x1e,0x4a,0xfd,0x4f,0x0c,0x7e,0xbf,0x92,0x6f,0x8b,0xde,0x55,0x60,0x5a, + 0xdf,0x89,0xb4,0x26,0xd0,0xb4,0x4e,0x5c,0x46,0x06,0xba,0x53,0xd9,0xce, + 0xf0,0x0e,0xd6,0xd1,0x46,0xb4,0x33,0x2b,0x6c,0x8b,0xec,0x63,0x8c,0xd9, + 0x08,0xf0,0xc8,0x62,0xac,0xce,0x09,0xcb,0x9a,0x02,0xad,0x7b,0xf6,0x23, + 0x52,0xef,0xeb,0x25,0xfc,0x19,0x31,0x4e,0x6b,0xf3,0x67,0x06,0xa6,0xe8, + 0x57,0x2e,0x5b,0xbf,0x98,0x2d,0xdc,0x28,0x97,0xad,0x94,0x37,0x60,0x11, + 0x1f,0x55,0xa9,0x77,0x1c,0xf0,0xe1,0xca,0x75,0x7b,0x1b,0x3a,0x47,0x21, + 0x5b,0x5e,0x07,0x97,0xb9,0x1f,0x6e,0x50,0x68,0x0d,0xd9,0x64,0x57,0xa6, + 0x81,0x82,0xfc,0xc1,0x78,0xe6,0xdf,0xfe,0x95,0x35,0x78,0x0c,0xcb,0x59, + 0x3a,0xb4,0xa8,0xfd,0x66,0x60,0xb5,0x85,0x6a,0x57,0xe2,0xda,0x6a,0x52, + 0xcb,0x41,0x8e,0xac,0x2b,0x6b,0x2d,0x10,0xcc,0x5e,0x20,0xb2,0xbf,0xdd, + 0x6e,0xb0,0x32,0x3f,0x1c,0xba,0x8f,0xc1,0x66,0x2e,0x74,0x37,0x91,0xe6, + 0x05,0x9c,0x56,0xb9,0x0a,0x8e,0xa6,0x21,0x07,0x03,0xec,0xc3,0x68,0xb1, + 0x3c,0xaa,0x87,0x31,0x5d,0xff,0xaf,0x5a,0x87,0x75,0xa4,0xa3,0xff,0xe7, + 0x01,0x5d,0x3f,0x07,0xb6,0x57,0x96,0x10,0x4f,0xd7,0x21,0x57,0xf1,0x17, + 0x7d,0x4b,0xd9,0x21,0x3e,0xaf,0xb3,0x5e,0x8d,0x87,0x8b,0x23,0xf9,0xcc, + 0x5b,0x7d,0x94,0x8e,0x91,0x57,0x88,0xa3,0xce,0xdd,0xb5,0xd4,0xfd,0x5d, + 0x17,0xd3,0x9a,0x3b,0xff,0xac,0x8e,0x36,0x18,0x76,0x55,0x0b,0xf8,0x59, + 0xea,0x21,0x23,0xd6,0x5a,0xcf,0x3f,0xcc,0xda,0xdf,0x6a,0x13,0x97,0x1f, + 0x87,0xaa,0xf3,0x8b,0x9d,0x49,0xca,0x77,0xf7,0x73,0xb6,0xee,0xbe,0xea, + 0xb4,0xca,0xbb,0xd4,0x59,0xb8,0xff,0x90,0x5b,0x19,0x6c,0x87,0xf7,0x89, + 0x85,0x0f,0x65,0x93,0x5d,0xd9,0x3a,0x17,0x5d,0x1d,0x9b,0x12,0xdf,0x6e, + 0xb7,0x94,0x92,0xac,0x43,0x86,0xe1,0x95,0x58,0x1f,0x90,0x21,0x23,0x22, + 0x2d,0x44,0x9d,0x2b,0xbf,0x19,0x16,0xbd,0x9d,0xb7,0xd4,0xab,0x92,0x22, + 0x8f,0x19,0x92,0xec,0x16,0xb5,0x62,0xd3,0xf7,0xee,0x7f,0xbb,0xec,0x07, + 0x03,0x3a,0xe8,0x4e,0x20,0x43,0x9b,0xb0,0x24,0x6b,0x57,0x2a,0x4c,0x99, + 0x88,0x84,0xa2,0xf7,0xf9,0x7c,0x6a,0x9c,0xff,0xee,0x95,0x0f,0xc3,0xed, + 0x25,0x88,0x89,0x71,0x9a,0x26,0x8f,0x9c,0xa4,0xc1,0x93,0x88,0x9c,0x5b, + 0x96,0xdd,0x56,0x37,0x58,0x0e,0x1a,0xf9,0x71,0x61,0x77,0xaa,0x40,0x56, + 0x1b,0x3a,0xb0,0xf6,0xc3,0x02,0xd1,0x88,0x2f,0x87,0xc6,0x3e,0x87,0x43, + 0xd7,0xde,0x09,0xe3,0x5b,0xc1,0x36,0xec,0x67,0x42,0xec,0x84,0x82,0xbc, + 0x43,0x8c,0xf1,0x7e,0xbf,0xcb,0x7a,0x44,0x71,0xfc,0x87,0x57,0x1e,0x91, + 0xbd,0x7d,0x14,0x31,0xc6,0xdb,0xf5,0xc7,0xdf,0xef,0x0f,0xef,0x1d,0x12, + 0x71,0x4a,0xd1,0xf9,0x55,0xed,0x1d,0x39,0xaf,0x53,0x6b,0xea,0x71,0xfb, + 0xc1,0xd1,0x08,0x2d,0xdf,0x48,0x15,0x48,0x86,0xee,0x74,0xaa,0xb2,0xaa, + 0xee,0x1d,0xa3,0x32,0xd8,0xc5,0x19,0x69,0x5a,0x7f,0x4c,0x27,0x7d,0x28, + 0xf5,0x6c,0x3d,0xd1,0xda,0x82,0x42,0x01,0x35,0xdd,0x6e,0xd7,0xaf,0xaf, + 0xef,0xaf,0xaf,0xaf,0xc7,0xe3,0x51,0x8d,0xbe,0x5b,0xb6,0x64,0xe4,0x9e, + 0x85,0x40,0xd6,0x03,0xb9,0x98,0x78,0x22,0x42,0x27,0x33,0x1f,0x0c,0x0c, + 0x09,0x13,0x84,0x79,0x61,0x7f,0xd3,0x15,0xa0,0x88,0x48,0x02,0xea,0x20, + 0x4d,0x76,0x55,0x1d,0xcb,0x26,0xf4,0x07,0x55,0x20,0x30,0x7c,0x1e,0x9d, + 0xdc,0xbd,0xe3,0x50,0xde,0xe2,0x62,0x1c,0x61,0x66,0x1e,0xc9,0x5f,0x0e, + 0x29,0x8a,0x5a,0x4b,0xe4,0xb2,0x31,0x2b,0xb3,0x14,0x21,0xde,0xef,0xf7, + 0x7f,0xfc,0xe3,0x1f,0x97,0xcb,0x45,0x78,0x5f,0x60,0x60,0xa9,0x58,0xeb, + 0x9e,0xeb,0x54,0xbb,0x44,0xc4,0x29,0x85,0x30,0x9f,0x2f,0xe7,0xf5,0x85, + 0xc0,0xc0,0x28,0x73,0x27,0x32,0xf8,0xb7,0x12,0x43,0xea,0xf2,0xeb,0x65, + 0x0e,0x9b,0x08,0xd1,0xad,0x64,0x51,0xac,0xc3,0xe8,0x7d,0x7f,0x5c,0xd6, + 0x52,0xaa,0x31,0xdd,0x60,0xd2,0xf5,0x99,0xd7,0x6f,0xf1,0x0e,0x1e,0xd6, + 0x6a,0x6c,0x9e,0xf9,0x56,0x24,0x54,0x4e,0x29,0x29,0x69,0xfa,0x56,0x28, + 0xc4,0x6d,0x95,0x42,0x4a,0xf1,0x7e,0xbf,0xfd,0xfa,0xf5,0x0f,0x59,0x83, + 0x9e,0x31,0xe2,0xbd,0x9b,0x64,0x95,0xf7,0xec,0x89,0x08,0x88,0x52,0x4a, + 0xaf,0xe7,0xeb,0x74,0x3e,0x39,0xe7,0x01,0xd7,0x60,0x8a,0x19,0x00,0x79, + 0xe1,0x81,0x5b,0xfe,0x97,0x20,0xa5,0x10,0xd7,0xb1,0x46,0x60,0x96,0x2d, + 0x1d,0xe8,0x1c,0x21,0xe2,0xe4,0xfd,0x72,0x4c,0x56,0xf5,0x6d,0xcd,0x24, + 0x94,0x91,0xa7,0x5d,0x37,0x5d,0x76,0x1d,0x0e,0x67,0xb2,0x3e,0x68,0x18, + 0x56,0xab,0x5d,0xad,0x1a,0xe7,0x67,0x9b,0x48,0xab,0xdb,0x00,0xe5,0x13, + 0x39,0xe7,0x90,0x10,0x10,0x93,0x36,0x8e,0x59,0x80,0xf1,0xcb,0xeb,0x62, + 0x94,0x7a,0xfe,0xb9,0xa5,0xf7,0x23,0xf7,0xdc,0x0a,0x42,0xfd,0xf6,0x70, + 0x13,0xcc,0x73,0x80,0x09,0xbd,0x77,0xce,0x7b,0x48,0x29,0xa4,0x28,0x8b, + 0x92,0xd7,0xcb,0x88,0xde,0x23,0x23,0xaf,0x1c,0xed,0xb2,0xba,0x21,0x01, + 0x40,0x8c,0x01,0x00,0x63,0x98,0x17,0x4a,0x79,0x24,0x29,0xba,0x69,0x4a, + 0x36,0x48,0x8d,0x2a,0xaa,0x90,0x6d,0xc2,0xca,0x57,0x46,0x18,0x38,0xde, + 0x67,0xd9,0x3c,0x0c,0x2c,0xe8,0x6a,0xd5,0x88,0x46,0x56,0xcb,0xb7,0x28, + 0x6b,0x14,0x07,0x26,0xf9,0xfa,0x7e,0xab,0xc1,0xee,0x70,0xd3,0x3a,0x94, + 0xf8,0x7a,0xbd,0xa6,0xe9,0x94,0xe9,0xfd,0x5b,0x98,0xcc,0xea,0x49,0x35, + 0x63,0xd2,0x8e,0x80,0x61,0x9e,0x5f,0x44,0x17,0x72,0x48,0xe4,0x3d,0x40, + 0x84,0xc4,0x29,0x42,0x02,0xc3,0x03,0xb3,0x5b,0x01,0x81,0x28,0xfb,0x7f, + 0xb6,0xc5,0x5f,0x89,0x13,0x01,0x69,0xf9,0x53,0xa6,0x87,0xb2,0x35,0x4c, + 0xbb,0xec,0x62,0x95,0xa2,0x8e,0xba,0x49,0x63,0xb4,0x3a,0xa1,0x6d,0xb9, + 0x21,0xaa,0xb3,0x67,0x83,0xa4,0x8c,0x1d,0xf8,0x7a,0xc7,0xb5,0xb7,0x02, + 0x3a,0x1d,0x5c,0x2a,0x2f,0x6b,0x11,0x7f,0xc2,0x6f,0x1c,0xe3,0x72,0xdb, + 0xa2,0xc4,0xde,0x3b,0xab,0xca,0xcc,0xba,0x85,0x96,0xa6,0xc9,0x3b,0x47, + 0x8f,0xc7,0x1c,0xc2,0xf5,0xd7,0xaf,0xbf,0xb4,0x8f,0x07,0x6d,0x0a,0xb5, + 0xf1,0xaa,0xe2,0x36,0x24,0x25,0xe4,0xbe,0xcc,0xf0,0x7a,0x3d,0xa7,0xe9, + 0x04,0x0e,0x80,0x9c,0x5b,0x9c,0x4e,0x5c,0x57,0x7a,0xad,0x52,0x37,0x66, + 0x80,0x95,0x4d,0x54,0xae,0xb4,0x62,0x55,0x33,0x2e,0x0c,0x45,0xcc,0x59, + 0x54,0x05,0xac,0xdb,0x68,0x94,0x61,0x4b,0x09,0x23,0xaa,0xe4,0xac,0x32, + 0x27,0x6c,0xf9,0x73,0x3e,0x88,0xe9,0x5a,0x59,0x5f,0xeb,0x09,0x66,0xa5, + 0xd3,0xb2,0x14,0x03,0x66,0x4e,0x56,0xcc,0x95,0x1e,0x74,0xfd,0xf9,0xda, + 0x95,0x59,0x09,0x4f,0x57,0x9e,0x0b,0x8b,0x2a,0x5b,0x95,0x81,0x9d,0x17, + 0x52,0x9d,0x69,0xdd,0xc9,0xc7,0xd7,0xeb,0xf5,0xd7,0xaf,0xef,0xaf,0xaf, + 0x2f,0x39,0x2e,0x23,0xf7,0xdc,0xaf,0x2a,0xfa,0xe2,0xf3,0xb8,0x94,0x60, + 0x9e,0x67,0xe6,0xe4,0x9d,0x03,0x44,0x87,0x14,0x31,0xe1,0x36,0x77,0xc4, + 0xdb,0xfc,0xe1,0x4a,0xdc,0xbe,0x4a,0x7d,0x63,0x92,0x92,0x2c,0x00,0xf6, + 0xa1,0x7e,0xc9,0xb8,0x2b,0xf2,0x16,0xf4,0xb1,0x48,0x5d,0x31,0xed,0x65, + 0xdf,0x5d,0x37,0x12,0xae,0x15,0x8f,0xf4,0xf1,0x9a,0x9c,0x96,0x9b,0xec, + 0x48,0xbd,0x4a,0x29,0xb3,0xdb,0xb3,0xe1,0x7d,0x46,0x1b,0x60,0x3b,0x40, + 0xd9,0x98,0xb7,0x5a,0x02,0x1b,0x12,0xc1,0x42,0xda,0x00,0x84,0x4b,0x83, + 0x38,0xc4,0x80,0x48,0x00,0x89,0x39,0x49,0x7e,0x2f,0x7a,0x9f,0x5d,0xed, + 0x30,0xf1,0x29,0x83,0x50,0x2a,0x1d,0x1e,0x22,0x31,0xe0,0xfc,0x7a,0x85, + 0x10,0x39,0x31,0x22,0xe0,0xb2,0xe9,0x69,0xe5,0x84,0x4c,0xfb,0x85,0x0f, + 0xa0,0x6b,0x1f,0xb6,0x7d,0x50,0x84,0xe0,0x36,0x4e,0xee,0xfc,0x9e,0x04, + 0x1c,0x62,0xf7,0xcb,0xed,0xcd,0x1d,0x67,0xd1,0x80,0xe6,0xf7,0x1d,0xac, + 0xf4,0xc7,0x6d,0xc0,0x8f,0x2b,0x74,0x36,0x37,0x3b,0x9f,0xcf,0x97,0xcb, + 0x45,0x1b,0x6e,0xb2,0x2b,0x49,0x16,0x15,0x64,0xe4,0x8b,0x60,0x49,0xb4, + 0x8a,0x4d,0x25,0xfa,0x2e,0xd2,0xa4,0x90,0xbd,0x39,0x22,0xa6,0x94,0xf8, + 0x7a,0xbd,0x01,0xb0,0x62,0xb4,0x3f,0x70,0xed,0x3b,0x20,0x46,0x99,0x20, + 0x12,0x11,0x90,0x7f,0xbe,0x5e,0xf3,0x3c,0xc7,0xc4,0x84,0xb8,0xac,0xdd, + 0xda,0x96,0xb9,0x66,0xd3,0x67,0x76,0xf5,0x1f,0x2e,0x3e,0x7f,0xbb,0x60, + 0x6e,0xae,0x11,0x81,0x39,0x95,0x63,0xb6,0x0a,0xa8,0x55,0xdf,0xdf,0x4a, + 0xbb,0x4b,0x9c,0xc5,0x67,0x55,0xc5,0x56,0x0a,0xd7,0xe2,0xa5,0x69,0x25, + 0x6f,0xca,0x3f,0x13,0xed,0x92,0xd9,0x81,0x89,0xc4,0xec,0xc4,0xdb,0x41, + 0xd2,0xc5,0x30,0x10,0x3a,0xb7,0x8d,0x17,0xfe,0xfb,0xdf,0xbf,0x63,0x0c, + 0x5f,0x5f,0x5f,0x0a,0x35,0xe8,0xd7,0x97,0x5a,0xa6,0xce,0xb7,0x12,0x0f, + 0x79,0xf7,0x79,0x0e,0xcc,0xe0,0x26,0x47,0x80,0x89,0x08,0x65,0xe1,0xc7, + 0x12,0xea,0xa3,0x35,0xef,0xfb,0x21,0xf4,0x85,0x3e,0x2a,0xdb,0xfa,0xad, + 0x03,0x6c,0xf2,0x8f,0x6e,0xc3,0xd8,0x4d,0xf9,0xc6,0x98,0xd6,0x58,0xa2, + 0x7a,0xeb,0x19,0x13,0xdc,0xb8,0x5a,0x67,0x55,0xbf,0xc3,0x22,0xf4,0x5b, + 0xeb,0x57,0xde,0x85,0xa8,0x94,0x1b,0xdb,0x4d,0x70,0x67,0x4f,0x33,0xac, + 0xfc,0x7a,0x92,0xcb,0x00,0x73,0xba,0xdd,0xee,0x5f,0x5f,0xa0,0xbc,0xef, + 0x9d,0x20,0xb4,0x73,0x58,0xa9,0x13,0x19,0x21,0x11,0x10,0xbe,0xc2,0x2b, + 0x86,0x98,0x20,0xad,0x1b,0x23,0x68,0xa7,0xed,0xfb,0x0d,0x9f,0x9b,0x72, + 0xec,0x26,0x39,0xb2,0x0f,0x0c,0xfb,0xe8,0x60,0xf7,0xb7,0x31,0x25,0x4e, + 0xbd,0xc8,0x3c,0x5b,0xfc,0x3d,0x22,0x30,0x5b,0x32,0xd3,0xc9,0xfe,0xc1, + 0x0a,0x5d,0xbf,0xf9,0x96,0x49,0xb1,0x55,0x47,0x6b,0x39,0xe3,0xda,0xc6, + 0x62,0xdc,0xcf,0xea,0x32,0x2e,0x8b,0x53,0xc4,0xe0,0x2f,0x2e,0xef,0x7a, + 0xfd,0x01,0x83,0xd1,0x6e,0x9d,0xb3,0x4e,0x83,0xe7,0xff,0x03,0x6e,0x81, + 0xc2,0x4c,0x3e,0x77,0xa0,0xd5,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44, + 0xae,0x42,0x60,0x82 +}; + +static const unsigned int qtlogo_png_len = 12615; +static const unsigned char qtlogo_png_data[] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00,0x00,0x0d,0x49,0x48, + 0x44,0x52,0x00,0x00,0x00,0x64,0x00,0x00,0x00,0x64,0x08,0x02,0x00,0x00, + 0x00,0xff,0x80,0x02,0x03,0x00,0x00,0x00,0x04,0x67,0x41,0x4d,0x41,0x00, + 0x00,0xb1,0x8f,0x0b,0xfc,0x61,0x05,0x00,0x00,0x00,0x38,0x74,0x45,0x58, + 0x74,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x58,0x56,0x20,0x56, + 0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x2e,0x31,0x30,0x61,0x20,0x20, + 0x52,0x65,0x76,0x3a,0x20,0x31,0x32,0x2f,0x32,0x39,0x2f,0x39,0x34,0x20, + 0x28,0x50,0x4e,0x47,0x20,0x70,0x61,0x74,0x63,0x68,0x20,0x31,0x2e,0x32, + 0x29,0xdd,0x15,0x2e,0x49,0x00,0x00,0x30,0xba,0x49,0x44,0x41,0x54,0x78, + 0xda,0xed,0xbd,0x69,0x93,0x64,0x69,0x71,0x2e,0xf8,0xb8,0xbf,0xcb,0x39, + 0x27,0x22,0xd7,0xaa,0xca,0xda,0xf7,0xea,0xae,0xea,0x95,0x86,0xa6,0xbb, + 0x69,0x16,0x81,0x04,0x02,0xd1,0x92,0x35,0xf7,0x22,0x24,0x5d,0x06,0x8d, + 0x74,0xaf,0x5d,0x69,0xc6,0xec,0x7e,0x98,0x2f,0x63,0xf3,0x1b,0xc6,0xe6, + 0xcb,0xd8,0x7c,0x1f,0x93,0xc9,0x46,0x17,0x2d,0x98,0x04,0x08,0x84,0xd8, + 0xe1,0x22,0x10,0x34,0xa8,0x1b,0x04,0xbd,0x43,0x37,0xd5,0x5d,0x5d,0x7b, + 0x55,0xee,0x19,0xcb,0x59,0xde,0xf7,0x75,0x9f,0x0f,0x27,0x22,0x33,0xb2, + 0x2a,0xab,0x51,0x17,0x42,0x63,0x83,0xdd,0xb0,0xb4,0xb2,0xb4,0x8a,0xc8, + 0x88,0x38,0x1e,0xee,0xfe,0xba,0x3f,0xfe,0x3c,0x1e,0xf4,0x5f,0xbf,0x33, + 0x8f,0x5f,0xe8,0x4d,0xed,0x2d,0xee,0xa0,0x9b,0xfe,0x87,0x01,0x69,0xff, + 0x66,0x7c,0x2f,0x4f,0xdc,0x2b,0x80,0x02,0x00,0x45,0x40,0x40,0x0a,0x08, + 0xc0,0x50,0xda,0xfe,0xb0,0x5f,0xe0,0xcd,0xfe,0xc2,0x5f,0x81,0xe2,0x4e, + 0x46,0x01,0xf4,0xe6,0x2b,0x1c,0x5b,0x8a,0x64,0x7c,0xaf,0x4c,0x5a,0x1d, + 0x00,0x48,0xf0,0xff,0xdd,0xed,0x17,0x6d,0x2c,0x01,0xa5,0x91,0x0b,0xdc, + 0x60,0xac,0x6d,0xbe,0x33,0x36,0x1f,0xc9,0xc8,0x40,0xaf,0x67,0x94,0xd6, + 0xad,0xf0,0x6f,0xe6,0x50,0xff,0x86,0x9e,0x75,0x4b,0x8f,0x53,0x00,0x50, + 0xd9,0xf2,0x20,0xe2,0x09,0x17,0xe3,0x9b,0x4c,0x3c,0x61,0x6b,0xfd,0xe5, + 0xf4,0x2c,0xde,0x9e,0xb3,0xe4,0xc6,0xdf,0x69,0xf2,0xba,0xd3,0x38,0x01, + 0xf1,0x36,0x8f,0x1b,0x45,0xe1,0x4d,0xfe,0xd8,0x7a,0x22,0x85,0xed,0x4f, + 0xfb,0xff,0x6f,0x63,0xf1,0x44,0x2e,0xe7,0xed,0x21,0x26,0x50,0x1a,0xdb, + 0x6b,0xec,0x5c,0x3a,0x69,0x56,0xb9,0xf1,0x3c,0xd8,0xca,0x65,0x13,0x31, + 0xfb,0x4b,0x17,0x86,0xb7,0x8e,0x1c,0xa5,0x9b,0x62,0x10,0x13,0x16,0xdc, + 0x6e,0x0e,0x1a,0x3b,0x9d,0xd2,0xbf,0x7d,0xda,0xfa,0xc5,0x27,0x78,0xf0, + 0x2d,0x2c,0xc5,0xdb,0xa3,0x6c,0xbb,0x1f,0xa9,0xec,0x60,0xc1,0x6d,0xd6, + 0xe4,0xf1,0xc3,0xf8,0x97,0xc7,0xb3,0x88,0x13,0x11,0x11,0x91,0x08,0x44, + 0x44,0x55,0x0d,0x39,0x63,0x0c,0x40,0x31,0xc6,0x94,0x54,0x55,0x0d,0xb7, + 0xff,0x03,0x45,0x52,0x55,0x22,0x25,0x1a,0x45,0x9d,0x88,0x88,0x88,0x22, + 0x79,0xef,0x9b,0xa6,0x51,0x4d,0xd6,0x5a,0x22,0x8a,0x51,0x88,0x28,0xcb, + 0xb2,0x10,0xea,0x5f,0xaa,0x30,0x8c,0x31,0x8a,0x08,0x00,0x66,0xcb,0xcc, + 0xa2,0x31,0xd6,0x11,0x00,0x11,0x1b,0xc3,0xd6,0x66,0xcc,0x0c,0x40,0x44, + 0x52,0x02,0x33,0x8b,0x8c,0x8c,0x48,0x44,0xc6,0x58,0xef,0x8d,0x31,0xa6, + 0xaa,0x2a,0x15,0x6b,0x4c,0xe6,0xac,0x05,0xa0,0x12,0x44,0x24,0x34,0x09, + 0xc4,0xbf,0x34,0x09,0x1e,0x79,0xde,0x69,0x9a,0xa6,0x69,0x1a,0x55,0x35, + 0xc6,0x18,0x63,0x54,0x35,0xa2,0x89,0x31,0x32,0x01,0x64,0x62,0xaa,0x25, + 0x48,0x4a,0x29,0xa5,0xa4,0xaa,0x9d,0xce,0x14,0x48,0x41,0x80,0x92,0x2a, + 0x89,0x10,0x94,0x25,0x29,0x93,0x17,0x48,0x0c,0x22,0x49,0x54,0x93,0x88, + 0x10,0x2b,0x00,0x36,0xbf,0x44,0x09,0xbe,0x2c,0x07,0x6d,0x64,0x19,0x33, + 0x72,0x20,0x40,0x99,0xd9,0xb9,0xd1,0x55,0xaa,0x2a,0x00,0x66,0x6e,0xe3, + 0xab,0xae,0x6b,0x66,0x6b,0xd8,0x59,0x67,0x55,0x4c,0x4a,0xda,0x24,0x49, + 0x31,0x66,0x59,0xc6,0x64,0x5c,0xe6,0x98,0xa1,0x08,0x29,0x35,0x31,0xa6, + 0x24,0x89,0x8d,0xf9,0xa5,0x31,0x96,0x34,0xa1,0x76,0xce,0x38,0x67,0x01, + 0x84,0x50,0x85,0x26,0x8a,0x80,0x88,0xb2,0xac,0x20,0x22,0xa8,0x61,0x22, + 0x10,0x00,0x56,0x55,0x28,0x2c,0x83,0x99,0x99,0x2d,0xa9,0x05,0x88,0xa0, + 0xd0,0x08,0x24,0x80,0x15,0xb1,0xae,0x4b,0xd1,0x9a,0x38,0x38,0x8f,0xac, + 0x43,0xcc,0x26,0x34,0x09,0x6a,0x7e,0x49,0x3c,0xab,0x28,0x1c,0xb1,0x42, + 0x55,0x44,0x09,0xd6,0xbb,0xdc,0x9a,0xc2,0xda,0xbc,0x2a,0x93,0xaa,0x23, + 0x64,0xc6,0x64,0x86,0x33,0x55,0x84,0x26,0x85,0x90,0x54,0x29,0x0a,0x54, + 0x89,0xd9,0x5a,0x6b,0xb3,0x2c,0x9b,0x99,0x72,0xce,0xf3,0x60,0xb8,0x62, + 0x5c,0x04,0x55,0x21,0xf5,0x44,0x07,0x64,0x1a,0xd1,0xb2,0xaa,0x2a,0xc3, + 0xc5,0x2f,0x8b,0x67,0x91,0x2a,0x52,0x68,0x82,0x24,0x32,0xdc,0xc9,0xb3, + 0x59,0x67,0x66,0x34,0x75,0x62,0xe3,0x32,0xea,0xae,0xae,0x34,0x57,0x2e, + 0xad,0x5e,0xbd,0xbc,0xb4,0xb4,0xd8,0x5b,0xba,0xde,0x5f,0x5c,0xac,0x36, + 0xd6,0x11,0x03,0x54,0x40,0x04,0xe7,0x50,0x14,0x98,0x9e,0xc9,0xa7,0xa6, + 0x5d,0xde,0xd1,0xd3,0x77,0x1d,0xda,0xb3,0x2f,0xdf,0xbb,0x3f,0x9f,0xdd, + 0x55,0xe4,0xdd,0x46,0x69,0xd0,0x1f,0x2c,0xf5,0xfb,0x2b,0xb3,0xb3,0xff, + 0x76,0x61,0x48,0x6f,0x1c,0xa2,0x11,0x21,0xb0,0x42,0x08,0xac,0x13,0xb5, + 0xd2,0xa8,0x0d,0x9e,0xa8,0x24,0x49,0x01,0x90,0x4a,0x08,0x22,0xb1,0xc8, + 0xdd,0x9e,0xdc,0xed,0xab,0x86,0xfe,0xf2,0x85,0xfe,0xb5,0x2b,0x83,0xef, + 0x7c,0xeb,0xd9,0xa5,0xeb,0xb8,0x72,0x19,0x83,0xb5,0x31,0x24,0x23,0x63, + 0x18,0x46,0x27,0x4a,0xf6,0xb6,0xff,0x31,0x00,0x50,0xcc,0xe0,0xd0,0x11, + 0x1c,0x3d,0x81,0xd3,0x77,0xef,0xba,0xeb,0x9e,0xc3,0x07,0x0f,0xcf,0xe7, + 0x5d,0xac,0x6d,0x5c,0x01,0xd5,0xa0,0x00,0x0a,0xa0,0x08,0x4a,0xe3,0x7a, + 0xd5,0x6e,0x03,0x36,0xb6,0xde,0x1b,0xef,0x54,0x09,0xca,0x2f,0xc2,0x58, + 0x22,0x9c,0x94,0x84,0x94,0x15,0x4c,0x6a,0xa0,0xb6,0x4d,0x19,0x06,0x06, + 0x24,0xd6,0xa0,0xae,0x07,0x75,0x33,0x9c,0x99,0xed,0x58,0xcb,0xcb,0x4b, + 0xbd,0xcc,0x4c,0x4f,0x77,0x0e,0x3b,0xda,0xbf,0x7c,0x8d,0x9f,0xf9,0xc1, + 0xb5,0xa7,0xbe,0xfb,0xda,0x8b,0xcf,0xad,0xad,0x2c,0x82,0x68,0x7b,0xad, + 0x3a,0xfa,0x9d,0x55,0xcc,0x18,0x5a,0x90,0x6d,0xa5,0x3f,0x4d,0xfc,0x30, + 0xe6,0xf7,0xe0,0xfe,0x37,0xe5,0x77,0x3f,0x70,0xe4,0xed,0xef,0x3e,0xdd, + 0x99,0xaf,0x95,0x57,0x7b,0xc3,0x4b,0x49,0xd7,0xba,0x53,0x96,0xd9,0x0e, + 0x07,0x8d,0x77,0x33,0x31,0x30,0x93,0xb5,0xd6,0x86,0x58,0xd6,0xcd,0xc0, + 0x39,0x3b,0x3d,0xdd,0xad,0x06,0xd5,0x76,0x03,0xc8,0xc4,0xc7,0x8c,0xd7, + 0xb7,0xda,0x1b,0x33,0x96,0x90,0x80,0x82,0x92,0x8c,0x3a,0x64,0x35,0x80, + 0x25,0x31,0x00,0x2c,0xf3,0x60,0xd0,0x2b,0x72,0x57,0x14,0x59,0xaf,0x37, + 0x18,0x0e,0x87,0xb3,0x33,0xbb,0x76,0xcd,0x1c,0x9a,0xf2,0xc7,0x5e,0x7c, + 0xf6,0xfa,0xb7,0xbf,0xf9,0xc2,0xf7,0xbf,0xb7,0x76,0xe1,0x15,0x54,0x7d, + 0x40,0x1c,0xa3,0x48,0x69,0x02,0xc9,0x9b,0x30,0x9b,0xea,0x76,0xe8,0x4a, + 0x5b,0xbf,0x62,0x85,0x32,0xd8,0x79,0x22,0x8e,0x4d,0xa8,0x44,0xe1,0x73, + 0x4c,0xcd,0xa1,0xbb,0x1b,0xef,0x7a,0xdf,0xc2,0xaf,0xfe,0xfa,0x7d,0x0b, + 0x07,0x30,0x6c,0x2e,0x0e,0xab,0xeb,0xcc,0x30,0xc6,0x38,0xdb,0x01,0x6c, + 0x8c,0x31,0xa5,0xe4,0x1c,0x65,0x59,0x56,0xd5,0xc3,0x8d,0x8d,0x8d,0xd9, + 0xa9,0xe9,0xb1,0x27,0xeb,0x4d,0x7e,0xf7,0xaf,0x6e,0x2c,0xa8,0xf2,0xe8, + 0x32,0x48,0x0d,0x46,0x91,0x28,0xa4,0x89,0x19,0x04,0x54,0xa5,0x30,0xba, + 0xf3,0xb3,0x47,0x38,0x75,0x17,0xaf,0xc8,0x57,0x3e,0xf7,0xfc,0x2b,0x2f, + 0xad,0xfd,0xf8,0x85,0xd8,0xdf,0x00,0x12,0x98,0x60,0xa8,0x10,0x21,0x15, + 0x1a,0x75,0xc2,0x94,0x80,0xb8,0xd9,0x6b,0xeb,0x8d,0xee,0x66,0xa0,0x0e, + 0xb0,0x80,0x51,0x28,0x00,0xcb,0x44,0x1c,0x42,0x1c,0x8e,0x22,0xd4,0x21, + 0x9f,0xc6,0xb1,0x93,0x78,0xe4,0x9d,0xfb,0x1e,0x7d,0xd7,0xc9,0x23,0xc7, + 0xa7,0xea,0xb8,0xb4,0xba,0x76,0x99,0x6d,0xc8,0x73,0xc7,0x46,0x9a,0xa6, + 0x22,0x72,0xde,0x15,0x29,0x9a,0xe1,0x70,0x98,0x17,0x0c,0x4a,0xdb,0xbd, + 0x09,0xbf,0x90,0x30,0x14,0x02,0x20,0x4a,0x9b,0xe9,0x7b,0x13,0x03,0x50, + 0x67,0xc8,0xb9,0x2c,0x54,0x5a,0x97,0xae,0xe3,0x8f,0xb2,0xec,0x79,0xfa, + 0xa9,0x73,0x5f,0xfb,0xd2,0x73,0x4f,0x7d,0x1b,0xd2,0x00,0x80,0x61,0x58, + 0xe3,0x00,0x1b,0x9a,0x24,0x2a,0x4c,0x9b,0x08,0x84,0x4c,0xbe,0x6f,0xd5, + 0x9b,0xda,0x6c,0xb5,0x80,0xf1,0xae,0x1b,0x42,0x12,0x00,0x10,0x43,0x30, + 0x86,0xd8,0x08,0x18,0xc6,0xbb,0x41,0x7f,0x05,0x06,0xc5,0x3c,0x1e,0x7c, + 0xc4,0x3c,0xfc,0xf6,0x13,0xf7,0x3d,0x70,0xe8,0xd0,0xb1,0xe2,0xea,0xe2, + 0x8f,0xc1,0x3d,0xe3,0x02,0x51,0x12,0xe1,0x14,0xd9,0x99,0xb9,0x3c,0xcf, + 0xcb,0x6a,0x65,0x27,0xf0,0x16,0xbf,0x20,0x63,0x41,0x37,0xcd,0x44,0x02, + 0x24,0x46,0x04,0x49,0x6c,0x92,0x44,0x57,0xf8,0x03,0xdd,0xec,0xd8,0xf5, + 0x0b,0xf8,0x6f,0x5f,0x7e,0xfe,0xeb,0x5f,0xb9,0xb6,0x78,0x19,0x26,0x39, + 0x43,0xd3,0xcc,0x2a,0xda,0xc4,0x54,0x8b,0x8c,0xde,0x28,0xf3,0x04,0xee, + 0x4e,0x93,0x49,0xd1,0x8c,0xff,0x33,0x4d,0x98,0xcc,0x40,0x09,0x30,0xcc, + 0x99,0xaa,0xaa,0x4e,0x9e,0x02,0x1e,0x4c,0xc6,0x87,0x94,0x36,0xc0,0x98, + 0xdb,0x8f,0xf7,0x3f,0xb6,0xef,0xbd,0x1f,0xb8,0x77,0xe1,0x60,0x0a,0x7a, + 0x25,0xea,0x92,0xa2,0x22,0x32,0x4c,0x0e,0xd2,0x25,0xa2,0x28,0x03,0x20, + 0xbe,0x1e,0xa6,0x74,0xeb,0x9b,0xf9,0xf0,0x1f,0xbd,0x81,0x3a,0x85,0x00, + 0x05,0x83,0x0c,0xb5,0xbf,0x52,0x02,0x09,0x51,0x04,0xa8,0x1c,0xa4,0x5d, + 0xb3,0x27,0x8c,0x1e,0x7a,0xf1,0x99,0xf5,0x2f,0x7e,0xe6,0xd9,0xaf,0x7e, + 0x71,0x65,0x7d,0x19,0x48,0xd0,0x34,0x95,0xc4,0xc5,0x94,0x92,0x44,0xc3, + 0x6c,0x1d,0xd8,0xe8,0x38,0xbb,0x4f,0xe2,0x7c,0x04,0x52,0x28,0xab,0xe6, + 0x80,0xdb,0x4a,0xe6,0xb4,0x79,0x17,0x88,0xd9,0x5a,0x12,0x49,0xed,0x91, + 0x49,0x44,0x04,0x03,0x18,0x28,0x34,0x31,0x60,0x90,0x9a,0xaa,0xc4,0x95, + 0xab,0x83,0xe7,0x9f,0x7f,0xf5,0xd8,0xb1,0x85,0xa9,0xe9,0xee,0xec,0xec, + 0x54,0x8c,0xb1,0xae,0x4b,0x36,0x44,0x8c,0xaa,0xee,0x1b,0xa3,0xa3,0x76, + 0x6a,0xf3,0x67,0xdb,0xe8,0x84,0xfe,0xd5,0x8c,0x05,0xb0,0x82,0x69,0xf4, + 0x22,0xca,0x94,0x88,0x02,0x29,0x48,0xb3,0xcc,0xee,0xb7,0x7a,0xe4,0x99, + 0x7f,0x5a,0xfb,0xeb,0x8f,0xff,0xf0,0x7b,0xdf,0x6a,0x42,0x09,0x06,0xbc, + 0x75,0x86,0x7c,0x92,0x06,0x08,0x40,0x14,0x6d,0x00,0x15,0x51,0x49,0x20, + 0x78,0xc0,0x00,0x16,0xea,0xa0,0x6e,0x94,0x9b,0xd4,0x2b,0x32,0xc0,0x8d, + 0xeb,0x05,0x86,0xb6,0x8e,0xc6,0x45,0xa7,0xeb,0x9c,0x13,0x49,0x29,0x05, + 0x40,0x8c,0x65,0xeb,0x98,0x38,0x89,0x36,0x40,0x03,0x24,0x30,0x03,0x04, + 0x49,0x55,0x1f,0x4b,0xd7,0xb0,0xbc,0x74,0xd9,0xb2,0xdb,0xb3,0x7b,0xc1, + 0x5a,0xd3,0x34,0x43,0x91,0x9a,0xa8,0x02,0x6a,0x36,0x34,0x4e,0x87,0xe3, + 0x19,0xd2,0x36,0x93,0xd1,0x76,0x2f,0xdb,0x76,0x0e,0xdc,0x46,0x51,0x4a, + 0x5b,0x33,0x18,0xc8,0xe8,0x4c,0x4c,0xb3,0xb9,0x3d,0xf6,0x8f,0x5f,0x3f, + 0xf7,0xc9,0x8f,0x9f,0xbb,0xf4,0x2a,0x10,0xe1,0x9d,0x6d,0x42,0xac,0x63, + 0xb0,0xa6,0x76,0xb6,0x7d,0x55,0x27,0xc2,0x29,0xa5,0xd1,0xe1,0x3f,0x09, + 0x37,0x4f,0xce,0x29,0x34,0xed,0x74,0x48,0x51,0x55,0xd5,0x44,0x24,0x29, + 0x02,0x20,0x66,0xe7,0x5c,0x8c,0x4d,0x8c,0x35,0x0c,0x46,0x87,0x4c,0x8a, + 0xa3,0x84,0x0f,0x41,0x4c,0x3f,0xfc,0x2e,0xaa,0xf2,0xd5,0xcc,0x4f,0xdf, + 0xff,0xe0,0xae,0xe9,0x69,0x6a,0xe4,0x4a,0xd4,0x25,0x90,0x8c,0x47,0x47, + 0xb7,0x83,0x82,0xbd,0x51,0xcf,0x22,0xcb,0x8e,0x41,0x31,0x0e,0xac,0x55, + 0x89,0xa9,0x1a,0x6a,0x66,0x0f,0x78,0x3a,0xfe,0xd5,0xcf,0xbd,0xfc,0xf7, + 0x9f,0xbc,0x70,0xf1,0x2c,0x28,0x81,0xd4,0x49,0xa2,0xcc,0x03,0xaa,0x3e, + 0x73,0x75,0x53,0x8b,0x28,0xc4,0x5a,0xee,0x26,0xb5,0x40,0x4e,0x70,0xa3, + 0xf9,0x0c,0x27,0xe2,0xa8,0xa8,0x15,0x49,0x91,0x94,0x12,0xfb,0xa8,0x26, + 0x82,0x23,0x38,0x82,0x12,0x38,0xb1,0xb5,0xc6,0x39,0x6b,0xb3,0xd8,0x84, + 0x51,0xd8,0x2a,0xc5,0x98,0x44,0xd5,0xe5,0x99,0xa6,0x00,0x55,0x68,0x7b, + 0x4a,0x10,0xb1,0x81,0x38,0x08,0x20,0xb2,0xba,0x84,0x17,0x9e,0xbb,0xd6, + 0xc9,0xe5,0xbe,0xfb,0xee,0x04,0xca,0x7e,0x7f,0x69,0x7a,0x36,0x93,0x64, + 0x63,0x54,0xc3,0x96,0x89,0x01,0x6a,0xea,0x66,0x30,0x18,0xe6,0x79,0xb1, + 0x53,0x18,0xea,0x0d,0xb0,0xe5,0x1b,0x36,0x16,0xc1,0xf6,0xfb,0xbd,0xac, + 0x30,0x59,0xe6,0xab,0x61,0xdc,0x35,0x7b,0xc2,0xc8,0xa1,0x6f,0x7f,0xe3, + 0xfc,0xdf,0x7f,0xf2,0xb5,0xf3,0x67,0x81,0x88,0xcc,0xcf,0x10,0x19,0x55, + 0x21,0x92,0x94,0x54,0x01,0x82,0x55,0x25,0x85,0x49,0xca,0x96,0x9c,0xb3, + 0x86,0x59,0x80,0x4a,0x69,0x28,0x14,0xc1,0x62,0x32,0xd8,0x0c,0x36,0x87, + 0xc9,0x31,0xb3,0x80,0xa9,0x79,0x4c,0xcf,0x63,0x6a,0x0e,0xae,0x80,0x00, + 0x31,0x24,0x91,0x90,0x52,0x05,0x4a,0xe4,0x92,0xcf,0x3c,0xc8,0x68,0x12, + 0xc0,0x89,0xc2,0x32,0x5b,0xc7,0xd6,0x59,0x22,0x26,0x62,0x66,0x4b,0xe4, + 0x54,0x0d,0xe0,0x0c,0xa3,0xa9,0xa5,0xd7,0x5f,0x07,0x97,0x07,0x0f,0x2d, + 0xec,0xde,0xd3,0x59,0x5a,0x5e,0xca,0x7c,0x17,0x30,0x44,0x9c,0x92,0x10, + 0x71,0x9e,0x17,0xde,0x67,0xde,0x67,0x29,0xc9,0xeb,0x27,0xac,0xdb,0x09, + 0x43,0x06,0x75,0xf2,0xc2,0x50,0x48,0x41,0x73,0xbf,0x3b,0xd5,0xf3,0xcf, + 0x3d,0xb5,0xf2,0xe9,0xbf,0x38,0x7b,0xf1,0xa7,0x40,0x62,0x86,0x97,0x98, + 0xa2,0x94,0x80,0xc4,0xd8,0x22,0x7f,0xb0,0xc6,0x7a,0xeb,0x63,0x4c,0x82, + 0x18,0xb5,0x8e,0xb1,0x06,0x45,0x18,0xf8,0x02,0x33,0x73,0x58,0xd8,0x87, + 0xc3,0x47,0x71,0xfc,0xc4,0xa1,0xa3,0xc7,0x0e,0xce,0xef,0xe9,0xfa,0xae, + 0xb2,0x25,0x26,0x1f,0x83,0xf6,0x7b,0xcd,0xca,0x72,0x6f,0x79,0xa9,0xdf, + 0xdf,0x48,0xdf,0x7b,0xe2,0xec,0xf5,0xab,0x58,0x5f,0x44,0x13,0x4a,0x08, + 0xc8,0x4f,0x69,0xf2,0x10,0x13,0x53,0x6d,0x84,0x88,0x52,0x8c,0x15,0x90, + 0x8c,0x65,0xa2,0x44,0x44,0xaa,0x04,0xc9,0x42,0x15,0x7e,0xf2,0x1c,0x9a, + 0x78,0x71,0x6a,0x3a,0x7b,0xc7,0x7b,0x8e,0x76,0x7c,0x64,0x24,0x67,0x23, + 0x11,0x52,0xac,0x25,0x01,0xd6,0x12,0x69,0x5d,0x87,0xed,0x4d,0x8f,0xec, + 0x78,0x3e,0xbe,0x61,0x63,0x95,0x55,0x7f,0x76,0x66,0xae,0xd7,0x5f,0x83, + 0xf8,0xb9,0xa9,0xa3,0xcf,0xfc,0x60,0xf5,0x53,0x9f,0x78,0xe1,0xe2,0x2b, + 0x20,0x31,0xde,0xcd,0x49,0x6a,0xa2,0x54,0x13,0x2f,0xc6,0xce,0xe6,0x31, + 0x4a,0x42,0x69,0x0c,0x24,0x55,0x6d,0x18,0xe5,0x5d,0x1c,0x3b,0x89,0xd3, + 0x77,0x77,0x1e,0x7e,0xf4,0xf4,0x5d,0xf7,0x1c,0x9e,0x9d,0xf7,0x31,0x0d, + 0x86,0xe5,0x7a,0x1d,0x57,0xd4,0x34,0x64,0x60,0x8c,0x33,0xec,0xe6,0xf7, + 0xbb,0xc3,0xa7,0x32,0x49,0x1d,0x4d,0xf9,0x23,0xef,0xda,0xbf,0xb2,0x18, + 0xcf,0xbe,0xb4,0xfc,0xa3,0x1f,0x9c,0x7f,0xfe,0xe9,0x26,0x0d,0xfb,0x50, + 0x9e,0x99,0x3d,0xb8,0xb1,0x56,0x43,0x8d,0xa8,0xb6,0x0d,0xa4,0x48,0x24, + 0x6a,0x21,0x32,0xab,0xca,0x86,0x7d,0x4a,0xcd,0xab,0x2f,0xe3,0x0b,0x9f, + 0x3d,0x9b,0x65,0xd9,0xbb,0x7e,0xf5,0xcd,0x57,0x57,0x9f,0x17,0xea,0x13, + 0x11,0xb3,0x03,0x10,0x82,0xa4,0x24,0xaa,0x62,0xad,0x05,0xfd,0x8c,0xea, + 0xf4,0x8d,0x1a,0x4b,0x9a,0x66,0xb8,0xd1,0x23,0x43,0xd3,0xb9,0x3f,0x70, + 0xfd,0x02,0x7d,0xeb,0x2b,0x2f,0xbd,0xf0,0x23,0x20,0x02,0xea,0x44,0x52, + 0x94,0x0a,0x08,0x9d,0xcc,0x02,0x68,0x1a,0x21,0x93,0x35,0x31,0x39,0x4b, + 0xc6,0xc5,0xaa,0x89,0xf0,0x70,0x39,0x1e,0x7a,0x1b,0x1e,0x78,0xf0,0xe0, + 0xdb,0xdf,0x75,0xaf,0x2f,0x2a,0x97,0x35,0x31,0xbd,0x72,0x65,0x79,0x3d, + 0x49,0xe5,0x3c,0x65,0x1d,0x47,0xd6,0x44,0x09,0x4d,0x08,0xb1,0x69,0x44, + 0x84,0x88,0x08,0x8e,0x29,0x3b,0x74,0x6a,0xff,0xd1,0x53,0xb3,0x77,0xbf, + 0xe9,0xce,0x07,0x1f,0x39,0xfa,0xfc,0xd3,0x8b,0x3f,0xfa,0xfe,0x6b,0x3f, + 0x7e,0x61,0x63,0x63,0xf1,0x22,0xc0,0x84,0xae,0x77,0x0e,0xc4,0x21,0x54, + 0x31,0x35,0x0a,0x21,0x18,0x45,0x43,0xb0,0x44,0x64,0x2d,0x04,0x78,0xfa, + 0x49,0x4c,0xe5,0x3f,0x3d,0x71,0xec,0x2e,0x37,0x3b,0x17,0xa5,0xac,0xeb, + 0xda,0x79,0x9b,0xe7,0x5e,0x44,0xc8,0x18,0xe7,0x4d,0xd3,0x94,0x3b,0xcd, + 0x80,0xe9,0xe7,0xc9,0x59,0xd2,0xe9,0xb8,0x5e,0xaf,0x5a,0xd8,0x75,0x5a, + 0xc3,0xc2,0xe7,0x3f,0xfd,0xa3,0xaf,0x7d,0x69,0x10,0x4b,0x64,0xce,0xa5, + 0x04,0x45,0x1c,0x99,0xcd,0x72,0x8c,0x31,0x89,0x32,0x3b,0x08,0x94,0x62, + 0x48,0xd1,0x64,0x38,0x76,0x0a,0x1f,0xf8,0xad,0xce,0x07,0x1f,0xbf,0xe7, + 0xad,0x8f,0x1e,0x0c,0x7a,0x51,0xcd,0x52,0xc2,0xaa,0x52,0x8f,0x6d,0x63, + 0x5d,0x60,0x9b,0x94,0x9a,0x26,0x96,0x49,0x1b,0x45,0xc3,0x2c,0xd6,0xb5, + 0x3f,0xc9,0xd8,0x54,0xd5,0xeb,0xfd,0xe1,0x72,0x4c,0x83,0x85,0xbd,0xd3, + 0xf7,0xdc,0x77,0xfc,0xf8,0xc9,0x05,0xa5,0xe5,0xe5,0x95,0x6a,0xd8,0x57, + 0x91,0x26,0xc6,0xd2,0x18,0x22,0x70,0x12,0x01,0x34,0xcb,0x7c,0x4a,0xc1, + 0x58,0x0e,0x21,0xa4,0xa8,0x79,0x4e,0xa1,0xc1,0xda,0x4a,0x8a,0xa9,0x7f, + 0xdf,0x5b,0x0e,0xe4,0x5d,0x84,0x10,0x53,0x4c,0xce,0xf9,0x76,0x38,0x60, + 0xad,0x4d,0x29,0x8c,0xcb,0xba,0x84,0x1b,0x0b,0x09,0xba,0x2d,0x63,0x91, + 0xe4,0x39,0x1b,0xee,0x64,0x7a,0xe8,0x07,0x4f,0x5c,0xf9,0xf4,0x27,0xce, + 0xad,0x2f,0x81,0x81,0x18,0x25,0xf3,0x42,0x14,0x45,0x14,0x80,0x26,0x4e, + 0xda,0x22,0xc6,0x32,0x33,0x33,0x37,0xac,0x7b,0x2e,0xc7,0xdb,0xde,0x99, + 0xff,0xde,0xef,0xdf,0xf7,0x6b,0x1f,0xb8,0x73,0xd7,0xbe,0xaa,0x5f,0x9f, + 0x75,0xf9,0x80,0x5d,0xcd,0x9c,0x8c,0x61,0x63,0x2c,0x93,0x57,0xe1,0x94, + 0x10,0x55,0x94,0x98,0x4d,0x6e,0x6c,0x46,0x54,0x80,0x9c,0x88,0x4d,0x02, + 0xb0,0xb1,0xce,0x28,0xd7,0x65,0xbd,0x56,0xc5,0xa5,0xce,0x4c,0xbc,0xf3, + 0xde,0xdd,0xbf,0xf2,0x9e,0x33,0x2b,0x4b,0x57,0x86,0xfd,0x54,0x56,0x48, + 0x31,0xb6,0x33,0x24,0x80,0x5a,0x63,0xa9,0xc6,0x36,0x20,0x09,0xde,0x30, + 0x95,0x03,0xb9,0xb6,0xb8,0x71,0xec,0x4e,0xd9,0x7b,0xb0,0xc8,0xb3,0xbc, + 0xae,0x1a,0x10,0x89,0xa8,0x48,0xda,0x3a,0xfb,0x46,0xe4,0x1c,0x8c,0x43, + 0x72,0xab,0x72,0x9d,0x34,0x96,0x6c,0x27,0xfa,0xd0,0x4d,0xc3,0xbe,0xf6, + 0x6c,0x96,0x7e,0xbf,0xbf,0x30,0x7b,0xea,0xea,0x85,0xfc,0x93,0x7f,0xf9, + 0xe4,0x4b,0xcf,0xc1,0x10,0x9c,0xe1,0x16,0x42,0x48,0xa3,0x78,0x67,0x63, + 0x32,0x66,0x4b,0xaa,0xc6,0x4b,0xbf,0x1a,0xf8,0x29,0xbc,0xf7,0x83,0x0b, + 0x1f,0xfd,0xc3,0x77,0x9f,0xb9,0x7f,0x66,0xa5,0xf7,0xe3,0xa5,0xb5,0xb3, + 0x79,0x37,0x55,0xa1,0x97,0xb4,0x51,0x90,0xa8,0xa6,0xa4,0x49,0x14,0x30, + 0x30,0x04,0x12,0x30,0x08,0x4e,0x95,0x55,0x49,0x92,0x4a,0x12,0x51,0x09, + 0x21,0x18,0xc3,0xc6,0x20,0x49,0x9d,0x64,0x68,0x5c,0xe9,0xf3,0xa6,0x28, + 0xcc,0x3d,0xf7,0xdc,0x3b,0x1c,0xae,0xbd,0x76,0xbe,0x4c,0x11,0xc6,0x90, + 0xa4,0x16,0x8c,0x26,0x9f,0xd9,0x26,0x04,0xe7,0x0c,0xb3,0x09,0x41,0x09, + 0x4e,0xc5,0x96,0x65,0xac,0x64,0xfd,0x8e,0x3b,0x16,0x76,0xef,0x9a,0xab, + 0x9b,0x1e,0x50,0x93,0x89,0xce,0xb2,0x75,0x24,0x12,0xc6,0xe5,0xde,0xd8, + 0x3a,0x44,0x13,0xd8,0xd0,0x96,0xb1,0x64,0xd4,0x01,0xa0,0xed,0xf2,0x19, + 0x20,0x85,0x7a,0xef,0xb2,0xcc,0xd5,0x75,0xa5,0x2a,0x3e,0x33,0x31,0x95, + 0xce,0x78,0x8a,0x9d,0x7d,0x73,0x6f,0xfe,0xcb,0x3f,0x7d,0xf2,0x6b,0x9f, + 0xaf,0x1c,0x5c,0x0a,0x39,0x33,0x2b,0xa2,0x8c,0x6d,0x9b,0x67,0xdd,0x26, + 0x24,0x66,0x37,0x35,0x3d,0xd3,0xaf,0xfa,0x76,0x0e,0x1f,0xfb,0xa3,0xfd, + 0xff,0xee,0xf7,0xde,0x3a,0xb5,0xab,0x3f,0x68,0xce,0xdb,0xbc,0xce,0x0a, + 0x47,0x4c,0x6c,0x32,0x66,0x0f,0x32,0x20,0x02,0x11,0xb1,0x01,0x19,0x90, + 0x8a,0x69,0xd8,0xa8,0x77,0x5d,0x66,0x13,0x42,0x65,0x1d,0x39,0xaf,0x31, + 0x35,0x45,0x5e,0x54,0x65,0x70,0xb6,0x20,0x38,0x90,0xaa,0xa6,0xa6,0x19, + 0x4e,0xcd,0x78,0xe2,0xf2,0xa1,0x47,0xdf,0x94,0xe5,0xd5,0xb3,0xcf,0xad, + 0xa7,0x5a,0xf2,0xce,0x4c,0x4c,0x9c,0x52,0x8a,0x29,0x10,0x8b,0xa8,0x2a, + 0x84,0x89,0x55,0x89,0x60,0x89,0xc2,0xc5,0xd7,0x50,0xe4,0xe1,0xe1,0x47, + 0xee,0xaa,0x9b,0xeb,0x8a,0x35,0xe3,0x03,0x24,0xb0,0x21,0xd5,0x9a,0x36, + 0x3d,0x46,0x1d,0x60,0x85,0xda,0xba,0x87,0x6f,0xc8,0x59,0x3a,0x11,0x9c, + 0x6d,0x75,0x4b,0x44,0x0a,0x68,0x4a,0x31,0xa5,0xe4,0x33,0xc7,0x4c,0x75, + 0x3d,0x54,0xb1,0xd3,0xd9,0xb1,0xd7,0x5e,0x0e,0x5f,0xff,0xc2,0xd9,0x2b, + 0x17,0xd4,0xd1,0x4c,0x14,0x4a,0xa9,0x66,0x56,0x55,0x58,0x0b,0x55,0x13, + 0xa3,0x00,0x2a,0x5a,0x57,0x75,0xbf,0x98,0xc5,0x47,0xff,0xd3,0xbe,0x87, + 0xde,0xb9,0x77,0xe1,0x20,0xd5,0x69,0xb1,0x4e,0x4b,0x51,0xca,0x98,0x62, + 0x4c,0xc9,0x18,0xbf,0xe5,0xbf,0xd4,0xfa,0x3f,0x83,0xc4,0x38,0xa9,0xaa, + 0x61,0x08,0xed,0x15,0x6a,0x39,0x6c,0x52,0xe4,0x22,0xdb,0x63,0x69,0xcf, + 0x6b,0xaf,0xae,0x4f,0x77,0x0e,0xce,0xcf,0xed,0xed,0xf5,0x7a,0x3e,0x33, + 0x45,0xc7,0xaf,0xac,0x5e,0x23,0xdb,0x44,0x29,0xf7,0xee,0x39,0xd8,0xed, + 0xf0,0xd9,0x57,0xd6,0xaa,0x7e,0x69,0xac,0xd5,0x94,0x88,0x5a,0x16,0x45, + 0x1b,0x86,0x9b,0x4d,0x28,0xa9,0xa4,0xa9,0x2e,0x1f,0x3d,0x3e,0x3b,0xb7, + 0x8b,0x9b,0xb4,0x4a,0x54,0x77,0x8a,0x6e,0x68,0xaa,0x09,0x0b,0x18,0xc0, + 0x62,0xd4,0x8e,0x0a,0x4d,0x14,0x5f,0xe6,0xc3,0x7f,0xd4,0x9d,0xe0,0x16, + 0xd0,0x38,0x06,0x89,0x18,0xaa,0x12,0x42,0xa3,0xaa,0x79,0x96,0x03,0xa8, + 0xab,0x8a,0x64,0x6a,0x26,0xbf,0xeb,0x0b,0x7f,0xfb,0xa3,0x6f,0x7f,0xa3, + 0x0c,0x15,0xbc,0xf3,0x31,0x06,0x20,0x1a,0x43,0x80,0x12,0x59,0xc3,0x99, + 0x48,0x02,0x45,0x18,0x35,0x19,0xde,0xf7,0xd8,0xbe,0xc7,0x7f,0xe7,0x4d, + 0x7b,0x0e,0x42,0xa8,0x57,0x56,0xcb,0xe0,0xca,0x79,0x32,0x86,0x8d,0xe1, + 0xad,0x86,0x66,0xd3,0xcd,0x89,0x00,0x58,0xc3,0x4c,0xdc,0xed,0x14,0x86, + 0xb8,0x2e,0x43,0x66,0xe6,0xa6,0xb2,0xe3,0x71,0xb0,0xf7,0xcb,0x9f,0x7d, + 0xf1,0x8b,0x9f,0xed,0x0d,0xd6,0x37,0x8e,0x1c,0xbc,0xa3,0xc8,0xf3,0x72, + 0x38,0x08,0xcd,0x30,0xcf,0x8c,0xa0,0x51,0x95,0x23,0x87,0x8e,0x1f,0x3c, + 0x78,0x64,0x6d,0x6d,0xf9,0x95,0x73,0x03,0x0d,0x81,0x2c,0x8d,0x09,0x39, + 0x04,0x30,0xb5,0xe4,0x14,0x6a,0x11,0xa0,0x54,0x56,0xa1,0x3b,0x3d,0xbc, + 0xe7,0xbe,0x13,0x09,0x43,0x55,0xe9,0x4e,0x75,0x07,0x83,0x21,0x1b,0x86, + 0x1a,0x10,0x8d,0xed,0x25,0x4a,0x0a,0xda,0x56,0xa7,0x9a,0x0f,0xff,0x51, + 0x67,0x9c,0xd8,0xb6,0x19,0x4b,0x45,0x89,0x48,0x24,0x32,0xb3,0x73,0x2e, + 0xc5,0xa4,0x6a,0x0b,0x7f,0x60,0xfd,0xfa,0xcc,0x27,0xff,0xe2,0xf9,0x2b, + 0x17,0x61,0x08,0x44,0x9c,0x52,0x00,0x12,0x33,0x11,0xb2,0x98,0xd4,0x50, + 0x66,0x5d,0x4a,0x48,0xe4,0xf0,0xc8,0x3b,0xdc,0x47,0xfe,0x87,0x47,0x67, + 0xf6,0x0c,0xea,0x74,0xad,0xac,0x97,0x41,0x95,0xf3,0xb0,0x96,0xd8,0x58, + 0x66,0xd3,0x1e,0x05,0xe3,0x84,0x3a,0xf6,0x2c,0x28,0x1b,0x02,0x34,0xcb, + 0xf2,0xd0,0x48,0x6c,0xfc,0xde,0xdd,0x77,0xd7,0xfd,0x85,0x6f,0x7e,0xf5, + 0x95,0xbf,0xf9,0x8b,0xcb,0x57,0x5e,0xc5,0xa5,0x8b,0x31,0xf3,0x7a,0xe6, + 0xcc,0xe9,0xf9,0x5d,0xd3,0x83,0xc1,0xfa,0xf4,0x4c,0xa7,0x49,0xfd,0x2c, + 0xb3,0xc3,0xc1,0x30,0xcf,0xf3,0x23,0x87,0x8f,0xac,0xac,0x5c,0xbc,0x74, + 0x3e,0x7a,0x2f,0x12,0x75,0xd4,0x8a,0x83,0xb7,0xb5,0x30,0x9a,0xaa,0x1a, + 0x4d,0x2c,0xdf,0xfc,0xe0,0xf1,0x99,0xb9,0x4c,0xb4,0x26,0xd2,0x98,0x1a, + 0x22,0x03,0x30,0x88,0x36,0x91,0x7b,0x25,0x05,0xe9,0x4e,0xc6,0xc2,0x64, + 0xe7,0xcd,0x00,0x89,0x24,0x6b,0x0d,0x91,0x32,0xb3,0x88,0x88,0xb0,0x77, + 0x53,0xb9,0x39,0xfc,0xe4,0x37,0x57,0xbf,0xf1,0xe5,0xab,0xa1,0x42,0xe6, + 0x6d,0x68,0x1a,0x63,0x20,0xaa,0x44,0x50,0x71,0x0a,0xab,0x0a,0x36,0x95, + 0x30,0x4e,0x9e,0xc6,0xef,0x7c,0xec,0xfe,0xd3,0xf7,0x4d,0x57,0x72,0xa9, + 0x8e,0x4b,0xa0,0xda,0x79,0x02,0x24,0x84,0x90,0x22,0x44,0x98,0x88,0xc7, + 0x36,0x1a,0xdb,0x0b,0x0c,0x12,0x66,0x19,0x0c,0xfa,0xc3,0x41,0xb0,0x3c, + 0x37,0xdb,0x3d,0xbe,0xb1,0x3c,0xf5,0xf5,0x2f,0xbc,0xf2,0xc9,0xbf,0x7c, + 0xb1,0x77,0x0d,0x10,0xae,0x06,0x7a,0xf6,0xec,0x9a,0x73,0xd5,0x99,0xbb, + 0x4e,0x3a,0x4f,0xd7,0x17,0x2f,0x1a,0x9f,0x9c,0xc7,0xca,0xca,0xb5,0x24, + 0xe5,0xc9,0x93,0xc7,0xbc,0x77,0x67,0x7f,0x7a,0x75,0x6d,0x09,0xa4,0x0a, + 0x6d,0x81,0x0d,0xa6,0x49,0xd8,0x1a,0xcc,0x2c,0xeb,0x1b,0x38,0x75,0x6a, + 0xe6,0xf8,0xa9,0xfd,0x40,0xd5,0x1f,0x2e,0x67,0x99,0x95,0x2d,0x6a,0xd8, + 0x28,0x39,0x28,0xb5,0x16,0xd1,0x9f,0x8d,0x75,0xa9,0x82,0x88,0xac,0xb5, + 0xc4,0x08,0x21,0x11,0xac,0x33,0x33,0xd5,0xc0,0x3f,0xf9,0xc4,0x2b,0x55, + 0x1f,0x86,0x00,0xb5,0xa2,0x20,0x16,0x63,0xa0,0x4a,0xa2,0xc6,0xc0,0x2b, + 0x52,0x88,0xea,0x0b,0x3c,0xfa,0xae,0xa9,0x37,0x3f,0xbc,0x77,0xa3,0x7c, + 0x99,0x6d,0x8f,0x4c,0x63,0x9d,0x1a,0xab,0x31,0xc6,0x18,0x41,0xe4,0x0c, + 0xbb,0x89,0xd6,0x7f,0x8c,0x94,0x92,0x02,0x12,0x53,0xcd,0x6c,0x9d,0x99, + 0x9b,0xed,0x1e,0x6f,0x06,0x0b,0x5f,0xf8,0xec,0x33,0x9f,0xf8,0xf3,0xe7, + 0xd6,0xaf,0x01,0x32,0x87,0x38,0x67,0x79,0xbe,0xbf,0x84,0xbf,0xfa,0xf8, + 0xb9,0xcf,0x7d,0xfa,0xc9,0xaa,0x3f,0xb3,0x7b,0xee,0x4e,0x8d,0xdd,0xba, + 0x4e,0xdd,0x29,0x4b,0x76,0x7d,0xa3,0x7c,0xf9,0xbe,0x37,0xef,0x7e,0xef, + 0x07,0x0e,0x8d,0x5c,0x8a,0xb6,0x03,0x18,0x23,0x0c,0x83,0xbd,0xf5,0x4d, + 0x89,0x7f,0x7e,0xea,0x5c,0x6f,0x8d,0x9c,0x9d,0xa9,0xca,0x68,0x2d,0xdf, + 0xc8,0x20,0x1b,0x3f,0x78,0xd2,0x44,0xbc,0x0d,0xc0,0x6d,0x83,0x82,0x04, + 0x80,0x31,0x06,0xda,0xfa,0x94,0x88,0xc0,0x9a,0x8e,0xa6,0xfc,0xf2,0x85, + 0xfe,0x0b,0xcf,0xae,0x43,0x9c,0xe5,0x6e,0x8c,0x02,0x40,0x04,0xaa,0x50, + 0x25,0x80,0x9d,0x73,0x40,0x00,0xe3,0x2d,0x0f,0xe1,0x6d,0xef,0xbc,0xc3, + 0x64,0x2b,0x65,0x73,0x89,0x4c,0xdd,0x22,0x93,0x2a,0xa4,0x4a,0xd6,0x64, + 0x79,0xd6,0xb5,0x36,0x1b,0x1f,0xbb,0x37,0xa2,0x31,0x9a,0xa4,0xf0,0xd3, + 0xb3,0x9d,0xe3,0x2b,0x57,0xf2,0xaf,0xfc,0xdd,0x4f,0xbe,0xf8,0xb7,0x17, + 0x86,0xcb,0x30,0xa6,0x93,0x65,0x1d,0x00,0x96,0x7d,0x51,0x74,0x9a,0x0d, + 0x7c,0xf1,0xb3,0x17,0xbe,0xfd,0xf5,0xb3,0x0e,0x47,0x72,0x7b,0x54,0xc2, + 0x54,0x51,0x74,0x7d,0xa6,0x1b,0x83,0xf3,0xc5,0x4c,0xff,0xc1,0x47,0x8e, + 0xde,0xf7,0x60,0x6b,0xac,0xe6,0x26,0x7a,0x57,0xfb,0x9e,0x19,0x82,0x17, + 0x9e,0xdd,0xb8,0x74,0x61,0x83,0x51,0x58,0x6b,0x45,0xd2,0x4d,0xac,0x26, + 0xb9,0x19,0x0b,0xe4,0x1d,0xa8,0x52,0x2d,0x8e,0x6b,0x9c,0x88,0xb4,0x64, + 0x0d,0x82,0xb1,0xa6,0x48,0x21,0xbf,0x76,0x65,0xb8,0xb6,0x0c,0x46,0xa1, + 0xca,0x31,0x0a,0x14,0x29,0x41,0x12,0x54,0x99,0x60,0x14,0x11,0x14,0x3b, + 0xd3,0x78,0xeb,0x23,0x87,0x8f,0x9f,0x9a,0x5b,0xef,0x9f,0xef,0x4e,0x83, + 0x8d,0x30,0x33,0x33,0x8f,0x86,0xf5,0x6c,0x45,0x50,0x95,0xcd,0x66,0xe1, + 0x06,0x4a,0x5b,0x35,0x9d,0x3a,0x43,0xd3,0xa1,0x9a,0x1e,0xac,0x4d,0x7d, + 0xff,0xbb,0x97,0x3f,0xf5,0x89,0x17,0xd7,0xae,0xc1,0xb9,0x3c,0xd5,0xa9, + 0x6e,0xfa,0x40,0x53,0x0d,0xfb,0x65,0xaf,0x82,0xe0,0xca,0x39,0xfc,0xe5, + 0x9f,0xbd,0xf2,0xd9,0xbf,0xfe,0xc1,0x4c,0x76,0x87,0xe3,0x7d,0x75,0x69, + 0x62,0x8c,0xd6,0x85,0x28,0x2b,0x73,0xbb,0xf1,0xfe,0x0f,0x3e,0x30,0xce, + 0xbd,0x61,0x62,0x7a,0x24,0xe3,0x8e,0x2d,0x42,0x70,0xed,0x0a,0xae,0x5d, + 0xd9,0x80,0x66,0x59,0x96,0xc5,0xd4,0xdc,0xc4,0x23,0xdc,0x01,0x84,0xe0, + 0xf1,0xc7,0x3b,0xb6,0xd7,0xb8,0x84,0x65,0xe6,0x18,0x53,0x4c,0xa1,0xa5, + 0x6c,0x94,0xc3,0xc8,0x98,0xf9,0xc7,0x6f,0x3e,0x43,0x84,0x94,0x34,0x06, + 0x61,0x32,0xcc,0xcc,0xc4,0x4c,0x9e,0xe1,0x15,0xa9,0x09,0x7d,0x30,0x8e, + 0x1c,0xc7,0xdb,0xde,0x71,0x77,0x6f,0x70,0xd9,0x79,0x89,0xa9,0x0e,0x21, + 0x18,0xe3,0x54,0x29,0x25,0x75,0x2e,0x23,0xa2,0x18,0xa3,0xb1,0x4a,0x2c, + 0xa2,0xb5,0x75,0xea,0xb3,0x51,0xbb,0x6f,0x8d,0x23,0xed,0x58,0x1c,0xf2, + 0xe9,0xe4,0x3f,0x7c,0xe9,0xa5,0x3f,0xff,0x93,0x67,0xd7,0xaf,0x81,0x35, + 0x8b,0x15,0x11,0x03,0xd2,0xb7,0xbe,0x06,0x4a,0x40,0x10,0xc1,0x82,0xfe, + 0x22,0x3e,0xfe,0x27,0x17,0x3e,0xf9,0x57,0xdf,0xe5,0x74,0x60,0xd7,0xec, + 0xc9,0xba,0x62,0x55,0x2d,0xeb,0x35,0xc1,0xda,0x83,0x0f,0x9f,0x3c,0x7d, + 0x37,0x94,0xc0,0x36,0xaa,0x06,0x66,0x56,0x55,0x11,0x51,0x4d,0x44,0x02, + 0x48,0x96,0x15,0xde,0xe1,0xdb,0xdf,0x7a,0x5a,0xd2,0x28,0x15,0x88,0x24, + 0x91,0xa8,0x9a,0x54,0x47,0x56,0x1b,0xc3,0xd6,0x37,0x34,0xd2,0x37,0xce, + 0x85,0x46,0xa4,0x2a,0x22,0x6a,0x67,0x30,0x44,0xac,0x6a,0x57,0x97,0x9b, + 0xa5,0xeb,0x93,0xfe,0x3c,0xe6,0x57,0xb7,0xa0,0x30,0x44,0xd1,0xb8,0x1c, + 0xa7,0xef,0xee,0x66,0x45,0x93,0x4c,0xa5,0x10,0x66,0xbb,0xd3,0xf8,0x37, + 0x81,0x24,0xa5,0x46,0x11,0xea,0xa6,0x56,0x85,0x24,0x22,0x58,0x65,0x36, + 0x3a,0x6f,0xe5,0xf8,0xdf,0xff,0xfd,0x0f,0x3f,0xff,0x99,0x8b,0x6b,0x8b, + 0x60,0x38,0x46,0x47,0x59,0x8c,0x4d,0xa2,0x31,0x49,0x60,0x0b,0xe7,0x72, + 0xa8,0xad,0xab,0x0a,0x14,0xd1,0xe0,0x2b,0x5f,0xb8,0x38,0x68,0xae,0xbd, + 0xf7,0x03,0xc7,0x17,0x0e,0x1c,0xae,0xc2,0xd5,0x94,0xea,0xce,0x14,0xc5, + 0x72,0xe3,0xce,0xbb,0x66,0x5f,0x79,0x79,0x5d,0x03,0x40,0x31,0x89,0x42, + 0x99,0x08,0x44,0xa3,0xe6,0x46,0x12,0x85,0x88,0xd5,0x15,0xac,0xae,0xf4, + 0xfd,0x8c,0x1f,0xa7,0x4e,0xc2,0xeb,0x12,0xa1,0x79,0x3b,0x17,0x78,0xcb, + 0x15,0x53,0x54,0x66,0x6b,0x46,0x84,0x1e,0x26,0xf8,0x2b,0x97,0x56,0xaf, + 0x5c,0xc2,0x78,0x32,0x9a,0x30,0x1a,0xb5,0x9a,0xf6,0xc4,0x61,0x10,0x18, + 0x33,0xf3,0x78,0xf8,0x6d,0x67,0x6c,0x56,0x11,0x47,0x28,0x31,0xb9,0x89, + 0xa7,0x15,0x50,0x02,0x05,0x50,0x03,0x0a,0x3e,0x23,0x50,0xc8,0x32,0x97, + 0x67,0x85,0x24,0x47,0xda,0xcd,0xec,0x5e,0x4a,0xfb,0xbf,0xf8,0x99,0xb3, + 0x9f,0xff,0xf4,0xc5,0xc5,0x4b,0xb0,0x06,0xd6,0x14,0x31,0x85,0x94,0xa2, + 0x88,0xc4,0x90,0x88,0x60,0xad,0x49,0x29,0xd5,0x55,0x0d,0x18,0xa6,0x0e, + 0x1b,0x5c,0xbb,0x88,0x17,0x5f,0x08,0x1b,0x6b,0xc1,0x99,0x19,0xa8,0x53, + 0x88,0xf5,0x91,0x4c,0xff,0xa1,0xb7,0x9d,0x9e,0xdb,0x0d,0x25,0x80,0xd0, + 0xf2,0xe2,0x5a,0xe6,0x53,0x1b,0x5b,0x2d,0x63,0x67,0xf1,0x3a,0xae,0x5c, + 0x5e,0xb1,0xa6,0x50,0x9d,0xc0,0xca,0x27,0xfd,0x66,0xbb,0x0f,0xed,0x28, + 0x73,0x10,0x00,0xaa,0x64,0x5b,0x8e,0x9d,0x2a,0x11,0x59,0x9b,0x5f,0xbd, + 0xbc,0x3e,0x58,0x6f,0x4d,0x9f,0xb6,0x47,0x38,0x8f,0xe8,0x90,0x8c,0x85, + 0x7d,0xb8,0xeb,0xde,0xa3,0x31,0xf5,0x40,0x01,0x60,0x82,0xbb,0x49,0x49, + 0x31,0x52,0x92,0xb0,0x81,0x2a,0x41,0xbd,0x4a,0x6e,0x30,0x3f,0x3f,0x7d, + 0x2a,0x56,0xbb,0x9f,0xf8,0xc6,0x2b,0x7f,0xf9,0x67,0x2f,0x2c,0x5e,0x02, + 0x12,0x32,0x3f,0xd5,0x34,0x75,0x5b,0x58,0xc4,0x10,0x00,0x38,0xeb,0x45, + 0x10,0x43,0x00,0xd4,0x79,0xa3,0x68,0x24,0x61,0x7e,0x2f,0xde,0xfa,0xd0, + 0xec,0xdc,0xdc,0xdc,0xc6,0x46,0x0f,0x60,0x66,0x2e,0xab,0x55,0xf0,0xf0, + 0xcc,0xdd,0x07,0x76,0x2f,0x40,0x74,0x1b,0x72,0x20,0xe3,0xa6,0x8c,0xc9, + 0x43,0xb1,0xbe,0x86,0xcb,0x17,0x57,0xad,0xe9,0x4a,0x32,0x5b,0x47,0xf3, + 0xd6,0x45,0xdd,0x08,0x2b,0xf3,0x04,0xf6,0xbc,0xed,0xaa,0x8c,0x31,0x6d, + 0x85,0xa5,0xaa,0x50,0x36,0xec,0x97,0x16,0x7b,0xe3,0x23,0x42,0x80,0x78, + 0x03,0x95,0x58,0x24,0x1a,0x8b,0x23,0x47,0xb3,0xd9,0x39,0x5f,0xd5,0x3d, + 0xd1,0x08,0xb0,0xc8,0x66,0xf7,0x30,0x79,0x86,0x08,0x80,0xa6,0x8e,0x92, + 0x4c,0x7f,0x23,0x56,0x03,0xdf,0xcd,0x8e,0x97,0x1b,0xbb,0xbe,0xf5,0xb5, + 0x73,0x1f,0xff,0xd3,0x57,0xca,0x0d,0x40,0x2c,0x94,0x07,0xbd,0x21,0x20, + 0xd6,0x88,0x69,0x8b,0x4a,0xb5,0xa4,0x36,0x36,0x04,0xb5,0xdd,0x6e,0x96, + 0xd2,0x50,0x29,0xba,0x0e,0x3e,0xfa,0x07,0x27,0xde,0xf3,0xbe,0x7b,0xe7, + 0x77,0xe7,0x21,0x56,0xd6,0x78,0x55,0x2d,0xab,0x0d,0xb6,0xf5,0xec,0xbc, + 0xdd,0x7f,0x10,0xaa,0xdb,0xd2,0xf4,0x78,0xde,0x68,0x8d,0xf1,0x50,0x20, + 0xe1,0xea,0xe5,0x75,0x46,0x57,0xa2,0xbb,0x69,0xae,0x33,0x11,0x10,0x3f, + 0x13,0xfc,0x6b,0x03,0x30,0xa5,0xc0,0x6c,0x41,0x50,0x31,0x4b,0xd7,0xfb, + 0xe3,0x27,0x94,0xcd,0x21,0xe2,0x44,0xb1,0x27,0xc6,0xe2,0xc4,0xc9,0x83, + 0x51,0x06,0x49,0x2a,0x8b,0x28,0x62,0x24,0x31,0x33,0x8f,0x4e,0x16,0xd2, + 0x1b,0xce,0x5b,0x82,0xb5,0xdc,0x99,0x9f,0x39,0x55,0x6e,0xcc,0x7e,0xfe, + 0x33,0xff,0xfc,0x77,0x9f,0xba,0xda,0xbb,0x0e,0x63,0x00,0x35,0x49,0x04, + 0x40,0x91,0xe7,0x21,0x84,0x24,0x81,0x89,0x89,0x51,0x55,0x0d,0x60,0xbc, + 0x33,0x65,0x35,0x10,0xc2,0x81,0x23,0xf8,0x8d,0xc7,0x8f,0xbd,0xe3,0x3d, + 0x27,0xdc,0xd4,0x46,0x0a,0x83,0xa2,0x63,0xad,0x93,0xa6,0x4c,0xc4,0x42, + 0xdc,0x24,0xed,0x1f,0x3b,0xb1,0x87,0xed,0x92,0x44,0x10,0x8c,0x2a,0x8d, + 0x2f,0x9b,0x09,0x96,0x46,0x53,0xb8,0xb8,0x78,0xbd,0xa7,0x29,0x57,0xf1, + 0xa4,0xad,0xfe,0xe0,0xc6,0x3a,0x63,0xf2,0x1a,0x6f,0x4e,0xc0,0x93,0xc3, + 0x61,0x49,0x29,0x59,0x6b,0x55,0x28,0x84,0xb4,0xb8,0x58,0x8d,0x1d,0x73, + 0x7c,0x20,0x90,0x4c,0x8c,0xdb,0x85,0x19,0x47,0x8f,0x1d,0x2c,0xcb,0x9e, + 0xf3,0x04,0xd2,0xd1,0xd4,0xab,0x4d,0x6a,0x94,0xb6,0x73,0x66,0xd8,0x5a, + 0xa7,0xc9,0x64,0x76,0xf7,0x60,0xdd,0x7f,0xeb,0xeb,0x2f,0xb4,0x96,0xea, + 0x76,0x8a,0x41,0xaf,0x04,0x6a,0x10,0xf2,0x2c,0x27,0xe2,0x98,0x52,0x5b, + 0x64,0xa4,0x16,0xd3,0xa2,0x3c,0xc6,0xa6,0xb5,0xd4,0x47,0xfe,0xc3,0x7d, + 0xbf,0xfa,0xc1,0x13,0x29,0x3f,0x37,0x0c,0x57,0x35,0xaa,0xf7,0x46,0x24, + 0x31,0xc3,0x79,0x4a,0x52,0x37,0x61,0x70,0xf2,0xd4,0x61,0x9f,0x2d,0x55, + 0x15,0x98,0x39,0xc9,0xa8,0x15,0x21,0x18,0x85,0x09,0x41,0x99,0x9c,0x68, + 0x5c,0x59,0x46,0x0c,0x06,0xea,0x81,0x66,0xbb,0xb8,0x41,0x76,0x82,0x95, + 0xb7,0xc8,0x2a,0x80,0xba,0xd1,0xe7,0xdf,0xa2,0x4c,0x29,0xaa,0x2a,0x91, + 0x01,0x10,0x9a,0xb8,0xb1,0x7e,0xd3,0x33,0x6c,0x5d,0x7f,0x02,0x89,0x32, + 0x76,0x2d,0x4c,0x55,0xe1,0x9a,0xef,0x98,0xa4,0x08,0x75,0x82,0xb1,0xba, + 0xcd,0xa1,0x36,0xff,0xde,0xa4,0xe0,0x8d,0xce,0xa7,0xe1,0xde,0x27,0xbe, + 0x79,0xf6,0x13,0xff,0xcf,0xb9,0xde,0x22,0xba,0x9d,0x62,0xd0,0x6f,0x98, + 0x21,0x11,0x04,0xaa,0xaa,0x96,0x1d,0x09,0x82,0x11,0x49,0x4c,0x5e,0x54, + 0xd8,0x86,0x90,0x1a,0xdf,0xc5,0x07,0x1f,0x3f,0xf5,0x6b,0x1f,0x3c,0xd1, + 0xab,0x5f,0x8a,0xb2,0xe8,0x0a,0x09,0x49,0xfb,0x65,0xd9,0xc9,0xad,0xb5, + 0x36,0x02,0x29,0x86,0x86,0x07,0xfb,0xf6,0xcf,0x79,0x8f,0xaa,0x75,0x26, + 0x51,0x66,0x88,0x82,0x19,0x29,0xc5,0x28,0x15,0xa0,0x50,0x0c,0x7a,0x48, + 0x71,0x02,0x3e,0x56,0x0b,0xd0,0x98,0xdb,0x73,0xe3,0xd8,0xd5,0x82,0x02, + 0x94,0x40,0x76,0xe4,0x02,0xaa,0xa0,0x06,0x88,0x49,0x2a,0x63,0xa9,0xdb, + 0x9d,0x6e,0xea,0x64,0x19,0x00,0x87,0x1a,0x10,0xa8,0x12,0xc6,0xb8,0x85, + 0xc2,0x41,0x2d,0xa0,0x40,0x60,0x87,0xce,0x2c,0x6c,0x11,0xd5,0x36,0xec, + 0xa8,0x69,0x92,0x18,0x62,0x4e,0x89,0x6b,0x6b,0xd9,0xa8,0x07,0x00,0x4a, + 0x31,0x35,0x9a,0xc4,0xd0,0x4c,0x66,0x77,0x49,0x75,0xf8,0x6b,0x5f,0x78, + 0xf5,0x13,0x1f,0xff,0x69,0x6f,0x05,0xd6,0xa2,0x2e,0x4b,0x26,0x68,0x34, + 0xa4,0x6e,0xdc,0xfd,0xca,0x38,0xa1,0x3a,0x51,0x9e,0x99,0xce,0x36,0x06, + 0xcb,0x73,0x0b,0xf8,0x83,0x3f,0xbe,0xe3,0xd1,0xf7,0xec,0xeb,0x87,0x1f, + 0xb8,0x4e,0xcd,0xd6,0x57,0x75,0xf0,0xde,0x67,0x39,0xc5,0x38,0x84,0x92, + 0x71,0xf9,0xb0,0x6c,0xc8,0xaf,0x67,0x53,0xb3,0xc6,0x03,0x40,0x52,0x00, + 0xa2,0x2c,0x10,0x24,0x09,0xc4,0x6d,0xaa,0x0f,0x00,0x42,0x83,0x18,0x61, + 0xbc,0x21,0x66,0xc0,0xaa,0xe6,0x00,0x80,0x06,0x94,0x54,0xb9,0xc5,0x11, + 0x27,0xc3,0x50,0xb6,0x14,0x33,0xea,0x47,0x0c,0x13,0x52,0x36,0xa2,0x0a, + 0x4d,0x4a,0x64,0x88,0x8c,0x6c,0x32,0xcb,0xb6,0x09,0x8e,0x68,0x7c,0xc0, + 0x25,0x01,0x8c,0x05,0x5b,0x25,0x23,0x51,0x6a,0x25,0x81,0x69,0xf9,0x08, + 0x5a,0x96,0x65,0x66,0xc1,0xcc,0xc3,0x61,0xcf,0x18,0x57,0xf8,0xe9,0x50, + 0x4d,0x59,0xdd,0xf5,0xe5,0xcf,0xfd,0xf0,0xf3,0x9f,0xbe,0xd0,0x5b,0x06, + 0xc4,0x02,0x56,0xa8,0x92,0x04,0x52,0x03,0xb8,0xf1,0x8b,0xc9,0xb8,0x34, + 0xe3,0xa9,0x62,0x6e,0xa3,0xb7,0x38,0xb7,0x9b,0x7f,0xf7,0x3f,0x3c,0xfc, + 0x8e,0x5f,0x39,0xe0,0xbb,0x17,0xca,0x38,0x30,0x2e,0x36,0x51,0x53,0x92, + 0x36,0xe4,0xeb,0x26,0x32,0x73,0x27,0xf7,0x9d,0xa9,0x42,0x42,0x32,0x0e, + 0xa3,0xca,0x47,0x15,0x44,0xdb,0x06,0x83,0x14,0xda,0xa7,0x97,0x04,0x11, + 0xb1,0xcc,0x0a,0xd9,0x76,0xe2,0x51,0x44,0xfb,0x01,0xdf,0xa8,0x09,0x19, + 0x25,0x3f,0x9d,0x1c,0x9c,0x19,0x63,0x54,0x49,0x04,0x04,0x03,0x25,0x15, + 0x1a,0xf1,0x5e,0xb6,0x55,0x22,0x09,0x14,0x47,0xd1,0x28,0x60,0x02,0xb3, + 0x35,0xc6,0x85,0x10,0x54,0xd5,0x18,0xc7,0xe4,0xbd,0x9d,0x6d,0x5b,0x8a, + 0x3c,0xcf,0x25,0x39,0x92,0xd9,0x8c,0xef,0x40,0x7d,0xf2,0xab,0x9f,0x7f, + 0xf9,0x8b,0x7f,0x77,0xe1,0xfa,0xe5,0x11,0xa3,0x26,0xa6,0x46,0x05,0xa3, + 0x83,0x0f,0x09,0x08,0x40,0x33,0x22,0x3f,0x22,0x01,0xb1,0x55,0x52,0x34, + 0xb5,0xa4,0x68,0x67,0xa6,0x0e,0xe4,0x6e,0xcf,0xb0,0x4f,0x75,0xa5,0xc4, + 0xd1,0xb8,0x86,0x4d,0x30,0x16,0x0c,0x6a,0xaa,0x50,0x96,0x8d,0x08,0x08, + 0xd6,0x18,0xc7,0x5b,0xa7,0xbd,0x41,0x1a,0xf9,0x89,0x6a,0x6b,0xbd,0x91, + 0x19,0x53,0xd4,0x51,0x39,0x49,0x13,0xc7,0xdf,0x48,0x9f,0xc5,0xdb,0x73, + 0x96,0xd2,0x4e,0x75,0x10,0xda,0x2a,0x4e,0x04,0x86,0x19,0x60,0x22,0x72, + 0xee,0x26,0x68,0x7e,0xc4,0x1b,0x90,0x4d,0xbc,0x3f,0x06,0x35,0xec,0x62, + 0x13,0x8d,0x53,0x26,0xab,0x60,0x11,0xca,0x7c,0xa1,0xc2,0x55,0x93,0xba, + 0xc5,0xfe,0x99,0xce,0xb1,0xd5,0xab,0xc5,0x53,0x4f,0x5c,0xfa,0xd4,0x5f, + 0xbd,0xb6,0xbe,0x0c,0x67,0xc9,0xd9,0xce,0xb0,0x5f,0x02,0xf0,0xae,0x88, + 0xed,0x60,0xb6,0xa5,0x04,0x51,0x1a,0xc1,0x06,0x14,0xa0,0x52,0xc7,0x61, + 0xe6,0xb3,0xe1,0xa0,0xfe,0xdb,0x4f,0x7d,0xc7,0x64,0x4b,0xef,0xfe,0xf5, + 0xe3,0x53,0xf9,0xd1,0xb2,0xb9,0xc8,0x2e,0x28,0x2a,0x25,0x32,0xd6,0x75, + 0x3a,0x1d,0xa0,0x12,0x91,0x94,0xd4,0x93,0x0f,0x8d,0x8e,0x23,0x46,0xc1, + 0x04,0x61,0xa6,0x11,0xb9,0x4c,0x95,0x89,0x46,0x27,0x78,0x2b,0xfd,0xd8, + 0x56,0x67,0x91,0xe2,0xd6,0x6a,0x23,0xbe,0x49,0xdc,0xd6,0x22,0x97,0x23, + 0x78,0x4b,0x95,0xac,0xf5,0x45,0x41,0x13,0x59,0x9d,0xc7,0x25,0x6f,0xdc, + 0xf4,0xc7,0xba,0x42,0xbf,0xd7,0x10,0x99,0x76,0xde,0xd7,0x22,0x0d,0x75, + 0x5d,0xa5,0x94,0x7a,0x1b,0x65,0x35,0x34,0xdd,0xec,0x70,0xb9,0x31,0xf7, + 0xad,0xaf,0x9d,0xff,0xf3,0x3f,0x7d,0x7e,0xed,0x3a,0x1c,0x15,0xac,0x33, + 0xc3,0x7e,0x24,0xd8,0x6e,0x67,0x9a,0xc9,0xa5,0x4d,0x4c,0x85,0x12,0x90, + 0x26,0x88,0x41,0x89,0x10,0x52,0x4a,0x4c,0x76,0x75,0x09,0x7f,0xf5,0xf1, + 0x9f,0x7c,0xf3,0x6b,0x3f,0x76,0x38,0x36,0x3f,0x7d,0xba,0xad,0xda,0x9b, + 0x6a,0x10,0x9a,0xd2,0x58,0xed,0x74,0xf2,0x4e,0x96,0x67,0x36,0x63,0xf8, + 0xde,0x5a,0xd9,0x34,0x9b,0xec,0x9f,0xf6,0x23,0x77,0x2a,0x44,0x60,0x26, + 0xa7,0x4a,0x20,0x14,0x05,0xac,0x63,0xdd,0x3c,0xd3,0x49,0xc6,0x54,0x37, + 0x9e,0x68,0x9c,0x7f,0x56,0x9d,0xd5,0xbe,0x33,0x25,0x52,0x21,0x55,0xc9, + 0x73,0x3f,0x35,0x5d,0x80,0x86,0x5b,0x69,0x6b,0x34,0x62,0xd3,0x71,0x19, + 0x81,0xe1,0x00,0x2b,0xcb,0xbd,0xc3,0xa7,0xb2,0x56,0xd9,0xa4,0xaa,0xa2, + 0xd1,0x79,0x1a,0xf4,0x9b,0xc2,0xce,0x2f,0xec,0x3a,0xb3,0x7a,0x3d,0xff, + 0xc2,0x67,0x9f,0xfe,0xe2,0xdf,0x9e,0xdf,0x58,0x84,0xa1,0x1c,0xd2,0xa9, + 0x43,0x0d,0x58,0xe7,0x10,0x42,0x68,0x42,0xd8,0x3a,0xb6,0x95,0xc7,0x6e, + 0xb5,0x79,0xf0,0xc6,0x98,0xc8,0xbb,0x42,0xa9,0xdf,0x5f,0xd7,0xcf,0x7e, + 0xea,0x35,0x55,0x7e,0xec,0xdf,0xbf,0x29,0x2f,0x36,0xbc,0x35,0xd5,0x70, + 0x58,0x0e,0x6b,0xc9,0x88,0xc8,0x40,0x00,0xf5,0x0e,0xee,0xda,0xd5,0xb5, + 0x41,0x7f,0x93,0x49,0xcd,0x00,0x49,0x82,0xb6,0x4d,0x18,0x19,0x91,0x1a, + 0x84,0x99,0x59,0xeb,0xbd,0x4d,0x29,0x8d,0x03,0x2e,0xbd,0x0e,0xd2,0xc7, + 0x3b,0xe1,0x33,0xa3,0x46,0xda,0x18,0x63,0x8c,0x4d,0x49,0x45,0x24,0x2f, + 0xfc,0xd4,0xb4,0xdf,0x86,0xea,0x6f,0xe9,0x1a,0x5a,0x3d,0x49,0xd6,0x0c, + 0xb1,0xbc,0xd4,0x97,0x64,0x88,0x1c,0x11,0x89,0x46,0x91,0x60,0x9d,0x3a, + 0xe7,0x3b,0xd9,0xc1,0xfe,0xea,0xec,0x3f,0x7c,0xf9,0xfc,0xdf,0x7d,0xf2, + 0xfc,0xea,0x55,0x78,0x5f,0x40,0x8d,0x68,0x2b,0x18,0x83,0x08,0x9a,0xd0, + 0x00,0x89,0xa9,0x4d,0x13,0x2d,0xc2,0x69,0xb6,0xf7,0x1b,0x42,0xd0,0x26, + 0x44,0xd2,0x4e,0x66,0xb0,0x78,0x19,0x9f,0xf9,0xeb,0x57,0xff,0xfe,0xd3, + 0xcf,0x6c,0x2c,0x66,0x46,0xf6,0x14,0xd9,0x02,0xc1,0xc7,0xa6,0x4e,0x61, + 0x18,0x9a,0x41,0x68,0x2a,0x82,0xbf,0x7a,0x65,0x35,0x94,0xf0,0xce,0x11, + 0x98,0xda,0x39,0xa6,0x08,0xc0,0xcc,0x23,0x65,0x0c,0x18,0x33,0xb3,0x45, + 0x9e,0xfb,0x18,0x9b,0xb1,0xec,0x31,0x8e,0x3c,0x4b,0x69,0x0c,0x4f,0xf2, + 0xcf,0x46,0x4a,0x45,0xc0,0x6c,0x98,0xad,0xaa,0x8a,0x44,0xeb,0x34,0xcb, + 0x37,0x87,0x40,0x0c,0xd8,0x76,0x04,0xb2,0xa5,0x94,0x63,0x0b,0x45,0x7f, + 0x23,0x69,0xca,0x99,0x32,0x22,0x56,0x4d,0x8a,0x54,0xd7,0x75,0xa7,0x98, + 0x0b,0xd5,0xf4,0x37,0xbe,0xf2,0xe2,0xa7,0x3e,0xf1,0x4c,0x7f,0x11,0xce, + 0x4d,0x35,0x35,0x11,0x2b,0x71,0x70,0x8e,0x40,0x31,0xa6,0xc6,0xb0,0xf1, + 0xde,0xb6,0x4d,0xd2,0x98,0xc0,0xc5,0x23,0x63,0x69,0xab,0xd4,0xc8,0x00, + 0x65,0xd8,0x18,0xb8,0xae,0xac,0x01,0x06,0xeb,0xf8,0xb3,0x3f,0x79,0xf5, + 0xc7,0xcf,0xf6,0x57,0xaf,0xe7,0x24,0xbb,0xbd,0x9d,0xf7,0xae,0xeb,0x9c, + 0xcb,0x72,0x93,0x65,0x19,0x24,0x5b,0x5f,0x6d,0x20,0x30,0x5c,0x6c,0xe6, + 0x23,0xd5,0xd4,0xa6,0x17,0x6e,0x1b,0x7f,0x8b,0xa2,0x0b,0xeb,0x54,0xb6, + 0x0e,0x7b,0x19,0xe9,0x6b,0x77,0xf2,0x21,0xde,0x3e,0x43,0xdd,0xba,0x39, + 0xe7,0xaa,0xaa,0x52,0x55,0xef,0xbd,0x75,0xd4,0x1f,0xac,0xdc,0x75,0xef, + 0x91,0xf6,0x42,0x14,0x06,0x30,0xde,0x15,0x10,0x03,0xe1,0xa2,0x28,0x88, + 0x88,0xc9,0x40,0xf1,0xc4,0xb7,0xcf,0xae,0x2e,0x37,0x53,0x9d,0x7d,0x90, + 0xac,0xed,0x01,0x9c,0xcd,0x19,0x53,0x5f,0xfc,0xdc,0x3f,0xfd,0xd7,0x3f, + 0x7d,0x61,0xf5,0x32,0x98,0x77,0x59,0x9a,0x43,0xa2,0x18,0x2a,0x50,0xd9, + 0xc4,0x0d,0xd5,0xda,0x30,0x1b,0x4b,0x21,0x04,0x66,0x56,0xa4,0x4e,0xd1, + 0xb1,0xc6,0x2b,0xd8,0x70,0xa1,0xc2,0x9a,0x60,0x0d,0xd5,0x75,0x20,0x1a, + 0xb5,0x2c,0x8c,0x4c,0x53,0xd6,0x94,0x40,0xc4,0xff,0xf5,0xbf,0xbf,0xfc, + 0xe4,0x37,0xaf,0xce,0x17,0xa7,0x33,0x5e,0xa8,0xfa,0xf0,0x36,0xaf,0xab, + 0x60,0x38,0x43,0xcc,0x9e,0x7a,0x62,0x99,0x14,0x29,0xb4,0x09,0x49,0x08, + 0x62,0x18,0xd6,0xd8,0x18,0x63,0x8c,0x0d,0x08,0x22,0xb8,0xe7,0xde,0x13, + 0xc3,0x72,0xdd,0x67,0x66,0x8b,0xe2,0x30,0x1a,0x9d,0xf0,0xad,0x20,0x9a, + 0xed,0x1d,0xa3,0x52,0x2b,0x3b,0x6a,0x31,0x33,0x22,0x15,0x69,0xc0,0xd5, + 0xec,0x3c,0x67,0x53,0xa3,0x21,0x9c,0x42,0x43,0x48,0x80,0x21,0x6e,0x89, + 0x51,0xd4,0x94,0x35,0x14,0xd7,0xaf,0x62,0x65,0xa9,0x31,0x98,0x0f,0xb5, + 0x27,0xb8,0x2c,0xcb,0xea,0x2a,0xbd,0xf8,0xc2,0xd9,0xef,0x3e,0xd1,0x1b, + 0xae,0x01,0xc6,0x4a,0x83,0x72,0x38,0x04,0x28,0xef,0x64,0x0a,0x61,0x03, + 0xe7,0xad,0x75,0xdc,0x34,0x51,0x95,0x44,0x64,0x66,0x26,0x1b,0x94,0x8b, + 0x21,0xf5,0xf3,0xcc,0x31,0xb7,0x64,0x49,0x17,0x1a,0x33,0xae,0xad,0x37, + 0xdf,0x27,0x43,0x7d,0x8b,0xfa,0xfc,0xcd,0x5f,0x5c,0xf9,0xab,0x8f,0xff, + 0x43,0x2c,0xe7,0xe7,0x67,0x4e,0x84,0xaa,0xc3,0x98,0x4a,0xc1,0xfd,0xf4, + 0xa5,0xab,0x1b,0x6b,0x50,0xc1,0x08,0xde,0x23,0xd9,0x1c,0x2c,0x88,0x8a, + 0x75,0x04,0x42,0x31,0x8d,0x5d,0x0b,0xde,0xfa,0x94,0xa4,0x06,0x6d,0xca, + 0x3c,0x70,0x93,0xb4,0xfb,0x96,0x4d,0xd0,0xa8,0xf2,0x52,0x55,0x63,0x58, + 0x24,0xb2,0x11,0xd1,0x5a,0x31,0xdc,0x77,0xa0,0x7b,0xe8,0x08,0x40,0x70, + 0xde,0x00,0x22,0x10,0x66,0x67,0x4d,0x16,0x42,0x90,0x94,0x00,0xb0,0x45, + 0x6f,0x19,0x2f,0xbf,0xb8,0x1c,0xca,0x69,0xd2,0xd9,0x96,0x02,0x63,0x6d, + 0x76,0xfc,0xd8,0xc9,0x87,0x1f,0x29,0xe6,0xf6,0x02,0x1a,0x4d,0x26,0x79, + 0xc7,0x01,0x5a,0x0d,0x6b,0x15,0x78,0xe7,0x88,0xa8,0xa9,0x23,0x60,0x2c, + 0x77,0xbd,0xf7,0x1b,0xfd,0xb5,0xb9,0xdd,0xd2,0x9d,0x89,0x55,0xd3,0x4f, + 0x52,0x39,0x9b,0x01,0x9e,0x90,0x43,0xdd,0x98,0xc5,0x1c,0xb6,0xc4,0x27, + 0x0a,0x6d,0xd0,0x5f,0xc4,0x27,0xff,0xe2,0xca,0xd7,0xbe,0xf0,0x0c,0xe2, + 0x3e,0x47,0x07,0x53,0x39,0x9d,0xf3,0xfe,0x1f,0x7c,0xef,0xa7,0x6b,0x4b, + 0xad,0x6d,0x95,0x90,0x18,0x4a,0x34,0x32,0x16,0xa0,0xcc,0x02,0xc6,0x81, + 0x43,0x38,0x70,0x68,0x8a,0xb8,0xd2,0x1b,0xf8,0xcb,0x3a,0x56,0xc0,0xec, + 0xec,0x59,0x37,0x55,0x16,0x63,0xcf,0x12,0x36,0x2a,0x5a,0x29,0x0d,0x77, + 0xef,0x75,0xa7,0x4e,0x13,0x08,0xc4,0xd1,0x32,0x01,0xa2,0x4a,0x31,0x4a, + 0x68,0xe2,0x38,0x72,0x73,0x08,0x7e,0xf8,0xfd,0xd7,0xae,0x5c,0x6c,0xa6, + 0x8b,0x23,0x12,0x7d,0xd3,0x34,0x21,0x84,0xdd,0x7b,0xa6,0x1f,0xff,0xf7, + 0xbf,0xfa,0xef,0x3e,0x72,0x22,0x9f,0x43,0x92,0x35,0x76,0x7d,0x50,0x09, + 0x12,0x6b,0x73,0x11,0x6e,0xea,0x40,0x44,0x79,0xe6,0x44,0xeb,0x26,0x56, + 0xd3,0xbb,0xf0,0xbb,0xbf,0xff,0xf6,0x8f,0xfd,0xc7,0x77,0xef,0x39,0x80, + 0x84,0x24,0xe8,0x3b,0x4b,0x4c,0x66,0xab,0xa4,0x18,0xe5,0xe0,0x38,0xca, + 0x1b,0xc9,0x77,0x8a,0x7c,0xb0,0x82,0xcf,0x7e,0x72,0xf1,0x4b,0x7f,0xf7, + 0x5c,0xdd,0x5b,0x38,0xb4,0xf7,0xa1,0xfe,0x5a,0xf1,0xcc,0x3f,0x0f,0x24, + 0x8c,0x74,0xc7,0x40,0x04,0xb5,0x93,0x2d,0x88,0x08,0x91,0x8a,0x06,0x10, + 0x4e,0xdc,0x81,0xdd,0x7b,0xb3,0x3a,0xac,0x59,0xb7,0x59,0x88,0xf2,0x18, + 0x30,0xbc,0x11,0x0d,0xdd,0xa4,0xa1,0xeb,0x4d,0xb8,0x17,0x6f,0xc2,0xcf, + 0xaa,0x81,0x4c,0x23,0x18,0x64,0x9d,0x70,0xfa,0xee,0x83,0x20,0x34,0x61, + 0x48,0x1c,0x0d,0x61,0xc4,0x48,0x07,0x88,0x19,0x90,0x18,0x80,0x84,0xe7, + 0x7e,0xd4,0xbc,0xf0,0xf4,0x92,0xa5,0xbd,0x86,0x3b,0x92,0x00,0xe8,0xe5, + 0xab,0x67,0xc9,0xad,0x3c,0xfe,0xdb,0x6f,0xf9,0xe8,0x1f,0x9e,0xa0,0x2e, + 0x86,0xd5,0x80,0x73,0x31,0x96,0x99,0x7c,0x53,0x09,0xd4,0x16,0x1d,0xd7, + 0xc4,0xbe,0x50,0xd3,0x99,0xc1,0x1f,0xfc,0xd1,0x99,0xf7,0x3e,0x76,0xf8, + 0x23,0x1f,0x7b,0xd3,0xef,0x7c,0xec,0x9e,0xa9,0x79,0x24,0x80,0xcc,0x30, + 0x69,0xb5,0x55,0x5e,0xb7,0x2d,0xc4,0xf8,0xa8,0xb1,0xc6,0x0f,0x37,0x22, + 0x14,0xeb,0x8b,0xf8,0xf8,0xff,0x7d,0xfe,0xc9,0x6f,0x5e,0x37,0xe1,0x8e, + 0xef,0x7f,0xe7,0xf2,0xe5,0xf3,0x80,0xb4,0xda,0x82,0xc4,0x48,0xa4,0x81, + 0xc5,0x02,0x1c,0x53,0xf2,0xde,0x86,0x28,0x60,0x9c,0xb9,0x7b,0x8f,0xf5, + 0x55,0x59,0xaf,0x39,0xb7,0x3d,0x43,0xa9,0xdd,0x31,0x67,0x99,0x0f,0xff, + 0x71,0xb6,0x35,0xe3,0x1c,0x01,0x9b,0xed,0xa9,0x47,0xed,0xf1,0x4f,0x2c, + 0x40,0x03,0x08,0x21,0xb7,0x98,0x7b,0xea,0x89,0x2b,0x65,0x0f,0x2a,0xd1, + 0x5a,0xd7,0xd2,0x66,0x8c,0x61,0x9f,0xb9,0x18,0xa3,0x26,0x65,0x9f,0x4b, + 0x13,0x6c,0x1e,0x8f,0x1e,0xdf,0x33,0x35,0x17,0xc8,0x0e,0x55,0x93,0xcf, + 0x4c,0x55,0x0e,0xe7,0xe6,0xa7,0x4f,0x9f,0x39,0x51,0x14,0xbd,0xab,0x57, + 0x37,0x7a,0x6b,0x30,0xa4,0xa1,0x51,0x28,0xfb,0xcc,0x37,0xcd,0x40,0x08, + 0x87,0x8e,0xe1,0xc3,0xbf,0x77,0xe6,0x5d,0xef,0xdb,0x5b,0xcc,0xac,0x5a, + 0x3f,0xdc,0xbb,0x7f,0x66,0x7a,0x5a,0xcf,0xbf,0xb6,0xda,0xdb,0x50,0xc3, + 0x32,0x71,0xb4,0xdf,0x20,0x56,0x61,0x55,0x18,0x47,0x4c,0x12,0x2b,0x5c, + 0xbf,0xba,0x76,0xed,0xca,0xf2,0x53,0xdf,0xfb,0xf1,0x95,0x0b,0x09,0x02, + 0xc3,0x20,0x16,0xb4,0x10,0x26,0x8c,0x82,0x09,0x70,0x9e,0x42,0x4a,0xfb, + 0x0f,0xe3,0x43,0xbf,0x7b,0xe7,0xd4,0x5c,0x39,0xac,0x16,0x8b,0x8e,0x8d, + 0x6d,0xeb,0x48,0x02,0x18,0x68,0x06,0xb0,0x52,0x0b,0x47,0xe8,0xe4,0x44, + 0xda,0x4d,0x38,0x94,0x1b,0xfd,0x01,0x29,0x93,0x69,0x85,0x0c,0x22,0xb5, + 0xf3,0x29,0xa5,0xd8,0x54,0xd8,0x3d,0x7b,0xe2,0xfc,0xd9,0xeb,0x57,0x2e, + 0x36,0x29,0xc1,0x39,0x17,0xa3,0x12,0x19,0x6b,0x39,0xa6,0x46,0xa1,0x50, + 0x26,0xd3,0xd1,0x54,0xf7,0xcb,0x41,0xc2,0xd2,0x99,0xfb,0xe6,0x7d,0x51, + 0xd5,0xcd,0x70,0x6a,0xba,0xd3,0xd4,0x83,0xf5,0xf5,0x65,0xe7,0x70,0xe2, + 0xc4,0xf1,0x6e,0x41,0xcf,0x3f,0xbf,0xd2,0x0c,0x01,0x49,0xd6,0x16,0xa0, + 0x94,0x34,0x1e,0x3e,0x81,0xdf,0xfe,0xbd,0xfb,0x7f,0xfd,0xb7,0x4e,0xd6, + 0x78,0x31,0xd1,0xa5,0x95,0xf5,0xd7,0xf2,0x82,0xcf,0x9c,0xb9,0xdb,0x59, + 0x79,0xed,0xd5,0x95,0xa6,0x86,0x6a,0x1a,0x53,0xa8,0xc6,0x39,0x45,0x2d, + 0x88,0x54,0xa2,0x2b,0x32,0x09,0x90,0xc6,0x18,0x9a,0x5d,0x5d,0x2e,0x5f, + 0x78,0xee,0xca,0xea,0x72,0x42,0x20,0x26,0x9f,0x24,0x81,0x94,0x09,0xa2, + 0x00,0x1c,0xc1,0x19,0xa6,0x84,0xca,0x58,0x3c,0xfc,0xf6,0xb9,0xf7,0xfd, + 0xe6,0x9d,0x83,0xfa,0xbc,0xcb,0x12,0x28,0x8a,0x6c,0x9e,0x03,0x0c,0xf5, + 0x00,0x29,0x45,0x50,0xa2,0x5b,0x17,0xa5,0x5b,0x05,0xc4,0x18,0xe1,0x27, + 0x11,0x61,0xb6,0xaa,0x54,0x56,0x1b,0x33,0x73,0xf6,0xde,0xfb,0x0f,0x4f, + 0xcf,0x01,0x04,0x6a,0x8f,0x58,0x25,0xd1,0x98,0x52,0x95,0xe7,0xb6,0x15, + 0x3c,0x75,0xa7,0x16,0xd6,0xaf,0xe3,0x3b,0xdf,0x58,0xad,0x37,0x66,0xa8, + 0xd9,0xbd,0x77,0xcf,0xb1,0xa5,0xa5,0x25,0x36,0x61,0xf7,0x5e,0xb7,0xda, + 0xfb,0xa9,0xc9,0xaf,0xbf,0xf7,0xb1,0x7b,0x3e,0xf2,0xd1,0xc3,0xdc,0x01, + 0x2c,0xc4,0xf6,0x83,0x56,0xae,0x8b,0xf7,0xff,0xd6,0xf1,0x5f,0x7b,0xec, + 0x64,0x29,0x3f,0xf5,0x9d,0xda,0xf8,0xe0,0x8a,0x6a,0x18,0x2e,0xd9,0xee, + 0xd2,0x6f,0xfe,0xf6,0x03,0x8f,0xff,0xce,0x9d,0x81,0xa0,0x06,0xca,0xa2, + 0x04,0x05,0x43,0xad,0x8e,0xb3,0x2d,0x1b,0x0a,0xe5,0x90,0x88,0x00,0x97, + 0x84,0xf2,0x6c,0x17,0x83,0x63,0x03,0x82,0x6f,0xd9,0x42,0x29,0x61,0x3c, + 0x41,0x15,0x66,0x36,0xce,0xc7,0x04,0x5b,0xe0,0xd8,0x1d,0x73,0x73,0xbb, + 0xf2,0x41,0xdd,0x2b,0x8a,0xa2,0x0e,0x6d,0x80,0xc7,0xf1,0x54,0x25,0x4e, + 0xb4,0xd3,0x93,0x61,0xf8,0x9f,0xf3,0x2d,0xa6,0x11,0xb5,0xcd,0x91,0x02, + 0xa2,0x63,0x1a,0x1c,0xb3,0x11,0x21,0xe6,0x2c,0xcb,0x8a,0x72,0x58,0x1f, + 0x3b,0x72,0xe7,0x77,0xfe,0xf1,0xa5,0xb5,0x15,0xe4,0xce,0x37,0x8d,0x35, + 0x70,0x22,0x25,0x48,0x62,0x8c,0x3e,0xe3,0x14,0xa8,0xa9,0x1b,0xe6,0x34, + 0xec,0xeb,0xb5,0x2b,0xe7,0xee,0xbf,0xff,0x01,0xa5,0xca,0xf8,0x86,0x4c, + 0x0a,0xd2,0x67,0x57,0x57,0x4d,0x5f,0x90,0x1e,0x78,0xe0,0x3e,0xe7,0x06, + 0x97,0xae,0x6d,0x0c,0x07,0xd8,0x73,0x04,0x7f,0xf8,0x3f,0xdf,0xf1,0xce, + 0xf7,0x1d,0xa1,0xce,0x79,0x31,0x2b,0x62,0x4c,0x10,0x4b,0xce,0x90,0xa3, + 0x32,0x6e,0xc0,0xc5,0xbd,0xfb,0x67,0xef,0xbc,0x6b,0xf6,0xbb,0xdf,0xb9, + 0x3e,0xae,0x19,0x3d,0xc8,0xa8,0x8a,0x52,0x68,0xdf,0x27,0x01,0xaa,0x42, + 0x10,0x42,0x4c,0xa9,0x04,0x12,0x01,0x02,0x95,0x51,0x37,0x36,0xde,0x0e, + 0x04,0x24,0x95,0xa8,0x0a,0x8e,0x0f,0xbe,0x93,0x3f,0xf0,0xf8,0x5d,0xd9, + 0x74,0x8f,0x6c,0x35,0x18,0xd4,0xd6,0xe5,0x3a,0x3a,0x3a,0x6a,0x50,0x1c, + 0xf3,0x3e,0x0c,0xc1,0x6c,0xf2,0x96,0x36,0x89,0x21,0xb4,0xa5,0x9b,0xd8, + 0x6a,0x31,0x26,0xc5,0x44,0xed,0xf0,0x43,0x09,0x66,0xaa,0x33,0x57,0x0e, + 0xd6,0x5f,0xfe,0x71,0x39,0xe8,0x05,0xcb,0x85,0xaa,0x51,0xd4,0xad,0x3f, + 0x3a,0xc7,0x12,0x0c,0x93,0x75,0xd6,0xa5,0x58,0x97,0x43,0xf4,0x7b,0xcb, + 0x6f,0x7d,0xe4,0xfe,0x90,0x2a,0x45,0xf2,0x99,0x71,0x99,0x8a,0xd6,0x49, + 0xea,0x28,0xe1,0xd4,0x1d,0xa7,0xa2,0x5e,0xa3,0xac,0x79,0xdb,0xbb,0xa6, + 0x1f,0xfd,0x95,0x53,0xbb,0xf6,0xa7,0x5a,0x2e,0x57,0x61,0x3d,0x46,0x1b, + 0x82,0x2a,0x62,0x4c,0x75,0xd2,0xca,0x67,0x28,0xba,0x59,0x77,0xaa,0x7b, + 0xe0,0x40,0x7e,0xf6,0xd5,0x95,0x7a,0x88,0xe9,0xb9,0xa2,0xae,0x2a,0x90, + 0xe6,0x53,0x79,0x0c,0xb1,0x85,0x48,0xc6,0x53,0xac,0x34,0x8e,0x0c,0x72, + 0xce,0x32,0xb7,0xdd,0xd4,0x28,0x01,0xb7,0x0d,0xb9,0x2b,0x58,0x6c,0x7a, + 0xf7,0x07,0x66,0xde,0xfa,0x8e,0x85,0x32,0x5c,0x6a,0x42,0xaf,0xdb,0x9d, + 0x11,0xd1,0x31,0xa3,0x6f,0x33,0x7d,0x8f,0x09,0x45,0x5b,0x13,0xd2,0x37, + 0x2c,0x74,0x32,0xde,0x64,0xfb,0xf7,0x1e,0x79,0xe1,0xd9,0x73,0x8b,0xd7, + 0xe1,0x6d,0xa6,0xe2,0x74,0x64,0x56,0x31,0x26,0x53,0x61,0x55,0xb2,0xc6, + 0xc5,0x54,0x57,0xa5,0xbe,0x76,0xbe,0xb2,0x76,0xb8,0xb0,0xe7,0xe0,0x91, + 0x43,0xc7,0xca,0xe1,0x60,0x65,0xf9,0x5a,0x96,0x51,0xb7,0xe3,0x62,0x1c, + 0xec,0xdb,0x37,0x37,0x3b,0xeb,0xee,0xbc,0x73,0xe6,0xee,0x7b,0x8e,0xec, + 0xda,0x63,0x9a,0x66,0xa5,0xaa,0xd6,0x45,0x35,0xcb,0x0a,0x66,0x58,0x4b, + 0xc6,0x50,0x8a,0x8d,0x26,0x58,0x6b,0x8b,0xa2,0x78,0xe0,0xfe,0xfb,0x9a, + 0xb0,0xf8,0x93,0x97,0xfa,0x65,0xbf,0x69,0xeb,0xec,0xd1,0x26,0x8d,0x5b, + 0x30,0xfd,0x53,0x4a,0xe3,0xcd,0x1b,0x23,0xf2,0x00,0x11,0x19,0xa7,0x31, + 0xa5,0xfb,0x1f,0xc6,0x6f,0x7c,0xe8,0x8e,0x7d,0x87,0x53,0xaf,0x7c,0x0d, + 0x5c,0x79,0x97,0xa5,0xa4,0xe3,0x19,0x28,0x8d,0xf5,0xc2,0x34,0xb2,0xfe, + 0xf6,0x04,0xff,0x46,0x8c,0xa5,0x54,0x55,0x83,0x3d,0xbb,0xf6,0x6f,0xac, + 0x97,0x67,0x5f,0xee,0x95,0x83,0x9a,0x60,0x89,0x58,0x37,0xc5,0x5b,0x42, + 0x02,0x55,0x51,0x63,0x8c,0x48,0x90,0x84,0x67,0x9f,0xd9,0xe8,0x76,0x71, + 0xe8,0xe0,0xd1,0xa2,0xe8,0x88,0xd6,0x40,0x02,0x35,0x49,0xea,0xd5,0xd5, + 0xc5,0xb9,0x5d,0xc5,0xbe,0x03,0xb3,0xc6,0xd7,0xc3,0x6a,0x29,0xca,0xd0, + 0x18,0x01,0xab,0x77,0x0e,0x94,0xac,0x63,0xef,0x5b,0xba,0x61,0xdd,0x84, + 0x4a,0x11,0x24,0x35,0x27,0x4f,0x1d,0xe9,0x76,0x86,0xaf,0x5d,0xe8,0x57, + 0x25,0xac,0x83,0x04,0x03,0xf5,0x44,0xfa,0xfa,0x63,0x64,0x22,0x6a,0x19, + 0x1b,0xaa,0x2a,0x04,0x78,0x7c,0xe4,0xf7,0x8f,0x3d,0xf8,0xe8,0xee,0x41, + 0x7d,0x8e,0xec,0xc0,0x79,0xaa,0xaa,0xc4,0xe4,0xda,0x51,0xc3,0x44,0xbd, + 0xa9,0xdb,0xc4,0x50,0xb7,0xe5,0x59,0x12,0xe3,0x90,0x08,0x0b,0xbb,0x8f, + 0x2d,0x5d,0xbf,0x7a,0xee,0x95,0xa8,0x12,0x5a,0x21,0x0e,0xa3,0xa5,0xcd, + 0x25,0x1d,0xe5,0x11,0xf6,0x3e,0x77,0xd6,0xc6,0x26,0xbc,0x7a,0x6e,0x7d, + 0x7d,0x7d,0xf5,0xc8,0xe1,0x63,0x27,0x4e,0x1e,0x57,0xc4,0xfe,0x60,0x83, + 0x38,0x25,0xa9,0x9c,0x4f,0xa2,0xfd,0x26,0xae,0xb3,0x6d,0xa6,0x67,0x9c, + 0xcf,0x38,0xa6,0x20,0x5a,0xd7,0xa1,0x4c,0xa1,0xb1,0xd6,0x38,0xe7,0x00, + 0x81,0x44,0x6b,0x52,0x39,0x5c,0x9f,0x9e,0xc9,0xce,0x9c,0x39,0xe3,0x7d, + 0xf5,0xfc,0xd3,0xeb,0x61,0x08,0x67,0xa6,0x54,0xfc,0x78,0xe2,0x7b,0xd3, + 0x24,0xc6,0xda,0xb6,0xae,0x36,0xc6,0x8c,0xfb,0x64,0xc0,0xe0,0x1d,0xef, + 0xc7,0x7b,0x1f,0x3b,0x3c,0xb7,0x50,0x6d,0x0c,0xce,0xfb,0x0c,0xc6,0xd8, + 0x50,0xb3,0xe1,0xac,0xc5,0xdf,0x46,0x92,0x74,0xa2,0x09,0x5e,0xdf,0x6d, + 0xeb,0x0d,0x49,0xf2,0x1c,0x55,0x55,0x1d,0xdc,0x7f,0xbc,0xae,0xf0,0xd2, + 0x4f,0x96,0x86,0x03,0x55,0x6d,0x18,0xce,0x18,0x83,0x16,0xc2,0x42,0x6a, + 0x91,0xdb,0x94,0x34,0xc6,0x54,0x74,0x67,0xca,0x5e,0x75,0xee,0xb5,0xc1, + 0xca,0xca,0x25,0xe7,0xdc,0x9e,0x3d,0x7b,0x67,0x67,0xe7,0xac,0xb5,0xc6, + 0x72,0x4c,0x31,0xc4,0x9a,0x59,0x8c,0x45,0x92,0x90,0x52,0xb2,0x86,0xc0, + 0x9a,0x24,0x35,0x75,0x90,0x04,0x6b,0x9c,0xaa,0xa8,0x04,0x63,0x91,0x65, + 0x5c,0x95,0xa5,0x2a,0x1d,0x3c,0x70,0x7c,0xef,0xae,0x99,0x2b,0x97,0xaf, + 0xaf,0x2d,0x37,0xce,0xe5,0x22,0xcd,0x8e,0xc6,0x1a,0x6b,0x38,0xe1,0x9c, + 0x6b,0x87,0x60,0x59,0x96,0xcd,0xee,0x4e,0xff,0xe5,0x7f,0x7d,0xcf,0xec, + 0xc2,0x20,0xe9,0x2a,0xdb,0x20,0x2a,0x2a,0xd6,0xbb,0x29,0xdd,0xd4,0x9a, + 0x6e,0xae,0x2e,0xa3,0x4d,0xe0,0x41,0x6f,0xdf,0xb3,0xac,0xd1,0x14,0xc5, + 0xfb,0x6c,0x66,0x66,0x56,0xd2,0xe0,0xca,0x95,0xb2,0x1c,0x82,0x59,0x52, + 0x02,0x93,0x05,0x25,0x22,0x25,0x12,0x20,0xb5,0x40,0x5a,0x8c,0x6a,0x9c, + 0x95,0x3a,0x5e,0x3c,0x17,0xce,0x9e,0xbd,0x1c,0xea,0x98,0xbb,0x59,0x46, + 0x87,0x34,0x27,0xf5,0xce,0x66,0x86,0x39,0x84,0xa6,0x1c,0x96,0x92,0xa2, + 0x75,0x96,0x0c,0x39,0x9b,0xa9,0x90,0x2a,0x1c,0x1b,0x15,0x49,0xb1,0xb1, + 0xc6,0xa4,0x18,0x99,0x6d,0xac,0xe4,0xf0,0x81,0x53,0xf7,0xdd,0xfd,0xf0, + 0xf2,0x62,0xff,0xb9,0x67,0x2f,0x3b,0xa3,0x49,0xc2,0x2d,0xc8,0x78,0x3a, + 0x39,0x5a,0x27,0xa2,0x4e,0xa7,0x33,0xbb,0x3b,0xfd,0xc6,0x87,0xee,0x33, + 0xf9,0x46,0x92,0x7a,0xd4,0xa5,0xab,0xb1,0x36,0x4f,0x51,0x88,0x30,0x3e, + 0x1f,0x74,0x9c,0xe3,0x6f,0xa4,0xb8,0xbf,0x61,0x25,0x6b,0x55,0x56,0xde, + 0xf9,0xc1,0xa0,0x3c,0x7c,0xf8,0xf0,0xec,0xec,0xec,0x73,0xcf,0x5d,0x58, + 0xbc,0x0e,0x26,0x95,0x24,0x44,0xed,0xc4,0x3f,0x1a,0x03,0xeb,0xc8,0x58, + 0x58,0x6b,0x53,0x4c,0x2a,0x02,0xa6,0x2c,0xc7,0xea,0x75,0x3c,0xf3,0xc3, + 0xf5,0xcb,0x97,0x2f,0x4c,0x77,0xf7,0xec,0x5b,0x38,0x96,0xb9,0x69,0x6b, + 0xf2,0x14,0x89,0xe0,0x8a,0x7c,0xd6,0x98,0xa2,0xa9,0x52,0x5d,0x37,0xce, + 0x17,0x86,0x73,0x26,0xef,0x4c,0x07,0xea,0x34,0x79,0x67,0x67,0xbc,0x9d, + 0x87,0xcc,0x74,0xb3,0xc3,0x2b,0xd7,0xf1,0xf5,0x2f,0xff,0xf0,0x9f,0x9e, + 0x78,0x71,0x75,0x29,0x86,0x26,0x8d,0xb1,0xef,0x1b,0x6f,0xde,0xfb,0xd4, + 0xb6,0xf7,0xcc,0x21,0x84,0x94,0x52,0x8c,0xd1,0xf8,0x78,0xf4,0xe4,0xd4, + 0x81,0x43,0x7b,0x98,0x68,0x38,0xac,0x8a,0xa2,0x60,0xe6,0xba,0xae,0x15, + 0xc2,0x64,0xc6,0x13,0xab,0x31,0x62,0x7e,0xd3,0xd1,0xf1,0xc6,0x34,0xd2, + 0xa4,0x70,0xec,0x0c,0x73,0xbf,0x37,0x64,0x74,0x67,0xba,0xc7,0xce,0xfe, + 0x78,0xf8,0x89,0x3f,0x7b,0xe6,0xfb,0xdf,0x05,0x02,0x5a,0xfa,0x38,0x41, + 0x15,0x23,0xa6,0xb4,0xf7,0x14,0xa2,0x6e,0x81,0xd9,0x6d,0x5b,0xc7,0x80, + 0xc1,0x9b,0xde,0x82,0x53,0xa7,0xe7,0xdf,0xf2,0xf0,0x89,0x3b,0xcf,0x1c, + 0x98,0x9e,0xe5,0x24,0x55,0x5d,0x97,0x01,0x83,0x88,0x15,0xe2,0xc8,0xec, + 0x99,0x32,0x83,0x8c,0x29,0x27,0x78,0xd2,0x3c,0xd5,0xfe,0xa5,0x17,0xaf, + 0x3e,0xf9,0x9d,0x97,0x9e,0xfb,0x51,0xef,0xea,0x45,0xd4,0x03,0x68,0x28, + 0x04,0xac,0xa8,0x9d,0xa3,0x10,0xc2,0x58,0x55,0x92,0x5a,0x0c,0x6e,0x3c, + 0xfb,0xb8,0x81,0x32,0x20,0x28,0xf0,0x87,0x7f,0x7c,0xfc,0xb1,0xc7,0xdf, + 0x4a,0x6e,0x69,0x7d,0xf8,0x53,0x97,0x95,0xd6,0x49,0x08,0xc1,0x9a,0xce, + 0x18,0x69,0x90,0x09,0x54,0x83,0xc7,0x68,0xc7,0xed,0x18,0x8b,0x59,0x32, + 0xef,0x4c,0x4c,0x65,0x68,0x52,0xee,0xe7,0x53,0xbd,0xeb,0xa9,0xef,0x2c, + 0x7d,0xf5,0xf3,0xe7,0x9e,0xfd,0x01,0x58,0xc1,0x28,0x88,0x0c,0xb3,0x82, + 0x9a,0x24,0x21,0x46,0x90,0x69,0xfd,0xda,0x8e,0x37,0x0e,0x08,0xa8,0x06, + 0x47,0x25,0x64,0x5d,0xec,0x5a,0xc0,0x9e,0xbd,0xd8,0xbb,0x0f,0x47,0x8f, + 0xef,0x3d,0x76,0xec,0xc8,0xc2,0xde,0x19,0x5b,0x34,0xc6,0x8b,0x31,0x2e, + 0x06,0xf4,0xd6,0xca,0x6b,0x57,0xd7,0xae,0x5e,0x59,0x5d,0x5f,0x8d,0x4f, + 0x7f,0x7f,0x6d,0x7d,0x05,0xab,0x8b,0xd0,0x38,0x96,0xfb,0xa3,0x0b,0x48, + 0xc2,0xd0,0x5a,0xb4,0xa6,0xa1,0xb1,0x20,0xac,0x75,0xa8,0x1d,0x8c,0xc5, + 0xa2,0x8c,0xf9,0x03,0xf8,0xcd,0x0f,0x9d,0x7a,0xec,0x43,0x6f,0x9a,0xda, + 0xb5,0xb6,0xb4,0xf6,0x22,0x99,0xfe,0xfc,0xfc,0x6c,0xbf,0xd7,0x6c,0xa1, + 0x40,0x5c,0x8f,0xab,0x53,0x40,0xfd,0x26,0x80,0xfe,0x46,0x55,0x61,0xcc, + 0x94,0x85,0x3a,0x19,0xcf,0xc6,0x36,0x41,0xd6,0xe6,0xe6,0xe7,0x1e,0x7e, + 0xfb,0xf1,0xdc,0xcf,0x5f,0xb9,0xf4,0xc3,0xde,0x0a,0x9a,0xaa,0x74,0xdc, + 0x55,0x45,0xd3,0x28,0xc0,0x74,0x73,0xea,0x55,0x03,0x64,0x10,0xb6,0xae, + 0x49,0x15,0x16,0x2f,0xe3,0xda,0x25,0x3c,0x07,0x18,0x73,0x3d,0xcb,0xae, + 0x7b,0x0f,0x9b,0x81,0x19,0xc6,0x40,0x15,0x4d,0x83,0x41,0x1f,0x55,0x6f, + 0x0b,0xef,0x25,0x05,0xc1,0x32,0x0c,0x91,0x49,0x3a,0x68,0xef,0x50,0xa5, + 0xcd,0xe6,0x6c,0x32,0x5b,0xed,0x94,0xc9,0x60,0x98,0x57,0x2f,0xcb,0xe7, + 0x3e,0x7d,0xd6,0x5a,0xfe,0xc0,0xe3,0x77,0xec,0x9e,0x3b,0xd1,0x2b,0x5f, + 0xdd,0xd8,0xd8,0x60,0xf6,0x40,0x84,0xda,0x2d,0xea,0xad,0xf2,0x0d,0xc2, + 0xb0,0x37,0x5a,0x67,0x19,0x6f,0x3b,0xa1,0x09,0xa2,0x0d,0xb3,0x2a,0x62, + 0x4a,0xd1,0xd9,0x7c,0xf7,0xee,0xdd,0xde,0xcb,0xc6,0xc6,0xda,0xd2,0x12, + 0x92,0x04,0xe7,0x28,0x46,0x05,0xc8,0xd9,0x4c,0x74,0x3c,0x59,0x6a,0xcf, + 0xe3,0xd1,0xa9,0x0c,0x89,0x90,0x24,0x12,0x47,0x9e,0x22,0x01,0xa1,0x42, + 0xd5,0xc7,0xb0,0x87,0xc1,0x2a,0x7a,0x2b,0xe8,0xaf,0xa2,0xdc,0x40,0xac, + 0x60,0xd9,0x79,0xdb,0x45,0xcc,0x0c,0x77,0x0c,0x15,0x96,0x33,0x1a,0x31, + 0x91,0x23,0x71,0xbb,0xf6,0x8e,0xda,0x14,0x6e,0x8c,0x71,0xce,0xb5,0x19, + 0x7d,0x67,0x93,0x11,0x81,0x32,0xe3,0x51,0xf6,0xe4,0x95,0xd7,0x56,0xa6, + 0x67,0xaa,0xc3,0x47,0xf6,0x58,0xdf,0x34,0xb1,0xcf,0x3c,0x52,0x15,0x8c, + 0xb6,0x0a,0x60,0x73,0x19,0xa3,0xb9,0xed,0x04,0xcf,0x9a,0xd8,0x59,0x2b, + 0x1a,0x45,0xc5,0x30,0xd5,0x75,0x15,0x42,0xd5,0xed,0x66,0xf7,0xdd,0x7f, + 0x9a,0xb8,0xb9,0xbe,0xb8,0xba,0xbe,0x01,0x68,0x2a,0x0a,0xc7,0xf0,0x21, + 0x08,0xc1,0x90,0x9a,0xb1,0x91,0x84,0x90,0x08,0x89,0xa0,0xed,0x6a,0x31, + 0x28,0x11,0x98,0xd5,0x31,0x2c,0xc3,0x02,0x96,0x69,0x1a,0xc8,0x01,0x0f, + 0x58,0x08,0x43,0xad,0xa4,0x91,0x22,0x5a,0x34,0x89,0xc6,0xa4,0x15,0xb4, + 0x51,0x0d,0x4c,0xca,0x96,0x5a,0x98,0x88,0x99,0xdb,0x92,0xbd,0xad,0xd7, + 0x43,0x08,0x3b,0x27,0x7e,0x82,0xa6,0x60,0x33,0xab,0x94,0xea,0x01,0x5e, + 0xbd,0xb8,0xc1,0xf6,0xc2,0xbe,0x83,0xdd,0xa9,0x69,0x9f,0xa4,0x1e,0x2d, + 0xeb,0xdd,0xaa,0xda,0x5b,0xfa,0x27,0xdd,0x76,0xbb,0x83,0xa6,0xaa,0xa6, + 0xba,0x1d,0x22,0x84,0x26,0x58,0xcb,0xc6,0x40,0x74,0x48,0xa6,0x62,0x1b, + 0x0e,0x1d,0xde,0xb3,0x77,0x5f,0xbe,0xbe,0xbe,0x7c,0xe5,0x32,0x42,0x93, + 0x08,0x4a,0xb0,0x63,0x8d,0x07,0xc6,0xbd,0x5b,0xdc,0xdc,0x52,0xd7,0xce, + 0x84,0x0c,0x7b,0x22,0x56,0x85,0x68,0x82,0x92,0xca,0x78,0xbe,0xae,0x13, + 0xa3,0x5c,0x08,0x93,0x1a,0xab,0x96,0x85,0x49,0x99,0xa4,0xbd,0x3f,0xc9, + 0x26,0xf2,0x36,0xca,0x56,0xed,0x7c,0x37,0xa5,0x74,0x2b,0x63,0x81,0x34, + 0x85,0x64,0x33,0x48,0x42,0x59,0x62,0x76,0x8f,0xde,0xf7,0xc0,0x3c,0xb8, + 0x24,0xbe,0x69,0x3d,0xc1,0x08,0xf5,0xd7,0xdb,0x36,0x96,0x1a,0x86,0x6a, + 0x92,0xc4,0xed,0xb6,0x43,0x62,0x21,0x53,0x0a,0x7a,0xab,0x1b,0x57,0xe7, + 0x77,0xdb,0x43,0x87,0xf6,0xcf,0xce,0xe6,0xa1,0x59,0x5b,0x5f,0xd5,0xa6, + 0x16,0xc3,0x5e,0xa4,0xc5,0x33,0xda,0x1e,0x35,0x8d,0x5d,0xbd,0x4d,0xc6, + 0x48,0x22,0x22,0x49,0xb4,0x01,0x45,0x9f,0xa9,0xcf,0xd9,0x3a,0x82,0x51, + 0xc2,0xa8,0x52,0x63,0x23,0xd6,0x26,0xeb,0xda,0x8d,0x80,0x49,0x54,0x14, + 0xc2,0xad,0x8f,0xc3,0x68,0x1b,0x23,0xb4,0x95,0xda,0xb3,0x2c,0xeb,0x74, + 0x3a,0x31,0xc6,0x5b,0x84,0xa1,0xb4,0x25,0x94,0x44,0x70,0x81,0x33,0xf7, + 0xe3,0xfd,0x8f,0x1d,0x3e,0x7e,0xc7,0x4c,0xd5,0xac,0x1a,0xdb,0xce,0x44, + 0xdc,0x38,0x63,0x4c,0xf6,0xd5,0xb7,0x5b,0x67,0x4d,0x4f,0x17,0xcb,0xab, + 0xcb,0x31,0xa5,0xa9,0xe9,0xe9,0x24,0xa1,0xaa,0xfb,0xe0,0x06,0x8c,0xb9, + 0x5d,0xf9,0xf2,0xca,0xb2,0x28,0xee,0xba,0xfb,0xde,0x3b,0x4f,0x9f,0x8e, + 0xa9,0x77,0xf5,0x7a,0xaf,0x3f,0x08,0x34,0x22,0x89,0x6d,0x82,0xd7,0x6d, + 0xbd,0x07,0x11,0x55,0x88,0x61,0xcb,0xdc,0x26,0x69,0x15,0x55,0x91,0x14, + 0x42,0x94,0x14,0x55,0x22,0x28,0x51,0x8b,0x47,0x25,0x4d,0x09,0xce,0x6e, + 0xf1,0xe6,0x44,0x41,0x6c,0x8d,0x7a,0x80,0x05,0x0a,0x56,0xe3,0x46,0x8c, + 0xcc,0xd9,0xdd,0x69,0x76,0x77,0x32,0x3e,0x0e,0xcb,0xb1,0xd6,0x85,0xc6, + 0x4b,0x3b,0xc6,0xa2,0xaa,0x99,0x3d,0x68,0x14,0xc7,0x4e,0xe1,0x3f,0xfd, + 0x4f,0x8f,0x3e,0xf4,0xe8,0xf1,0xde,0xf0,0x22,0x99,0xb6,0x46,0xa5,0x51, + 0xc9,0x4e,0xe3,0x49,0x3b,0xe9,0x36,0x41,0xeb,0x1b,0x5d,0x36,0x46,0x37, + 0x13,0xda,0x46,0x47,0x2c,0x13,0x72,0xd2,0x4e,0x6c,0x72,0x83,0x39,0xc6, + 0xd4,0xf3,0xcf,0xfd,0xf4,0x2b,0x5f,0x38,0xff,0xd4,0x37,0xda,0x12,0x6c, + 0x44,0xe6,0xdc,0x7a,0x61,0x1a,0x8d,0x3c,0x27,0x9e,0xd9,0xb1,0x91,0x24, + 0x09,0x04,0x26,0x10,0x41,0x05,0x2d,0x70,0xd0,0x76,0x2d,0xa3,0x9d,0xa5, + 0xaa,0x04,0x43,0x44,0x0c,0x56,0x42,0x02,0xb9,0x3c,0x85,0xd0,0xc0,0xe1, + 0x1d,0xef,0xc5,0xef,0x7e,0xf4,0x3d,0xb3,0xb3,0xb3,0x3f,0x79,0xe1,0xd2, + 0xff,0xf9,0x7f,0xfc,0x20,0xb6,0xa7,0xa5,0x3a,0xa4,0x00,0x33,0x22,0x2f, + 0xb9,0x29,0x84,0x06,0x77,0xbf,0x05,0x7f,0xfc,0x5f,0xde,0x75,0xf2,0x74, + 0xd1,0x2b,0xcf,0x29,0x6f,0xe4,0x05,0xd5,0x75,0x7d,0x03,0x45,0x78,0xe2, + 0xf8,0xe6,0xdb,0xd3,0x48,0x63,0xa4,0x4e,0xda,0x84,0x09,0x49,0xdb,0xa6, + 0x81,0x39,0x67,0xf6,0xd6,0x3a,0x85,0x08,0x55,0xdd,0x19,0x3a,0x78,0x64, + 0xf6,0xae,0xbb,0x0f,0x14,0x59,0x98,0x9a,0xe2,0xc1,0xb0,0xa9,0x6a,0x00, + 0x92,0x79,0xe3,0x9c,0x53,0x81,0xe8,0x24,0xfa,0x61,0x09,0x5e,0xe1,0x54, + 0xc1,0x26,0x6d,0x89,0x87,0xc0,0x86,0x33,0x6b,0xbd,0xb5,0xbe,0x09,0xa2, + 0xaa,0x4c,0x6c,0x2c,0x13,0x09,0x51,0x52,0x8a,0x30,0x51,0x29,0x8a,0x4d, + 0xf7,0x3f,0x8c,0x8f,0xfc,0xfe,0xb1,0xf7,0x3e,0x76,0x78,0x76,0x61,0x60, + 0xb2,0xde,0x81,0x43,0xbb,0x3b,0x45,0x3a,0x77,0x7e,0xbd,0xee,0xc3,0x17, + 0x36,0xeb,0x64,0xa1,0x0e,0x60,0x74,0xe6,0x50,0x57,0x78,0xfb,0x7b,0xf1, + 0xd1,0x3f,0x78,0xe4,0xe8,0xc9,0xbc,0x0c,0x17,0x9a,0xb4,0x3c,0x66,0x35, + 0xd1,0xf6,0x41,0x97,0x4e,0xa4,0x30,0xfa,0x39,0x8c,0x85,0xc9,0x22,0xa0, + 0x55,0xf6,0xa1,0xae,0x43,0x4a,0xc2,0xcc,0xaa,0x34,0x1c,0x0c,0xcb,0x72, + 0xc8,0x4c,0xdd,0x4e,0xfe,0xe0,0x5b,0x4f,0x1f,0x3d,0x3e,0x3d,0x3d,0x57, + 0x09,0x86,0x83,0x01,0xca,0x4a,0x62,0x0c,0x2a,0x29,0xcb,0x72,0x26,0xcf, + 0x64,0xad,0xe9,0x7a,0x37,0xe5,0x6c,0x07,0xea,0x5b,0xd0,0x5f,0x55,0x46, + 0xf4,0x13,0xb5,0x44,0x86,0x88,0xdb,0xf9,0x91,0x73,0xec,0x1c,0x40,0x41, + 0x21,0x4a,0xb0,0x0e,0xae,0x83,0x07,0xdf,0xc9,0xef,0xfe,0xc0,0xcc,0x6f, + 0x7c,0xe8,0x8e,0x07,0x1f,0xdd,0x3d,0xb7,0x50,0x25,0x5d,0x4d,0x5a,0x33, + 0xd1,0x3d,0x77,0xbf,0x49,0xa4,0x7a,0xe5,0xd5,0xd5,0xaa,0x9f,0x92,0x06, + 0x5f,0x70,0x0a,0x1a,0x80,0xbb,0xdf,0x8c,0x8f,0xfe,0xc1,0x23,0x6f,0x79, + 0xe8,0x58,0xd9,0x5c,0x6b,0xe2,0x52,0x5e,0x10,0x20,0x31,0x26,0x66,0x3b, + 0x81,0x34,0xdc,0xf0,0xef,0x6d,0xae,0xb1,0xbb,0x15,0x5b,0x97,0x01,0x96, + 0x04,0x63,0xbc,0xb3,0x59,0x8c,0xa8,0xab,0xa8,0x4a,0xa4,0x3c,0x55,0xe4, + 0x8e,0xbb,0xa9,0x99,0x5e,0xbc,0x9a,0x7e,0xfc,0xec,0xf2,0xd3,0xff,0x7c, + 0xe1,0xa5,0x17,0xfb,0x8b,0xd7,0xc0,0x84,0x11,0xcb,0x7d,0x1c,0xa1,0x4c, + 0x4e,0x55,0x15,0xd5,0x0e,0x33,0x60,0x82,0x75,0x88,0x69,0x0c,0x5e,0x1a, + 0x1c,0x3d,0x86,0xd3,0x67,0x76,0x1d,0x3c,0xd6,0x7d,0xeb,0x3b,0x0e,0xef, + 0x3d,0x82,0xbc,0x3b,0xdc,0x18,0x5c,0xac,0x9a,0xe5,0x2c,0xcb,0x48,0xa7, + 0xca,0xbe,0xdb,0x33,0x7b,0x6f,0xd9,0x9b,0xf9,0xd2,0xe7,0x9e,0xfe,0xf4, + 0xdf,0xbc,0x32,0x5c,0x05,0x14,0xb6,0xc0,0xe1,0x63,0xf8,0x5f,0xfe,0xb7, + 0x77,0x1f,0x3e,0x61,0x94,0x7b,0x1b,0xfd,0x4b,0x79,0x27,0xe5,0x05,0x35, + 0x4d,0x23,0x32,0xf1,0xf5,0x11,0x24,0xb7,0x5a,0x3f,0x76,0x1b,0xc6,0xda, + 0x71,0x39,0x34,0xb2,0xac,0x88,0x41,0x42,0x88,0xed,0x2c,0x8f,0xc8,0x49, + 0x52,0x42,0x2a,0x87,0x4b,0xcc,0x5c,0x64,0x0b,0x53,0xc5,0x21,0x4b,0x0b, + 0xab,0x4b,0xe9,0xdc,0x2b,0x8b,0x97,0x2f,0xae,0x3f,0xf9,0xbd,0x17,0x57, + 0x57,0x70,0xfd,0x1a,0x36,0xd6,0x47,0xcc,0xa5,0x6d,0x3f,0x37,0xec,0xf9, + 0x33,0x00,0xd0,0x9d,0xc5,0x91,0x63,0x38,0x76,0x12,0x27,0x4e,0xed,0x3a, + 0x75,0xe7,0x81,0x13,0x27,0x0f,0x2c,0xec,0x9b,0x5e,0xde,0xb8,0xd8,0xaf, + 0xae,0x34,0xe9,0xba,0xf5,0xc1,0x18,0x15,0x61,0x48,0xe1,0xcc,0x6c,0x7f, + 0x83,0xf6,0xcc,0xdf,0x31,0x58,0xcf,0xbf,0xfd,0x0f,0x2f,0xfc,0xed,0xa7, + 0x2e,0x5c,0xbf,0x88,0xbb,0xee,0xc7,0x47,0xff,0xc7,0x87,0x1e,0x78,0x68, + 0x77,0xbf,0x3a,0x17,0xa5,0x6f,0x6c,0x00,0x85,0x24,0x0d,0x93,0x71,0x2e, + 0x8b,0x61,0x02,0x9e,0xfe,0x57,0x32,0xd6,0x04,0xbf,0x6b,0xfb,0x93,0x36, + 0x4d,0xcc,0xf3,0x5c,0x12,0xea,0xba,0x21,0x32,0x44,0xa4,0x42,0xd6,0xa1, + 0xc8,0x62,0x08,0x75,0x6c,0x1c,0xb4,0xf0,0x66,0x2e,0xf3,0x73,0xde,0x4e, + 0x33,0xe5,0x4d,0xad,0xab,0x2b,0xfd,0x2b,0x97,0xd7,0x2e,0x5f,0x5c,0xbe, + 0x7a,0x79,0x7d,0xf1,0x7a,0x6f,0x65,0x09,0x83,0x3e,0x9a,0x7a,0x94,0xd7, + 0xad,0x43,0x51,0x60,0x66,0xd6,0xce,0xcc,0x16,0x45,0x17,0xf7,0xdc,0x7b, + 0x62,0xf7,0xde,0xec,0xe0,0xe1,0xe9,0x5d,0x0b,0xde,0xb8,0xb2,0x6a,0x56, + 0xfb,0x83,0xe5,0x32,0x0c,0xba,0xdd,0xa2,0x0a,0x7d,0x70,0x3f,0xcb,0xc9, + 0x18,0x13,0x03,0xab,0x58,0x6b,0x8a,0xd0,0x68,0x68,0xec,0xae,0xd9,0xe3, + 0xd5,0xc0,0x7f,0xf5,0xcb,0xdf,0x3d,0xf7,0x6a,0x7c,0xf4,0xed,0x87,0xdf, + 0xf6,0xf6,0x7b,0x7b,0xe5,0xab,0x4d,0x5c,0xc9,0x0b,0xe3,0x33,0x1e,0x0c, + 0x7a,0xa2,0xa9,0xdd,0x69,0x62,0x8d,0xdf,0xbe,0x72,0x49,0x6e,0x26,0x1a, + 0xfd,0x1c,0xc6,0xda,0xae,0x6e,0xe9,0xf7,0xfb,0x73,0x73,0x73,0xc6,0x98, + 0x18,0xc4,0x5a,0x2b,0x22,0x4d,0x13,0xac,0x35,0xa1,0xda,0xe8,0x74,0x3a, + 0x45,0xd1,0x8d,0x01,0xbd,0x5e,0x7f,0x38,0xa8,0x98,0xed,0xa8,0x29,0x21, + 0x6f,0x4d,0x61,0x4d,0x97,0xd1,0x55,0xf1,0xb1,0x71,0x29,0x22,0x46,0x88, + 0x88,0x24,0x80,0xc4,0x18,0x93,0x65,0x2e,0xcb,0x9c,0xf3,0xa8,0x9b,0xbe, + 0xa0,0x8c,0xa9,0x17,0xa5,0x27,0x28,0x41,0xb5,0xb1,0x4a,0xc6,0x54,0xa5, + 0x76,0xa6,0xba,0xa0,0x7a,0x58,0xf6,0x54,0x50,0x14,0x5d,0x66,0x5b,0x55, + 0x55,0x51,0xb8,0xe1,0xb0,0x82,0x66,0xde,0x4e,0xf7,0x7b,0x81,0xe0,0xe6, + 0x77,0x4d,0x97,0xd5,0x06,0xb8,0x4c,0xa9,0x31,0x2d,0xc6,0x3f,0xaa,0x5d, + 0xb9,0xa9,0xa3,0xf7,0x7e,0x2c,0x4b,0xda,0xce,0x94,0x9c,0xf8,0xf6,0x95, + 0xdb,0x33,0xd6,0x0e,0xab,0x18,0x5b,0x60,0xa4,0xae,0xeb,0x94,0x52,0xa7, + 0xd3,0x69,0xb7,0x24,0x5b,0x6b,0x0d,0x21,0x85,0x3a,0x84,0x44,0x44,0xce, + 0x39,0x6b,0x59,0x55,0x92,0x84,0xb6,0x6e,0x50,0x25,0x49,0x46,0xa2,0x53, + 0xf1,0x50,0x0f,0x25,0x6b,0x6d,0x8b,0x05,0xb7,0xd4,0xb0,0x94,0x52,0x4a, + 0x21,0xa5,0x56,0x37,0x91,0x88,0x85,0x4d,0x64,0x56,0x50,0x54,0x6d,0xb7, + 0x57,0xe4,0x00,0x8f,0xa5,0x6f,0x9b,0x8c,0xc3,0xa0,0x1a,0x66,0x67,0x67, + 0x37,0x36,0x36,0x54,0x69,0xaa,0x3b,0x57,0xd7,0x4d,0x5d,0x57,0x00,0xa6, + 0x67,0xba,0x2d,0x03,0xc3,0x5a,0x6b,0xad,0xad,0xaa,0x4a,0x12,0xba,0xdd, + 0x6e,0x08,0x61,0x9b,0x4f,0xfd,0xeb,0x19,0x6b,0xe7,0x65,0x22,0xdb,0x43, + 0x7d,0x93,0xc2,0x3e,0xae,0xeb,0xb6,0xeb,0x7c,0x27,0xc4,0xa3,0x2d,0xe9, + 0x6b,0x44,0x2f,0x18,0xcb,0x57,0x26,0x15,0x6b,0xb4,0x6d,0x3f,0xcc,0xb6, + 0xe7,0x6f,0x09,0xb5,0x9b,0x0b,0xdc,0xe4,0x06,0x2d,0xc3,0xc4,0xf5,0xdf, + 0xc0,0x11,0xa5,0x1b,0xb5,0x0f,0x3b,0x88,0x33,0x7f,0xde,0x2d,0x47,0xb2, + 0xfd,0xbb,0x24,0x5e,0xe7,0x61,0xba,0x4d,0x85,0xa1,0xdb,0xbf,0xc6,0xa3, + 0x2d,0x0e,0xb6,0xf4,0x7d,0x0a,0x0a,0xe3,0x0b,0xb0,0x37,0x52,0x81,0x69, + 0x3b,0x6e,0x39,0xb9,0x57,0x6d,0x34,0xad,0xe2,0x31,0x69,0x7a,0xbc,0x2f, + 0xae,0x55,0x41,0x2a,0x8f,0x96,0x7a,0x52,0x82,0xca,0xa8,0xd7,0xdb,0x32, + 0xe5,0x24,0x3d,0x59,0x6e,0xfc,0x84,0x76,0x52,0xa4,0xd8,0xdb,0xac,0x18, + 0x6e,0x36,0xd9,0x4e,0x0a,0xcf,0x91,0x5b,0xe8,0x78,0xb8,0xb7,0xe5,0xd2, + 0x06,0x23,0xf5,0xfd,0xf6,0xcf,0x53,0x5b,0x8d,0x03,0x43,0x37,0x57,0x72, + 0xa6,0xed,0x5f,0xe1,0x84,0x91,0x75,0xc6,0xd4,0xd7,0x56,0xab,0x37,0x9e, + 0x2f,0x8c,0x77,0x50,0x8e,0x94,0x07,0x3c,0x16,0x80,0x8c,0x97,0x0e,0x2b, + 0xdf,0xa8,0x66,0xda,0x39,0x6e,0xc6,0x5b,0x08,0xe8,0x5f,0xa6,0x0a,0xfb, + 0x59,0xe5,0x95,0x8c,0xc6,0xfd,0x37,0xda,0xeb,0x86,0x48,0x1c,0x07,0x88, + 0xee,0x5c,0x70,0xdc,0xc4,0x6b,0xa5,0xd7,0x11,0x5e,0xed,0xf0,0x55,0x1f, + 0x23,0xc6,0xb4,0x80,0xda,0x4d,0x76,0x69,0xe2,0x5b,0x56,0xe4,0x26,0xee, + 0xe7,0x38,0x2c,0x48,0x6e,0xbd,0x15,0x9d,0x6e,0x0a,0x61,0xfc,0x3c,0x61, + 0xb8,0xf9,0x25,0x5d,0x9b,0x42,0xba,0x5b,0x87,0xe4,0x78,0x25,0xeb,0xd6, + 0x6e,0xa0,0x71,0x12,0xa1,0x1d,0x75,0xed,0x14,0x81,0x06,0xa4,0x13,0x5f, + 0x31,0xb3,0xf9,0x3c,0x66,0xeb,0x78,0xd9,0xe4,0x4f,0x51,0x04,0xd1,0xc4, + 0xf2,0xe9,0x49,0x39,0x7f,0x18,0xaf,0x2a,0x90,0x4d,0xcd,0x0c,0x30,0x99, + 0x28,0x27,0xbe,0x6d,0xeb,0xe6,0x05,0xd5,0xa3,0xbd,0xbc,0x3a,0x99,0xe0, + 0x6f,0xcf,0xb3,0x26,0x3f,0xbd,0x1d,0x29,0xcf,0x0c,0x95,0xf1,0x98,0x84, + 0x6e,0x55,0xe3,0xed,0x54,0xe5,0x6e,0x92,0x58,0x78,0xbb,0x5a,0x66,0x33, + 0x3d,0x9b,0x6d,0xe9,0x4f,0x2d,0xe0,0xc7,0x4b,0x5a,0x5b,0x0e,0x97,0x19, + 0x0b,0xdb,0x5a,0x4d,0x0b,0x4f,0xe0,0xc2,0x37,0x27,0x26,0xdc,0xc4,0x8e, + 0x9c,0xb0,0x14,0xb7,0xad,0xb5,0xdf,0xcc,0x72,0xb7,0x65,0xac,0x16,0x15, + 0x6a,0x53,0xcf,0x36,0x07,0xd6,0x9b,0x71,0x68,0xa1,0x30,0xe1,0x7a,0x3c, + 0xb1,0x18,0x68,0x92,0x94,0xb6,0x19,0x2f,0xa4,0x3a,0xa2,0x47,0xed,0xb0, + 0x49,0x61,0x04,0x33,0x6d,0xd7,0x2d,0xb7,0xcb,0x71,0x29,0x4c,0xc4,0x29, + 0x8f,0x72,0x19,0x25,0xa8,0x01,0xb5,0xb3,0x12,0xfc,0x8b,0xbf,0x17,0x44, + 0x47,0x96,0xa2,0x6a,0xec,0xc5,0xe6,0xb6,0x8d,0xc5,0x13,0xcb,0x6b,0x27, + 0x15,0x3c,0xba,0x53,0x6e,0xdf,0x14,0x46,0xf1,0xa6,0xba,0x60,0x64,0x08, + 0xdd,0x41,0x00,0xb3,0x2d,0xb9,0x6e,0x7d,0xd4,0xbc,0x5d,0xdf,0x28,0xdb, + 0x5f,0x97,0x77,0xfa,0xd6,0x36,0xde,0x96,0x80,0x76,0x7e,0x2d,0xdd,0x09, + 0x1a,0xe4,0xed,0x30,0x16,0xff,0x3c,0x39,0x8b,0x47,0xe4,0xc4,0x1b,0xf9, + 0xbb,0xb7,0x2c,0x4f,0x58,0x6f,0x95,0xb0,0xd3,0xc4,0x1b,0xde,0x74,0x55, + 0xda,0xce,0x8a,0x91,0xd7,0x6b,0xe0,0x75,0x3c,0xe3,0xbb,0xb9,0x14,0x68, + 0x85,0xa6,0xd0,0xad,0x0f,0xec,0x86,0x90,0xdf,0x61,0x65,0xf7,0xc4,0x42, + 0x36,0x25,0xc0,0x8f,0x5a,0xeb,0x89,0xa3,0xe0,0xb6,0x3c,0xeb,0x67,0x20, + 0x10,0xff,0x72,0xac,0xe2,0x5f,0xe5,0x4f,0xe4,0x75,0x3f,0xd7,0x5b,0x3d, + 0x46,0x5e,0xf7,0xd9,0x6e,0xf0,0x89,0x9f,0x25,0x47,0xf9,0xef,0xb7,0x7f, + 0xa1,0x9b,0xfc,0xf7,0xdb,0xce,0xb7,0xff,0x17,0xf0,0xc3,0x93,0x96,0x33, + 0xe5,0xd9,0x1c,0x00,0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; + +#include <qcstring.h> +#include <qdict.h> +static struct Embed { + unsigned int size; + const unsigned char *data; + const char *name; +} embed_vec[] = { + { 601, arrow_xbm_data, "arrow.xbm" }, + { 601, cross_xbm_data, "cross.xbm" }, + { 598, hand_xbm_data, "hand.xbm" }, + { 604, hsplit_xbm_data, "hsplit.xbm" }, + { 601, ibeam_xbm_data, "ibeam.xbm" }, + { 592, no_xbm_data, "no.xbm" }, + { 607, sizeall_xbm_data, "sizeall.xbm" }, + { 601, sizeb_xbm_data, "sizeb.xbm" }, + { 601, sizef_xbm_data, "sizef.xbm" }, + { 601, sizeh_xbm_data, "sizeh.xbm" }, + { 601, sizev_xbm_data, "sizev.xbm" }, + { 607, uparrow_xbm_data, "uparrow.xbm" }, + { 604, vsplit_xbm_data, "vsplit.xbm" }, + { 598, wait_xbm_data, "wait.xbm" }, + { 767, small_book_xpm_data, "small/book.xpm" }, + { 3100, small_databrowser_xpm_data, "small/databrowser.xpm" }, + { 3100, small_datatable_xpm_data, "small/datatable.xpm" }, + { 3164, small_dataview_xpm_data, "small/dataview.xpm" }, + { 4330, small_editdelete_xpm_data, "small/editdelete.xpm" }, + { 2428, small_editlower_xpm_data, "small/editlower.xpm" }, + { 2365, small_editraise_xpm_data, "small/editraise.xpm" }, + { 1483, small_form_xpm_data, "small/form.xpm" }, + { 3981, small_home_xpm_data, "small/home.xpm" }, + { 5406, small_image_xpm_data, "small/image.xpm" }, + { 3179, small_layout_xpm_data, "small/layout.xpm" }, + { 3621, small_left_xpm_data, "small/left.xpm" }, + { 1131, small_newform_xpm_data, "small/newform.xpm" }, + { 2434, small_print_xpm_data, "small/print.xpm" }, + { 3634, small_right_xpm_data, "small/right.xpm" }, + { 495, small_adjustsize_png_data, "small/adjustsize.png" }, + { 648, small_buttongroup_png_data, "small/buttongroup.png" }, + { 817, small_checkbox_png_data, "small/checkbox.png" }, + { 585, small_closebutton_png_data, "small/closebutton.png" }, + { 549, small_combobox_png_data, "small/combobox.png" }, + { 553, small_connecttool_png_data, "small/connecttool.png" }, + { 1133, small_customwidget_png_data, "small/customwidget.png" }, + { 505, small_dateedit_png_data, "small/dateedit.png" }, + { 965, small_datepicker_png_data, "small/datepicker.png" }, + { 1074, small_datetimeedit_png_data, "small/datetimeedit.png" }, + { 1024, small_dial_png_data, "small/dial.png" }, + { 744, small_editbreaklayout_png_data, "small/editbreaklayout.png" }, + { 485, small_editcopy_png_data, "small/editcopy.png" }, + { 649, small_editcut_png_data, "small/editcut.png" }, + { 520, small_editgrid_png_data, "small/editgrid.png" }, + { 706, small_edithlayout_png_data, "small/edithlayout.png" }, + { 809, small_edithlayoutsplit_png_data, "small/edithlayoutsplit.png" }, + { 902, small_editpaste_png_data, "small/editpaste.png" }, + { 690, small_editslots_png_data, "small/editslots.png" }, + { 289, small_editvlayout_png_data, "small/editvlayout.png" }, + { 355, small_editvlayoutsplit_png_data, "small/editvlayoutsplit.png" }, + { 1408, small_exec_png_data, "small/exec.png" }, + { 313, small_filenew_png_data, "small/filenew.png" }, + { 681, small_fileopen_png_data, "small/fileopen.png" }, + { 328, small_filesave_png_data, "small/filesave.png" }, + { 400, small_frame_png_data, "small/frame.png" }, + { 439, small_groupbox_png_data, "small/groupbox.png" }, + { 837, small_help_png_data, "small/help.png" }, + { 613, small_iconview_png_data, "small/iconview.png" }, + { 1155, small_konsole_png_data, "small/konsole.png" }, + { 953, small_label_png_data, "small/label.png" }, + { 558, small_lcdnumber_png_data, "small/lcdnumber.png" }, + { 461, small_lineedit_png_data, "small/lineedit.png" }, + { 287, small_line_png_data, "small/line.png" }, + { 386, small_listbox_png_data, "small/listbox.png" }, + { 759, small_listview_png_data, "small/listview.png" }, + { 454, small_multilineedit_png_data, "small/multilineedit.png" }, + { 587, small_ordertool_png_data, "small/ordertool.png" }, + { 1229, small_pixlabel_png_data, "small/pixlabel.png" }, + { 586, small_pointer_png_data, "small/pointer.png" }, + { 609, small_progress_png_data, "small/progress.png" }, + { 408, small_pushbutton_png_data, "small/pushbutton.png" }, + { 586, small_radiobutton_png_data, "small/radiobutton.png" }, + { 592, small_redo_png_data, "small/redo.png" }, + { 834, small_richtextedit_png_data, "small/richtextedit.png" }, + { 408, small_scrollbar_png_data, "small/scrollbar.png" }, + { 843, small_searchfind_png_data, "small/searchfind.png" }, + { 1053, small_shellscript_png_data, "small/shellscript.png" }, + { 729, small_slider_png_data, "small/slider.png" }, + { 715, small_spacer_png_data, "small/spacer.png" }, + { 455, small_spinbox_png_data, "small/spinbox.png" }, + { 294, small_statusbar_png_data, "small/statusbar.png" }, + { 483, small_table_png_data, "small/table.png" }, + { 572, small_tabwidget_png_data, "small/tabwidget.png" }, + { 514, small_textbrowser_png_data, "small/textbrowser.png" }, + { 497, small_textedit_png_data, "small/textedit.png" }, + { 498, small_textview_png_data, "small/textview.png" }, + { 1520, small_timeedit_png_data, "small/timeedit.png" }, + { 1462, small_timer_png_data, "small/timer.png" }, + { 1262, small_toolbutton_png_data, "small/toolbutton.png" }, + { 572, small_undo_png_data, "small/undo.png" }, + { 733, small_disabled_editcut_xpm_data, "small/disabled/editcut.xpm" }, + { 899, small_disabled_editslots_xpm_data, "small/disabled/editslots.xpm" }, + { 931, small_disabled_layout_xpm_data, "small/disabled/layout.xpm" }, + { 733, small_disabled_left_xpm_data, "small/disabled/left.xpm" }, + { 733, small_disabled_right_xpm_data, "small/disabled/right.xpm" }, + { 659, small_disabled_adjustsize_png_data, "small/disabled/adjustsize.png" }, + { 836, small_disabled_connecttool_png_data, "small/disabled/connecttool.png" }, + { 1126, small_disabled_editbreaklayout_png_data, "small/disabled/editbreaklayout.png" }, + { 931, small_disabled_editcopy_png_data, "small/disabled/editcopy.png" }, + { 735, small_disabled_editgrid_png_data, "small/disabled/editgrid.png" }, + { 601, small_disabled_edithlayout_png_data, "small/disabled/edithlayout.png" }, + { 754, small_disabled_edithlayoutsplit_png_data, "small/disabled/edithlayoutsplit.png" }, + { 901, small_disabled_editpaste_png_data, "small/disabled/editpaste.png" }, + { 617, small_disabled_editvlayout_png_data, "small/disabled/editvlayout.png" }, + { 752, small_disabled_editvlayoutsplit_png_data, "small/disabled/editvlayoutsplit.png" }, + { 587, small_disabled_filesave_png_data, "small/disabled/filesave.png" }, + { 531, small_disabled_redo_png_data, "small/disabled/redo.png" }, + { 1013, small_disabled_searchfind_png_data, "small/disabled/searchfind.png" }, + { 541, small_disabled_undo_png_data, "small/disabled/undo.png" }, + { 1447, mini_down_xpm_data, "mini/down.xpm" }, + { 991, mini_form_xpm_data, "mini/form.xpm" }, + { 510, mini_image_xpm_data, "mini/image.xpm" }, + { 1405, mini_left_xpm_data, "mini/left.xpm" }, + { 180, mini_resetproperty_xpm_data, "mini/resetproperty.xpm" }, + { 1573, mini_right_xpm_data, "mini/right.xpm" }, + { 1378, mini_up_xpm_data, "mini/up.xpm" }, + { 15068, background_png_data, "background.png" }, + { 12615, qtlogo_png_data, "qtlogo.png" }, + { 0, 0, 0 } +}; + +static const QByteArray& qembed_findData( const char* name ) +{ + static QDict<QByteArray> dict; + QByteArray* ba = dict.find( name ); + if ( !ba ) { + for ( int i = 0; embed_vec[i].data; i++ ) { + if ( strcmp(embed_vec[i].name, name) == 0 ) { + ba = new QByteArray; + ba->setRawData( (char*)embed_vec[i].data, + embed_vec[i].size ); + dict.insert( name, ba ); + break; + } + } + if ( !ba ) { + static QByteArray dummy; + return dummy; + } + } + return *ba; +} + +#endif diff --git a/kommander/editor/pics/kfontcombo.png b/kommander/editor/pics/kfontcombo.png Binary files differnew file mode 100644 index 00000000..87835d6c --- /dev/null +++ b/kommander/editor/pics/kfontcombo.png diff --git a/kommander/editor/pics/kommandersplash.png b/kommander/editor/pics/kommandersplash.png Binary files differnew file mode 100644 index 00000000..cbc8f863 --- /dev/null +++ b/kommander/editor/pics/kommandersplash.png diff --git a/kommander/editor/pics/large/adjustsize.xpm b/kommander/editor/pics/large/adjustsize.xpm new file mode 100644 index 00000000..26afadb6 --- /dev/null +++ b/kommander/editor/pics/large/adjustsize.xpm @@ -0,0 +1,187 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 149 2", +" c #181800000000", +". c #212108080808", +"X c #292900000000", +"o c #292908080808", +"O c #292918181818", +"+ c #313108080000", +"@ c #4a4a08080000", +"# c #424218181818", +"$ c #525208080000", +"% c #525210100000", +"& c #636310100808", +"* c #737318180808", +"= c #7b7b10100000", +"- c #7b7b21211010", +"; c #7b7b29291818", +": c #6b6b39393131", +"> c #737329292121", +", c #737339393131", +"< c #636342423939", +"1 c #7b7b42423131", +"2 c #5a5a4a4a4242", +"3 c #7b7b5a5a5252", +"4 c #7b7b6b6b6363", +"5 c #7b7b73737373", +"6 c #7b7b7b7b7b7b", +"7 c #848421211010", +"8 c #848429291818", +"9 c #8c8c29291818", +"0 c #949421211010", +"q c #8c8c39392929", +"w c #848439393131", +"e c #949431312121", +"r c #949439392929", +"t c #a5a521210808", +"y c #a5a529291818", +"u c #adad31311818", +"i c #bdbd31311818", +"p c #a5a539392929", +"a c #b5b539392121", +"s c #bdbd39392929", +"d c #949442423131", +"f c #adad4a4a3939", +"g c #b5b542422929", +"h c #bdbd42422929", +"j c #bdbd42423131", +"k c #bdbd4a4a3131", +"l c #8c8c4a4a4242", +"z c #848452524a4a", +"x c #84845a5a5252", +"c c #8c8c5a5a5252", +"v c #949452524a4a", +"b c #9c9c52524242", +"n c #949463635a5a", +"m c #84846b6b6363", +"M c #8c8c6b6b6363", +"N c #8c8c6b6b6b6b", +"B c #8c8c73736b6b", +"V c #8c8c7b7b7b7b", +"C c #9c9c73736b6b", +"Z c #949473737373", +"A c #9c9c7b7b7373", +"S c #a5a552524a4a", +"D c #a5a55a5a5252", +"F c #b5b552524242", +"G c #bdbd52524242", +"H c #bdbd5a5a4a4a", +"J c #adad63635a5a", +"K c #a5a57b7b7373", +"L c #adad7b7b7b7b", +"P c #b5b56b6b6363", +"I c #d6d631311818", +"U c #c6c639392929", +"Y c #c6c642422929", +"T c #c6c642423131", +"R c #c6c64a4a3131", +"E c #c6c64a4a3939", +"W c #cece42423131", +"Q c #cece4a4a3131", +"! c #cece4a4a3939", +"~ c #cece52523939", +"^ c #d6d64a4a3131", +"/ c #d6d64a4a3939", +"( c #d6d652523939", +") c #dede52523939", +"_ c #e7e742422121", +"` c #cece52524242", +"' c #d6d652524242", +"] c #dede52524242", +"[ c #dede5a5a4242", +"{ c #c6c66b6b5a5a", +"} c #cece63635252", +"| c #dede63635252", +" . c #c6c673736363", +".. c #c6c673736b6b", +"X. c #cece7b7b6b6b", +"o. c #d6d673736363", +"O. c #e7e75a5a4242", +"+. c #e7e75a5a4a4a", +"@. c #ffff5a5a4242", +"#. c #e7e763634a4a", +"$. c #efef63634a4a", +"%. c #e7e76b6b5252", +"&. c #efef6b6b5252", +"*. c #ffff6b6b5252", +"=. c #f7f773735a5a", +"-. c #ffff73735a5a", +";. c #ffff7b7b6363", +":. c #949484847b7b", +">. c #adad84847b7b", +",. c #b5b584847b7b", +"<. c #bdbd8c8c7b7b", +"1. c #cece8c8c7b7b", +"2. c #ffff84846b6b", +"3. c #ffff8c8c6b6b", +"4. c #ffff9c9c7b7b", +"5. c #949484848484", +"6. c #94948c8c8c8c", +"7. c #9c9c8c8c8c8c", +"8. c #9c9c94949494", +"9. c Gray61", +"0. c #a5a584848484", +"q. c #adad8c8c8484", +"w. c #adad94948c8c", +"e. c #a5a59c9c9c9c", +"r. c #adad9c9c9494", +"t. c #adad9c9c9c9c", +"y. c #bdbd8c8c8484", +"u. c #b5b594948c8c", +"i. c #bdbd94948c8c", +"p. c #b5b594949494", +"a. c #b5b59c9c9c9c", +"s. c #bdbd9c9c9494", +"d. c #bdbda5a59c9c", +"f. c #a5a5a5a5a5a5", +"g. c #adada5a5a5a5", +"h. c #adadadada5a5", +"j. c Gray68", +"k. c #b5b5a5a5a5a5", +"l. c #b5b5adadadad", +"z. c #bdbda5a5a5a5", +"x. c #bdbdadada5a5", +"c. c Gray71", +"v. c #bdbdb5b5b5b5", +"b. c Gray74", +"n. c #c6c694948484", +"m. c #c6c694948c8c", +"M. c #c0c0c0c0c0c0", +"N. c #c6c6c6c6c6c6", +"B. c None", +/* pixels */ +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.y.=.#.w.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B. .$.( M B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.K ] T N B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.>.) h V B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.w.( j 8.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.p.] g 8.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.b.<.1.} ' R H ..K b.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.C U ( ~ ~ ! y 3 B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.b.b T ~ ! a , c.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.j.p T h ; f.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.e.e 8 6.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.g.g.N.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.b.i.r.N.B.B.B.B.B.v.u.q.t.b.B.B.B.B.B.z.y.b.B.B.B.B.B.", +"B.B.B.B.B.b.X.^ L b.B.B.B.t.Y _ I 0 c b.B.B.b.s.2.o.b.B.B.B.B.B.", +"k.i.a.x.v.v.{ ) ( J c.B.c.h @.3.*.i = 4 B.b.n.;.O.G l.v.x.d.m.k.", +"| &.#.#.+.%.' ! ~ ^ S b.0.I -.4.=.a * # v.<.-.( E R ( #.#.+.) d ", +"` ) Q Y j h Q ~ ! h 9 j.A t ^ [ j 9 & o e.H ^ ! R ! h g s h Y q ", +"C w z m V :.F Q g - 6.B.7.* 0 0 7 & + O b.f.q s Q k 5 5.B x 1 N ", +"b.b.b.B.B.B.P u > 9.B.B.b.< $ % @ X 6 B.B.j.l a F b.B.B.b.b.b.", +"B.B.B.B.B.B.n : j.B.B.B.B.c.2 . . . 5 b.B.B.B.b.M w b.B.B.B.B.B.", +"B.B.B.B.B.B.c.v.B.B.B.B.B.B.b.j.e.c.N.B.B.B.B.B.b.c.b.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.b.1.{ h.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.b.n.=.) f c.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.a.-.( ! T D b.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.l.=.[ Q R Q U A B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.,.[ E R ! R j r c.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.v.c.t.k s M c.c.b.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.b.` h Z B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.l.~ Y M B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.a./ Y v b.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.w.W Y d b.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.g.q 8 x b.B.B.B.B.B.B.B.B.B.B.B.B.B." +}; diff --git a/kommander/editor/pics/large/buttongroup.xpm b/kommander/editor/pics/large/buttongroup.xpm new file mode 100644 index 00000000..ee18a3ab --- /dev/null +++ b/kommander/editor/pics/large/buttongroup.xpm @@ -0,0 +1,79 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 41 1", +" c #060606060606", +". c #0e0e0e0e0e0e", +"X c #1e1e00000000", +"o c #161616161616", +"O c #1e1e1e1e1e1e", +"+ c #262600000000", +"@ c Gray15", +"# c #282828282626", +"$ c Gray18", +"% c Gray21", +"& c #3e3e3e3e3e3e", +"* c #4e4e00000000", +"= c #5e5e00000000", +"- c #6c6c00000000", +"; c #464646464646", +": c #4e4e4e4e4e4e", +"> c #565656565656", +", c Gray37", +"< c Gray40", +"1 c Gray43", +"2 c #767676767676", +"3 c Gray", +"4 c #000000008686", +"5 c #000000008e8e", +"6 c #000000009696", +"7 c #000000009c9c", +"8 c #00000000a4a4", +"9 c #00000000aeae", +"0 c #00000000b6b6", +"q c #00000000bcbc", +"w c #aaaa00000000", +"e c #bebe00000000", +"r c #c6c600000000", +"t c #cccc00000000", +"y c #d4d400000000", +"u c Red", +"i c #848484848484", +"p c Gray55", +"a c Gray59", +"s c #c0c0c0c0c0c0", +"d c None", +/* pixels */ +"ddddddaOo.........$ddddddddddddd", +"ddaaaa% 1iiiapp3ipadd", +"daaaip@ <3221222221id", +"dp311< $&&&&;:,1<1<d", +"d31<O,< oaaaaaai1$11,d", +"d32&1ddaaaaaaaaaaaddddddddda:1>d", +"d22Oaddddddddddddddddddddddd:2,d", +"d12.adae:add1:::::::::::>idd>1<d", +"d12.ddruw%daqqqqqqqqqqqqq$dd>2,d", +"d22.dawe*.daqqq0000009989$dd<2,d", +"d12.dd# $da6554444444446$dd<2,d", +"d12.dda>,addi122222222221add,2,d", +"d12.dddddddddddddddddddddddd>2,d", +"d12.dddddddddddddddddddddddd>2>d", +"d22.ddd:,add1,,<,,pddddddddd,2>d", +"d22.ddeur$daqqqqqq;ddddddddd,2>d", +"d22.dawt=.aaq99998;ddddddddd,2:d", +"d22.dd$X $da865556;ddddddddd,2:d", +"d22 dda:>add1,:::,pddddddddd,2,d", +"d12.dddddddddddddddddddddddd,2,d", +"d12oaddddddddddddddddddddddd,2>d", +"d12oada>>add2,<,<,<,<,<,,add>2:d", +"d32@adtur@ddqqqqqqqqqqqqq;dd,2>d", +"d22@adwy-.aa9998999988876&dd,1,d", +"d22Oad%+ @dd7767666666666;dd>2,d", +"d12@ada,,add<>>>>>>>>>>>:ida<1>d", +"d31%3dddddddddddddddddddddda<1,d", +"d22:>ddddddddddddddddddddddp21,d", +"d211@,paadaadaaddddddddaaaai21>d", +"di1<2112223323211111112333i3<11d", +"da,11111121211221222221111111:pd", +"dda<>>,>:>,<,,>:::::>::>,>:>,3dd" +}; diff --git a/kommander/editor/pics/large/checkbox.xpm b/kommander/editor/pics/large/checkbox.xpm new file mode 100644 index 00000000..7baf3ccb --- /dev/null +++ b/kommander/editor/pics/large/checkbox.xpm @@ -0,0 +1,67 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 29 1", +" c #272727272727", +". c Gray18", +"X c #373737373737", +"o c #3f3f3f3f3f3f", +"O c Gray28", +"+ c Gray31", +"@ c Gray34", +"# c #5f5f5f5f5f5f", +"$ c #676767676767", +"% c Gray42", +"& c #777777777777", +"* c Gray50", +"= c Gray52", +"- c Gray56", +"; c #929292929292", +": c #9f9f9f9f9f9f", +"> c #a7a7a7a7a7a7", +", c #afafafafafaf", +"< c #b4b4b4b4b4b4", +"1 c Gray75", +"2 c #c0c0c0c0c0c0", +"3 c Gray78", +"4 c #cbcbcbcbcbcb", +"5 c #d5d5d5d5d5d5", +"6 c #dadadadadada", +"7 c Gray89", +"8 c Gray97", +"9 c Gray100", +"0 c None", +/* pixels */ +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000>&$##@@#@@+@@@#:00000000", +"0000000,&$++OoOoOOOOOO@o:0000000", +"0000000&@.+-::>>>>::;#XO@0000000", +"0000000#O@+<999999994#&OO0000000", +"0000000@o,1o,9999993+<8@o0000000", +"0000000@o<9<o,99993O,98$X0000000", +"0000000@o199>X,993O:998$X0000000", +"0000000+o1999,X=>+:9998$X0000000", +"0000000+o19999*Xo$99998$X0000000", +"0000000@o19999;oX$99998$X0000000", +"0000000@o<9996++$X<9999#X0000000", +"0000000@o<995@=88>o<998#X0000000", +"0000000#X,97@=9999:X198$X0000000", +"0000000#o:7@-999999,X19#o0000000", +"0000000#o*$=99999999>X<#o0000000", +"0000000&oO&9999999999:$o+0000000", +"0000000>.o#%====*=*=&%O -0000000", +"00000000;+X..........Xo*10000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000" +}; diff --git a/kommander/editor/pics/large/combobox.xpm b/kommander/editor/pics/large/combobox.xpm new file mode 100644 index 00000000..e82d7b7d --- /dev/null +++ b/kommander/editor/pics/large/combobox.xpm @@ -0,0 +1,192 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 154 2", +" c Gray0", +". c #737300002929", +"X c #424200006363", +"o c #424200007b7b", +"O c Gray39", +"+ c #6b6b6b6b6363", +"@ c Gray42", +"# c #737373736b6b", +"$ c #73737b7b6b6b", +"% c #7b7b7b7b6b6b", +"& c Gray45", +"* c #7b7b7b7b7373", +"= c #7b7b7b7b7b7b", +"- c #181800008c8c", +"; c #08080808b5b5", +": c #08080808bdbd", +"> c #10100000adad", +", c #18181818a5a5", +"< c #18181818adad", +"1 c #10101010b5b5", +"2 c #18181818bdbd", +"3 c #313100009c9c", +"4 c #393900009494", +"5 c #21210000bdbd", +"6 c #292929298c8c", +"7 c #292929299494", +"8 c #313131318c8c", +"9 c #393939399494", +"0 c #29292929adad", +"q c #21212121bdbd", +"w c #29292929b5b5", +"e c #00000000cece", +"r c #08080808c6c6", +"t c #08080808cece", +"y c #00000000d6d6", +"u c #00000000dede", +"i c #08080808d6d6", +"p c #08080808dede", +"a c #10101010c6c6", +"s c #10101010cece", +"d c #18181818cece", +"f c #10101010d6d6", +"g c #10101010dede", +"h c #18181818d6d6", +"j c #00000000e7e7", +"k c #00000000efef", +"l c #08080808e7e7", +"z c #00000000f7f7", +"x c Blue", +"c c #00000808ffff", +"v c #08080808ffff", +"b c #10100000f7f7", +"n c #10101010e7e7", +"m c #18181818efef", +"M c #10101010ffff", +"N c #21210000c6c6", +"B c #21210000cece", +"V c #29290000cece", +"C c #21212121c6c6", +"Z c #21212121cece", +"A c #21212929cece", +"S c #21212121d6d6", +"D c #21212121dede", +"F c #29292929dede", +"G c #29292929e7e7", +"H c #21212121ffff", +"J c #21212929ffff", +"K c #29292929ffff", +"L c #31313131efef", +"P c #39393939ffff", +"I c #39394242ffff", +"U c #39394a4affff", +"Y c #4a4a4a4a9494", +"T c #42424242b5b5", +"R c #52525252b5b5", +"E c #5a5a5a5abdbd", +"W c #6b6b6b6b9494", +"Q c #7b7b7b7b8484", +"! c #7b7b7b7b9c9c", +"~ c #63636b6ba5a5", +"^ c #63636b6badad", +"/ c #7b7b7b7bb5b5", +"( c #4a4a4a4acece", +") c #4a4a4a4affff", +"_ c #52525a5affff", +"` c #5a5a5a5affff", +"' c #6b6b6b6bc6c6", +"] c #6b6b6b6bcece", +"[ c #6b6b6b6bd6d6", +"{ c #73737373cece", +"} c #63636363ffff", +"| c #63636b6bffff", +" . c #6b6b6b6bffff", +".. c #7b7b7b7be7e7", +"X. c #9c9c00001010", +"o. c #bdbd00001818", +"O. c #a5a500003131", +"+. c #bdbd00002121", +"@. c #efef00000000", +"#. c #f7f700000000", +"$. c Red", +"%. c #848484847b7b", +"&. c #8c8c8c8c7b7b", +"*. c #8c8c8c8c8484", +"=. c Gray55", +"-. c #949494948484", +";. c #949494948c8c", +":. c Gray58", +">. c #9c9c9c9c9494", +",. c #84848484bdbd", +"<. c #94949494bdbd", +"1. c #9c9c9c9cb5b5", +"2. c #a5a5a5a59c9c", +"3. c #a5a5a5a5a5a5", +"4. c Gray68", +"5. c #a5a5a5a5b5b5", +"6. c #adadadadb5b5", +"7. c Gray74", +"8. c #84848484c6c6", +"9. c #8c8c8c8ccece", +"0. c #94949494cece", +"q. c #94949494d6d6", +"w. c #9c9c9c9cd6d6", +"e. c #84848484ffff", +"r. c #8c8c8c8cffff", +"t. c #94949494ffff", +"y. c #a5a5a5a5dede", +"u. c #adadadadd6d6", +"i. c #b5b5b5b5c6c6", +"p. c #bdbdbdbdcece", +"a. c #b5b5b5b5d6d6", +"s. c #bdbdbdbdd6d6", +"d. c #adadadade7e7", +"f. c #bdbdbdbde7e7", +"g. c #bdbdbdbdffff", +"h. c #c0c0c0c0c0c0", +"j. c #d6d6d6d6cece", +"k. c #dedededed6d6", +"l. c Gray87", +"z. c #ceced6d6ffff", +"x. c #dedededef7f7", +"c. c #dedededeffff", +"v. c #efefefefdede", +"b. c #e7e7e7e7e7e7", +"n. c #e7e7e7e7efef", +"m. c #efefefeff7f7", +"M. c #efefefefffff", +"N. c #efeff7f7e7e7", +"B. c #f7f7f7f7e7e7", +"V. c #ffffffffefef", +"C. c Gray97", +"Z. c #fffffffff7f7", +"A. c Gray100", +"S. c None", +/* pixels */ +"W A m l l l l l v v v v v v v v l l l l l l l p v v v n f Z Y 4.", +"f x k h F F F D A A Z Z Z Z Z Z Z Z S S d d g x B N N N V V b Y ", +"p x w v.V.V.V.Z.Z.Z.Z.V.Z.Z.V.Z.V.Z.V.V.V.Z.m.L o.$.$.$.#.#.4 q ", +"p x R Z.M.r.e.e.e.e.e.e.e.e.e.e.e.e.e.e.e.d.A.U o $.$.$.$.X.k 2 ", +"p x E Z.g.z x x z x z x z z z x z x z x z 6 V.) z +.$.$.@.- x 2 ", +"p x E Z.n.{ [ ] ] ] ] ' ' ' ' ' ] ] ] ] ] 1.A.) x 3 $.$.. z x t ", +"p x ( Z.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.P x x O.@.> x x t ", +"l x M _ } } } } } } } } } } } } | } } } ` _ _ c x x 5 X x x x t ", +"< i i y u x x x k k k k k k k z k k k k k k j k j j j k z x x t ", +"4.3.3.2.Q j z T 9.y.u.u.a.a.f.f.s.s.s.p.p.S.p.i.6.6.5.<...v x t ", +"S.S.S.S.S.g y j.B.2.*.*.*.*.*.*.*.*.*.*.=.=.*.*.=.=.>.N.A.K x t ", +"S.S.S.S.7.S t C.# = A.P x t ", +"S.S.S.S.7.q s Z.@ + A.I x t ", +"S.S.S.S.7.C a Z.@ + A.P x t ", +"S.S.S.S.7.q h A.@ = A.I x t ", +"S.S.S.S.7.q Z Z.k.-.&.% % % % % % % % % % % % % % &.-.k.A.P x t ", +"S.S.S.S.7.q S V.c.t.t.r.r.r.r.r.r.r.r.r.r.r.r.r.r.t.t.x.A.P x t ", +"S.S.S.S.7.q S V. .x x x x x x x x x x x x x x x x x k / A.P x t ", +"S.S.S.S.7.q F Z. .x x x x x x x x x x x x x x x x x j ^ A.I x t ", +"S.S.S.S.7.q G V. .x x x x x x x x x x x x x x x x x k ~ A.P x t ", +"S.S.S.S.7.q D Z.{ k k k k k k k j k j k k j k k k k e ! A.P x t ", +"S.S.S.S.7.q F V.l.w.0.9.8.8.,.,.,.,.,.,.,.,.8.8.9.0.0.b.A.P x t ", +"S.S.S.S.7.q Z C.l.>.*.&.% $ * $ # # # # # * $ % %.-.;.l.A.I x t ", +"S.S.S.S.7.q S A.@ * A.I x t ", +"S.S.S.S.7.q h Z.@ O A.P x t ", +"S.S.S.S.7.q a Z.@ + A.P x t ", +"S.S.S.S.7.q t A.& %.A.P x r ", +"S.S.S.S.7.q p b.b.3.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.2.b.A.K x 1 ", +"S.S.S.S.7.q x q.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.z.v x 2 ", +"S.S.S.S.7.0 x x H J P P P I I I P P P P I I I P P P J H M x x , ", +"S.S.S.S.S.9 x x x x x x x x x x x x x x x x x x x x x x x x x 8 ", +"S.S.S.S.S.:.7 < ; r t t t r t t t t t t t t r r t t r : 1 , 8 :." +}; diff --git a/kommander/editor/pics/large/connecttool.xpm b/kommander/editor/pics/large/connecttool.xpm new file mode 100644 index 00000000..8a13ff93 --- /dev/null +++ b/kommander/editor/pics/large/connecttool.xpm @@ -0,0 +1,187 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 149 2", +" c #101021217b7b", +". c #181829297b7b", +"X c #292931317b7b", +"o c #39394a4a7b7b", +"O c #7b7b08080808", +"+ c #7b7b18181818", +"@ c #7b7b21212121", +"# c #000008089494", +"$ c #00001010a5a5", +"% c #00001818b5b5", +"& c #00001818bdbd", +"* c #101021218484", +"= c #181829299c9c", +"- c #10102929adad", +"; c #18182929adad", +": c #21213131adad", +"> c #21213939bdbd", +", c #00001818efef", +"< c #00002121d6d6", +"1 c #00002121dede", +"2 c #10102929d6d6", +"3 c #10103131cece", +"4 c #18183939c6c6", +"5 c #00002121e7e7", +"6 c #00002121efef", +"7 c #00002929efef", +"8 c #00002121f7f7", +"9 c #00002929f7f7", +"0 c #00002929ffff", +"q c #08082929f7f7", +"w c #08083131f7f7", +"e c #08083131ffff", +"r c #10103131efef", +"t c #10103131f7f7", +"y c #10103939ffff", +"u c #18183939ffff", +"i c #29294242bdbd", +"p c #31314242b5b5", +"a c #31314242bdbd", +"s c #31314a4abdbd", +"d c #39394a4abdbd", +"f c #39395252bdbd", +"g c #18184242ffff", +"h c #21214242efef", +"j c #21214a4affff", +"k c #29295252ffff", +"l c #31315252ffff", +"z c #39396363ffff", +"x c #4a4a52528c8c", +"c c #52525a5a8484", +"v c #4a4a5a5abdbd", +"b c #52526363b5b5", +"n c #7b7b7b7b9494", +"m c #6b6b7373b5b5", +"M c #42425252d6d6", +"N c #4a4a6363d6d6", +"B c #52527373ffff", +"V c #63637b7bffff", +"C c #7b7b8484b5b5", +"Z c #73739494ffff", +"A c #73739c9cffff", +"S c #7b7ba5a5ffff", +"D c #848408080808", +"F c #9c9c08080808", +"G c #848431312929", +"H c #848439393939", +"J c #8c8c39393131", +"K c #a5a508080808", +"L c #adad08080808", +"P c #b5b508080808", +"I c #bdbd10101010", +"U c #b5b531313131", +"Y c #84844a4a4242", +"T c #949442424242", +"R c #94944a4a4a4a", +"E c #9c9c4a4a4a4a", +"W c #949452525252", +"Q c #94945a5a5a5a", +"! c #9c9c5a5a5a5a", +"~ c #9c9c6b6b6b6b", +"^ c #adad73737373", +"/ c #bdbd63636363", +"( c #bdbd73737373", +") c #c6c610101010", +"_ c #c6c618181818", +"` c #cece10101010", +"' c #cece18181818", +"] c #d6d610101010", +"[ c #dede10101010", +"{ c #dede18181818", +"} c #c6c621212121", +"| c #cece21212121", +" . c #cece31313131", +".. c #dede31313131", +"X. c #e7e710101010", +"o. c #e7e718181818", +"O. c #efef10101010", +"+. c #efef18181818", +"@. c #f7f710101010", +"#. c #f7f718181818", +"$. c #ffff18181818", +"%. c #efef21212121", +"&. c #e7e731313131", +"*. c #f7f721212121", +"=. c #ffff21212121", +"-. c #ffff29292929", +";. c #cece52525252", +":. c #d6d642424242", +">. c #dede42424242", +",. c #d6d65a5a5a5a", +"<. c #cece63636363", +"1. c #ffff4a4a4a4a", +"2. c #ffff5a5a5a5a", +"3. c #ffff63636363", +"4. c #ffff6b6b6b6b", +"5. c #ffff73737373", +"6. c #8c8c84849494", +"7. c #9c9c84848484", +"8. c #94948c8c9c9c", +"9. c #8c8c9494b5b5", +"0. c #94949494adad", +"q. c #9c9c9c9cadad", +"w. c #94949494b5b5", +"e. c #94949c9cb5b5", +"r. c #9c9ca5a5b5b5", +"t. c #9c9ca5a5bdbd", +"y. c #adad8c8c8c8c", +"u. c #adad94949494", +"i. c #adad9c9c9c9c", +"p. c #bdbd8c8c8c8c", +"a. c #a5a5a5a5adad", +"s. c #adada5a5a5a5", +"d. c #adadadada5a5", +"f. c Gray68", +"g. c #a5a5adadb5b5", +"h. c #b5b5adadadad", +"j. c Gray71", +"k. c #b5b5bdbdbdbd", +"l. c #bdbdb5b5b5b5", +"z. c Gray74", +"x. c #8484adadffff", +"c. c #bdbdc6c6c6c6", +"v. c #ffffa5a5a5a5", +"b. c #ffffb5b5b5b5", +"n. c #ffffbdbdbdbd", +"m. c #c0c0c0c0c0c0", +"M. c #c6c6c6c6c6c6", +"N. c #ffffc6c6c6c6", +"B. c None", +/* pixels */ +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.l./ .| | ' | ' _ } U ! y.z.B.B.e.v d s a s d i p f b m 0.z.B.", +"z.,.3.5.5.5.4.4.3.2.1.%.[ L R j.k.h l l k j u y w t w 7 5 % x z.", +"( 1.b.n.n.n.N.N.n.b.v.4.-.{ L G i.N V Z Z S x.x.A V B z j 7 # n ", +">.$.#.*.#.*.*.=.*.*.#.*.%.+.{ L @ 6.3 , 8 7 q r t t w q 7 6 % o ", +"&.#.+.+.+.+.+.o.+.X.o.o.o.o.o.' P J 6.4 5 5 5 5 5 5 5 5 5 1 & X ", +"..#.+.o.o.o.o.o.o.o.o.o.o.o.o.o.{ K G 8.i 5 5 5 5 5 5 5 1 1 & . ", +"..#.o.o.o.o.o.{ o.o.o.{ o.o.o.o.o.' K Y a.> 5 1 5 1 5 1 5 < & . ", +">.+.o.o.o.o.{ o.o.o.{ o.o.{ { o.o.o.` O i.q.< 5 1 5 1 5 1 1 & ", +":.#.+.o.o.o.o.o.{ { o.{ { X.o.{ { { ' D s.z.2 5 5 1 5 1 1 1 & * ", +";.#.o.o.o.{ o.{ o.[ o.{ o.{ { [ { ] I Y B.w.9 6 5 1 5 5 1 < & * ", +"<.@.o.o.{ o.{ X.{ o.{ { [ { { { ' I + h.t.r e 7 5 5 1 5 1 1 & ", +"( O.o.o.o.[ { o.{ { [ o.{ { [ _ L @ f.9.9 g w 5 5 5 1 5 1 < & . ", +"p.+.o.{ { { { { [ { { { { { ` K + d.r.q g u 5 5 5 1 5 1 1 1 % X ", +"h.{ X.{ [ { ' { { { ' [ ' ` K @ s.g.q y t 5 5 5 1 5 1 5 1 < $ c ", +"c.^ ) ) ) ) ) ) ) ` ` ) ) F H f.B.M 0 q 5 1 5 1 5 1 1 1 < & . f.", +"B.c.u.~ Q W E R T T R W Q 7.z.B.M.C s : ; = - - - - - - = x a.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.", +"B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B.B." +}; diff --git a/kommander/editor/pics/large/customwidget.xpm b/kommander/editor/pics/large/customwidget.xpm new file mode 100644 index 00000000..bc56d75a --- /dev/null +++ b/kommander/editor/pics/large/customwidget.xpm @@ -0,0 +1,41 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 3 1", +" c #a1a1c4c41010", +". c #c0c0c0c0c0c0", +"X c None", +/* pixels */ +"XXXXXXXXXXXX XXXXXXXXXXXXX", +"XXXXXXXXX XXXXXXXXXX", +"XXXXXXX XXXXXXXX", +"XXXXXX XXXXXX", +"XXXXX XXXXX", +"XXXX XXXX", +"XXX XXXXXXXX XXX", +"XX XXXXXXXXXXXX XXX", +"XX XXXXXXXXXXXXXX XX", +"XX XXXXXXXXXX XXXX XX", +"X XXXXXXXXXX XXXX X", +"X XXXXXXXXX XXX X", +"X XXXXXXXXX XXX X", +" XXXXXXXX XXX ", +" XXXXXXXX XXXX ", +" XXXXXX XXXXX ", +" XXXXXX XXXXXX ", +" XXXX XXXX ", +"X XXXX XXX ", +"X XXX XX X", +"X XXX X", +"X XXXX XX X", +"XX XXXX XXXX X", +"XX XXXXXXXXXX XX", +"XXX XXXXXXXXXX XX", +"XXX XXXXXXXX XX", +"XXXX X", +"XXXXX ", +"XXXXXX ", +"XXXXXXXX X X", +"XXXXXXXXXX XXXX XXX", +"XXXXXXXXXXXXX XXXXXXXX XXX" +}; diff --git a/kommander/editor/pics/large/datepicker.xpm b/kommander/editor/pics/large/datepicker.xpm new file mode 100644 index 00000000..f815c73e --- /dev/null +++ b/kommander/editor/pics/large/datepicker.xpm @@ -0,0 +1,121 @@ +/* XPM */ +static char *datepicker[] = { +/* columns rows colors chars-per-pixel */ +"22 22 93 2", +" c black", +". c gray1", +"X c #060606", +"o c gray3", +"O c #0B0B0B", +"+ c #131313", +"@ c #151515", +"# c #191919", +"$ c gray10", +"% c #1B1B1B", +"& c #1D1D1D", +"* c #280000", +"= c #002129", +"- c #00222B", +"; c #00232B", +": c #00232C", +"> c #00242D", +", c gray14", +"< c gray15", +"1 c #3A3A3A", +"2 c #3C3C3C", +"3 c #0F3944", +"4 c #205766", +"5 c #485356", +"6 c gray36", +"7 c #596061", +"8 c #6C6C6C", +"9 c gray44", +"0 c #C01D1D", +"q c #C83939", +"w c #D05555", +"e c #D87272", +"r c #0061AC", +"t c #7F8B8E", +"y c #5595CB", +"u c #72A7D4", +"i c #808080", +"p c gray53", +"a c #8E8E8E", +"s c #929292", +"d c #929EA1", +"f c #AAAAAA", +"g c #A3AFB2", +"h c #A7ADB2", +"j c #A6B2B5", +"k c #A7B3B6", +"l c #A9B5B8", +"z c #B0B1B0", +"x c #B1B1B0", +"c c #B1B1B1", +"v c #B2B2B2", +"b c #B6B6B6", +"n c #B0B6BB", +"m c #B9B9B9", +"M c #B9BABB", +"N c #BFB8BF", +"B c #DF8E8E", +"V c #E7AAAA", +"C c #8DB7D8", +"Z c #8EB8DC", +"A c #B8BFC5", +"S c #AACAE5", +"D c #C2C3C4", +"F c #C8CFD0", +"G c #CAD4DC", +"H c gray82", +"J c #D0D6D7", +"K c #D1D8D9", +"L c #D2D9DA", +"P c gainsboro", +"I c #EAC1C1", +"U c #EFC7C7", +"Y c #E7D2D2", +"T c #EFDADA", +"R c #C7DCEE", +"E c #DDE9F3", +"W c #E1E2E3", +"Q c gray90", +"! c #E6E6E6", +"~ c gray91", +"^ c #E9E9E9", +"/ c gray92", +"( c #EEEEEE", +") c #F7E3E3", +"_ c #E3EDF6", +"` c #F3F3F3", +"' c #F4F4F4", +"] c gray98", +"[ c #FBFBFB", +"{ c gray99", +"} c #FEFEFE", +"| c gray100", +" . c None", +/* pixels */ +" . . .3 > > > > > > > > > > > > > > 3 . . .", +" .4 > 5 1 < % $ $ $ $ $ $ $ $ # @ , 8 > 4 .", +" .> 5 8 , + | 2 o o o o | 2 o o X & m d > .", +"3 5 8 m & O P 6 P 6 i s ( } l 3 ", +"> 7 a ( s p z i i i 9 N i i i m | | K > ", +"> 8 f ] | | . ] I T ' * Y / ^ ( | | [ > ", +"> 8 b | | | | | | w w | | 0 V | | | | | ` > ", +"> 8 b | | r r | | w w | U q V | r r | | W : ", +"> 8 b | r r r | | w B U e e V | r r r E A - ", +"> 8 b C r r r | | w ) e q V V | r r r C h = ", +"> 8 b | C r r | | w | w e V V | r r C | D = ", +"> 8 b x x C C x | U | U ) ) ) x C C x x ~ ; ", +"> 8 b | | | | x | _ _ | _ S _ x | | | | G ; ", +"> 8 b | | | | x | y S | y S y x | | | | n = ", +"> 8 b x x x x x R Z S x R | y x x x x x M = ", +"> 8 b | | | | x | S S | | R u x | | | | H - ", +"> 8 b | | | | x | S S | _ u | x | | | | Q : ", +"> 7 v { | | | x | S S | y S S x | | | | F > ", +"3 5 c x x x x x x _ _ x S S S x x x x ! j 3 ", +" .> t | | | | x | | | | | | | x | | ^ g > .", +" .4 > l L | | x | | | | | | | x } J k > 3 .", +" . . .3 > > > > > > > > > > > > > > 3 . . ." +}; diff --git a/kommander/editor/pics/large/dial.xpm b/kommander/editor/pics/large/dial.xpm new file mode 100644 index 00000000..fe28e2a1 --- /dev/null +++ b/kommander/editor/pics/large/dial.xpm @@ -0,0 +1,51 @@ +/* XPM */ +static char *dial[]={ +"32 32 16 1", +"h c #764cf3", +"# c None", +"m c #3e05e9", +"n c #6f56bb", +"g c #8b68f2", +"a c None", +"i c #c4b6ec", +"j c #472d93", +"b c #d3d6da", +"c c #a4a4a5", +". c None", +"f c #353535", +"e c #606060", +"l c #b19dee", +"d c #8a7eab", +"k c #4203fe", +"..........#abcdeeedcba#.........", +"........#abdefffffffedca#.......", +"......#aceffffeecdeefffecb#.....", +".....#acfffedbbbbbbbcefffdb#....", +"....#acffecbbbghhhgibbceffdb#...", +"...#bcffdbbigcjkkkkkhlbbcffdb#..", +"..#bcffebihkmcemkkkkkkhibcffdb#.", +"..acffebihkkkccjkkkkkkkkibdffca.", +"..befebihkkkkcbemkkkkkkkkibefeb.", +".#bffcbhkkkkkcbcjkkkkkkkkhbcffc#", +".acffbikkkkkkdbbemkkkkkkkklbefea", +"#befebgkkkkkkdbbcjkkkkkkkkhbcffb", +"acffcbkkkkkkkdbbbemkkkkkkkklbefd", +"adfeblkkkkkkknbbbcjkkkkkkkkgbdfe", +"befebgkkkkkkknbbbbemkkkkkkkhbcfe", +"befcbhkkkkkkknbbbbcjkkkkkkkkbcff", +"befdbhkkkkkkkmccccdjkkkkkkkhbcff", +"befebgkkkkkkkkmmmkkkkkkkkkkhbcfe", +"acfebikkkkkkkkkkkkkkkkkkkkklbefe", +"#bffcbhkkkkkkkkkkkkkkkkkkkkbbffc", +"#befeblkkkkkkkkkkkkkkkkkkkgbcfeb", +".acffbbhkkkkkkkkkkkkkkkkkkibefca", +".#befdbikkkkkkkkkkkkkkkkklbcffb#", +"..acffcblkkkkkkkkkkkkkkkgbbefea.", +"..#befecblkkkkkkkkkkkkkgbbefeb#.", +"...abefecbihkkkkkkkkkhlbbefeca..", +"....abefecbbigkkkkkgibbcefeca...", +".....#beffecbbbiiibbbceffeca....", +"......#beffffdcbbbcdefffeca.....", +".......#acdfffffefffffecb#......", +".........#abcefffffecba#........", +"...........#abbbbbbaa#.........."}; diff --git a/kommander/editor/pics/large/disabled/adjustsize.xpm b/kommander/editor/pics/large/disabled/adjustsize.xpm new file mode 100644 index 00000000..1cc64ae8 --- /dev/null +++ b/kommander/editor/pics/large/disabled/adjustsize.xpm @@ -0,0 +1,51 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 13 1", +" c #767676767676", +". c Gray49", +"X c Gray53", +"o c Gray56", +"O c #979797979797", +"+ c #9f9f9f9f9f9f", +"@ c #a7a7a7a7a7a7", +"# c #afafafafafaf", +"$ c #b7b7b7b7b7b7", +"% c Gray75", +"& c #c0c0c0c0c0c0", +"* c #c5c5c5c5c5c5", +"= c None", +/* pixels */ +"===========%%%%*%$$%%===========", +"===========%%%%%$##%%===========", +"===========%%$$$@@$%%===========", +"==========%*%$#@@+#%*%==========", +"=========*%%%$##+@#%%%*=========", +"=========%%%$$##@@##%%%=========", +"========%*%$$$##@++@$%*%========", +"=========%%$#@@@@Oo+#%%=========", +"=========*%$#+++Ooo@#%%=========", +"====%*%%%%%%$@+OooO#%%%%*%*%====", +"===%%%%%%%%%$#+ooO#$%%*%%%%%%===", +"%%%*%%%%%%*%%$#+O@#%%%%%%%%%%*%%", +"%%%%%%$$$%%%%$#@+@#$%%%%%%%%%%%%", +"%%%%%$$$#$$$$@@#@++@$%%**%$%%%$$", +"$%$%$%$$#@###@#%$Oo+#%**%$$$$##@", +"$$$$$$##@++@+@$*$+Xo@#$$#@@@#@+X", +"@#@@@@@++oO++O@#@o.XO@@@+++++OX.", +"@++++++OooO@+OooX..o+@OOoOO++Ooo", +"##@##@OXoO@#@OX....O@#+OoO+#@#@@", +"%$$%$#+O+#$$$@Oo.XO@$$#@OO#$%$$%", +"%%%%%$#@#$%%%$@+++@$%%%$##$%%%%%", +"%%*%%%$%%%%%%%%$#@$$%%%%%$%%%%%%", +"====%%%%%%%*%%%%#@@$%%%%%%%%%===", +"=====%%%%%*%%**$@++#$%%%%%%%====", +"=========%%%%%%#@OO+#%%%========", +"=========%%%$$#@OOO+#%%*========", +"=========%%%%$@+OO+#$%%%========", +"=========%%%%$#+OO@$%%%%========", +"==========%%%$#+OO#$%%%=========", +"===========%%$@OoO@%%%==========", +"===========%%$@oXo@$%%==========", +"===========%%#+. X@%%%==========" +}; diff --git a/kommander/editor/pics/large/disabled/connecttool.xpm b/kommander/editor/pics/large/disabled/connecttool.xpm new file mode 100644 index 00000000..8d2f32b2 --- /dev/null +++ b/kommander/editor/pics/large/disabled/connecttool.xpm @@ -0,0 +1,57 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 19 1", +" c #373737373737", +". c #3f3f3f3f3f3f", +"X c Gray28", +"o c Gray31", +"O c Gray34", +"+ c #5f5f5f5f5f5f", +"@ c #676767676767", +"# c #6f6f6f6f6f6f", +"$ c #777777777777", +"% c Gray", +"& c Gray53", +"* c #8e8e8e8e8e8e", +"= c #979797979797", +"- c #9f9f9f9f9f9f", +"; c #a4a4a4a4a4a4", +": c Gray68", +"> c #b6b6b6b6b6b6", +", c #c0c0c0c0c0c0", +"< c None", +/* pixels */ +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"><<><<><<><<><<<><<><<><<><<><<>", +"<><>>>>>>>>>>>><<>>>>>>>>>>>>><<", +">>>:::::::;::>>>>>:;;;;;-;;;:>>>", +">:;-====***&*=;::-&&%%$%$$$%&*-:", +";-----=-==*%$$&*=&$#####@@@++@$=", +"=*=------=*&$##$$$####$##@+OOoO#", +"%&&&*****&%%##@@@@@++++++OOoXXXo", +"$$$$$$$$$$$###@+++++OooXXXXXX...", +"$$#$##########@@@++@+oXXXXX... ", +"$##########@###@@@++#+oX..X... ", +"$$###@##@#@##@##@++#$$OXX.... ", +"$########@#@##@@#@@#&%+X.X.... ", +"%$###@#@#@#@@@#@@+@$&$+oX.X... ", +"%$##@#@#@#@##@@@+@#%$#OXX..X. ", +"&$##@#@@#@#@@@@++#$$#OoX.X.... ", +"*%##@@@@@@@@@@++#$$@OoXX...X....", +"-&#@@@@@@@@@@+@$%%#OooXX.X....o+", +":=%$##@#@@#@@#%*=&#OooXXoXXXXO@&", +">:=*&%%%%%%%&*-:;=%#@@@@@@@@#$*;", +">>>;;;;;;;;;;:>>>:--=========-:>", +"<>>>>>>>>>>>>><><>>>>>>>>>>>>>><", +"<<<<<<<<<><<<<<<<<<<><><>>>><<<>", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" +}; diff --git a/kommander/editor/pics/large/disabled/editbreaklayout.xpm b/kommander/editor/pics/large/disabled/editbreaklayout.xpm new file mode 100644 index 00000000..c43703c3 --- /dev/null +++ b/kommander/editor/pics/large/disabled/editbreaklayout.xpm @@ -0,0 +1,54 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 16 1", +" c #565656565656", +". c #5f5f5f5f5f5f", +"X c #676767676767", +"o c #6f6f6f6f6f6f", +"O c #777777777777", +"+ c Gray50", +"@ c Gray53", +"# c Gray56", +"$ c #979797979797", +"% c #9f9f9f9f9f9f", +"& c #a7a7a7a7a7a7", +"* c #afafafafafaf", +"= c #b7b7b7b7b7b7", +"- c Gray75", +"; c Gray78", +": c #cdcdcdcdcdcd", +/* pixels */ +";;;;;:;:;:;:;;----;;:;:;:;:;;;;;", +"-;;::;:::::::;----;;:::::;:::;;-", +";;;:;;;;;::::;----;::::::;;;::;;", +"--;-=**--;;;;------;;;;;-==-;;;-", +"-=*&%##$**==*=======*==*&&&&***-", +"=%$@OOO+#$$$%%&==*%%$%%%$##@@#&*", +"*$OoXXXoOO+++#%*=%#@++@##@OXXO#*", +"*@oX.XXXXXoXO+%**%@OoO+@@oX .o#&", +"*$@+OooXXX.Xo@%==&@+O+@@oXXoO@$*", +"=*&%$#OoXXXo+$&==*%#@@+OXo@$%&*=", +"--===&$+XXXoO#&==*&$#@OXO#%*==--", +"-----=&$OoXoo+#&&&$$@oXo#&=-----", +";-;;;;-*$+oXXo+#$%$@ooO#*=;;;;-;", +"-;;;;;;-*%@oooo+##+ooO$*-;;;;;;-", +"-;;;:;;;-=%@oXoO@+oXO$*-;;;;;;;;", +";--;---;--*#+OOOOoXX@&=-;-;-;---", +"-********&&$@@+OoX.o@%*********-", +"=%$#$$#$#$###@OXXXXoO@##$#$#$$%*", +"*$+++O+O++@#@OoXXXXXooOOOOO+++#*", +"*#+OOOOoO+@@OooO+OoXXXXXXOOOO+#*", +"=%$###@++@@Ooo+$%@OoXXXXo+@##$%=", +"-=**&%$$#@OXo@%*=&#OoXXXO#%&**=-", +"--==*&%#@OXo@%*-==&#OXXoo+#&*=--", +"--=*&%$@OXo@&=---==&#OoXoO+$&=--", +"--=&%#@OXO#&--------*$OoXoo@$=--", +";--&%@oXO#*-;;----;;-*$+oXoO$*-;", +"-;-*$+XO#*-;;;----;;;;*$+oo+%=-;", +"-==*$OO@%*=--===-===-==&#OO#%=--", +"=*&$#++#$&&&%&*==*&&&%%%#@@#%%*=", +"*$@@@++@@@@@##%=*&#@@@@@+++@@@$*", +"&@OooooXooooo+$**$+ooooooooooO@&", +"%+.. . ... .o#**$O. . . ..+&" +}; diff --git a/kommander/editor/pics/large/disabled/editcopy.xpm b/kommander/editor/pics/large/disabled/editcopy.xpm new file mode 100644 index 00000000..8138eabd --- /dev/null +++ b/kommander/editor/pics/large/disabled/editcopy.xpm @@ -0,0 +1,69 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 31 1", +" c #0e0e0e0e0e0e", +". c #151515151515", +"X c Gray12", +"o c #272727272727", +"O c #2f2f2f2f2f2f", +"+ c #373737373737", +"@ c #3f3f3f3f3f3f", +"# c #464646464646", +"$ c Gray31", +"% c #565656565656", +"& c #5d5d5d5d5d5d", +"* c Gray40", +"= c #6f6f6f6f6f6f", +"- c Gray46", +"; c Gray", +": c #818181818181", +"> c Gray56", +", c #959595959595", +"< c #9f9f9f9f9f9f", +"1 c #a7a7a7a7a7a7", +"2 c #afafafafafaf", +"3 c #b7b7b7b7b7b7", +"4 c Gray75", +"5 c #c0c0c0c0c0c0", +"6 c #c6c6c6c6c6c6", +"7 c #cececececece", +"8 c Gray84", +"9 c #dddddddddddd", +"0 c #e6e6e6e6e6e6", +"q c Gray93", +"w c None", +/* pixels */ +"33233233233344wwwwwwwwwwwwwwwwww", +"::::::::::>,134wwwwwwwwwwwwwwwww", +"@#$$$%$%$$#%;134wwwwwwwwwwwwwwww", +".o#%&&&&%#Oo$-134wwwwwwwwwwwwwww", +" @;123321;@Xo$;<34wwwwwwwwwwwwww", +".#<8000q81$oO+$;134444444wwwwwww", +".$20qqqq02%@$#@$;<23333344wwwwww", +".$18643682&#&%+O$->>>>><244wwwww", +".$14>==,41*@##++@%&*&&&*:134wwww", +".$13,==>44;%@@%&*=-==&##&:144www", +".$173113762;%&>234342>%+#*:144ww", +".$1741<121<;%*29qqq092*@#$*:144w", +".$13>=&*&*&$#=30qqqq03=%*%$*:134", +".$14>=*&*&&$#*38633683=&=*##&:24", +".$1731<<<<,-&=24>-=,43-%%%#+#=<3", +".$1741<<<<,-&=24>==>64,-==*%#&>3", +".$13>=&*&&&%#=3741137742121:&&,3", +".$<4>=*&*&&$#*3741<1221<1362=*>3", +".#<431<<<<,;%=24>=&*&&&*=>42=*>3", +" +-<<<<<<<,-%=24>=**&***=>42=*>3", +".o#%&&&&&%%$#=3731<<<<<<1473=*>3", +"@#$$$$$$$$$#@*3741<<<<<<1373=*,3", +"::::::::::;*$=24>=&*&&*&=>42=*>3", +"33333333332:&=24>=**&*&*=>42=*>3", +"44444444442,*=1631<<1<1<1361=*>3", +"wwwwwwwww43>&&>121111111121>&&>3", +"wwwwwwwww43,&$&====-===-===&$*,3", +"wwwwwwwww43<-&&&**********&&&-<3", +"wwwwwwwww442<,,,>,>>>,>>>,,>,<24", +"wwwwwwwwww4433333333333333333344", +"wwwwwwwwwww44444444444444444444w", +"wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww" +}; diff --git a/kommander/editor/pics/large/disabled/editgrid.xpm b/kommander/editor/pics/large/disabled/editgrid.xpm new file mode 100644 index 00000000..55f7ca93 --- /dev/null +++ b/kommander/editor/pics/large/disabled/editgrid.xpm @@ -0,0 +1,49 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 11 1", +" c Gray53", +". c Gray56", +"X c #979797979797", +"o c #9f9f9f9f9f9f", +"O c #a7a7a7a7a7a7", +"+ c #afafafafafaf", +"@ c #b7b7b7b7b7b7", +"# c Gray75", +"$ c #c0c0c0c0c0c0", +"% c Gray78", +"& c None", +/* pixels */ +"&&###@#@OXX+@##&&&###@@@OXX+##&&", +"&&##@@#@O..O###&&&##@@#+O.XO@##&", +"#####@@@OXXO@#%######@@@O..+##%#", +"#%###@#@O..O#####%##@@@@O.XO@###", +"#######@OXXO@########@#@OXX+@###", +"#%#%####+oo+#%#%#%#####@Ooo@##%#", +"#%%%%%%#++@#%%%%%%%%%%##++@#%%#%", +"##%%%%##@@##%#%#%#%%####@@######", +"+O+O+O+@@++O++++++O++++@++O+O+OO", +"X....XO+Oo...........oO+Oo......", +"... XO+O. ........XO+O. ...", +"+OOoOO+@+X .oOOOOOOOOO@@O. XoOOO", +"@@@@@+@@+. o+@@@@@@@@@@@O..O@@@#", +"####@@#@+X.o@#######@@@@OX.O@###", +"#####@@@OX.O@########@@@O.XO###%", +"&&###@#@+X.o@##&&&##@@#@OX.O@##&", +"&&###@#@+X.o@##&&&###@@@O.XO###&", +"&&###@@@+X.o@##&&&##@@@@OX.O@##&", +"#######@+X.o@########@#@O..O####", +"#####@@@+X.o@#######@@@@OX.O@###", +"####@##@+o.o+#######@@@@OXXO@###", +"########+Oo+@##########@+oo+####", +"@##%%#%#@++##%#%%%%%%#%#@++##%#%", +"@@%######@@############@@@@####@", +"+OOOOO++@+OOOOOOOOoOOO+@++oOoOoO", +"OXX...oO+o. .........Xo++X......", +"Oo....o+Oo ........XO+OX ...X", +"@+OOOO+@+X .oOO+O+O+OO@@O. XOO++", +"##@#@@@@+o.X+@#@#@@@@@@@+X.o@@@#", +"#####@@@+o.o+########@@@OX.O@###", +"&&###@@@+o.o+##&&&##@@#@OX.O###&", +"&&#%#@@@+oXo+##&&&###@@@OXXO@##&" +}; diff --git a/kommander/editor/pics/large/disabled/editpaste.xpm b/kommander/editor/pics/large/disabled/editpaste.xpm new file mode 100644 index 00000000..150c4fb2 --- /dev/null +++ b/kommander/editor/pics/large/disabled/editpaste.xpm @@ -0,0 +1,69 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 31 1", +" c #070707070707", +". c Gray6", +"X c Gray9", +"o c Gray12", +"O c #272727272727", +"+ c #2f2f2f2f2f2f", +"@ c #373737373737", +"# c #3e3e3e3e3e3e", +"$ c Gray28", +"% c Gray31", +"& c Gray34", +"* c #5f5f5f5f5f5f", +"= c #676767676767", +"- c #6f6f6f6f6f6f", +"; c #777777777777", +": c Gray50", +"> c #818181818181", +", c Gray56", +"< c #939393939393", +"1 c #9f9f9f9f9f9f", +"2 c #afafafafafaf", +"3 c #b6b6b6b6b6b6", +"4 c #bebebebebebe", +"5 c #c0c0c0c0c0c0", +"6 c Gray78", +"7 c Gray81", +"8 c #d3d3d3d3d3d3", +"9 c #dddddddddddd", +"0 c #e7e7e7e7e7e7", +"q c #efefefefefef", +"w c None", +/* pixels */ +"wwwwwwww443333333344wwwwwwwwwwww", +"w444444431<>>>>>><144444444wwwww", +"443333321:&$$%$$$&:123333344wwww", +"41<>>>>:-$Oo+##+oO$-:>>>><134www", +"1:*%$$$#+oXO%;;%OXX+#$$$%*:144ww", +"-%++@@+OX.O%:,,:%OXXO+@@+@%:144w", +"+O@$&%$+o+%:>;;>:%Oo+$%&$@@*<34w", +"Xo$=-=$++%:1>==>1>%++%*-=$+$,34w", +".O%-;*@O#-<1<>><1<-#+@*;-&@$>24w", +" O&-;&@O$=>>::::>:=$O+&;-&@$>34w", +".O&;-*+O+#$$$$$$$$#+O@*-;&@$>24w", +" O&-;=$++@@@@@@@@@@++#*;-&@$>34w", +".O&;;-**&&&&%%%%%%%%&*---&@$>34w", +".O&;::;;;;--**&&*&*&&****$+$>34w", +" O&;;:::;:;=%$$%%%%%%%%$#+O$>24w", +".O&-::::::;=$#*==--=--=&#OO$>34w", +".O&;::;:::;*%&,24434432,%++$;144", +".O&-:::::;;=%=290qqqq092=#$$=>14", +" O&;::::::;*%-30qqq0qq03-&=&%=>1", +".O&;;:::::;=%-3974444793;&==$#*:", +".O&;:::;:;;*%-261>;;>163;&*&$@#$", +".O&-::::::;*%-261:;;:166,;--=%#+", +" O&;::::::;=%-376222248842122>%+", +".O%-;:;::;;*%=3842212233223462*+", +"Xo$=-;;-;--*$-261:;;;;;;;;:142=+", +"+O@$&&&&&*&$$=241:;;;;;;;;:162=+", +"-$@+@@@@@@@+@=1742221212122461*@", +"1:&$$$$$$$##@&<12221222122122,%+", +"31<,>>>>>>:-%$*----;---;--;--*$+", +"44333333322<-**=============**&&", +"w444444444421<,,,,,,,,,,,,,,,,,,", +"wwwwwwwwww4433333333333333333333" +}; diff --git a/kommander/editor/pics/large/disabled/editslots.xpm b/kommander/editor/pics/large/disabled/editslots.xpm new file mode 100644 index 00000000..25c68514 --- /dev/null +++ b/kommander/editor/pics/large/disabled/editslots.xpm @@ -0,0 +1,65 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 27 1", +" c #373737373737", +". c #3f3f3f3f3f3f", +"X c #464646464646", +"o c #4e4e4e4e4e4e", +"O c Gray34", +"+ c #5f5f5f5f5f5f", +"@ c #676767676767", +"# c #6f6f6f6f6f6f", +"$ c #777777777777", +"% c Gray50", +"& c Gray53", +"* c Gray56", +"= c #979797979797", +"- c #9f9f9f9f9f9f", +"; c #a7a7a7a7a7a7", +": c #afafafafafaf", +"> c #b7b7b7b7b7b7", +", c Gray75", +"< c #c0c0c0c0c0c0", +"1 c Gray78", +"2 c Gray81", +"3 c #d7d7d7d7d7d7", +"4 c #dfdfdfdfdfdf", +"5 c #e7e7e7e7e7e7", +"6 c #efefefefefef", +"7 c Gray97", +"8 c None", +/* pixels */ +"88888888888888888888888888888888", +"88888888888888888888888888888888", +"88888888888888888888888888888888", +"88888888888888888888888888888888", +"8888888,1,,,1,888888888888888888", +"8888881,,,,,,,,88,1,,,,1,8888888", +"88888,,,,1,,>,,,1,,,,,,,1,188888", +"8888,1,,11,>;:,,,,,,>,>>,,,,8888", +"8881,,11221;=;>,,,>>>::>>>,,1888", +"88,,,112331;&->>>,>,>>:;;:>,,,88", +"8,1,,123442-&=:,>,122,>;--;>,1,8", +"1,,,1235552;*=:>,245431:-**;>,,1", +",,,,1245663:=-:>2466652>-&&*:>,,", +"1,1,1345664,-;;,2577763>-&$%->,,", +"11,123456641:;;>2577752>-%@#=>,,", +",,,113455542,;;>1456641:*$++&;>,", +">::>,2344542,:-;>23431>-%@OO$=;:", +"::::>,233332,:--;>,,,:-&#OXo$=-;", +">>>:::,1121,,:=*=--;-=%#+XX+&;:>", +",,>>:;;:>::>>:-*%%&&%$#OX.X$->>,", +",,,>:==*===-;:;*$##@@Oo...@*:,,,", +"8,,,:-&%%$$&-::-%@OooX. .+&;>,,8", +"88,,>;*%@@+#*;>:-%@OoXoo#&;>,,88", +"881,,>;&$+O+%;>>:-*%$#$&=:>,1888", +"888,,,>;=%$$*:,,,>:;-;;:>,,,8888", +"8888,,,>>;--;>,,,,,,>>>,,,,88888", +"888888,,,>>>>,,88,,,,,,,,8888888", +"8888888,,,,,,,888888888888888888", +"88888888888888888888888888888888", +"88888888888888888888888888888888", +"88888888888888888888888888888888", +"88888888888888888888888888888888" +}; diff --git a/kommander/editor/pics/large/disabled/editvlayout.xpm b/kommander/editor/pics/large/disabled/editvlayout.xpm new file mode 100644 index 00000000..fbc382f4 --- /dev/null +++ b/kommander/editor/pics/large/disabled/editvlayout.xpm @@ -0,0 +1,55 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 17 1", +" c #5b5b5b5b5b5b", +". c #676767676767", +"X c #6f6f6f6f6f6f", +"o c #777777777777", +"O c Gray50", +"+ c Gray53", +"@ c #8e8e8e8e8e8e", +"# c Gray59", +"$ c #9f9f9f9f9f9f", +"% c #a7a7a7a7a7a7", +"& c #acacacacacac", +"* c Gray71", +"= c Gray75", +"- c #c0c0c0c0c0c0", +"; c Gray78", +": c #cdcdcdcdcdcd", +"> c None", +/* pixels */ +">>>>>>;=;;;;;;;;;;;;;;;;;=>>>>>>", +">>>>>>===;;;;;:;;;;;:;;==;>>>>>>", +">>>>>>;=;;::::::::::::;;;=>>>>>>", +">>>>>>=;==;;;;;;;;;;;;;===>>>>>>", +">>>>>>===**************===>>>>>>", +">>>>>>==*%$$$$$$$$$$$$%*==>>>>>>", +">>>>>>==&#+OOOOOOOOOO+#&==>>>>>>", +">>>>>>=*%+oooXoXoXoXoo+%==>>>>>>", +">>>>>>;=&#+OOOOOOOOOO+#&*;>>>>>>", +">>>>>>==*&%%%%%%%%%%%%&*==>>>>>>", +">>>>>>>==*=****=**=***===>>>>>>>", +">>>>>>=;==;=;;;;=;==;;==;=>>>>>>", +">>>>>>;==;;;;;;;;;;;;;;===>>>>>>", +">>>>>>==;;;;:::;;;;:;;;=;=>>>>>>", +">>>>>>=;=;:::;:;:::;;;;==;>>>>>>", +">>>>>>==;====;=;====;=====>>>>>>", +">>>>>>==**&&&&&&&&&&&&**==>>>>>>", +">>>>>>==*$##@#@#@#@#@#$*==>>>>>>", +">>>>>>=*&#OOoOoOoOOoOO#&==>>>>>>", +">>>>>>==&@OoOoooooooOO#&==>>>>>>", +">>>>>>;=&%#@#@#@###@##%*==>>>>>>", +">>>>>>===*&&*&*&&&*&&**==>>>>>>>", +">>>>>>===================;>>>>>>", +">>>>>>;==;;;;;;;;;;;;;;;==>>>>>>", +">>>>>>==;;;;=;;=;;=;;=;===>>>>>>", +">>>>>>==;;;;;;;:;;:;;;;;=;>>>>>>", +">>>>>>;===;:;:;;;;;;:;;===>>>>>>", +">>>>>>====*=*=*=====*=*===>>>>>>", +">>>>>>==*%%$%$%$$$$$%%&*==>>>>>>", +">>>>>>==&#@+++++++++++$&==>>>>>>", +">>>>>>==%+XXXX.XXXXXXX+%==>>>>>>", +">>>>>>=*$O. .o%*=>>>>>>" +}; diff --git a/kommander/editor/pics/large/disabled/layout.xpm b/kommander/editor/pics/large/disabled/layout.xpm new file mode 100644 index 00000000..f204e0ff --- /dev/null +++ b/kommander/editor/pics/large/disabled/layout.xpm @@ -0,0 +1,52 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 14 1", +" c #676767676767", +". c #6d6d6d6d6d6d", +"X c #777777777777", +"o c Gray50", +"O c Gray53", +"+ c Gray56", +"@ c #979797979797", +"# c #9f9f9f9f9f9f", +"$ c #a7a7a7a7a7a7", +"% c #afafafafafaf", +"& c #b7b7b7b7b7b7", +"* c Gray75", +"= c Gray78", +"- c Gray81", +/* pixels */ +"***=*==*==*==*******==*==*==*=**", +"====-==-==-===**&**=============", +"*=-----------=****=-----------==", +"===------=-===**&*==============", +"*******&**&**&&*&&&&******&*&*&*", +"&%$$$#$$$$$#$$%&&%$$$$#$$$$$#$%&", +"%#+OO+OOOOO+O+#%&$@+OO+OOOOOO+#%", +"%+ooXXXXXoXXXO@%%#OXXXXXXXXXXo+%", +"&@OooooooooooO#%&$+ooooooooooO@%", +"&%$#########$$%&&%$$###$####$#%&", +"*&&&&&&&&&&&&&&***&&&&&&&&&&&&&*", +"********************************", +"****=*=*=*=****&****=*=**=******", +"**=---=-=-=-==&***===-=-==-=-=*=", +"*=-----------=*&**=----------===", +"**==---=--=-=*&*&*=============*", +"**&**&&**&*&&&&&&&&&&*&&&&&&&&&*", +"&$$##$######$$$&&%$$##$$#$###$%&", +"%#++OOOOOOOOO+#%%$++OOOOOOOOO+#&", +"&@OooooooooooO#%&#+ooooooooooO@%", +"&$@++++++++++@$&&$#++++++++++@$%", +"*&%$$$$$$$$$$%&&*&%$$$$$$$$$%$&*", +"*&&&&&&&&&&&&&&**&*&&&&&&&&&&&&*", +"*&*&*&*&*&*&*&&****&********&***", +"***=========***&***===*==*===***", +"**=----------=&***==-------====*", +"*==----------=*&**=----------===", +"**==-==-=====*&&***===========**", +"*%&&&&&%&&&&%%%&&&%&%&%&%&&%&%&*", +"&$#@@@#@@@@#@#$&&$#@#@@@#@@#@#$&", +"%#OooooooooooO@%%#+oXoooXooXoO#%", +"&@X X+$%@X .+%" +}; diff --git a/kommander/editor/pics/large/disabled/left.xpm b/kommander/editor/pics/large/disabled/left.xpm new file mode 100644 index 00000000..6c32a0f5 --- /dev/null +++ b/kommander/editor/pics/large/disabled/left.xpm @@ -0,0 +1,59 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 21 1", +" c Gray34", +". c #5f5f5f5f5f5f", +"X c #676767676767", +"o c #6f6f6f6f6f6f", +"O c #777777777777", +"+ c Gray50", +"@ c Gray53", +"# c Gray56", +"$ c #979797979797", +"% c #9f9f9f9f9f9f", +"& c #a7a7a7a7a7a7", +"* c #afafafafafaf", +"= c #b7b7b7b7b7b7", +"- c Gray75", +"; c #c0c0c0c0c0c0", +": c Gray78", +"> c Gray81", +", c Gray84", +"< c #dfdfdfdfdfdf", +"1 c #e7e7e7e7e7e7", +"2 c None", +/* pixels */ +"22222222222222222222222222222222", +"222222222-:---:-2222222222222222", +"22222222---------222222222222222", +"2222222:---====---22222222222222", +"222222:--====**=--22222222222222", +"2222:---===:::==--22222222222222", +"222----=-->,,>==--22222222222222", +"22:---=-:,<1<:=---222222-:---:-2", +"2---==-:<11<>=*=---:---:-------:", +":---==:<11<>-**=---------=------", +"--==-><11<:-=&%*=----====*=*=**=", +"-=*-><1<,--**%%%***=*==****=*%%$", +"==-><1<>-=**&%$$&***===--:--=%@+", +"*=><1<,-=*&&&%%%*=---::::::-&#oX", +"&-,<,>-=*&&&%&&**=------==*&$@X.", +"%->>:-*&&&%&%&%&&*****&&&&%$#O. ", +"$&===*&&&%&%&%%%$%$$%$%%$$$#@o. ", +"+@#$%%&%%%%%%%##@+@@@@#@#@@@+o. ", +"@+O+@#$%%%%%%$@OooooOoOOOOOOoX..", +"%@OoO+##$%$%%#+oooooooXXXXXXXX.X", +"=&@OooO@##$$$#@@##$#@+OOooooooO+", +"-=&#+oXo+@#$$$$%&=**&&%%$$$###$&", +"--=*$+oXo+@###%*=----=====***==-", +"---=*$+oXoO+@#$*----------------", +"2---=*%@OXooO+#*=-222-:---------", +"222:--*%#OXXXo#&--22222222222222", +"2222---=&#OXXo@*--22222222222222", +"22222---=&$@O@%*--22222222222222", +"222222----*&&&*=--22222222222222", +"22222222---===---222222222222222", +"222222222-------2222222222222222", +"22222222222222222222222222222222" +}; diff --git a/kommander/editor/pics/large/disabled/redo.xpm b/kommander/editor/pics/large/disabled/redo.xpm new file mode 100644 index 00000000..a4425f9c --- /dev/null +++ b/kommander/editor/pics/large/disabled/redo.xpm @@ -0,0 +1,52 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 14 1", +" c Gray12", +". c #272727272727", +"X c #2f2f2f2f2f2f", +"o c Gray21", +"O c #3e3e3e3e3e3e", +"+ c Gray28", +"@ c #4e4e4e4e4e4e", +"# c Gray34", +"$ c #5d5d5d5d5d5d", +"% c Gray40", +"& c #6d6d6d6d6d6d", +"* c #808080808080", +"= c #c0c0c0c0c0c0", +"- c None", +/* pixels */ +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"-------***********--------------", +"------**&%%%%%%%**---------*----", +"-----**$##$$$$$##%**-----****---", +"----**#@$*******$#&***---*&**---", +"---**$@%**-----**%#$&*-**$@%*---", +"---*&@$*---------*%##%&&$Oo#*---", +"---*%#**----------**$@++o.X#*---", +"---*$$*------------*&+o...X#*---", +"---*%%*------------**+.. X#*---", +"---*&$*-----------**%o. .X@*---", +"---*&%**----------*%O.. . X#*---", +"----*%&**--------*&+oXXXXXo%*---", +"----*&%**-------**&##@@@@@$**---", +"-----*&%**--------**********----", +"------***-----------------------", +"--------**----------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------" +}; diff --git a/kommander/editor/pics/large/disabled/right.xpm b/kommander/editor/pics/large/disabled/right.xpm new file mode 100644 index 00000000..a95b4f27 --- /dev/null +++ b/kommander/editor/pics/large/disabled/right.xpm @@ -0,0 +1,57 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 19 1", +" c #5f5f5f5f5f5f", +". c Gray40", +"X c #6f6f6f6f6f6f", +"o c #777777777777", +"O c Gray50", +"+ c Gray53", +"@ c Gray56", +"# c #979797979797", +"$ c #9f9f9f9f9f9f", +"% c #a7a7a7a7a7a7", +"& c #afafafafafaf", +"* c #b7b7b7b7b7b7", +"= c Gray75", +"- c #c0c0c0c0c0c0", +"; c Gray78", +": c Gray81", +"> c #d5d5d5d5d5d5", +", c gainsboro", +"< c None", +/* pixels */ +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", +"<<<<<<<<<<<<<<<<=;===;=<<<<<<<<<", +"<<<<<<<<<<<<<<<=======;=<<<<<<<<", +"<<<<<<<<<<<<<<=;==**&**=;<<<<<<<", +"<<<<<<<<<<<<<<;==**&%%*===<<<<<<", +"<<<<<<<<<<<<<<=====*%$%&*=;=<<<<", +"<<<<<<<<<<<<<<====:;*$$$&*=;=<<<", +"<=;===;=<<<<<<==*=;:=*$#$%&==;<<", +";=======;===;====*;;;=&$##&&===<", +"======*=========***====&$$#%&*==", +"*****&*&***====*&&**====&%##$&==", +"%&***&&&&&****=**%&******&$@@$%*", +"$*:::;==*=*======*&&&*****&$@@#%", +"@*>,>:::;;;;;:::;=*&&&&**&&%$@++", +"@*:>::;;;;;;:;::;=*&&&&&&&&%$@oo", +"@&;;;==*=*****=***&&&&&&%%$$#+o.", +"@%==*&&&%%&%%%%%%%&&%&%%%$$@+X. ", +"O$&&%$$###@#@@@@#$%%%%%%$#@OX. .", +"O@##@++OOOOoooooO+$%%%%$#@OX. X+", +"+OOoXX.XXXoooooooO#$%$$#@o. X+$", +"$@OoXXooO+@##$$$@@#$$$@+o. X+%*", +"&%##@#$$%%&&****%$###@+X. o@%*=", +"=**&*&****======*&$@+OX .o#%*==", +"=================&#+oX .O#&*===", +"<========<<<<<==*%+o. XO#&====<", +"<<<<<<<<<<<<<<===%O. X+%**==<<<", +"<<<<<<<<<<<<<<==*%O. o@%*=;=<<<<", +"<<<<<<<<<<<<<<;=*&@O+#%*===<<<<<", +"<<<<<<<<<<<<<<===*&%%&*==<<<<<<<", +"<<<<<<<<<<<<<<<===**====<<<<<<<<", +"<<<<<<<<<<<<<<<<=======<<<<<<<<<", +"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" +}; diff --git a/kommander/editor/pics/large/disabled/undo.xpm b/kommander/editor/pics/large/disabled/undo.xpm new file mode 100644 index 00000000..b49b97db --- /dev/null +++ b/kommander/editor/pics/large/disabled/undo.xpm @@ -0,0 +1,52 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 14 1", +" c Gray12", +". c #272727272727", +"X c #2f2f2f2f2f2f", +"o c Gray21", +"O c #3e3e3e3e3e3e", +"+ c Gray28", +"@ c #4e4e4e4e4e4e", +"# c Gray34", +"$ c #5d5d5d5d5d5d", +"% c Gray40", +"& c #6d6d6d6d6d6d", +"* c #808080808080", +"= c #c0c0c0c0c0c0", +"- c None", +/* pixels */ +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------***********-------", +"----*---------**%%%%%%%&**------", +"----***-----**%##$$$$$##$**-----", +"---*&***---**%#$*******$@#**----", +"---*%+%****&$#%**-----**%@#**---", +"---*#oO%**%@#%*---------*$@&*---", +"---*@X.o+++$***---------**#&*---", +"---*#X..XX+**------------*$%*---", +"---*$X X+&-------------*%$*---", +"---*#X . .o#**-----------*$%*---", +"---*@X. ..o&**---------**$&*---", +"---*$oXXXXXo@&*---------*&%*----", +"---**$@#@@###&*--------*&%&*----", +"----**********--------**%&*-----", +"----------------------****------", +"------------------------*-------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------", +"--------------------------------" +}; diff --git a/kommander/editor/pics/large/editbreaklayout.xpm b/kommander/editor/pics/large/editbreaklayout.xpm new file mode 100644 index 00000000..687571f9 --- /dev/null +++ b/kommander/editor/pics/large/editbreaklayout.xpm @@ -0,0 +1,250 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 212 2", +" c #101000000000", +". c #181800000000", +"X c #181808080000", +"o c #181808080808", +"O c #212100000000", +"+ c #292900000000", +"@ c #292918181818", +"# c #313100000000", +"$ c #313108080000", +"% c #393908080000", +"& c #313110100808", +"* c #393918181010", +"= c #313129292121", +"- c #313129292929", +"; c #393931313131", +": c #4a4a08080000", +"> c #525208080000", +", c #525210100000", +"< c #5a5a10100000", +"1 c #5a5a18180808", +"2 c #525221211818", +"3 c #5a5a39393131", +"4 c #636310100000", +"5 c #6b6b10100000", +"6 c #6b6b10100808", +"7 c #737318180808", +"8 c #7b7b10100000", +"9 c #7b7b18180808", +"0 c #636329292121", +"q c #636342423939", +"w c #525242424242", +"e c #5a5a52524a4a", +"r c #5a5a52525252", +"t c #63635a5a5a5a", +"y c #6b6b52525252", +"u c #7b7b5a5a5252", +"i c #6b6b63635a5a", +"p c #6b6b63636363", +"a c #73736b6b6b6b", +"s c #7b7b73737373", +"d c #848418180808", +"f c #8c8c18180000", +"g c #8c8c18180808", +"h c #949418180808", +"j c #9c9c21210808", +"k c #9c9c21211010", +"l c #9c9c29291010", +"z c #9c9c39392929", +"x c #a5a521210808", +"c c #adad21210808", +"v c #adad21211010", +"b c #b5b529291010", +"n c #bdbd29291010", +"m c #bdbd31312121", +"M c #b5b54a4a3939", +"N c #84845a5a5a5a", +"B c #8c8c6b6b6b6b", +"V c #a5a55a5a4a4a", +"C c #adad63635252", +"Z c #b5b563635252", +"A c #a5a56b6b6363", +"S c #c6c629291010", +"D c #cece29291010", +"F c #d6d629290808", +"G c #d6d631311818", +"H c #dede31311818", +"J c #dede39391818", +"K c #c6c639392121", +"L c #dede39392121", +"P c #e7e729290808", +"I c #e7e739391818", +"U c #efef31311010", +"Y c #f7f731311010", +"T c #f7f739391010", +"R c #f7f739391818", +"E c #ffff39391010", +"W c #ffff39391818", +"Q c #e7e739392121", +"! c #d6d64a4a3131", +"~ c #d6d652523939", +"^ c #efef42422121", +"/ c #f7f742422929", +"( c #f7f74a4a2929", +") c #ffff42422121", +"_ c #ffff4a4a2121", +"` c #ffff4a4a2929", +"' c #f7f74a4a3131", +"] c #ffff4a4a3131", +"[ c #ffff52522929", +"{ c #f7f752523131", +"} c #f7f75a5a3939", +"| c #ffff52523131", +" . c #ffff5a5a3131", +".. c #ffff5a5a3939", +"X. c #f7f763633939", +"o. c #ffff63633939", +"O. c #ffff6b6b3939", +"+. c #c6c65a5a4a4a", +"@. c #cece52524242", +"#. c #c6c663635252", +"$. c #dede6b6b5252", +"%. c #dede73735a5a", +"&. c #cece73736363", +"*. c #cece7b7b6b6b", +"=. c #efef6b6b4a4a", +"-. c #e7e76b6b5252", +";. c #efef6b6b5252", +":. c #e7e773735a5a", +">. c #f7f763634242", +",. c #f7f76b6b4a4a", +"<. c #ffff63634242", +"1. c #ffff6b6b4242", +"2. c #ffff6b6b4a4a", +"3. c #ffff73734242", +"4. c #ffff73734a4a", +"5. c #ffff7b7b4242", +"6. c #ffff7b7b4a4a", +"7. c #ffff73735252", +"8. c #ffff7b7b5252", +"9. c #ffff7b7b5a5a", +"0. c #b5b584847b7b", +"q. c #c6c684847373", +"w. c #c6c68c8c7b7b", +"e. c #d6d684846b6b", +"r. c #ffff84845252", +"t. c #ffff84845a5a", +"y. c #ffff8c8c5a5a", +"u. c #f7f78c8c6b6b", +"i. c #ffff84846363", +"p. c #ffff8c8c6363", +"a. c #ffff8c8c6b6b", +"s. c #ffff94946363", +"d. c #ffff94946b6b", +"f. c #ffff9c9c6b6b", +"g. c #ffff94947373", +"h. c #ffff9c9c7373", +"j. c #ffff9c9c7b7b", +"k. c #ffffa5a57373", +"l. c #ffffa5a57b7b", +"z. c #ffffadad7b7b", +"x. c #848484848484", +"c. c #8c8c84848484", +"v. c Gray55", +"b. c Gray58", +"n. c #9c9c94949494", +"m. c Gray61", +"M. c #a5a584848484", +"N. c #a5a59c9c9c9c", +"B. c #adad9c9c9494", +"V. c #adad9c9c9c9c", +"C. c #b5b58c8c8484", +"Z. c #b5b58c8c8c8c", +"A. c #bdbd8c8c8484", +"S. c #b5b594948c8c", +"D. c #b5b594949494", +"F. c #b5b59c9c9494", +"G. c #b5b59c9c9c9c", +"H. c #bdbd9c9c9494", +"J. c #b5b5a5a59c9c", +"K. c #bdbda5a59c9c", +"L. c #a5a5a5a5a5a5", +"P. c Gray68", +"I. c #b5b5a5a5a5a5", +"U. c #b5b5adada5a5", +"Y. c #b5b5adadadad", +"T. c #bdbdadada5a5", +"R. c #bdbdadadadad", +"E. c #bdbdb5b5adad", +"W. c Gray71", +"Q. c #bdbdb5b5b5b5", +"!. c #bdbdbdbdb5b5", +"~. c Gray74", +"^. c #bdbdc6c6c6c6", +"/. c #c6c68c8c8484", +"(. c #cece8c8c8484", +"). c #c6c694948484", +"_. c #c6c694948c8c", +"`. c #c6c69c9c9494", +"'. c #c6c6a5a59c9c", +"]. c #c6c6adad9c9c", +"[. c #c6c6adada5a5", +"{. c #c6c6bdbdadad", +"}. c #c6c6bdbdbdbd", +"|. c #ffffa5a58484", +" X c #ffffadad8484", +".X c #ffffb5b58484", +"XX c #ffffb5b58c8c", +"oX c #ffffb5b59494", +"OX c #ffffbdbd9494", +"+X c #ffffbdbd9c9c", +"@X c #c6c6c6c6bdbd", +"#X c #ffffc6c69494", +"$X c #ffffd6d6a5a5", +"%X c #ffffd6d6adad", +"&X c NavajoWhite", +"*X c #ffffd6d6b5b5", +"=X c #ffffdedeb5b5", +"-X c #ffffe7e7bdbd", +";X c #c0c0c0c0c0c0", +":X c #c6c6c6c6c6c6", +">X c #dedededec6c6", +",X c #dedededecece", +"<X c #e7e7dedec6c6", +"1X c #ffffe7e7c6c6", +"2X c #ffffefefc6c6", +"3X c #fffff7f7cece", +"4X c #ffffffffcece", +"5X c #fffff7f7d6d6", +"6X c #ffffffffd6d6", +"7X c #ffffffffe7e7", +"8X c #ffffffffefef", +"9X c None", +/* pixels */ +"9X9X9X9X9X9X9X9X9X9X9XE._.Q.9X9X9X9X9XA.+.I.@X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9XE.).%.} r.[.9X9X9X9X!.;._ Y #.G.~.9X9X9X9X9X9X9X", +"9X9X9X9X9XE._.$.X.8.l.$X4X,X~.9X9X9X'.h.t.<._ T @.D.~.9X9X9X9X9X", +"9X9XQ.).$.X.6.z.%X3X6X7X5X%XQ.9X9XQ.u.j.|.h.t.1.[ E ~ S.~.9X9X9X", +"9X9X).6.z.%X3X7X6X5X=XXXd.2./.9X9Xq.] 4.p.j.|.j.p.2.[ E ! C.9X9X", +"9X9XQ.3X6X7X3X=XoXa.2.{ L S z ~.Y.l n Q ] 1.i.h.l.l.p.2.[ *.9X9X", +"9X9X~.>X-XXXa.2.{ L S k 9 < # m.c.% 4 h n L ( 2.t.g.|.l.p.Q.9X9X", +"9X9X9XK.2.' L S j 9 1 % O . = n.^.n.w & < h b H / <.9.g.'.9X9X9X", +"9X9X9XQ.m x 9 , % O . - a L.~.9X9X9X:XN.e & < g b G ( =.Q.9X9X9X", +"9X9X9X9Xu # O X ; a L.:X9X9X9X9X9X9X9X9X9XP.t & , d c 0.9X9X9X9X", +"9X9X9X9Xb.= a L.~.9X9XR.(.!.9X9X9X9X9XA.#.Y.9XW.a & 0 Q.9X9X9X9X", +"9X9X9X9X~.~.9X9XE.).-.o.y.T.9X9X9X9X~.;.) Y #.J.9XW.L.9X9X9X9X9X", +"9X9X9X9X9XQ._.-.o.r.z.&X6X,X~.9X9X9X].h.t.1._ R @.F.}.9X9X9X9X9X", +"9X9XQ._.%.X.6.z.%X3X7X7X3X%XQ.9X9XQ.u.j.l.h.i.1._ W ~ Z.~.9X9X9X", +"9X9Xw.6.k.$X3X7X7X3X*XXXp.<./.9X9Xq.] 2.p.j.l.j.p.1.` E ! C.9X9X", +"9X9XQ.2X6X7X5X=XXXa.2.( L n z ~.Y.k n I ] 2.i.h.l.l.a.4.[ &.9X9X", +"9X9X~.>X-XOXg.2.{ L S k 7 > + b.c.% 4 k b J ( 2.t.g.l.l.a.E.9X9X", +"9X9X9XK.7.| Q S k 9 , $ O X ; n.~.m.w % 4 h b H ( <.9.g.'.9X9X9X", +"9X9X9XQ.K k 9 1 % O X ; s L.}.9X9X9X~.L.r * < g v G / ,.Q.9X9X9X", +"9X9X9X9XN % O . - a P.!.~.9X9X9X9X9X9X9X~.B r * < d c 0.9X9X9X9X", +"9X9X9X9Xm.@ p N.^.}.`.>.K.9X9X9X9X9X9X^.w.U C L.a & 0 ~.9X9X9X9X", +"9X9X9X9X~.~.9X^.`.=.5.#X<X~.9X9X9X9X9X`.1.` U M W.W.L.9X9X9X9X9X", +"9X9X9X9X9X9XK.$.3..X2X8X7X{.9X9X9X9XH.p.a.4.| Y m V.9X9X9X9X9X9X", +"9X9X9X9XR.%.O.k.1X7X8X-X X7.Y.9X9XD.( 2.p.a.9. .R F M.9X9X9X9X9X", +"9X9XR.*.o.f.-X7X8X2XXX9.' D V 9Xn.h D ( <.i.d.9.o.) F A ~.9X9X9X", +"9X9Xe.s.&X7X8X3XOXi.| G k 6 % v.L.2 f S ^ <.9.d.i.<._ P V W.9X9X", +"9X9XY.5X8X5X+Xa...J v 7 : . o x.9XW.3 8 n I ..9.a.a.2.` P Z 9X9X", +"9X9X9X@X%Xd.<.Q b 9 : O o i W.9X9X9X~.y 5 v H | 7.p.a.7.} Y.9X9X", +"9X9X9X~.:.^ n d , O o r P.9X9X9X9X9X9X~.s 4 x G ` 2.p.u.Y.9X9X9X", +"9X9X9X9XB.g < + w N.^.9X9X9X9X9X9X9X9X9Xv.1 h D / ,.U.9X9X9X9X", +"9X9X9X9X^.y ; n.^.9X9X9X9X9X9X9X9X9X9X9X9Xm.0 f S G.9X9X9X9X9X", +"9X9X9X9X9XP.c.~.9X9X9X9X9X9X9X9X9X9X9X9X9X9X9XP.q n.9X9X9X9X9X9X" +}; diff --git a/kommander/editor/pics/large/editcopy.xpm b/kommander/editor/pics/large/editcopy.xpm new file mode 100644 index 00000000..d9f4a9d5 --- /dev/null +++ b/kommander/editor/pics/large/editcopy.xpm @@ -0,0 +1,43 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 5 1", +" c Gray0", +". c #000000008080", +"X c #c0c0c0c0c0c0", +"o c Gray100", +"O c None", +/* pixels */ +"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", +"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", +" OOOOOOOOOOOOOOOOOOOO", +" OOOOOOOOOOOOOOOOOOO", +" oooooooo OOOOOOOOOOOOOOOOOO", +" oooooooo OOOOOOOOOOOOOOOOO", +" oooooooo o OOOOOOOOOOOOOOOO", +" oooooooo oo OOOOOOOOOOOOOOO", +" oo oo ............OOOOOOOO", +" oo oo .............OOOOOOO", +" oooooooooo..oooooooo....OOOOOO", +" oooooooooo..oooooooo.....OOOOO", +" oo ..oooooooo..o...OOOO", +" oo ..oooooooo..oo...OOO", +" oooooooooo..oo oo........OO", +" oooooooooo..oo oo........OO", +" oo ..oooooooooooooo..OO", +" oo ..oooooooooooooo..OO", +" oooooooooo..oo oo..OO", +" oooooooooo..oo oo..OO", +" ..oooooooooooooo..OO", +" ..oooooooooooooo..OO", +"OOOOOOOOOOOO..oo oo..OO", +"OOOOOOOOOOOO..oo oo..OO", +"OOOOOOOOOOOO..oooooooooooooo..OO", +"OOOOOOOOOOOO..oooooooooooooo..OO", +"OOOOOOOOOOOO..................OO", +"OOOOOOOOOOOO..................OO", +"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", +"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", +"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", +"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" +}; diff --git a/kommander/editor/pics/large/editcut.xpm b/kommander/editor/pics/large/editcut.xpm new file mode 100644 index 00000000..fcae0bd0 --- /dev/null +++ b/kommander/editor/pics/large/editcut.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 4 1", +" c Gray0", +". c #000000008080", +"X c #c0c0c0c0c0c0", +"o c None", +/* pixels */ +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooo oooooo oooooooooooo", +"oooooooooo oooooo oooooooooooo", +"oooooooooo oooooo oooooooooooo", +"oooooooooo oooooo oooooooooooo", +"oooooooooo oooo oooooooooooo", +"oooooooooo oooo oooooooooooo", +"ooooooooooo oooo ooooooooooooo", +"ooooooooooo oo ooooooooooooo", +"ooooooooooo oo ooooooooooooo", +"oooooooooooo oo oooooooooooooo", +"oooooooooooo oooooooooooooo", +"oooooooooooo oooooooooooooo", +"ooooooooooooo ooooooooooooooo", +"oooooooooooooo oooooooooooooooo", +"ooooooooooooo. .ooooooooooooooo", +"ooooooooooooo. ..oooooooooooooo", +"oooooooooooo..oo......oooooooooo", +"ooooooooooo...oo.......ooooooooo", +"oooooooo......oo...oo...oooooooo", +"ooooooo.......oo..oooo..oooooooo", +"oooooo...oo...oo..oooo..oooooooo", +"oooooo..oooo..oo..oooo..oooooooo", +"oooooo..oooo..oo..oooo..oooooooo", +"oooooo..oooo..oo...oo...oooooooo", +"oooooo..oooo..ooo......ooooooooo", +"oooooo...oo...oooo....oooooooooo", +"ooooooo......ooooooooooooooooooo", +"oooooooo....oooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo" +}; diff --git a/kommander/editor/pics/large/editdelete.xpm b/kommander/editor/pics/large/editdelete.xpm new file mode 100644 index 00000000..2221114f --- /dev/null +++ b/kommander/editor/pics/large/editdelete.xpm @@ -0,0 +1,226 @@ +/* XPM */ +static char * editdelete_xpm[] = { +"22 22 201 2", +" c None", +". c #454545", +"+ c #8B8B8B", +"@ c #282828", +"# c #464646", +"$ c #6F6F6F", +"% c #F7F7F7", +"& c #FDFDFD", +"* c #5A5A5A", +"= c #C2C2C2", +"- c #424242", +"; c #F0F0F0", +"> c #D7D7D7", +", c #CDCDCD", +"' c #EBEBEB", +") c #CFCFCF", +"! c #AAAAAA", +"~ c #E5E5E5", +"{ c #686868", +"] c #F5F5F5", +"^ c #C9C9C9", +"/ c #313131", +"( c #F4F4F4", +"_ c #DCDCDC", +": c #E0E0E0", +"< c #E3E3E3", +"[ c #D0D0D0", +"} c #656363", +"| c #B5B5B5", +"1 c #A8A8A8", +"2 c #252525", +"3 c #F1F1F1", +"4 c #B8B8B8", +"5 c #E7E7E7", +"6 c #B9B9B9", +"7 c #D2D2D2", +"8 c #B3B3B3", +"9 c #E8E8E8", +"0 c #9E9D9D", +"a c #7A797A", +"b c #676767", +"c c #4E4E4E", +"d c #161616", +"e c #A5A4A4", +"f c #B4B4B4", +"g c #DFDFDF", +"h c #8F8E8E", +"i c #9F9F9E", +"j c #F2F0EE", +"k c #E7E2DF", +"l c #D1CBC6", +"m c #ACA39D", +"n c #211F1E", +"o c #F2F2F2", +"p c #C1C1C1", +"q c #D8D7D7", +"r c #BEBEBE", +"s c #EEEEEE", +"t c #D1D1D1", +"u c #C8C6C5", +"v c #CCC8C4", +"w c #D1CBC5", +"x c #DCD2CA", +"y c #E4D7CD", +"z c #2E2B29", +"A c #EFEEEE", +"B c #E2DEDC", +"C c #D7D2CE", +"D c #D6CEC8", +"E c #DBD1C8", +"F c #E4D6CC", +"G c #E6D6C8", +"H c #2E2A27", +"I c #ECECEC", +"J c #A4A3A3", +"K c #CDCDCC", +"L c #A1A09F", +"M c #BEBBB9", +"N c #E4DED8", +"O c #BAB3AD", +"P c #9D958E", +"Q c #B6ACA2", +"R c #BAACA1", +"S c #E3D0C0", +"T c #2D2926", +"U c #939291", +"V c #C5C2C0", +"W c #95918E", +"X c #9E9893", +"Y c #B8AFA7", +"Z c #8F867F", +"` c #978D83", +" . c #CFBEAF", +".. c #E1CCB9", +"+. c #2D2824", +"@. c #F3F3F3", +"#. c #D1D0CF", +"$. c #DFDBD8", +"%. c #CEC8C2", +"&. c #C5BEB7", +"*. c #D3C8BE", +"=. c #C3B6AC", +"-. c #D1C1B4", +";. c #D4C2B3", +">. c #D2BDAB", +",. c #DFC5B0", +"'. c #2C2723", +"). c #000000", +"!. c #6E6E6E", +"~. c #EFEDEC", +"{. c #C5C1BE", +"]. c #D8D1CC", +"^. c #C4BBB4", +"/. c #BAB0A7", +"(. c #CABCB1", +"_. c #B7A89C", +":. c #C8B6A7", +"<. c #CCB8A5", +"[. c #C8B19D", +"}. c #DBBFA7", +"|. c #28231E", +"1. c #333333", +"2. c #6E6E6F", +"3. c #808080", +"4. c #6D6C6B", +"5. c #E9E4E0", +"6. c #99938F", +"7. c #9B948E", +"8. c #A39991", +"9. c #9E9289", +"0. c #AEA094", +"a. c #BAA99A", +"b. c #9A897B", +"c. c #9D8A7A", +"d. c #AC9582", +"e. c #D9B99E", +"f. c #38332E", +"g. c #999999", +"h. c #505050", +"i. c #2D2D2D", +"j. c #A4A4A4", +"k. c #5E5E5F", +"l. c #4B4B4B", +"m. c #6C6A67", +"n. c #F2EAE2", +"o. c #F6EAE1", +"p. c #F4E6DB", +"q. c #F2E2D3", +"r. c #F1DECD", +"s. c #EFD8C5", +"t. c #EDD4BE", +"u. c #EBCFB7", +"v. c #EACAB0", +"w. c #E8C5A8", +"x. c #D7B496", +"y. c #2D2621", +"z. c #818181", +"A. c #7A7A7A", +"B. c #707070", +"C. c #4D4D4D", +"D. c #444444", +"E. c #4A4A4A", +"F. c #575552", +"G. c #B2AAA3", +"H. c #B1A69E", +"I. c #B0A399", +"J. c #AD9D90", +"K. c #AC998A", +"L. c #AA9685", +"M. c #A9927F", +"N. c #A88F7A", +"O. c #A68B73", +"P. c #A3856C", +"Q. c #25201B", +"R. c #595959", +"S. c #3A3A3A", +"T. c #434343", +"U. c #3F3F3F", +"V. c #292929", +"W. c #040404", +"X. c #2B2B2B", +"Y. c #545454", +"Z. c #6D6D6D", +"`. c #3D3D3D", +" + c #212121", +".+ c #898989", +"++ c #272727", +"@+ c #010101", +"#+ c #787878", +"$+ c #6A6A6A", +"%+ c #606060", +"&+ c #0B0B0B", +"*+ c #555555", +"=+ c #525252", +"-+ c #868686", +";+ c #515151", +">+ c #0C0C0C", +",+ c #777777", +"'+ c #7C7C7C", +")+ c #343434", +"!+ c #171717", +" ", +" . + + + + + + + @ # ", +" $ % & & & & & & * = - ", +" $ ; > , ' ) ! ~ { ] ^ / ", +" $ ( _ ' : < [ ; } | [ 1 2 ", +" $ 3 4 5 6 7 8 9 0 a b c d ", +" $ ' e f g ^ h i j k l m n ", +" $ o p q r s t u v w x y z ", +" $ ( 7 < [ A B C D E F G H ", +" $ I J K L M N O P Q R S T ", +" $ s 0 U V W X Y Z ` ...+. ", +" $ @.#.$.%.&.*.=.-.;.>.,.'. ", +" ).!.~.{.].^./.(._.:.<.[.}.|.). ", +" 1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i. ", +" ).j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.# z.A. ", +" B.C.D.E.F.G.H.I.0.J.K.L.M.N.O.P.Q.- R.$ S.", +" A.T.U.V.).).).).).).).).).).).).W.X.Y.Z.`.", +" +.+++@+).).).).).).).).).).).).).W.. #+ ", +" $+%+. ).).).).).).).).).).).).&+*+{ =+ ", +" X.D.-+-+;+>+>+>+>+>+>+>+,+-+'+)+ ", +" ).).D.A.A.A.A.A.A.A.!+).). ", +" "}; diff --git a/kommander/editor/pics/large/editgrid.xpm b/kommander/editor/pics/large/editgrid.xpm new file mode 100644 index 00000000..bbec2531 --- /dev/null +++ b/kommander/editor/pics/large/editgrid.xpm @@ -0,0 +1,206 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 168 2", +" c #292910100808", +". c #313108080808", +"X c #393908080000", +"o c #313110100808", +"O c #393910100808", +"+ c #313110101010", +"@ c #393918181818", +"# c #393921211818", +"$ c #313121212121", +"% c #393929292121", +"& c #393929292929", +"* c #424208080000", +"= c #4a4a08080000", +"- c #424218181010", +"; c #525208080000", +": c #5a5a08080000", +"> c #525210100000", +", c #5a5a10100000", +"< c #525218181010", +"1 c #5a5a18181010", +"2 c #424221211818", +"3 c #5a5a21211818", +"4 c #424229292121", +"5 c #424229292929", +"6 c #4a4a29292929", +"7 c #424231312929", +"8 c #4a4a31312929", +"9 c #424231313131", +"0 c #4a4a31313131", +"q c #4a4a39393131", +"w c #525239393939", +"e c #636310100000", +"r c #636310100808", +"t c #6b6b10100808", +"y c #6b6b18180808", +"u c #737318180808", +"i c #7b7b18180808", +"p c #636321211010", +"a c #737321211010", +"s c #6b6b29292121", +"d c #636331312929", +"f c #7b7b31312121", +"g c #525242424242", +"h c #52524a4a4242", +"j c #52524a4a4a4a", +"k c #5a5a42424242", +"l c #5a5a4a4a4a4a", +"z c #5a5a52524a4a", +"x c #5a5a52525252", +"c c #63634a4a4242", +"v c #6b6b5a5a5a5a", +"b c #6b6b63636363", +"n c #73736b6b6b6b", +"m c #848421211010", +"M c #8c8c21211010", +"N c #8c8c29291818", +"B c #9c9c29291818", +"V c #949431311818", +"C c #9c9c31311818", +"Z c #949439392929", +"A c #9c9c39392121", +"S c #9c9c39392929", +"D c #a5a529291010", +"F c #a5a529291818", +"G c #adad29291818", +"H c #a5a531311818", +"J c #b5b529291010", +"K c #b5b531311818", +"L c #bdbd31311818", +"P c #a5a531312121", +"I c #a5a539392929", +"U c #adad39392121", +"Y c #adad39392929", +"T c #b5b539392121", +"R c #b5b539392929", +"E c #bdbd31312121", +"W c #bdbd39392121", +"Q c #a5a542423131", +"! c #adad4a4a3939", +"~ c #b5b542422929", +"^ c #bdbd42422929", +"/ c #b5b542423131", +"( c #b5b54a4a3939", +") c #bdbd42423131", +"_ c #9c9c5a5a5252", +"` c #9c9c63635252", +"' c #9c9c63635a5a", +"] c #9c9c6b6b6363", +"[ c #9c9c73736b6b", +"{ c #9c9c7b7b7373", +"} c #a5a54a4a4242", +"| c #adad4a4a4242", +" . c #b5b552524242", +".. c #a5a563635a5a", +"X. c #adad6b6b5a5a", +"o. c #b5b56b6b5a5a", +"O. c #adad6b6b6363", +"+. c #a5a573736b6b", +"@. c #adad73736b6b", +"#. c #a5a573737373", +"$. c #a5a57b7b7373", +"%. c #a5a57b7b7b7b", +"&. c #b5b573736b6b", +"*. c #bdbd73736363", +"=. c #c6c639392121", +"-. c #cece39392121", +";. c #c6c642422929", +":. c #c6c642423131", +">. c #c6c64a4a3131", +",. c #c6c64a4a3939", +"<. c #cece4a4a3131", +"1. c #cece4a4a3939", +"2. c #d6d642422929", +"3. c #d6d64a4a3131", +"4. c #d6d64a4a3939", +"5. c #dede4a4a3131", +"6. c #dede4a4a3939", +"7. c #dede52523939", +"8. c #e7e752523939", +"9. c #efef52523939", +"0. c #efef5a5a3939", +"q. c #cece5a5a4242", +"w. c #d6d65a5a4242", +"e. c #d6d65a5a4a4a", +"r. c #dede52524242", +"t. c #dede5a5a4242", +"y. c #dede63634a4a", +"u. c #dede63635252", +"i. c #e7e75a5a4242", +"p. c #efef5a5a4242", +"a. c #e7e763634a4a", +"s. c #efef63634a4a", +"d. c #efef63635252", +"f. c #f7f763634242", +"g. c #f7f763634a4a", +"h. c #ffff63634a4a", +"j. c #f7f773735a5a", +"k. c #ffff73735a5a", +"l. c #efef7b7b6363", +"z. c #efef7b7b6b6b", +"x. c #ffff7b7b6363", +"c. c #a5a584847b7b", +"v. c #b5b584847b7b", +"b. c #ffff84846b6b", +"n. c #f7f784847373", +"m. c #8c8c84848484", +"M. c Gray55", +"N. c #9c9c8c8c8c8c", +"B. c Gray58", +"V. c #a5a584848484", +"C. c #a5a58c8c8484", +"Z. c #adad94948c8c", +"A. c #a5a59c9c9c9c", +"S. c #adad94949494", +"D. c #b5b58c8c8484", +"F. c #a5a5a5a59c9c", +"G. c #adada5a59c9c", +"H. c #b5b5a5a59c9c", +"J. c #a5a5a5a5a5a5", +"K. c #adada5a5a5a5", +"L. c Gray68", +"P. c #b5b5a5a5a5a5", +"I. c #b5b5adadadad", +"U. c Gray71", +"Y. c Gray74", +"T. c #c6c69c9c9494", +"R. c #c0c0c0c0c0c0", +"E. c None", +/* pixels */ +"E.E.E.E.E.{ ;.u./ p k E.E.E.E.E.E.E.E.E.E.[ ,.u.I 3 v E.E.E.E.E.", +"E.E.E.E.E.+.=.i.Y r 9 Y.E.E.E.E.E.E.E.E.E.' -.a.P ; l E.E.E.E.E.", +"E.E.E.E.E.+.E a.~ r 8 Y.E.E.E.E.E.E.E.E.E.' ;.i.P : z Y.E.E.E.E.", +"E.E.E.E.E.#.=.i.~ r 7 Y.E.E.E.E.E.E.E.E.E.] -.a.P > l E.E.E.E.E.", +"E.E.E.E.E.c.L i.~ e & E.E.E.E.E.E.E.E.E.E.[ -.i.P , j E.E.E.E.E.", +"D.*.&.&.&.| K a.~ r < &.*.&.&.&.&.&.&.&.&.Q ;.a.P ; s &.&.&.&.v.", +"y.p.0.p.0.0.7.i.R N 7.9.p.0.0.9.0.0.9.0.0.9.7.t.H f 8.9.0.9.9.t.", +"n.b.b.b.b.b.b.d.,.j.b.b.b.b.x.b.b.x.b.x.b.x.x.a.,.x.x.x.x.x.x.z.", +" .~ ~ ) R ^ R >.,.~ / ^ R R ^ R R ~ R ~ R R R >.:.~ R ~ R ~ R ! ", +"d ; ; > ; = y 1.) y > > r > r > r > r > r = m t.P r > r > r > 3 ", +"n $ % % & # F i.) u & & & & & & & & & & 2 ^ i.U r & & & & g ", +"Y.Y.Y.Y.Y.S.J i.) u + U.Y.E.E.E.E.E.E.E.E.[ =.i.U r w Y.Y.E.E.Y.", +"E.E.E.E.E.Z.G 7.>.u - U.E.E.E.E.E.E.E.E.E.$.=.i.I , w Y.E.E.E.E.", +"E.E.E.E.E.S.G i.) u o L.E.E.E.E.E.E.E.E.E.$.W i.U r q E.E.E.E.E.", +"E.E.E.E.E.G.G 7.>.a o L.E.E.E.E.E.E.E.E.E.$.W i.Y r 0 Y.E.E.E.E.", +"E.E.E.E.E.A.G 7.>.i . L.E.E.E.E.E.E.E.E.E.c.E i.Y e q Y.E.E.E.E.", +"E.E.E.E.E.G.G 7.>.a o K.E.E.E.E.E.E.E.E.E.%.L i.U r 8 Y.E.E.E.E.", +"E.E.E.E.E.P.G 7.>.i O J.E.E.E.E.E.E.E.E.E.c.W t.Y y 0 Y.E.E.E.E.", +"E.E.E.E.E.P.F 7.1.a . F.E.E.E.E.E.E.E.E.E.V.L i.Y e 6 Y.E.E.E.E.", +"E.E.E.E.E.P.F 7.>.m O A.E.E.E.E.E.E.E.E.E.C.L t.T r 4 Y.E.E.E.E.", +"E.E.E.E.E.I.D 6.>.i . J.E.E.E.E.E.E.E.E.E.N.K i.Y e 5 Y.E.E.E.E.", +"I.@.@.@.@...D 4.1.a = _ @.O.O.O.O.O.O.O.O.} L r.R , 1 X.o.X.o.@.", +"T.f.f.f.f.g.s.r.>.V w.h.f.g.g.f.g.f.f.g.f.g.p.t.U S s.h.g.g.g.g.", +"H.x.x.b.x.x.x.j.<.u.x.x.x.x.x.x.x.x.x.l.x.x.l.a.>.j.k.j.j.j.j.l.", +"Z.P P P P P P Y >.U P P P P A F A F A F H C B ^ ) C B A B A B S ", +"N.= = = = * = ~ 4.a > * = = = O = O = = = * y r.R r * = * = * = ", +"L.l h h j j a 5.1.M X 9 j j l l l l z x j w H 8.R y o x x x x b ", +"E.Y.E.E.Y.Y.A 3.1.M O M.E.E.E.E.E.E.E.E.E.S.L t.R y 2 Y.E.E.E.E.", +"E.E.E.E.E.Y.S 2.1.M * m.E.E.E.E.E.E.E.E.E.S.G 7.R y 2 Y.E.E.E.E.", +"E.E.E.E.E.Y.Z 2.1.N * m.E.E.E.E.E.E.E.E.E.S.K 7.~ t @ Y.E.E.E.E.", +"E.E.E.E.E.Y.Q ;.4.M X m.E.E.E.E.E.E.E.E.E.S.K 8.R u O U.E.E.E.E.", +"E.E.E.E.E.Y.` 1.q.Z 4 B.E.E.E.E.E.E.E.E.E.K.! e.( d c Y.E.E.E.E." +}; diff --git a/kommander/editor/pics/large/edithlayout.xpm b/kommander/editor/pics/large/edithlayout.xpm new file mode 100644 index 00000000..4370cac8 --- /dev/null +++ b/kommander/editor/pics/large/edithlayout.xpm @@ -0,0 +1,103 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 65 1", +" c #26260a0a0606", +". c #2f2f08080202", +"X c #252512120f0f", +"o c #2d2d13130f0f", +"O c #272715151212", +"+ c #2c2c1f1f1d1d", +"@ c #303009090303", +"# c #373713130e0e", +"$ c #333327272525", +"% c #41410c0c0202", +"& c #51510f0f0404", +"* c #515110100505", +"= c #545418180e0e", +"- c #404035353333", +"; c #4b4b3a3a3737", +": c #636314140707", +"> c #636315150808", +", c #66661e1e1212", +"< c #707019190a0a", +"1 c #7a7a1f1f0f0f", +"2 c #727222221414", +"3 c #767632322626", +"4 c #707042423939", +"5 c #8e8e21210f0f", +"6 c #818127271818", +"7 c #818128281919", +"8 c #8a8a23231212", +"9 c #8d8d29291919", +"0 c #9c9c23230f0f", +"q c #9c9c25251212", +"w c #9a9a2a2a1717", +"e c #9b9b2d2d1a1a", +"r c #818130302323", +"t c #999934342323", +"y c #adad27271111", +"u c #adad28281212", +"i c #aaaa2e2e1a1a", +"p c #baba30301a1a", +"a c #a7a736362323", +"s c #a5a53a3a2828", +"d c #a8a834342121", +"f c #b4b438382424", +"g c #b7b73e3e2a2a", +"h c #b3b344443232", +"j c #c7c73f3f2929", +"k c #c9c93c3c2626", +"l c #c3c342422d2d", +"z c #c4c44f4f3b3b", +"x c #cece4c4c3737", +"c c #d5d547473030", +"v c #d4d448483131", +"b c #d7d755553f3f", +"n c #dede51513939", +"m c #cfcf57574343", +"M c #d5d555554040", +"N c #dede5c5c4747", +"B c #dede5e5e4848", +"V c #dfdf62624c4c", +"C c #e7e75f5f4747", +"Z c #e6e65f5f4848", +"A c #e7e761614949", +"S c #eaea60604747", +"D c #e9e960604848", +"F c #c0c0c0c0c0c0", +"G c None", +/* pixels */ +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"sgBVms3=;GGGqlAVzr7+4GGVtbABs7,$", +"9ibAxe<@;GGV0jCNg8*.GGG4yvAMd1%o", +"9pnZxe<%;GGG9kCNg8>#4GGVuvDbd1*#", +"9pnZx9<%;GGV6kCNg8>.4GG4evDba1&O", +"9pnZxe<%;GGG5kCCg8>#GGGVwvDbd1*#", +"9pnZxe<%;GGV0knNg8>X4GG4uvDbi1*O", +"9pnZxe<%;GGG9kCCg8>+4GGVuvDba1*#", +"9pnZxe<%;GGV6kCNg8>@GGG4evDba1&O", +"9pnZxe<%;GGG5kCNg8> 4GGVwvDbi1*#", +"9pnZxe<%;GGV0knCg8:$4GG4uvDbd1*O", +"9pnZxe<%;GGG9kCNg8: GGGVuvDbd1*#", +"9pnZxe<%;GGV6kCNg8>.4GG4evDba1&O", +"8pnCxe<%-GGG5kCCf8:o4GGBwcSbi1&o", +"sgBVms6$4GGVtlVVzr2+GGG4dmVBh7,$", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG", +"GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG" +}; diff --git a/kommander/editor/pics/large/editlower.xpm b/kommander/editor/pics/large/editlower.xpm new file mode 100644 index 00000000..b243115c --- /dev/null +++ b/kommander/editor/pics/large/editlower.xpm @@ -0,0 +1,144 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 106 2", +" c #b5b552523939", +". c #84847b7b7b7b", +"X c #bdbd73736b6b", +"o c #c6c652523939", +"O c #cece52523939", +"+ c #d6d65a5a3939", +"@ c #dede5a5a3939", +"# c #efef5a5a3939", +"$ c #ffff63633939", +"% c #d6d65a5a4242", +"& c #cece6b6b5a5a", +"* c #d6d66b6b5252", +"= c #d6d66b6b5a5a", +"- c #dede73735a5a", +"; c #c6c673736363", +": c #c6c67b7b6b6b", +"> c #cece7b7b7373", +", c #dede7b7b6363", +"< c #efef5a5a4242", +"1 c #efef63634242", +"2 c #e7e76b6b5252", +"3 c #e7e773735a5a", +"4 c #efef73735252", +"5 c #efef73735a5a", +"6 c #f7f763634242", +"7 c #f7f76b6b4a4a", +"8 c #ffff63634242", +"9 c #ffff6b6b4242", +"0 c #ffff6b6b4a4a", +"q c #ffff73734a4a", +"w c #f7f773735252", +"e c #f7f773735a5a", +"r c #ffff73735252", +"t c #ffff7b7b5a5a", +"y c #efef7b7b6363", +"u c #bdbd8c8c7b7b", +"i c #c6c684847b7b", +"p c #c6c68c8c7b7b", +"a c #cece84847373", +"s c #cece8c8c7b7b", +"d c #dede84847373", +"f c #e7e784846b6b", +"g c #ffff84846363", +"h c #ffff8c8c6b6b", +"j c #ffff8c8c7373", +"k c #8c8c84848484", +"l c #94948c8c8c8c", +"z c #949494948c8c", +"x c Gray58", +"c c #9c9c94949494", +"v c Gray61", +"b c #adad94948c8c", +"n c #b5b58c8c8484", +"m c #bdbd94948c8c", +"M c #b5b59c9c9494", +"N c #bdbd9c9c9c9c", +"B c #bdbda5a59c9c", +"V c #a5a5a5a5a5a5", +"C c #adada5a5a5a5", +"Z c Gray68", +"A c #b5b5a5a5a5a5", +"S c #b5b5adadadad", +"D c #b5b5b5b5adad", +"F c #bdbdb5b5adad", +"G c Gray71", +"H c #bdbdb5b5b5b5", +"J c #bdbdbdbdb5b5", +"K c Gray74", +"L c #c6c68c8c8484", +"P c #cece9c9c8c8c", +"I c #c6c69c9c9494", +"U c #d6d694948c8c", +"Y c #c6c6a5a59c9c", +"T c #ceceadada5a5", +"R c #c6c6b5b5adad", +"E c #c6c6bdbdbdbd", +"W c #dedeb5b5a5a5", +"Q c #e7e7bdbdb5b5", +"! c #e7e7c6c6b5b5", +"~ c #e7e7c6c6bdbd", +"^ c #e7e7cecebdbd", +"/ c #ffffcecebdbd", +"( c #c0c0c0c0c0c0", +") c #c6c6c6c6c6c6", +"_ c #cecec6c6c6c6", +"` c #cecececec6c6", +"' c #cececececece", +"] c #d6d6cececece", +"[ c Gray84", +"{ c #deded6d6d6d6", +"} c #e7e7cecec6c6", +"| c #e7e7d6d6cece", +" . c #e7e7deded6d6", +".. c #e7e7dededede", +"X. c #ffffd6d6c6c6", +"o. c #ffffdeded6d6", +"O. c #efefe7e7dede", +"+. c #f7f7efefe7e7", +"@. c #f7f7efefefef", +"#. c #ffffefefe7e7", +"$. c #f7f7f7f7efef", +"%. c #fffff7f7efef", +"&. c #fffff7f7f7f7", +"*. c #fffffffff7f7", +"=. c Gray100", +"-. c None", +/* pixels */ +": % * = & ; X : > i u n b m I N B A S R K E K -.-.-.-.-.-.-.-.-.", +"3 0 0 0 0 9 8 9 0 9 8 8 8 6 6 6 6 # # < 6 Z -.-.-.-.-.-.-.-.-.", +"f q 0 q 0 q 0 0 0 0 q 0 q 0 0 0 0 q q q q v -.-.-.-.-.-.-.-.-.", +"d 0 0 0 0 0 0 0 q 0 0 0 0 0 q 0 q 0 0 0 q o v -.-.-.-.-.-.-.-.-.", +"s 9 0 0 0 0 0 0 0 0 q 0 0 0 0 0 0 0 0 0 q o c -.-.-.-.-.-.-.-.-.", +"L 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O x -.-.-.-.-.-.-.-.-.", +"U 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 q + x -.-.-.-.-.-.-.-.-.", +"P 0 0 9 0 0 9 0 0 9 0 0 9 0 0 9 0 0 9 0 0 @ l -.-.-.-.-.-.-.-.-.", +"M 0 9 0 0 9 0 0 9 0 0 9 0 0 9 0 0 9 0 0 0 < k -.-.-.-.-.-.-.-.-.", +"Y 0 0 0 0 0 0 0 0 9 9 9 9 9 0 9 9 0 9 9 9 1 . -.-.-.-.-.-.-.-.-.", +"T 0 0 9 9 0 9 9 0 0 5 e w 7 0 7 9 7 8 6 9 # . -.) -.-.-.-.-.-.-.", +"S 0 9 0 0 9 0 0 8 h O.O. . .| | } ^ ~ ! Q W F J H H G D S Z S Z ", +"F 7 9 9 0 9 0 9 $ j =.*.=.*.=.*.=.=.=.=.=.=.*.*.*.*.%.&.%.%.$.l ", +"E w 8 0 9 0 9 0 8 g %.*.&.&.*.&.%.*.&.%.*.%.&.&.&.&.*.%.*.*.&.l ", +"K 5 9 8 0 9 8 9 8 t %.*.%.%.%.%.*.%.%.&.%.*.%.%.%.%.%.&.%.&.*.z ", +"K - 8 0 9 8 0 9 8 r #.&.%.*.&.*.&.%.&.*.%.&.%.*.&.*.&.*.%.%.*.l ", +"E , 9 8 9 0 9 8 8 r #.*.%.%.%.%.%.*.%.%.%.&.%.&.%.%.%.%.&.*.*.l ", +"-.f 9 0 8 9 0 9 8 0 o.*.&.%.&.%.&.%.%.&.%.%.&.%.%.&.%.&.%.%.=.l ", +"-.a 8 8 9 8 8 8 8 9 o.*.&.%.&.%.%.&.%.%.&.%.%.&.%.%.%.%.%.%.*.v ", +"-.p 8 9 8 8 9 9 9 8 X.*.%.%.%.%.&.%.%.%.%.%.%.%.%.%.&.%.&.%.*.V ", +"-.Y 3 y 5 2 4 w 7 8 / *.%.&.%.%.%.%.&.%.&.%.%.%.&.%.%.%.%.%.=.V ", +"-.E K ) K K K E K F [ *.%.%.%.&.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.V ", +"-.-.-.-.-.-.-.-.-.-.] &.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.=.V ", +"-.-.-.-.-.-.-.-.-.-._ *.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.C ", +"-.-.-.-.-.-.-.-.-.-._ *.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.=.V ", +"-.-.-.-.-.-.-.-.-.-.] %.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.%.*.V ", +"-.-.-.-.-.-.-.-.-.-.' %.%.%.%.%.%.%.%.%.%.@.%.%.@.%.%.@.%.%.*.C ", +"-.-.-.-.-.-.-.-.-.-.E %.%.@.%.@.%.@.%.@.%.%.%.%.%.%.%.%.%.%.*.V ", +"-.-.-.-.-.-.-.-.-.-.J &.%.%.%.%.%.%.%.%.%.@.%.@.%.@.%.%.@.%.*.C ", +"-.-.-.-.-.-.-.-.-.-._ %.%.%.%.%.%.@.%.%.%.%.#.%.%.#.@.%.#.$.*.S ", +"-.-.-.-.-.-.-.-.-.-.) O.O.+.+.+.+.@.%.#.$.@.%.%.%.%.%.%.%.%.*.F ", +"-.-.-.-.-.-.-.-.-.-.K K ) K G K ) ` G K _ ] ' E ' { { ' | ..O.H " +}; diff --git a/kommander/editor/pics/large/editpaste.xpm b/kommander/editor/pics/large/editpaste.xpm new file mode 100644 index 00000000..612bb258 --- /dev/null +++ b/kommander/editor/pics/large/editpaste.xpm @@ -0,0 +1,46 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 8 1", +" c Gray0", +". c #000000008080", +"X c #808080800000", +"o c Yellow", +"O c #808080808080", +"+ c #c0c0c0c0c0c0", +"@ c Gray100", +"# c None", +/* pixels */ +"################################", +"################################", +"########## ##############", +"######### #############", +"## oo ######", +"# oooo #####", +" XOXOX oo oo OXOXO ####", +" XOXOX oo oo OXOXO ####", +" OXOX ++++++++++ OXOX ####", +" XOXO ++++++++++++ XOXO ####", +" OXOX OXOX ####", +" XOXO XOXO ####", +" OXOXOXOXOXOXOXOXOXOXOXOX ####", +" XOXOXOXOXOXOXOXOXOXOXOXO ####", +" OXOXOXOXOX.............. ####", +" XOXOXOXOXO............... ####", +" OXOXOXOXOX..@@@@@@@@@@....####", +" XOXOXOXOXO..@@@@@@@@@@.....###", +" OXOXOXOXOX..@@@@@@@@@@..@...##", +" XOXOXOXOXO..@@@@@@@@@@..@@...#", +" OXOXOXOXOX..@@......@@........", +" XOXOXOXOXO..@@......@@........", +" OXOXOXOXOX..@@@@@@@@@@@@@@@@..", +" XOXOXOXOXO..@@@@@@@@@@@@@@@@..", +" OXOXOXOXOX..@@............@@..", +" OXOXOXOXO..@@............@@..", +"# ..@@@@@@@@@@@@@@@@..", +"## ..@@@@@@@@@@@@@@@@..", +"############....................", +"############....................", +"################################", +"################################" +}; diff --git a/kommander/editor/pics/large/editraise.xpm b/kommander/editor/pics/large/editraise.xpm new file mode 100644 index 00000000..0ab21ec7 --- /dev/null +++ b/kommander/editor/pics/large/editraise.xpm @@ -0,0 +1,149 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 111 2", +" c #b5b552523939", +". c #bdbd52523939", +"X c #8c8c5a5a4a4a", +"o c #84845a5a5252", +"O c #949452524242", +"+ c #9c9c52524242", +"@ c #848463635a5a", +"# c #848463636363", +"$ c #84846b6b6363", +"% c #84846b6b6b6b", +"& c #b5b55a5a4242", +"* c #b5b55a5a4a4a", +"= c #adad63635252", +"- c #bdbd73736b6b", +"; c #c6c652523939", +": c #d6d64a4a3131", +"> c #d6d652523939", +", c #dede52523939", +"< c #efef52523131", +"1 c #efef5a5a3939", +"2 c #f7f75a5a3939", +"3 c #ffff5a5a3939", +"4 c #ffff63633939", +"5 c #d6d65a5a4242", +"6 c #cece6b6b5a5a", +"7 c #d6d663634a4a", +"8 c #dede73735a5a", +"9 c #c6c673736363", +"0 c #cece7b7b7373", +"q c #dede7b7b6363", +"w c #efef6b6b5252", +"e c #e7e773735252", +"r c #efef73735252", +"t c #f7f763634242", +"y c #f7f76b6b4a4a", +"u c #ffff63634242", +"i c #ffff6b6b4242", +"p c #ffff6b6b4a4a", +"a c #f7f76b6b5252", +"s c #ffff73734a4a", +"d c #f7f773735252", +"f c #e7e77b7b6363", +"g c #e7e77b7b6b6b", +"h c #9c9c84847b7b", +"j c #bdbd84847b7b", +"k c #c6c684847373", +"l c #c6c68c8c7b7b", +"z c #dede84846b6b", +"x c #d6d684847373", +"c c #e7e784847373", +"v c #94948c8c8c8c", +"b c #949494948c8c", +"n c Gray58", +"m c #adad94948c8c", +"M c #b5b58c8c8484", +"N c #bdbd94948c8c", +"B c #bdbd9c9c9494", +"V c #bdbd9c9c9c9c", +"C c #a5a5a5a59c9c", +"Z c #bdbda5a59c9c", +"A c #a5a5a5a5a5a5", +"S c #adada5a5a5a5", +"D c Gray68", +"F c #b5b5a5a5a5a5", +"G c #b5b5adadadad", +"H c #b5b5b5b5adad", +"J c Gray71", +"K c #bdbdb5b5b5b5", +"L c Gray74", +"P c #cece94948484", +"I c #c6c69c9c9494", +"U c #d6d69c9c8c8c", +"Y c #c6c6adada5a5", +"T c #c6c6b5b5b5b5", +"R c #c6c6bdbdbdbd", +"E c #efef9c9c8c8c", +"W c #ffffa5a58c8c", +"Q c #ffffadad9494", +"! c #ffffadad9c9c", +"~ c #ffffb5b5a5a5", +"^ c #ffffbdbdadad", +"/ c #c6c6c6c6bdbd", +"( c #ffffc6c6b5b5", +") c #ffffcecebdbd", +"_ c #c0c0c0c0c0c0", +"` c #c6c6c6c6c6c6", +"' c #cecececec6c6", +"] c #cececececece", +"[ c #d6d6c6c6c6c6", +"{ c #d6d6cececece", +"} c #d6d6d6d6cece", +"| c #deded6d6cece", +" . c #deded6d6d6d6", +".. c #efefd6d6cece", +"X. c #e7e7deded6d6", +"o. c #e7e7dededede", +"O. c #ffffd6d6c6c6", +"+. c #ffffdeded6d6", +"@. c #e7e7e7e7dede", +"#. c #efefe7e7dede", +"$. c #e7e7e7e7e7e7", +"%. c #e7e7efefe7e7", +"&. c #efefe7e7e7e7", +"*. c #f7f7efefe7e7", +"=. c #f7f7efefefef", +"-. c #f7f7f7f7efef", +";. c #fffff7f7efef", +":. c #fffff7f7f7f7", +">. c #fffffffff7f7", +",. c Gray100", +"<. c None", +/* pixels */ +"6 5 7 6 6 9 - - 0 k j M m N I V Z F G T K R <.<.<.<.<.<.<.<.<.<.", +"d p p p i i i i i p u u 4 2 2 1 1 1 < 1 , h <.<.<.<.<.<.<.<.<.<.", +"8 s p s p p p p p p p p p s s p s p s d t % <.<.<.<.<.<.<.<.<.<.", +"f p p p p p p p p p p s p p p p p p p p t $ <.<.<.<.<.<.<.<.<.<.", +"c i p p p p s p s p p p p p p p p p p p i # <.<.<.<.<.<.<.<.<.<.", +"x p p p p p p p p p p p p p p p p p p p i @ <.<.<.<.<.<.<.<.<.<.", +"l i p p p p p p p p p i p p i p p i p p p o <.<.<.<.<.<.<.<.<.<.", +"P i p i p p i p p i p p p p p p i p p p i o <.<.<.<.<.<.<.<.<.<.", +"U p p p p i p p i p p i p i p i p p i i p X L <.<.<.<.<.<.<.<.<.", +"I i p i p p i p p i p i p i p p i p p p i O <.<.<.<.<.<.<.<.<.<.", +"V p i p i i p i p i p i p p i p i p i i p + D H G J J J H J K L ", +"Y p p i p p p i p p i p p i p i p p i p u = %.:.;.-.*.&.#.@. .b ", +"Y i u p u i u p u i p u i p u p u i u p i * %.>.>.:.>.>.>.>.>.v ", +"G y i p i p i p p u p i p u i p p i p u i & $.>.;.;.;.;.:.:.>.v ", +"K y i u p u p u i p u i u p i u i u i p u @.>.:.>.:.:.;.;.>.b ", +"R d u p i i i i p u p i p u p i p i p u i @.>.;.;.;.;.;.:.>.v ", +"L w i i u p u p u i i u i i u u p u i i p o.>.:.;.:.;.:.;.>.v ", +"L e u i i u i u i u i p u i i u u i u u i . X.>.;.:.;.:.;.>.>.n ", +"L f i u i u i u p i u u u u p i u p i i u ; | >.;.;.;.;.;.:.>.C ", +"` f u p u i u i u u u i p i u u i u u u i ; | >.;.;.:.;.;.;.>.A ", +"L q u u u u u u u i u u u u u i u u i u u > { >.;.:.;.;.;.;.,.C ", +"L B x z g 8 e r a p t p i u u u 4 3 3 3 4 : [ >.;.;.;.;.;.;.,.C ", +"<.<.<.<.<.L L L R H G ..+.O.) ( ^ ~ ! Q W E #.:.;.;.;.;.;.;.,.S ", +"<.<.<.<.<.<.<.<.<.<.R @.>.:.>.>.>.,.>.,.>.>.;.;.;.;.;.;.;.;.,.C ", +"<.<.<.<.<.<.<.<.<.<.` o.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.>.A ", +"<.<.<.<.<.<.<.<.<.<.L #.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.,.C ", +"<.<.<.<.<.<.<.<.<.<.L .;.;.;.=.;.;.=.;.;.=.;.;.=.;.;.=.;.;.>.S ", +"<.<.<.<.<.<.<.<.<.<.L } ;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.,.C ", +"<.<.<.<.<.<.<.<.<.<.` ] :.;.=.;.=.;.;.=.;.;.=.;.;.=.;.;.=.;.>.S ", +"<.<.<.<.<.<.<.<.<.<.<.X.;.;.;.;.;.;.=.;.=.*.;.=.*.;.=.*.;.=.>.G ", +"<.<.<.<.<.<.<.<.<.<.<.' #.&.*.*.*.*.;.*.;.;.;.>.;.;.;.;.;.;.>.H ", +"<.<.<.<.<.<.<.<.<.<.<.L L L L J L ' ` K / ] { R ' | .{ | .&.K " +}; diff --git a/kommander/editor/pics/large/editslots.xpm b/kommander/editor/pics/large/editslots.xpm new file mode 100644 index 00000000..729adb8f --- /dev/null +++ b/kommander/editor/pics/large/editslots.xpm @@ -0,0 +1,264 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 226 2", +" c #181808080000", +". c #080821212929", +"X c #181829292929", +"o c #292910100000", +"O c #313110100000", +"+ c #393918180000", +"@ c #393918180808", +"# c #313121212121", +"$ c #393931312929", +"% c #000031314242", +"& c #080842425252", +"* c #181842424a4a", +"= c #000052526b6b", +"- c #080863637b7b", +"; c #313142424a4a", +": c #4a4a21210000", +"> c #525229290000", +", c #636329290000", +"< c #6b6b29290000", +"1 c #6b6b31310000", +"2 c #7b7b31310000", +"3 c #6b6b4a4a3131", +"4 c #73734a4a3131", +"5 c #42424a4a5252", +"6 c #5a5a52524a4a", +"7 c #42425a5a6363", +"8 c #636363635a5a", +"9 c #73736b6b6363", +"0 c #73737b7b7b7b", +"q c #7b7b73737373", +"w c #7b7b7b7b7373", +"e c #00006b6b8484", +"r c #08086b6b8484", +"t c #000073739494", +"y c #08088c8c9c9c", +"u c #08088484adad", +"i c #08088c8cadad", +"p c #08089494b5b5", +"a c #18188484a5a5", +"s c #1818a5a5bdbd", +"d c #31319c9cadad", +"f c #31319c9cb5b5", +"g c #08089c9cc6c6", +"h c #1010a5a5cece", +"j c #1010adadd6d6", +"k c #1010bdbdefef", +"l c #1818bdbde7e7", +"z c #2929a5a5c6c6", +"x c #3131bdbdd6d6", +"c c #1010c6c6efef", +"v c #1010ceceffff", +"b c #1818c6c6f7f7", +"n c #1818ceceffff", +"m c #1010d6d6ffff", +"M c #1818e7e7ffff", +"N c #1818efefffff", +"B c #1818ffffffff", +"V c #3131c6c6c6c6", +"C c #3939c6c6c6c6", +"Z c #2121dedeefef", +"A c #3939dedee7e7", +"S c #2121e7e7e7e7", +"D c #2121efefffff", +"F c #2121ffffffff", +"G c #2929ffffffff", +"H c #3939efefefef", +"J c #3131f7f7ffff", +"K c #3131ffffffff", +"L c #3939ffffffff", +"P c #4242a5a5b5b5", +"I c #5a5ab5b5b5b5", +"U c #6b6b84848c8c", +"Y c #737384848c8c", +"T c #7b7b84848484", +"R c #7373a5a5adad", +"E c #7373adadb5b5", +"W c #7b7bb5b5bdbd", +"Q c #7b7bbdbdc6c6", +"! c #4a4ad6d6d6d6", +"~ c #4a4ad6d6dede", +"^ c #5252d6d6dede", +"/ c #5252dededede", +"( c #4242e7e7efef", +") c #4a4affffffff", +"_ c #5252ffffffff", +"` c #6363dededede", +"' c #6b6bdededede", +"] c #7b7bc6c6c6c6", +"[ c #7373c6c6d6d6", +"{ c #6b6befefefef", +"} c #6363ffffffff", +"| c #7373f7f7ffff", +" . c #7373ffffffff", +".. c #848439390000", +"X. c #949442420000", +"o. c #9c9c42420000", +"O. c #94945a5a1818", +"+. c #a5a542420000", +"@. c #adad42420000", +"#. c #adad4a4a0000", +"$. c #b5b54a4a0000", +"%. c #b5b552520000", +"&. c #bdbd52520000", +"*. c #adad6b6b3939", +"=. c #8c8c63634a4a", +"-. c #94946b6b4242", +";. c #84847b7b7b7b", +":. c #adad73734a4a", +">. c #c6c65a5a0808", +",. c #d6d65a5a0000", +"<. c #dede63630808", +"1. c #d6d66b6b1818", +"2. c #e7e763630000", +"3. c #efef6b6b0808", +"4. c #e7e773731818", +"5. c #f7f763630000", +"6. c #f7f76b6b1010", +"7. c #ffff73730808", +"8. c #ffff7b7b0000", +"9. c #f7f773731010", +"0. c #ffff7b7b1010", +"q. c #ffff7b7b1818", +"w. c #bdbd9c9c3939", +"e. c #b5b58c8c7373", +"r. c #d6d68c8c2929", +"t. c #d6d68c8c3131", +"y. c #ffff84840808", +"u. c #ffff8c8c0808", +"i. c #ffff84841818", +"p. c #ffff8c8c1010", +"a. c #ffff8c8c1818", +"s. c #ffff94940808", +"d. c #ffff9c9c0808", +"f. c #ffff94941818", +"g. c #ffff9c9c1010", +"h. c #efef84842121", +"j. c #efef94942929", +"k. c #ffff94942121", +"l. c #ffff94942929", +"z. c #ffff9c9c3131", +"x. c #ffffa5a50808", +"c. c #ffffa5a52121", +"v. c #ffffa5a52929", +"b. c #ffffa5a53131", +"n. c #ffffadad3939", +"m. c #ffffb5b52929", +"M. c #ffffbdbd2121", +"N. c #ffffbdbd3131", +"B. c #d6d694945252", +"V. c #d6d694945a5a", +"C. c #cece9c9c6363", +"Z. c #c6c69c9c7b7b", +"A. c #ffffb5b54242", +"S. c #ffffc6c63131", +"D. c #ffffcece3131", +"F. c #ffffc6c64a4a", +"G. c #ffffc6c65252", +"H. c #ffffd6d64242", +"J. c #ffffdede4a4a", +"K. c #ffffd6d65252", +"L. c #ffffd6d65a5a", +"P. c #ffffdede5a5a", +"I. c #f7f7d6d66363", +"U. c #ffffe7e76363", +"Y. c #ffffe7e76b6b", +"T. c #ffffefef6b6b", +"R. c #fffff7f76363", +"E. c #fffff7f77373", +"W. c #ffffffff7373", +"Q. c #84848c8c8c8c", +"!. c #94948c8c8484", +"~. c #94948c8c8c8c", +"^. c #9c9c94948c8c", +"/. c #9c9c9c9c9494", +"(. c Gray61", +"). c #8c8c9c9ca5a5", +"_. c #9494a5a5a5a5", +"`. c #9c9ca5a5a5a5", +"'. c #9494bdbdbdbd", +"]. c #a5a59c9c9494", +"[. c #b5b5a5a59494", +"{. c #bdbda5a59494", +"}. c #a5a5a5a5a5a5", +"|. c Gray68", +" X c #a5a5bdbdbdbd", +".X c #adadb5b5b5b5", +"XX c #adadbdbdbdbd", +"oX c #bdbdadada5a5", +"OX c Gray71", +"+X c #b5b5bdbdbdbd", +"@X c #bdbdb5b5b5b5", +"#X c Gray74", +"$X c #8c8cbdbdc6c6", +"%X c #8484c6c6c6c6", +"&X c #8484ffffffff", +"*X c #8c8cffffffff", +"=X c #9494efefefef", +"-X c #9c9ce7e7e7e7", +";X c #9494ffffffff", +":X c #9c9cffffffff", +">X c #adadffffffff", +",X c #b5b5ffffffff", +"<X c #bdbdffffffff", +"1X c #c6c6a5a58484", +"2X c #c6c6adad9c9c", +"3X c #c6c6b5b5adad", +"4X c #c6c6bdbdbdbd", +"5X c #ffffffff8484", +"6X c #ffffffff8c8c", +"7X c #ffffffff9494", +"8X c #ffffffff9c9c", +"9X c #ffffffffadad", +"0X c #ffffffffbdbd", +"qX c #c0c0c0c0c0c0", +"wX c #c6c6c6c6c6c6", +"eX c #c6c6ffffffff", +"rX c #ceceffffffff", +"tX c #d6d6ffffffff", +"yX c #dedeffffffff", +"uX c #ffffffffc6c6", +"iX c #ffffffffcece", +"pX c #ffffffffd6d6", +"aX c #ffffffffdede", +"sX c #e7e7ffffffff", +"dX c Gray100", +"fX c None", +/* pixels */ +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfX#X%X^ Z U fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfX'.H B G S ; #XfXfXfXfX#X2XZ.Z.{.@XfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfX] B K ) _ C X #XfXfX#X1Xj.s.s.u.8.4.e.#XfXfXfXfXfXfX", +"fXfXfXfXfX'.F L } &X;XI . OXfX#XB.d.M.D.S.m.f.y.5.*.OXfXfXfXfXfX", +"fXfXfXfXOXG K } ;X<XrXE & |.fXC.x.H.U.W.W.P.N.f.7.,.-.#XfXfXfXfX", +"fXfXfXfXQ F ) &X<XyXsXW e .XoXs.m.R.8X0X9X5XK.c.0.2.o.^.fXfXfXfX", +"fXfXfXwXA G _ ;XeXsXdXQ p |.V.g.H.6XuXaXiX8XU.b.0.<.@.4 #XfXfXfX", +"XX X.X$XN G _ *X<XtXsX[ l }.h.f.J.6X0XpXuX7XL.b.0.<.+.> [.3X3X@X", +":X;X;X| M G ) .:X>X,X' ( /.9.f.S.T.8X9X8XE.F.k.6.>.X.: w.P.L.I.", +"P f d z m F L _ . .&X` { ].3.p.v.G.T.E.Y.G.z.q.<.#...+ O.t.r.t.", +"|.(.`._.c M G L ) _ _ / =X}.1.7.a.v.n.A.n.l.q.<.&.X., o q !.;.~.", +"fXfXfX4Xz v n D J J J ~ -X.X:.2.7.0.i.i.i.9.<.&.o.2 + # #XfXfXfX", +"fXfXfXfXR j k b n b b x ' OX(.#.,.<.<.6.<.>.%.X.2 : w fXfXfXfX", +"fXfXfXfXOXa g j j j h s ! @X#X=.X.$.%.#.+.o...1 : $ #XfXfXfXfX", +"fXfXfXfXfX).t u i u a y V #XfX+X3 < 2 ..2 1 > O # |.fXfXfXfXfX", +"fXfXfXfXfX4XY = - r - - d #XfXfX#X9 @ O O o 6 OXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXQ.* % % % 7 4XfXfXfXfX|.T 9 8 ;.}.fXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXOXT 5 X 0 fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX", +"fXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfXfX" +}; diff --git a/kommander/editor/pics/large/editvlayout.xpm b/kommander/editor/pics/large/editvlayout.xpm new file mode 100644 index 00000000..9e1b618e --- /dev/null +++ b/kommander/editor/pics/large/editvlayout.xpm @@ -0,0 +1,89 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 51 1", +" c #1e1e05050202", +". c #262606060000", +"X c #25250e0e0b0b", +"o c #272710100d0d", +"O c #242415151313", +"+ c #2d2d1f1f1d1d", +"@ c #36360b0b0303", +"# c #333327272525", +"$ c #353529292727", +"% c #4a4a0f0f0505", +"& c #4e4e17170e0e", +"* c #4f4f19191010", +"= c #5a5a13130707", +"- c #45453a3a3838", +"; c #666616160909", +": c #68681e1e1212", +"> c #78781c1c0d0d", +", c #696920201414", +"< c #797925251717", +"1 c #4a4a40403e3e", +"2 c #7c7c44443b3b", +"3 c #4c4c42424040", +"4 c #8b8b25251414", +"5 c #8a8a2d2d1e1e", +"6 c #9b9b2d2d1b1b", +"7 c #959535352424", +"8 c #94943b3b2c2c", +"9 c #a2a22f2f1b1b", +"0 c #b7b72a2a1212", +"q c #b2b231311b1b", +"w c #aeae37372424", +"e c #adad38382525", +"r c #aaaa3d3d2c2c", +"t c #c7c749493434", +"y c #c2c24d4d3a3a", +"u c #d7d746462e2e", +"i c #eded52523838", +"p c #d3d35b5b4848", +"a c #dcdc57574141", +"s c #e6e66a6a5555", +"d c #efef68685151", +"f c #fdfd66664b4b", +"g c #f6f676765e5e", +"h c #ffff75755b5b", +"j c #f6f67e7e6767", +"k c #f6f67f7f6868", +"l c #ffff7f7f6666", +"z c #f6f683836c6c", +"x c #ffff83836a6a", +"c c #c0c0c0c0c0c0", +"v c None", +/* pixels */ +"vvvvvvvvvtqqqqqqqqqqqqrvvvvvvvvv", +"vvvvvvvvvaiiiiiiiiiiiiivvvvvvvvv", +"vvvvvvvvvzlllllllllllxzvvvvvvvvv", +"vvvvvvvvvklhlhlhlhlhlhkvvvvvvvvv", +"vvvvvvvvvyttttttttttttyvvvvvvvvv", +"vvvvvvvvv8<444444444448vvvvvvvvv", +"vvvvvvvvv,============,vvvvvvvvv", +"vvvvvvvvv+............+vvvvvvvvv", +"vvvvvvvvv311111111111-3vvvvvvvvv", +"vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv", +"vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv", +"vvvvvvvvvzvzvzvzvzvzvzvvvvvvvvvv", +"vvvvvvvvvr090909090900wvvvvvvvvv", +"vvvvvvvvvgffffffffffffgvvvvvvvvv", +"vvvvvvvvvzxxxxxxxxxxxxzvvvvvvvvv", +"vvvvvvvvvgddddddddddddsvvvvvvvvv", +"vvvvvvvvvreeeeeeeeeeeervvvvvvvvv", +"vvvvvvvvv7:>>>>>>>>>>>5vvvvvvvvv", +"vvvvvvvvv*%%%%%%%%%%%&*vvvvvvvvv", +"vvvvvvvvv+ +vvvvvvvvv", +"vvvvvvvvvz3z3v2z3v2z3z2vvvvvvvvv", +"vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv", +"vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv", +"vvvvvvvvvsppppppppppppsvvvvvvvvv", +"vvvvvvvvvyuuruuuruuuruyvvvvvvvvv", +"vvvvvvvvvjghhhghhhghhhjvvvvvvvvv", +"vvvvvvvvvzllllllllllllzvvvvvvvvv", +"vvvvvvvvvpaaaaaaaaaaaapvvvvvvvvv", +"vvvvvvvvv86666666666668vvvvvvvvv", +"vvvvvvvvv5;;;;;;;;;;;;5vvvvvvvvv", +"vvvvvvvvv*@@@@@@@@@@@@*vvvvvvvvv", +"vvvvvvvvv$ooOOOOOOOOOX#vvvvvvvvv" +}; diff --git a/kommander/editor/pics/large/filenew.xpm b/kommander/editor/pics/large/filenew.xpm new file mode 100644 index 00000000..0cb2496e --- /dev/null +++ b/kommander/editor/pics/large/filenew.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 4 1", +" c Gray0", +". c #c0c0c0c0c0c0", +"X c Gray100", +"o c None", +/* pixels */ +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooo oooooooooooo", +"oooo ooooooooooo", +"oooo XXXXXXXXXXXX oooooooooo", +"oooo XXXXXXXXXXXX ooooooooo", +"oooo XXXXXXXXXXXX X oooooooo", +"oooo XXXXXXXXXXXX XX ooooooo", +"oooo XXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo XXXXXXXXXXXXXXXXXX oooooo", +"oooo oooooo", +"oooo oooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo" +}; diff --git a/kommander/editor/pics/large/fileopen.xpm b/kommander/editor/pics/large/fileopen.xpm new file mode 100644 index 00000000..dc66dca4 --- /dev/null +++ b/kommander/editor/pics/large/fileopen.xpm @@ -0,0 +1,44 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 6 1", +" c Gray0", +". c #808080800000", +"X c Yellow", +"o c #c0c0c0c0c0c0", +"O c Gray100", +"+ c None", +/* pixels */ +"++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++", +"++++++++++++++++++ ++++++++", +"+++++++++++++++++ +++++++", +"++++++++++++++++ ++++ ++ ++", +"++++++++++++++++ ++++++ + ++", +"+++++++++++++++++++++++++ ++", +"++++++++++++++++++++++++++ ++", +"++ ++++++++++++++++ ++", +"+ +++++++++++++++ ++", +" OXOX ++++++++++", +" OXOXOX ++++++++++", +" XOXOXOXOXOXOXOXOXO ++++++++++", +" OXOXOXOXOXOXOXOXOX ++++++++++", +" XOXOXOXOXOXOXOXOXO ++++++++++", +" OXOXOXOXOXOXOXOXOX ++++++++++", +" XOXOXOXO ", +" OXOXOXO ", +" XOXOXO ................. +", +" OXOXO ................. ++", +" XOXO ................. +++", +" OXO ................. ++++", +" XO ................. +++++", +" O ................. ++++++", +" ................. +++++++", +" ................. ++++++++", +" +++++++++", +" ++++++++++", +"++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++", +"++++++++++++++++++++++++++++++++" +}; diff --git a/kommander/editor/pics/large/filesave.xpm b/kommander/editor/pics/large/filesave.xpm new file mode 100644 index 00000000..c882806f --- /dev/null +++ b/kommander/editor/pics/large/filesave.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 4 1", +" c Gray0", +". c #808080800000", +"X c #c0c0c0c0c0c0", +"o c None", +/* pixels */ +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oo oo", +"oo oo", +"oo .. XXXXXXXXXXXXXXXX XX oo", +"oo .. XXXXXXXXXXXXXXXX XX oo", +"oo .. XXXXXXXXXXXXXXXX oo", +"oo .. XXXXXXXXXXXXXXXX oo", +"oo .. XXXXXXXXXXXXXXXX .. oo", +"oo .. XXXXXXXXXXXXXXXX .. oo", +"oo .. XXXXXXXXXXXXXXXX .. oo", +"oo .. XXXXXXXXXXXXXXXX .. oo", +"oo .. XXXXXXXXXXXXXXXX .. oo", +"oo .. XXXXXXXXXXXXXXXX .. oo", +"oo .. XXXXXXXXXXXXXXXX .. oo", +"oo .. XXXXXXXXXXXXXXXX .. oo", +"oo ... ... oo", +"oo .... .... oo", +"oo ........................ oo", +"oo ........................ oo", +"oo .... .. oo", +"oo .... .. oo", +"oo .... XXXX .. oo", +"oo .... XXXX .. oo", +"oo .... XXXX .. oo", +"oo .... XXXX .. oo", +"oo .... XXXX .. oo", +"oo .... XXXX .. oo", +"ooo oo", +"oooo oo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo" +}; diff --git a/kommander/editor/pics/large/form.xpm b/kommander/editor/pics/large/form.xpm new file mode 100644 index 00000000..bb59212e --- /dev/null +++ b/kommander/editor/pics/large/form.xpm @@ -0,0 +1,91 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 53 1", +" c #42429c9cffff", +". c #4a4a9c9cf7f7", +"X c #52529c9cf7f7", +"o c #4a4aa5a5ffff", +"O c #5252a5a5f7f7", +"+ c #5252a5a5ffff", +"@ c #5252adadffff", +"# c #5a5aa5a5f7f7", +"$ c #5a5aa5a5ffff", +"% c #5a5aadadffff", +"& c #5a5ab5b5ffff", +"* c #6363adadf7f7", +"= c #6363adadffff", +"- c #6b6bb5b5efef", +"; c #6363b5b5ffff", +": c #b5b5bdbdbdbd", +"> c Gray74", +", c #bdbdc6c6bdbd", +"< c #9c9cc6c6e7e7", +"1 c #9c9ccecef7f7", +"2 c #bdbdc6c6c6c6", +"3 c #a5a5ceceefef", +"4 c #a5a5cecef7f7", +"5 c #a5a5ceceffff", +"6 c #a5a5d6d6ffff", +"7 c #adadd6d6ffff", +"8 c #adaddedeffff", +"9 c #c6c6c6c6c6c6", +"0 c #c6c6cecec6c6", +"q c #c6c6cececece", +"w c #cececececece", +"e c #ceced6d6cece", +"r c #ceced6d6d6d6", +"t c #cecededed6d6", +"y c #d6d6deded6d6", +"u c #d6d6dededede", +"i c #d6d6e7e7dede", +"p c #dedee7e7dede", +"a c #dedee7e7e7e7", +"s c #dedeefefe7e7", +"d c #e7e7efefe7e7", +"f c #e7e7efefefef", +"g c #efefefefefef", +"h c #e7e7f7f7efef", +"j c #efeff7f7efef", +"k c #efeff7f7f7f7", +"l c #efeffffff7f7", +"z c #f7f7f7f7efef", +"x c #f7f7ffffefef", +"c c #f7f7fffff7f7", +"v c #f7f7ffffffff", +"b c #fffffffff7f7", +"n c Gray100", +/* pixels */ +"-;*;*;*=*=*=*=#=#%#%#%#$#$#$#$O*", +"*&%&%%%%%%%@%@%@%+%+++++++oooooX", +"-&%%%%%%%%%%@$%+@++++++++o++++o#", +"#++@+@o+oooooooooooooo o o .", +"3876767667647464544144414141111<", +"dnbbbbbbbcbccbxcxccxczxzjzjzjzdp", +"hvlvllllllllljljkjhjhhhhhfhdddja", +"fclclclkljkkjkhkjhkhfhfhfhdfffsp", +"flllklklkkjkjkjkhhhhhfhfdffsdsfu", +"dlcklkljlkhkhhhhjhghfhfdhsdfsdsu", +"alkljljkkjkjhkhjfhhfhdhfdffsfsfy", +"pklkkkkjhkhhhjhhhhfffhdsfssdsdsr", +"ulkjkhjkhhjkhhffffhdddfdsdfssade", +"uljkhkhhjhhhfhhhhdfhfsdfsssdasse", +"ylkhjhkhhjfhhffdfhsdsfssddassaau", +"rkhhkhhhhfhffhdhfdfsfdsdsasaaasy", +"ykhjhhghfhfhdfddsfsdssdassaspspr", +"phjhghhffhdhfdffdsdfsassaasaapsr", +"uhfhhffhfdffsfdssdsadssaaspapaae", +"ujhffhdfdhdsfssfdsassaaaspapaipq", +"yhfhdfhdfsfsdsdssasaaspspapaips0", +"rhdfhsdfsdsdsdsassaspsapaiaiaia2", +"efhdsdfsdsfssadsaaspaapapaipiip9", +"whfsffsdsdsadsaapapappapiiipipir", +"qfsdsssssasaaasasapapaiiapiuiuie", +"0hsdsdadasasspappaiaiiaiuipiuiuq", +",fdsassasaspaspaappiaipipuiuiuiq", +"qdsasaasaspaapiaiiapipiuiuiuiui9", +"ysasaspapapapiaipaiiuiuiuiuiyui,", +"rasapsaspapiapiaiipiiuiuiuyuyui>", +"wsspaappaiapiapipuiuiiuiuuiyuyi>", +"0apiiiiuiiuiuyuyuyuyyyyyyttrttu:" +}; diff --git a/kommander/editor/pics/large/frame.xpm b/kommander/editor/pics/large/frame.xpm new file mode 100644 index 00000000..7984aca6 --- /dev/null +++ b/kommander/editor/pics/large/frame.xpm @@ -0,0 +1,58 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 20 1", +" c #0e0e0e0e0e0e", +". c #161616161616", +"X c Gray12", +"o c #272727272727", +"O c #2f2f2f2f2f2f", +"+ c #373737373737", +"@ c #3f3f3f3f3f3f", +"# c Gray28", +"$ c Gray31", +"% c #555555555555", +"& c #5f5f5f5f5f5f", +"* c #676767676767", +"= c #6f6f6f6f6f6f", +"- c #777777777777", +"; c Gray50", +": c Gray53", +"> c #8d8d8d8d8d8d", +", c #939393939393", +"< c #c0c0c0c0c0c0", +"1 c None", +/* pixels */ +"1,,,,>,,,,,>>:::;::::::;:::--:>1", +",,>--=====*******************=*;", +":-&*%#@++OO++OOOOOOOO+O++@#%&&*&", +"-**.#;:,,,,,,,,,,,,,,,,,,>:&+&*$", +"=*#$111111111111111111111111-&*#", +"==o;111111111111111111111111,%*$", +"==.>1111111111111111111111111$*%", +"== ,1111111111111111111111111$*&", +"== ,1111111111111111111111111%*$", +"== ,1111111111111111111111111%=%", +"==.,1111111111111111111111111%*%", +"*=.,1111111111111111111111111%=$", +"== ,1111111111111111111111111%*#", +"*=.,1111111111111111111111111%*#", +"**.,1111111111111111111111111**#", +"*= ,1111111111111111111111111&*#", +"*= ,1111111111111111111111111$*@", +"*=.,1111111111111111111111111$*#", +"&=.,111111111111111111111111,%*%", +"=*X,1111111111111111111111111&*$", +"-*X,1111111111111111111111111%*#", +"=*X>1111111111111111111111111%*#", +"==X:111111111111111111111111,&*#", +"**o:111111111111111111111111,&*%", +"==O;111111111111111111111111,**%", +";*+=111111111111111111111111,**$", +"**#&111111111111111111111111:&*%", +"=*%o111111111111111111111111=**%", +";**@O=;:,,,,,,,,,,1,,1,,,,>;:**$", +":*&*=**==-----=---=;---;==-;*&&=", +",$&&*********&*********&**&**&#,", +"1,=%%$$%$#@#$$$$#@@@@@#@@$$@$%>1" +}; diff --git a/kommander/editor/pics/large/groupbox.xpm b/kommander/editor/pics/large/groupbox.xpm new file mode 100644 index 00000000..4241ece5 --- /dev/null +++ b/kommander/editor/pics/large/groupbox.xpm @@ -0,0 +1,60 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 22 1", +" c #060606060606", +". c Gray6", +"X c Gray9", +"o c Gray12", +"O c #272727272727", +"+ c #2f2f2f2f2f2f", +"@ c #373737373737", +"# c #3f3f3f3f3f3f", +"$ c Gray28", +"% c Gray31", +"& c Gray34", +"* c #5f5f5f5f5f5f", +"= c #676767676767", +"- c #6f6f6f6f6f6f", +"; c #777777777777", +": c Gray50", +"> c Gray53", +", c #8d8d8d8d8d8d", +"< c #959595959595", +"1 c #9f9f9f9f9f9f", +"2 c #c0c0c0c0c0c0", +"3 c None", +/* pixels */ +"333333<o..........+3333333333333", +"331111# ;,,,1<<>>,133", +"311<,<+ ->::;:::::;>3", +"3,>;;-. @$$$$%&=;-;-3", +"3>;-O*= X11111<>-@;;=3", +"3>:$-3311111111111333333333<&;*3", +"3::o133333333333333333333333&:=3", +"3;:X133333333333333333333333&;-3", +"3::X333333333333333333333333*:=3", +"3;:X333333333333333333333333=:=3", +"3;:X333333333333333333333333-:=3", +"3;:o133333333333333333333333=:=3", +"3;:X333333333333333333333333*:*3", +"3;:X333333333333333333333333*:*3", +"3::X333333333333333333333333*:*3", +"3::X333333333333333333333333=:*3", +"3::X333333333333333333333333*:&3", +"3::X333333333333333333333333=:&3", +"3::X333333333333333333333333=:=3", +"3;:o133333333333333333333333=:=3", +"3;:o133333333333333333333333*:*3", +"3;:o133333333333333333333333*:&3", +"3::O133333333333333333333333*:*3", +"3::O133333333333333333333333=:=3", +"3::+133333333333333333333333*;=3", +"3;:+,33333333333333333333331=:*3", +"3::#:33333333333333333333331-;=3", +"3;:&&3333333333333333333333,:;*3", +"3:;;+=<1113113133333333111<,:;*3", +"3>;-;;;;:::>:;;;;;;;;;:::>,>-;-3", +"31=;;;;;;:;:::::;:::::;:;;;;;&,3", +"33<-*&=*&*=-=**&&&&&*&&&=*&**:33" +}; diff --git a/kommander/editor/pics/large/help.xpm b/kommander/editor/pics/large/help.xpm new file mode 100644 index 00000000..4f3a1ff7 --- /dev/null +++ b/kommander/editor/pics/large/help.xpm @@ -0,0 +1,182 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 144 2", +" c #212100002121", +". c #313100003131", +"X c #393900003131", +"o c #393900003939", +"O c #313118182929", +"+ c #393910103939", +"@ c #424218183939", +"# c #424221213939", +"$ c #424239393939", +"% c #4a4a08084a4a", +"& c #4a4a10104242", +"* c #5a5a00005252", +"= c #5a5a08085252", +"- c #525218184a4a", +"; c #424231314242", +": c #4a4a39394a4a", +"> c #525239394a4a", +", c #636318185a5a", +"< c #6b6b00006363", +"1 c #6b6b18186363", +"2 c #737300006b6b", +"3 c #6b6b31316b6b", +"4 c #737339397373", +"5 c #525242425252", +"6 c #5a5a42425a5a", +"7 c #6b6b4a4a6b6b", +"8 c #7b7b7b7b7b7b", +"9 c #848400007373", +"0 c #848400007b7b", +"q c #84846b6b7b7b", +"w c #8c8c08088484", +"e c #8c8c18188484", +"r c #9c9c00008c8c", +"t c #949410108c8c", +"y c #848431318484", +"u c #9c9c21219494", +"i c #9c9c39399494", +"p c #a5a508089c9c", +"a c #adad0808a5a5", +"s c #adad1010a5a5", +"d c #b5b51010adad", +"f c #b5b51818adad", +"g c #bdbd1010adad", +"h c #bdbd1010b5b5", +"j c #b5b53939adad", +"k c #848442428484", +"l c #8c8c73738c8c", +"z c #8c8c7b7b8c8c", +"x c #94947b7b9494", +"c c #bdbd5252b5b5", +"v c #adad7b7badad", +"b c #b5b57b7badad", +"n c #cece1818c6c6", +"m c #d6d60808c6c6", +"M c #d6d61818cece", +"N c #dede1818cece", +"B c #dede1010d6d6", +"V c #dede1818d6d6", +"C c #cece2929cece", +"Z c #d6d62929cece", +"A c #dede2929d6d6", +"S c #dede3131dede", +"D c #dede3939d6d6", +"F c #e7e71010d6d6", +"G c #e7e71010dede", +"H c #e7e71818dede", +"J c #efef1818e7e7", +"K c #f7f71818efef", +"L c #ffff1818f7f7", +"P c #e7e72929dede", +"I c #e7e73131dede", +"U c #efef2121e7e7", +"Y c #efef2929e7e7", +"T c #e7e73131e7e7", +"R c #e7e73939e7e7", +"E c #efef3131efef", +"W c #f7f72121efef", +"Q c #f7f72929f7f7", +"! c #ffff2121f7f7", +"~ c #ffff2929f7f7", +"^ c #ffff2929ffff", +"/ c #f7f73131f7f7", +"( c #f7f73939f7f7", +") c #ffff3131ffff", +"_ c #ffff3939f7f7", +"` c #ffff3939ffff", +"' c #c6c64a4abdbd", +"] c #d6d64242cece", +"[ c #d6d64a4acece", +"{ c #dede5252dede", +"} c #cece6363cece", +"| c #c6c67373c6c6", +" . c #cece7373cece", +".. c #e7e74242e7e7", +"X. c #efef4242efef", +"o. c #e7e75252e7e7", +"O. c #efef5252efef", +"+. c #ffff4242ffff", +"@. c #ffff4a4affff", +"#. c #ffff5252ffff", +"$. c #ffff5a5affff", +"%. c #ffff6363ffff", +"&. c #ffff6b6bffff", +"*. c #ffff7373ffff", +"=. c #ffff7b7bffff", +"-. c #848484848484", +";. c Gray55", +":. c #94948c8c9494", +">. c #9c9c84849c9c", +",. c #9c9c8c8c9494", +"<. c #9c9c8c8c9c9c", +"1. c #9c9c94949c9c", +"2. c Gray61", +"3. c #a5a58484a5a5", +"4. c #a5a59c9ca5a5", +"5. c #bdbd8c8cbdbd", +"6. c #b5b59494b5b5", +"7. c #b5b59c9cb5b5", +"8. c #bdbd9494b5b5", +"9. c #bdbd9494bdbd", +"0. c #bdbd9c9cbdbd", +"q. c #a5a5a5a5a5a5", +"w. c #adada5a5adad", +"e. c Gray68", +"r. c #b5b5a5a5b5b5", +"t. c #b5b5adadb5b5", +"y. c #bdbdadadbdbd", +"u. c Gray71", +"i. c #b5b5bdbdb5b5", +"p. c #bdbdb5b5bdbd", +"a. c Gray74", +"s. c #c6c68484bdbd", +"d. c #ffff8484ffff", +"f. c #ffff8c8cffff", +"g. c #ffff9494ffff", +"h. c #ffff9c9cffff", +"j. c #ffffa5a5ffff", +"k. c #ffffadadffff", +"l. c #ffffb5b5ffff", +"z. c #c0c0c0c0c0c0", +"x. c #c6c6c6c6c6c6", +"c. c #ffffc6c6ffff", +"v. c #ffffceceffff", +"b. c None", +/* pixels */ +"b.b.b.b.b.b.b.b.b.b.a.0.| [ D S Z ] ' b 7.a.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.a.5...` &.f.g.f.=.&.+.! F j 3.a.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.y.{ #.=.j.l.l.j.h.f.d.*.$.+.L B i w.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.t.O.&.f.f.&.%.%.$.$.$.$.$.@.@.X.W G t 4.b.b.b.b.b.b.", +"b.b.b.b.b.p.o.d.v.v.j.*.#.( T S I E _ $.%.%.#.) F e e.b.b.b.b.b.", +"b.b.b.b.b.| %.l.k.=.#.P w 3 q z z -.k f _ $.&.#.^ m 4 a.b.b.b.b.", +"b.b.b.b.r.` f.h.%.` d X 8 a.b.b.b.b.a.2.y A @.$.+.U r :.b.b.b.b.", +"b.b.b.b.| @.f.&.@.h ;.b.b.b.b.b.b.b.b.e.u W @.#.~ a 7 b.b.b.b.", +"b.b.b.b.R $.=.#.~ * $ a.b.b.b.b.b.b.b.b.b.v K #.#.` d - b.b.b.b.", +"b.b.b.b.c C X._ Z o ;.b.b.b.b.b.b.b.b.b.b.6.L #.#.` g & b.b.b.b.", +"b.b.b.b.a.q.:.x l 1.x.b.b.b.b.b.b.b.b.b.b.8.^ %.$.` s @ b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.u.R #.=.#.Q 9 5 b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.y.R %.l.*.+.n X :.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.r.Y *.c.f.+.V * : a.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.7./ g.v.d.+.U 2 O e.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.5.^ k.c.*.` ~ p + q.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.6.) k.l.$.) W p & q.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.t.E =.=.#.+.H < $ e.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.} ) @.@.#.~ 0 $ u.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.p.Q #.=.%.+.s ; u.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.9.` f.=.@.d # u.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.s.$.g.@.M . 8 b.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b. .%.%.+.N * -.b.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b N Q +.Y = q.b.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.a.1.>.3.<.e.b.b.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.b.p.7.7.u.b.b.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.8.Q L K s ,.b.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.p.X.h.h.*.U , i.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.0.` l.c.d.M % e.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.r.! #.$.) g + e.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.a.C L J N 0 > a.b.b.b.b.b.b.b.b.b.b.b.", +"b.b.b.b.b.b.b.b.b.b.b.b.b.b.q.k 1 , 6 e.b.b.b.b.b.b.b.b.b.b.b.b." +}; diff --git a/kommander/editor/pics/large/home.xpm b/kommander/editor/pics/large/home.xpm new file mode 100644 index 00000000..f70e0e4f --- /dev/null +++ b/kommander/editor/pics/large/home.xpm @@ -0,0 +1,250 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 212 2", +" c Gray0", +". c #080808080000", +"X c #101008080000", +"o c #101010100000", +"O c #101010100808", +"+ c #181810100000", +"@ c #181818180000", +"# c #181818180808", +"$ c #181818181010", +"% c #212118180000", +"& c #212118180808", +"* c #292921210000", +"= c #212121211010", +"- c #212121211818", +"; c #292921211010", +": c #292929291010", +"> c #292929291818", +", c #313129290000", +"< c #313129291818", +"1 c #393931310000", +"2 c #393931310808", +"3 c Gray13", +"4 c #292929292121", +"5 c #313129292929", +"6 c #313131313131", +"7 c #393939393131", +"8 c #393939393939", +"9 c #424239393939", +"0 c #4a4a42420000", +"q c #4a4a42421010", +"w c #4a4a52521818", +"e c #525242420000", +"r c #52524a4a0000", +"t c #52524a4a0808", +"y c #5a5a4a4a0000", +"u c #5a5a52520808", +"i c #5a5a52521010", +"p c #4a4a42423939", +"a c #4a4a4a4a3939", +"s c #636352520808", +"d c #6b6b5a5a0000", +"f c #63635a5a1010", +"g c #737363630000", +"h c #737363630808", +"j c #73736b6b1010", +"k c #7b7b73731818", +"l c #636363632121", +"z c #636373732929", +"x c #6b6b73732121", +"c c #6b6b73732929", +"v c #6b6b73733131", +"b c #737373732929", +"n c #73737b7b2929", +"m c #7b7b7b7b2121", +"M c #7b7b7b7b2929", +"N c #42424a4a4242", +"B c #4a4a4a4a4242", +"V c #4a4a52525252", +"C c #4a4a5a5a5252", +"Z c #52524a4a4a4a", +"A c #5a5a52524a4a", +"S c Gray32", +"D c #52525a5a5252", +"F c #5a5a5a5a5252", +"G c #5a5a5a5a5a5a", +"H c #525263635a5a", +"J c #5a5a63635a5a", +"K c #525263636363", +"L c #63635a5a5252", +"P c #63635a5a5a5a", +"I c #636363635a5a", +"U c #6b6b63635a5a", +"Y c #7b7b7b7b5a5a", +"T c Gray39", +"R c #63636b6b6b6b", +"E c #6b6b63636363", +"W c #6b6b6b6b6363", +"Q c #73736b6b6363", +"! c #737373736b6b", +"~ c Gray45", +"^ c #73737b7b7373", +"/ c #7b7b73737373", +"( c #7b7b7b7b7373", +") c #7b7b7b7b7b7b", +"_ c #7b7b84843131", +"` c #7b7b84844a4a", +"' c #7b7b84847b7b", +"] c #848473730808", +"[ c #8c8c7b7b0808", +"{ c #848473731010", +"} c #8c8c7b7b1010", +"| c #94947b7b0808", +" . c #84847b7b2121", +".. c #84847b7b2929", +"X. c #84847b7b7373", +"o. c #84847b7b7b7b", +"O. c #94947b7b7373", +"+. c #94948c8c1010", +"@. c #94948c8c1818", +"#. c #9c9c8c8c1010", +"$. c #9c9c8c8c1818", +"%. c #9c9c94941818", +"&. c #848484842121", +"*. c #848484842929", +"=. c #848484843131", +"-. c #94948c8c2929", +";. c #9c9c8c8c2929", +":. c #a5a594940000", +">. c #a5a594941818", +",. c #adad9c9c1010", +"<. c #adad9c9c1818", +"1. c #a5a59c9c2929", +"2. c #b5b5a5a51818", +"3. c #b5b5a5a52929", +"4. c #bdbdadad2929", +"5. c #bdbda5a53939", +"6. c #bdbdadad3131", +"7. c #848484844a4a", +"8. c #949494944242", +"9. c #94949c9c4a4a", +"0. c #9c9c9c9c4a4a", +"q. c #94949c9c5a5a", +"w. c #9c9c9c9c5252", +"e. c #9c9c9c9c5a5a", +"r. c #8c8c8c8c6363", +"t. c #8c8c8c8c7b7b", +"y. c #94949c9c6363", +"u. c #9c9c9c9c6b6b", +"i. c #9c9ca5a56b6b", +"p. c #9c9ca5a57373", +"a. c #b5b5a5a54242", +"s. c #b5b5a5a54a4a", +"d. c #bdbdadad4242", +"f. c #b5b5adad5252", +"g. c #a5a5a5a57373", +"h. c #a5a5adad7b7b", +"j. c #adadadad7b7b", +"k. c #c6c6b5b51010", +"l. c #cecebdbd3131", +"z. c #dedec6c60808", +"x. c #d6d6c6c61010", +"c. c #dedecece1010", +"v. c #d6d6c6c63131", +"b. c #dedecece3131", +"n. c #e7e7cece0808", +"m. c #efefdede1010", +"M. c #e7e7d6d62121", +"N. c #efefdede2121", +"B. c #efefdede2929", +"V. c #e7e7d6d63131", +"C. c #e7e7d6d63939", +"Z. c #e7e7dede3939", +"A. c #f7f7e7e72929", +"S. c #f7f7e7e73939", +"D. c #848484848484", +"F. c #8c8c84848484", +"G. c #8c8c8c8c8484", +"H. c #8c8c94948c8c", +"J. c #94948c8c8484", +"K. c #949494948484", +"L. c #949494948c8c", +"P. c #9c9c94948c8c", +"I. c Gray58", +"U. c #94949c9c9494", +"Y. c #9c9c9c9c9494", +"T. c Gray61", +"R. c #9494a5a59c9c", +"E. c #9c9ca5a59c9c", +"W. c #8c8cadada5a5", +"Q. c #9c9ca5a5a5a5", +"!. c #9c9cbdbdb5b5", +"~. c #a5a594948c8c", +"^. c #a5a59c9c8c8c", +"/. c #a5a59c9c9494", +"(. c #a5a59c9c9c9c", +"). c #adad9c9c9494", +"_. c #a5a5a5a58484", +"`. c #adadadad8484", +"'. c #a5a5a5a59c9c", +"]. c #adada5a59c9c", +"[. c #b5b5a5a59494", +"{. c #b5b5a5a59c9c", +"}. c #b5b5adad9c9c", +"|. c #bdbda5a59c9c", +" X c #a5a5a5a5a5a5", +".X c #a5a5adada5a5", +"XX c #a5a5adadadad", +"oX c #adadadada5a5", +"OX c Gray68", +"+X c #a5a5b5b5adad", +"@X c #adadb5b5adad", +"#X c #a5a5bdbdb5b5", +"$X c #b5b5adada5a5", +"%X c #b5b5b5b5adad", +"&X c #bdbdb5b5adad", +"*X c Gray71", +"=X c #b5b5bdbdb5b5", +"-X c #b5b5bdbdbdbd", +";X c Gray74", +":X c #a5a5c6c6bdbd", +">X c #b5b5cecec6c6", +",X c #bdbdcecec6c6", +"<X c #c6c6c6c6bdbd", +"1X c #c0c0c0c0c0c0", +"2X c #c6c6cececece", +"3X c #ceced6d6cece", +"4X c #c6c6deded6d6", +"5X c #ceced6d6d6d6", +"6X c #cecedededede", +"7X c #dedeefefe7e7", +"8X c #dedeefefefef", +"9X c None", +/* pixels */ +"9X9X9X9X9X9X9X9X9X9X9X9X9X9X9XoXT.9X9X9X9X9X9X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9X9X9X9X9X9X;X Xo.*X9X9X9X9X9X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9X9X9X9X9X9X].4XE.! ;X9X9X9X9X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9X9X9X9X9X%XY.7X*XB I.9X9X9X9X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9X9X9X9X;XT..X2X'.P S OX9X9X9X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9X9X9X9XU.R.:XY.G.G C T ;X9X9X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9X9X9XOXY.!.XXY.L.W J V D.9X9X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9X9X;XoXoX.X+X;X X( ~ F 8 OX9X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9X9XT.^.[./.-X8X.XX.Q L p S ;X9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9XOX^./.(.Y.,X8X/.O.! T A 6 ) 9X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X;XG.H.:X=X@X+X%XoX$XU F J H 6 X9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9XI.' W.2X<X.X@XG.G.G.I S D K S N ;X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9XOXL.oX#X>XE.Q..X/.H.H.^ I R T C 5 ~ 9X9X9X9X9X9X9X", +"9X9X9X9X9X9X;XF./.]./.~.'.@X,X3XJ.&XI.E ( U Z 5 3 X9X9X9X9X9X9X", +"9X9X9X9X9X9X(.J.~.[.J.P.$XY.5X6XJ.'.P.L W Q Z 9 5 8 *X9X9X9X9X9X", +"9X9X9X9X9X;XG.P..XOX{.]..X@X7X3X).|.].! E W I D B 4 I.9X9X9X9X9X", +"9X9X9X9X9X;X*X X#X.X}.U.'.Q.+X'.oXoXH./ L B a R E.%X;X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X;X< # O $ - - - > ; = & @ + X ! 9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X;X;.:.@.j s t 2 @ + o . X o o ! 9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X;X6.m.A.S.S.Z.v.4.$.{ u 1 + o / 9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X;X5.x.M.V.C.C.b.l.4.,.[ d 1 + ( 9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X;Xd.c.M.V.Z.C.C.v.2.<.} h r * / 9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9Xs.z.M.V.C.3.1.3.4.<.{ d r % ( 9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9Xf.n.N.V.i o . + f $.] d y * ( 9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X9Xf.c.B.>.. X + o o j | h y % ( 9X9X9X9X9X9X9X9X", +"9X9X9X9X9X9X9X9X;Xa.z.A.@.X + o + X u } d 0 , 7 W R ( 9X9X9X9X9X", +"9X9X9X9X9X9X9X9XK.#.c.B.>.. . X . u +.h r , . 4 9X9X9X9X9X", +"9X9X9X9X9X9X9X'.z #.c.N.%.. . # : j [ h e * X : w Y 9X9X9X9X9X", +"9X9X9X9X9X9X%Xv c .k.N.>.. : w z M &.[ g u q l =.*.t.9X9X9X9X9X", +"9X9X9X9X9X;X` x b b M -.*.l n c c b m k x b .._ b b Y.9X9X9X9X9X", +"9X9X9X9X9Xr.n n M =..._ n _ =.n n n c c n ..M =.M v oX9X9X9X9X9X", +"9X9X9X9X9X`.j._.h.h.p.g.u.u.i.y.y.e.e.q.w.w.9.0.8.7.;X9X9X9X9X9X" +}; diff --git a/kommander/editor/pics/large/iconview.xpm b/kommander/editor/pics/large/iconview.xpm new file mode 100644 index 00000000..61d9dafd --- /dev/null +++ b/kommander/editor/pics/large/iconview.xpm @@ -0,0 +1,142 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 104 2", +" c Gray3", +". c #080810101010", +"X c #101008081010", +"o c #101010100808", +"O c #101010101010", +"+ c #101010101818", +"@ c #101018181818", +"# c #181818181010", +"$ c #181818181818", +"% c Gray13", +"& c Gray16", +"* c #313131313131", +"= c #393939393939", +"- c Gray26", +"; c Gray29", +": c Gray32", +"> c #5a5a5a5a5a5a", +", c Gray39", +"< c #6b6b63636b6b", +"1 c Gray42", +"2 c Gray45", +"3 c #7b7b7b7b7b7b", +"4 c Blue", +"5 c #08080808ffff", +"6 c #10101010f7f7", +"7 c #6b6b6b6bd6d6", +"8 c #73737373cece", +"9 c Green", +"0 c #1010f7f71010", +"q c #1818f7f71818", +"w c #2121f7f72121", +"e c #5a5acece5a5a", +"r c #5a5ae7e75a5a", +"t c #6363c6c66b6b", +"y c #6b6bc6c66b6b", +"u c #6363dede6363", +"i c #6363e7e76363", +"p c Red", +"a c #f7f718181818", +"s c #efef21212121", +"d c #c6c67b7b7b7b", +"f c #cece7b7b7b7b", +"g c #dede63636363", +"h c #e7e75a5a5a5a", +"j c #dede3939dede", +"k c Magenta", +"l c #ffff0808ffff", +"z c #d6d64242d6d6", +"x c #d6d64a4ad6d6", +"c c #dede4242dede", +"v c #dededede3939", +"b c Yellow", +"n c #f7f7f7f71010", +"m c #f7f7f7f71818", +"M c #efefefef2929", +"N c #efefefef3131", +"B c #dededede4242", +"V c #dededede4a4a", +"C c #d6d6d6d65252", +"Z c #dededede6363", +"A c #d6d6d6d67b7b", +"S c #e7e7e7e76363", +"D c #848484848484", +"F c Gray55", +"G c #8c8c94949494", +"H c Gray58", +"J c #9c9c94949c9c", +"K c Gray61", +"L c #9c9cbdbd9c9c", +"P c #bdbd9c9c9c9c", +"I c #bdbd9c9cbdbd", +"U c #a5a5a5a5a5a5", +"Y c Gray68", +"T c #adadadadbdbd", +"R c #a5a5bdbda5a5", +"E c #adadb5b5b5b5", +"W c #bdbda5a5a5a5", +"Q c #b5b5adadb5b5", +"! c #b5b5b5b5adad", +"~ c Gray71", +"^ c #b5b5b5b5bdbd", +"/ c #bdbdb5b5b5b5", +"( c Gray74", +") c #84848484cece", +"_ c #8c8c8c8cc6c6", +"` c #adadadadc6c6", +"' c #bdbdbdbdc6c6", +"] c #9c9cc6c69c9c", +"[ c #9c9ccece9c9c", +"{ c #adadc6c6adad", +"} c #bdbdc6c6bdbd", +"| c #c6c68c8c8c8c", +" . c #c6c6a5a5a5a5", +".. c #c6c6bdbdbdbd", +"X. c #cece8484cece", +"o. c #c6c69c9cc6c6", +"O. c #c6c6adadc6c6", +"+. c #c6c6b5b5c6c6", +"@. c #c6c6bdbdc6c6", +"#. c #cececece8c8c", +"$. c #c6c6c6c6bdbd", +"%. c #c0c0c0c0c0c0", +"&. c #c6c6c6c6c6c6", +"*. c None", +/* pixels */ +"*.Y H , : ; = = = * * * & & % % % % & % % & & & & * * = - > K ( ", +"Y & O O O O O O O O O O O O O O O O O H ", +"1 O O O O . O O + # $ + $ $ $ + $ $ O $ $ O $ O O O O ; ", +"- O O O 1 G K U Y ~ Y Y Y Y Y Y ~ Y Y Y Y Y ~ Y U K H < O O & ", +"* O 3 *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.1 O % ", +"& O . U .h g g g g / *.&.#.Z Z Z S A $.*.L r u u u i ~ H X $ ", +"% O Y f p p p p p P *.( B b b b b M $.*.y 9 9 9 9 9 [ K X O $ ", +"% O @ ~ f p p p p p P *.' B b b b b M $.*.t 9 9 9 9 9 ] U O $ ", +"% @ ( f p p p p p P *.$.v b b b b M ( *.t 9 9 9 9 9 R U O O % ", +"% O $ ( d p p p p p P *.' v b b b b N ( *.e 9 9 9 9 9 { U X % ", +"% o O ^ | a a s a s W *.' C m m M n V $.*.y 0 q w q w R U O % ", +"% . $ ~ *./ ( ( ( ( ..*.*.$.( ( ( ( ( *.*.( } ( ( ( ( *.J O O % ", +"% o $ E *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.K O & ", +"% . $ ! *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.K O * ", +"% X O Q *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.K O * ", +"& O # E ( ` ` ` ` ` ' *.} +.O.O.O.O.+.*.*.*.*.*.*.*.*.*.H O * ", +"& # ^ 7 4 5 5 4 6 T *.@.z k l l k c } *.*.*.*.*.*.*.*.F O = ", +"& O o / 7 4 4 4 4 5 T *.( j k k k k c } *.*.*.*.*.*.*.*.H O = ", +"* O O ~ 7 4 4 4 4 5 ` *.( j k k k k z @.*.*.*.*.*.*.*.*.H O - ", +"* # ~ 8 4 4 4 4 5 T *.( j k k k k x } *.*.*.*.*.*.*.*.D O - ", +"= # ~ 8 4 4 4 4 5 T *.( j k k k k x @.*.*.*.*.*.*.*.*.D : ", +"= . O Y T ) _ ) _ _ ( *.@.I X.X.X.X.o.*.*.*.*.*.*.*.*.*.F ; ", +"= o O U *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.3 O : ", +"- O U *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.3 > ", +"; O K *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.2 > ", +"; X H *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*., 1 ", +": F *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.> 1 ", +"> , *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.( & 2 ", +"1 O , F K U U Y Y Y Y Y Y Y Y Y Y Y Y Y ~ Y U K D : % D ", +"F O O O $ $ $ % $ $ $ $ $ $ $ $ $ $ $ O O O O $ O O K ", +"~ % O O O O O O O O O O O O O = ( ", +"*.Y > - * & & & % % $ $ $ $ $ $ $ $ $ $ $ $ $ $ % % & * - , Y *." +}; diff --git a/kommander/editor/pics/large/image.xpm b/kommander/editor/pics/large/image.xpm new file mode 100644 index 00000000..3ea1d3e4 --- /dev/null +++ b/kommander/editor/pics/large/image.xpm @@ -0,0 +1,267 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 229 2", +" c #080800000000", +". c Gray3", +"X c #101010101010", +"o c #101010101818", +"O c #101018181818", +"+ c #181818181818", +"@ c #181818182121", +"# c #181821212121", +"$ c #212118181818", +"% c Gray13", +"& c #292921212121", +"* c Gray16", +"= c #292929293131", +"- c #212131313939", +"; c #313131312929", +": c #393931312929", +"> c #393931313131", +", c #393939393131", +"< c #393942424242", +"1 c #424239393131", +"2 c #424239393939", +"3 c #4a4a39393131", +"4 c #4a4a42423939", +"5 c #4a4a4a4a3939", +"6 c #52524a4a3939", +"7 c #5a5a4a4a3939", +"8 c #73735a5a3939", +"9 c Gray26", +"0 c #424242424a4a", +"q c Gray29", +"w c #4a4a52525a5a", +"e c #52524a4a4242", +"r c #52524a4a4a4a", +"t c #5a5a52524242", +"y c Gray32", +"u c #5a5a52525252", +"i c #5a5a5a5a6363", +"p c #525263637373", +"a c #5a5a6b6b7b7b", +"s c #636352524242", +"d c #63635a5a4a4a", +"f c #6b6b52524242", +"g c #63635a5a5a5a", +"h c #6b6b63634a4a", +"j c #6b6b6b6b4a4a", +"k c #737363634a4a", +"l c #73736b6b4a4a", +"z c #7b7b63634242", +"x c #737363635a5a", +"c c #7b7b6b6b5a5a", +"v c #7b7b73735252", +"b c #7b7b7b7b5252", +"n c Gray39", +"m c #636363636b6b", +"M c #6b6b63636363", +"N c Gray42", +"B c #6b6b6b6b7373", +"V c #73736b6b6b6b", +"C c #7b7b73736b6b", +"Z c Gray45", +"A c #737373737b7b", +"S c #73737b7b7b7b", +"D c #7b7b7b7b7373", +"F c #7b7b7b7b7b7b", +"G c #73737b7b8484", +"H c #7b7b84848c8c", +"J c #84846b6b4a4a", +"K c #84847b7b5a5a", +"L c #9c9c7b7b5252", +"P c #8c8c73736363", +"I c #84847b7b7373", +"U c #848484845252", +"Y c #848484845a5a", +"T c #8c8c84845a5a", +"R c #9c9c84845a5a", +"E c #848484846363", +"W c #8c8c84846363", +"Q c #8c8c84847373", +"! c #94948c8c6363", +"~ c #94948c8c6b6b", +"^ c #9c9c8c8c7b7b", +"/ c #9c9c94946363", +"( c #9c9c9c9c6b6b", +") c #9c9c9c9c7373", +"_ c #adad8c8c5252", +"` c #b5b594945a5a", +"' c #a5a59c9c6363", +"] c #adad9c9c7373", +"[ c #bdbd9c9c7373", +"{ c #adada5a56b6b", +"} c #a5a5a5a57373", +"| c #adadadad7b7b", +" . c #b5b5a5a56b6b", +".. c #bdbdadad7373", +"X. c #bdbdb5b57b7b", +"o. c #ceceadad6b6b", +"O. c #ceceadad7373", +"+. c #cecebdbd7b7b", +"@. c #dedea5a57b7b", +"#. c #efefa5a57b7b", +"$. c #e7e7b5b57b7b", +"%. c #e7e7bdbd7373", +"&. c #f7f7adad6b6b", +"*. c #ffffadad6b6b", +"=. c #f7f7adad7373", +"-. c #ffffb5b57373", +";. c #e7e7c6c67b7b", +":. c #efefcece7b7b", +">. c #ffffc6c67b7b", +",. c #ffffd6d67b7b", +"<. c #848484848484", +"1. c #84848c8c8c8c", +"2. c #8c8c84848484", +"3. c Gray55", +"4. c #84848c8c9c9c", +"5. c #94948c8c8484", +"6. c #94948c8c8c8c", +"7. c #949494948c8c", +"8. c #9c9c94948c8c", +"9. c #949494949c9c", +"0. c #9c9c94949494", +"q. c #9c9c9c9c9494", +"w. c Gray61", +"e. c #94949c9ca5a5", +"r. c #9c9c9c9ca5a5", +"t. c #9c9c9c9cadad", +"y. c #9c9ca5a59c9c", +"u. c #9494a5a5bdbd", +"i. c #a5a59c9c8c8c", +"p. c #a5a59c9c9c9c", +"a. c #adad9c9c9494", +"s. c #adada5a59c9c", +"d. c #b5b5a5a59494", +"f. c #b5b5adad9c9c", +"g. c #a5a5a5a5a5a5", +"h. c #a5a5adadadad", +"j. c #adada5a5a5a5", +"k. c Gray68", +"l. c #a5a5adadb5b5", +"z. c #b5b5adadadad", +"x. c #bdbdb5b5a5a5", +"c. c #bdbdb5b5adad", +"v. c Gray71", +"b. c #bdbdb5b5b5b5", +"n. c Gray74", +"m. c #adadbdbdc6c6", +"M. c #adadbdbdcece", +"N. c #bdbdbdbdc6c6", +"B. c #bdbdc6c69c9c", +"V. c #bdbdc6c6c6c6", +"C. c #bdbdc6c6cece", +"Z. c #b5b5c6c6d6d6", +"A. c #c6c6adad8c8c", +"S. c #ceceadad9494", +"D. c #cecebdbd9c9c", +"F. c #d6d6adad9494", +"G. c #d6d6b5b58484", +"H. c #dedeb5b58c8c", +"J. c #dedeb5b59494", +"K. c #c6c6bdbda5a5", +"L. c #c6c6bdbdadad", +"P. c #c6c6bdbdbdbd", +"I. c #e7e7b5b58c8c", +"U. c #f7f7bdbd8484", +"Y. c #cececece8c8c", +"T. c #c6c6c6c69494", +"R. c #d6d6cece9c9c", +"E. c #dedecece9c9c", +"W. c #cecec6c6a5a5", +"Q. c #d6d6c6c6b5b5", +"!. c #d6d6d6d6a5a5", +"~. c #d6d6dedeadad", +"^. c #dedededea5a5", +"/. c #efefcece8c8c", +"(. c #e7e7d6d69c9c", +"). c #efefdede9c9c", +"_. c #f7f7cece8c8c", +"`. c #ffffc6c68484", +"'. c #ffffcece8484", +"]. c #f7f7d6d68484", +"[. c #f7f7dede8c8c", +"{. c #ffffd6d68c8c", +"}. c #efefc6c6a5a5", +"|. c #e7e7dedea5a5", +" X c #efefe7e79c9c", +".X c #e7e7e7e7a5a5", +"XX c #efefe7e7a5a5", +"oX c #efefe7e7adad", +"OX c #efefefefadad", +"+X c #efefefefbdbd", +"@X c #f7f7e7e7adad", +"#X c #f7f7efefa5a5", +"$X c #f7f7f7f7adad", +"%X c #fffff7f7adad", +"&X c #f7f7f7f7b5b5", +"*X c #c0c0c0c0c0c0", +"=X c #c6c6c6c6c6c6", +"-X c #c6c6cececece", +";X c #cecececec6c6", +":X c #cececececece", +">X c #cecececed6d6", +",X c #d6d6cecec6c6", +"<X c #dedececec6c6", +"1X c #d6d6d6d6cece", +"2X c Gray84", +"3X c #d6d6d6d6dede", +"4X c #dedededed6d6", +"5X c Gray87", +"6X c #dedee7e7e7e7", +"7X c #dedee7e7efef", +"8X c #e7e7dedecece", +"9X c #efefdedec6c6", +"0X c #efefe7e7dede", +"qX c #ffffefefc6c6", +"wX c #f7f7efefdede", +"eX c #ffffffffcece", +"rX c #ffffffffd6d6", +"tX c #e7e7e7e7e7e7", +"yX c #efefefefefef", +"uX c #efefefeff7f7", +"iX c #efeff7f7f7f7", +"pX c #f7f7efefe7e7", +"aX c #f7f7efefefef", +"sX c #f7f7f7f7e7e7", +"dX c Gray97", +"fX c #f7f7ffffffff", +"gX c #fffffffff7f7", +"hX c Gray100", +"jX c None", +/* pixels */ +"jXL.$.|.oXOXoXoXoXoX.X XXXOXOX&XXX X X/.U.U./.#X#X#X&X$X&X$X^.jX", +"jXL.>.+.! { } R.+XeXrX+XrXrX+XqXrXrXrXqX}.}.@XoX~.!.B.| } XoXjX", +"jXd.{.v o 9 q w.=X>Xl.3.b.C.a D ;X-X=X5XfX7XfXuXuXuX>Xt.B Y.OXjX", +"jXS.{.b @ * * q g D p.g.k.k.6.0.v.g.v.,XgXhXhXhXhXhXhXfX6X.X!.jX", +"jXF.'.v @ % & d.5XyXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXhXOX^.jX", +"jXF.`.l @ % ; 5.z.0XtX2X2X:Xn.h.w.3.A <.c.aXhXhXhXhXhXhXhX@XE.jX", +"jXS.-.k # * % % h P.5XtXtXyXtXtX6X5X=Xr.F m N 0.b.4XdXhXhX%X^.jX", +"jXD.*.f # * % > y 2.w.z.n.pXhXhXhXhXhXhXhX7Xp X + & , g D R.(.jX", +"jXF.-.s % % % % $ % X % % 2 n 5.gXhXhX3X0.S g 0 * * X X . . XjX", +"jXJ.`.s + x V.w r j.S Q 4X-Xl.u wXhXhXiXtXuXC.1.c.3XG 0 @ { #XjX", +"jXF.'.s O c hXiX>XP.aXhXhXhXhX1.9XhXhXhXhXhXhXhXhXhXhXhXZ.T.OXjX", +"jXF.>.t # : x.5XaXhXhXhXhXhXZ.r <XhXhXhXhXhXhXhXhXhXhXhXiX~.XXjX", +"jXH.>.7 % % 1 V s.-XV.1XhXiXa 4 W.hXhXhXhXhXhXhXhXhXhXhXZ.X.).jX", +"jXI.&.6 % % % r 8.P.n.3.8Xu.= 9 Q.hXfX3X5XhXhXhXhXhXhXhXu.] XjX", +"jXJ.*.e % & ^ b.0XhXhX3X6Xa > $ 1 F p.9.L.gXhXhXhXhXhXhXa ' #XjX", +"jX@.>.5 O 3 sXhXhXfXV.g.v.w.1.3.B I 0XhXhXhXhXfXyX5XdXM.- / #XjX", +"jX#.>., : a.gX6X1.i y 9 M 1.Z f.hXhXhXhXhXhXdXaXyX6XH * o { #XjX", +"jXU.:.h <XhXhXhXm.3.0.c.tXhX3X3.,XyXm.1.i y M 7.z.n.e.w o ( $XjX", +"jX#.[.D.yX3XtXyXuX4.^ hXhXhXiXt.0.G g > C p.P.gXhXhXhXM.o / $XjX", +"jX=.[.r < g q.n.l.i x.hXhXhXhXhXfXhXhX6X>Xt.q q.N.G i < o ( &XjX", +"jXU._.5 : d 8.y.D L.sXgXyXsXhXhXhXhXhX6Xm 2 j f.v.y.N y * ) &XjX", +"jXR L T T T W T E W Y U Y E W W T T U z 8 z J ~ ~ ~ K j j W } jX", +"jXk.h.k.k.g.k.g.j.k.9 3.k.p.& $ g.k.n B k.p.g.r.g.g.g.g.j.jX", +"jXjXjXjXjXjXjXjXjXn...8 n.jXV.; : n.jXj.` ^ jXjXjXjXjXjXjXjXjXjX", +"jXjXjXjXjXjXjXjXjXc.].Q jXjXP.; > n.jXn.:.+.n.jXjXjXjXjXjXjXjXjX", +"jXjXjXjXjXjXjXjXjXK.o.0.jXjXN.: : n.jXjXA.:.j.jXjXjXjXjXjXjXjXjX", +"jXjXjXjXjXjXjXjXn.).R v.jXjXP.: > n.jXjXs.,.i.jXjXjXjXjXjXjXjXjX", +"jXjXjXjXjXjXjXjXc.[.Q jXjXjXV.; > n.jXjXv.:.[ n.jXjXjXjXjXjXjXjX", +"jXjXjXjXjXjXjXjXK.;.0.jXjXjXP.: > n.jXjX=XA.%.k.jXjXjXjXjXjXjXjX", +"jXjXjXjXjXjXjXn.E._ k.jXjXjXN.; , n.jXjXjXf.].a.jXjXjXjXjXjXjXjX", +"jXjXjXjXjXjXjXv.[.P n.jXjXjX=X: > n.jXjXjXz.:.] jXjXjXjXjXjXjXjX", +"jXjXjXjXjXjXjXx.%.2.jXjXjXjXn., 2 n.jXjXjXn.G.O.n.jXjXjXjXjXjXjX" +}; diff --git a/kommander/editor/pics/large/label.xpm b/kommander/editor/pics/large/label.xpm new file mode 100644 index 00000000..dd8c5ee4 --- /dev/null +++ b/kommander/editor/pics/large/label.xpm @@ -0,0 +1,105 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 67 1", +" c #000008081010", +". c #101010101818", +"X c #000000003131", +"o c #000000003939", +"O c #000008083131", +"+ c #000008083939", +"@ c #080810103131", +"# c #080810103939", +"$ c #181818183939", +"% c #212121213939", +"& c #292929293131", +"* c #393939393939", +"= c #000000004242", +"- c #000008084242", +"; c #000008084a4a", +": c #080808084242", +"> c #080810104a4a", +", c #181818184a4a", +"< c #181818185252", +"1 c #181821214242", +"2 c #181821215252", +"3 c #212121215252", +"4 c #212129295252", +"5 c #292929295252", +"6 c #313131314242", +"7 c #313131314a4a", +"8 c #313131315a5a", +"9 c #313139395a5a", +"0 c #313139396363", +"q c #393942425a5a", +"w c #393942426363", +"e c Gray26", +"r c #424242424a4a", +"t c #4a4a4a4a5252", +"y c #4a4a4a4a5a5a", +"u c #5a5a5a5a5a5a", +"i c #424242426363", +"p c #42424a4a6b6b", +"a c #4a4a4a4a6b6b", +"s c #5a5a5a5a6363", +"d c #5a5a5a5a7373", +"f c #5a5a63637b7b", +"g c Gray39", +"h c Gray42", +"j c #6b6b6b6b7373", +"k c #6b6b6b6b7b7b", +"l c Gray45", +"z c #6b6b6b6b8484", +"x c #7b7b7b7b8484", +"c c #7b7b84848c8c", +"v c #848484848484", +"b c #848484848c8c", +"n c Gray55", +"m c #848484849494", +"M c #8c8c8c8c9494", +"N c Gray58", +"B c #949494949c9c", +"V c #9c9c9c9ca5a5", +"C c #a5a5a5a59c9c", +"Z c #a5a5a5a5a5a5", +"A c #a5a5a5a5adad", +"S c Gray68", +"D c Gray71", +"F c #b5b5b5b5bdbd", +"G c Gray74", +"H c #c0c0c0c0c0c0", +"J c None", +/* pixels */ +"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJJxtGJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJG8OSJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJB;-jJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJd-;%GJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJD<;>#NJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJc->>=yJJJJJJJJJJJJJ", +"JJJJJJJJJJJJG08w->#SJJJJJJJJJJJJ", +"JJJJJJJJJJJJA-bm=>+xJJJJJJJJJJJJ", +"JJJJJJJJJJJGa>GD2--6DJJJJJJJJJJJ", +"JJJJJJJJJJJV-dJJb->XlJJJJJJJJJJJ", +"JJJJJJJJJJJf-BJJF,;-%GJJJJJJJJJJ", +"JJJJJJJJJJD<4GJJJf->@NJJJJJJJJJJ", +"JJJJJJJJJJm-mJJJJA::=yJJJJJJJJJJ", +"JJJJJJJJJG8wJJJJJJa-:#DJJJJJJJJJ", +"JJJJJJJJJS>7gggggg7->OxJJJJJJJJJ", +"JJJJJJJJJz=+O++++O+::-6GJJJJJJJJ", +"JJJJJJJJD,iMMMMMMMBp--#NJJJJJJJJ", +"JJJJJJJJB-BJJJJJJJJB-:osJJJJJJJJ", +"JJJJJJJF82GJJJJJJJJGi--$ZJJJJJJJ", +"JJJJJJJMokJJJJJJJJJJV::XrGJJJJJJ", +"JJJJJJG9-VJJJJJJJJJJG4--@CJJJJJJ", +"JJJJJGb-#nGJJJJJJJJJGi-:+rSJJJJJ", +"JJJJn&O-o enJJJJJJGh*@---X.uJJJJ", +"JJJJq,45531vJJJJJJG7,5555547JJJJ", +"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ", +"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ" +}; diff --git a/kommander/editor/pics/large/layout.xpm b/kommander/editor/pics/large/layout.xpm new file mode 100644 index 00000000..9c4becda --- /dev/null +++ b/kommander/editor/pics/large/layout.xpm @@ -0,0 +1,167 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 129 2", +" c #212100000000", +". c #212108080000", +"X c #292900000000", +"o c #292910101010", +"O c #292918181010", +"+ c #292918181818", +"@ c #313108080000", +"# c #4a4a08080000", +"$ c #4a4a21211818", +"% c #525239393939", +"& c #636310100000", +"* c #636310100808", +"= c #6b6b10100808", +"- c #6b6b18180808", +"; c #737321211818", +": c #737331312121", +"> c #737339393131", +", c #52524a4a4a4a", +"< c #737352524a4a", +"1 c #73735a5a5a5a", +"2 c #6b6b63635a5a", +"3 c #6b6b63636363", +"4 c #73736b6b6b6b", +"5 c #7b7b63636363", +"6 c #7b7b6b6b6b6b", +"7 c #737373736b6b", +"8 c #7b7b73737373", +"9 c #848418180808", +"0 c #949421211010", +"q c #949429291010", +"w c #9c9c21211010", +"e c #9c9c29291818", +"r c #9c9c31312121", +"t c #adad31311818", +"y c #b5b529291010", +"u c #b5b531311818", +"i c #adad31312121", +"p c #bdbd39392121", +"a c #bdbd39392929", +"s c #9c9c42423131", +"d c #adad4a4a3939", +"f c #bdbd42422929", +"g c #848452524a4a", +"h c #949452524242", +"j c #9c9c5a5a5252", +"k c #84846b6b6b6b", +"l c #8c8c73736b6b", +"z c #8c8c73737373", +"x c #949473736b6b", +"c c #9c9c73736b6b", +"v c #9c9c73737373", +"b c #adad5a5a5252", +"n c #adad63635252", +"m c #bdbd63635252", +"M c #bdbd6b6b5a5a", +"N c #a5a573736b6b", +"B c #a5a57b7b7373", +"V c #b5b573736b6b", +"C c #cece31311010", +"Z c #d6d629291010", +"A c #c6c639392121", +"S c #cece4a4a3131", +"D c #d6d64a4a3131", +"F c #d6d64a4a3939", +"G c #d6d652523939", +"H c #dede52523939", +"J c #e7e74a4a2929", +"K c #e7e74a4a3131", +"L c #efef52523939", +"P c #f7f752523131", +"I c #f7f752523939", +"U c #cece5a5a4a4a", +"Y c #d6d652524242", +"T c #dede5a5a4a4a", +"R c #dede6b6b5252", +"E c #c6c673736363", +"W c #cece7b7b6b6b", +"Q c #ffff63634a4a", +"! c #f7f76b6b5252", +"~ c #f7f76b6b5a5a", +"^ c #ffff6b6b5252", +"/ c #f7f773735a5a", +"( c #ffff73735252", +") c #ffff73735a5a", +"_ c #ffff7b7b5a5a", +"` c #ffff7b7b6363", +"' c #ffff7b7b6b6b", +"] c #9c9c84847b7b", +"[ c #adad84847b7b", +"{ c #b5b584847b7b", +"} c #bdbd84847b7b", +"| c #c6c684847b7b", +" . c #dede84847373", +".. c #dede8c8c7b7b", +"X. c #e7e784847373", +"o. c #f7f784846b6b", +"O. c #ffff84846363", +"+. c #ffff84846b6b", +"@. c #ffff8c8c6b6b", +"#. c #f7f784847373", +"$. c #ffff8c8c7373", +"%. c #94948c8c8c8c", +"&. c #9c9c8c8c8c8c", +"*. c #949494948c8c", +"=. c Gray58", +"-. c #9c9c94949494", +";. c Gray61", +":. c #a5a58c8c8c8c", +">. c #adad94948c8c", +",. c #adad9c9c9494", +"<. c #adad9c9c9c9c", +"1. c #b5b58c8c8484", +"2. c #b5b594948c8c", +"3. c #b5b594949494", +"4. c #b5b59c9c9494", +"5. c #bdbd9c9c9494", +"6. c #bdbd9c9c9c9c", +"7. c #bdbda5a59c9c", +"8. c #b5b5adada5a5", +"9. c #b5b5adadadad", +"0. c #bdbdb5b5b5b5", +"q. c Gray74", +"w. c #c6c694948c8c", +"e. c #cece94948c8c", +"r. c #c6c69c9c9494", +"t. c #dede94948484", +"y. c #efef94948484", +"u. c #c0c0c0c0c0c0", +"i. c None", +/* pixels */ +"i.n t i i i i i i i i i i t { i.i.,.t i i i i i i i i i i t d i.", +"i.T K K K K K K K K K K K J | i.i.4.K K K K K K K J K J J J H i.", +"i.o.O.+.O.O.O.O.` O.` O.` ` e.i.i.6.` _ ` _ _ _ ` _ ) ` ) ) ` i.", +"i.#.+.' +.' +.' +.` +.` ` O.e.i.i.<.` ` ` ` ` ` ` ` ` ` ) ` ` i.", +"i.U H Y G G Y G Y G Y G Y G } i.i.4.G G G F G F F F G F G F Y i.", +"i.s e e e e e e e e e e e w ] i.i.>.e e e e e e e e e e e e r i.", +"i.: - - - - - - - - - - - = x i.i.&.- - - * - * - * - * - * ; i.", +"i.% @ @ @ @ @ @ @ @ @ @ @ @ 5 i.i.&.@ @ @ @ @ @ @ @ @ @ @ @ $ i.", +"i.2 o + + + + + + + + + + O 8 i.i.-.O + + + + + + + + + + O , i.", +"i.q.q.q.q.q.q.q.q.q.q.q.q.q.q.i.i.q.q.q.q.i.q.i.q.i.q.i.q.q.q.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.", +"i.q.9.9.9.9.9.9.9.9.9.9.9.9.q.i.i.q.9.9.9.9.9.9.9.9.9.9.9.9.0.i.", +"i.V y u u u u u u u u u u y [ i.i.3.y u u u u u u u u u u y b i.", +"i.W I L I L L I L L I L L P 1.i.i.4.I L L L L L L L L L L P R i.", +"i.t.+.@.@.+.@.+.+.+.+.+.+.O.2.i.i.7.` O.` O.` ` ` ` ` ` ` ` #.i.", +"i...` ` ` ` ` ` ` ` ` ` ` ` 1.i.i.6.) ` ` ` ) ` ) ) ) ) ) / o.i.", +"i.E G G G G G G G F G F F D [ i.i.3.F S S S F S F F S F S S m i.", +"i.j 0 e e e e e e q e q e 0 z i.i.:.q e e e q e q e q e e 0 s i.", +"i.g & * * * * * * * * * * & l i.i.&.* * * * * * * * * * * * > i.", +"i.1 X . X . . X . X X 6 i.i.%.X . . . . % i.", +"i.;.3 7 4 4 4 4 4 4 4 4 7 3 ;.i.i.8.4 7 8 7 8 7 8 7 8 7 8 4 =.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.", +"i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.", +"i.9.c B B B B B B B B B B N <.i.i.9.N B B N N B N B N B N N ,.i.", +"i.} Z C C C C C C C C C C Z B i.i.2.C C C C C C C C C C C Z M i.", +"i.e.( ) ^ ) ) ^ ) ) ^ ) ^ ^ { i.i.5.^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ Q .i.", +"i.r.$.$.$.$.$.$.$.$.$.$.@.$.1.i.i.7.+.+.+.+.+.+.+.+.' +.` O.y.i.", +"i.w.) / / / ~ ~ ~ ! ~ ! ~ ) { i.i.5.~ ! ! ! ! ! ! ! ! ! ! ! X.i.", +"i.[ A a f a f f f f a f a p v i.i.>.a a a a a a a p a p a p b i.", +"i.c 9 0 9 ; 9 0 9 ; 9 9 0 9 l i.i.:.9 9 ; 9 9 9 ; 9 ; 9 ; 9 h i.", +"i.z # # * # # # # # # # # # k i.i.&.# # # # # # # # # # # # < i.", +"i.%.. O O + O + + + O + + . 8 i.i.*.O O + O + + O + + + + . 4 i." +}; diff --git a/kommander/editor/pics/large/lcdnumber.xpm b/kommander/editor/pics/large/lcdnumber.xpm new file mode 100644 index 00000000..007e8c93 --- /dev/null +++ b/kommander/editor/pics/large/lcdnumber.xpm @@ -0,0 +1,154 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 116 2", +" c #000000001818", +". c #000000002121", +"X c #000000002929", +"o c #080808082929", +"O c #000000003131", +"+ c #000000003939", +"@ c #080808083131", +"# c #181818182121", +"$ c #101010103131", +"% c #101010103939", +"& c #181818183131", +"* c #212121213131", +"= c #212121213939", +"- c #292921213939", +"; c #292929293131", +": c #292929293939", +"> c #000000004242", +", c #000000004a4a", +"< c #080808084a4a", +"1 c #000000005252", +"2 c #000000005a5a", +"3 c #080800005252", +"4 c #080800005a5a", +"5 c #080808085252", +"6 c #080808085a5a", +"7 c #101008084a4a", +"8 c #101010104242", +"9 c #181818184242", +"0 c #101010105252", +"q c #101010105a5a", +"w c #181818185a5a", +"e c #000000006363", +"r c #000000006b6b", +"t c #080800006363", +"y c #080800006b6b", +"u c #080808086363", +"i c #080808086b6b", +"p c #000000007373", +"a c #000000007b7b", +"s c #080808087373", +"d c #080808087b7b", +"f c #101010106363", +"g c #101010106b6b", +"h c #181818186b6b", +"j c #101010107b7b", +"k c #181810107373", +"l c #181818187373", +"z c #181818187b7b", +"x c #212121214242", +"c c #292929294242", +"v c #212121215252", +"b c #313131314242", +"n c #313131314a4a", +"m c #393939394a4a", +"M c #212121216b6b", +"N c #292929296363", +"B c #424242424a4a", +"V c #424242425252", +"C c #4a4a42425a5a", +"Z c #4a4a4a4a5252", +"A c #4a4a4a4a5a5a", +"S c Gray32", +"D c #5a5a5a5a5a5a", +"F c #424242426363", +"G c #525252526363", +"H c #5a5a5a5a6363", +"J c Gray39", +"K c #636363636b6b", +"L c Gray42", +"P c #6b6b6b6b7373", +"I c #6b6b6b6b7b7b", +"U c Gray45", +"Y c #7b7b7b7b7373", +"T c #7b7b7b7b7b7b", +"R c #000000008c8c", +"E c #080808088484", +"W c #080808089494", +"Q c #080808089c9c", +"! c #181818188484", +"~ c #10100808a5a5", +"^ c #292929299494", +"/ c #313131319c9c", +"( c #393931319c9c", +") c #29292929a5a5", +"_ c #31313131adad", +"` c #4a4a4a4a9c9c", +"' c #525252528c8c", +"] c #5a5a5a5a9c9c", +"[ c #6b6b6b6b8484", +"{ c #6b6b6b6b8c8c", +"} c #6b6b6b6b9494", +"| c #737373738c8c", +" . c #7b7b7b7b8484", +".. c #7b7b7b7b8c8c", +"X. c #737373739494", +"o. c #7b7b7b7b9c9c", +"O. c #848484848484", +"+. c #848484848c8c", +"@. c Gray55", +"#. c #848484849494", +"$. c #848484849c9c", +"%. c #8c8c8c8c9494", +"&. c Gray58", +"*. c #949494949c9c", +"=. c #9c9c9c9c9494", +"-. c Gray61", +";. c #9c9c9c9ca5a5", +":. c #a5a59c9cadad", +">. c #a5a5a5a5a5a5", +",. c Gray68", +"<. c Gray71", +"1. c #b5b5bdbdbdbd", +"2. c Gray74", +"3. c #c0c0c0c0c0c0", +"4. c #c6c6c6c6c6c6", +"5. c None", +/* pixels */ +"5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.2.o./ z z l k l h F <.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.*.W d i u u u u u , m 5.5.", +"<.{ ,.5.5.5.5.5.5.5.5.5.:.| 2.5.5.5.5.,.- O > < > < + O H X.2.", +"] R n 2.5.5.5.5.5.5.5.1.) e +.5.5.5.5.5.<.O.Y L L L U T -.] a K ", +"! d + >.5.5.5.5.5.5.5.-.E 2 A 2.5.5.5.5.5.5.5.5.5.5.5.5.<.j y 9 ", +"h i > &.5.5.5.5.5.5.5.*.i u n 2.5.5.5.5.5.5.5.5.5.5.5.5.>.q u % ", +"f i < O.5.5.5.5.5.5.5.%.u u c 2.5.5.5.5.5.5.5.5.5.5.5.5.>.6 6 % ", +"w i + O.5.5.5.5.5.5.5.%.u 6 c 2.5.5.5.5.5.5.5.5.5.5.5.5.>.5 6 % ", +"w i + O.5.5.5.5.5.5.5.-.u 6 x 2.5.5.5.5.5.5.5.5.5.5.5.5.>.0 6 % ", +"N u > T 5.5.5.5.5.5.5.-.6 2 = 2.5.5.5.5.5.5.5.5.5.5.5.5.:.0 6 % ", +"N u + T 5.5.5.5.5.5.5.>.6 3 = 2.5.5.5.5.5.5.5.5.5.5.5.5.,.< 5 % ", +"C 1 X @.5.5.5.5.5.5.5.<.7 , : 2.5.5.5.5.5.5.5.5.5.5.5.5.2.8 > & ", +"%.X # *.$.| [ [ { [ | -.V U 5.5.5.5.5.<.$.[ [ X.X.[ [ *.J J ", +"4.O.I _ W d s s s s i 5 K T 2.5.5.5.5.1.( Q s r e e e u , G T 2.", +"5.5.%.> 1 5 3 3 5 5 < X S ,.5.5.5.5.2.%.8 > , < , < > > X m 5.5.", +"5.5.2.T n - = = = : b D } j &.5.5.2.` M Y A m b b b m B J <.5.5.", +"5.5.5.5.2.2.2.2.2.2.2.4.^ p c 2.5.;.Q 1 P 5.2.4.2.2.2.2.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.<.g u % <.5.*.i 1 V 5.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.<.q 6 @ ,.5.*.6 1 V 2.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.<.w 6 % ,.5.%.6 , m 2.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.2.0 4 @ >.5.+.6 1 m 2.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.2.w 6 @ >.5.%.6 < n 2.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.2.w 5 @ >.5.&.3 , b 4.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.2.v < o ,.5.;.< > m 5.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.2.H X ; 2.5.2.& . L >.#. ...%.#...-.2.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.5.<.Z >.5.5.5.-.D ' ~ d i i t e 6 , P 2.5.", +"5.5.5.5.5.5.5.5.5.5.5.5.5.4.5.5.5.5.5.<.q 1 < < , < > < X & 2.5.", +"5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.=.b & $ & & & * Z >.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.", +"5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5." +}; diff --git a/kommander/editor/pics/large/left.xpm b/kommander/editor/pics/large/left.xpm new file mode 100644 index 00000000..c467bccc --- /dev/null +++ b/kommander/editor/pics/large/left.xpm @@ -0,0 +1,181 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 143 2", +" c #00001010f7f7", +". c #18183131dede", +"X c #00002121efef", +"o c #00002121f7f7", +"O c #00002121ffff", +"+ c #00002929ffff", +"@ c #08082929f7f7", +"# c #00003131ffff", +"$ c #08083131ffff", +"% c #08083939ffff", +"& c #10102929e7e7", +"* c #18183131e7e7", +"= c #10103939ffff", +"- c #29293939c6c6", +"; c #29293939d6d6", +": c #21213939e7e7", +"> c #39394a4abdbd", +", c #10104242ffff", +"< c #18184242ffff", +"1 c #18184a4affff", +"2 c #29294242cece", +"3 c #21214242dede", +"4 c #29294242dede", +"5 c #39394a4adede", +"6 c #31315252dede", +"7 c #21214a4affff", +"8 c #21215252ffff", +"9 c #29295252ffff", +"0 c #29295a5affff", +"q c #31315252e7e7", +"w c #31315a5affff", +"e c #31316363ffff", +"r c #39396363ffff", +"t c #39396b6bffff", +"y c #5a5a6363adad", +"u c #63636b6bbdbd", +"i c #6b6b7373bdbd", +"p c #42425252d6d6", +"a c #42425252dede", +"s c #4a4a5a5ad6d6", +"d c #52526363c6c6", +"f c #52526363cece", +"g c #52527373d6d6", +"h c #52527b7bdede", +"j c #42426363efef", +"k c #42426b6bffff", +"l c #42427373ffff", +"z c #4a4a7373ffff", +"x c #4a4a7b7bffff", +"c c #52527373e7e7", +"v c #52527b7bf7f7", +"b c #63637b7bc6c6", +"n c #63637b7bcece", +"m c #6b6b7373c6c6", +"M c #63637b7bd6d6", +"N c #73737b7bcece", +"B c #73738484b5b5", +"V c #7b7b8484b5b5", +"C c #7b7b8c8cbdbd", +"Z c #7b7b9494bdbd", +"A c #4a4a8484ffff", +"S c #5a5a8484efef", +"D c #52528484ffff", +"F c #5a5a8484ffff", +"G c #5a5a8c8cffff", +"H c #6b6b8484cece", +"J c #63638484dede", +"K c #73738484c6c6", +"L c #73738c8ccece", +"P c #73738c8cd6d6", +"I c #63638c8cefef", +"U c #63638c8cffff", +"Y c #63639494ffff", +"T c #6b6b9494ffff", +"R c #6b6b9c9cffff", +"E c #73739c9ce7e7", +"W c #7b7ba5a5e7e7", +"Q c #7373a5a5ffff", +"! c #7373adadffff", +"~ c #7b7badadffff", +"^ c #7b7bb5b5ffff", +"/ c #848484849c9c", +"( c #84848484adad", +") c #8c8c9494adad", +"_ c #84849494bdbd", +"` c #8c8c9494b5b5", +"' c #8c8c9c9cbdbd", +"] c #94949494a5a5", +"[ c #94949494bdbd", +"{ c #94949c9cbdbd", +"} c #9c9ca5a5adad", +"| c #9c9ca5a5b5b5", +" . c #a5a5a5a5b5b5", +".. c #a5a5a5a5bdbd", +"X. c #adadadadb5b5", +"o. c Gray71", +"O. c #b5b5b5b5bdbd", +"+. c Gray74", +"@. c #84848c8cc6c6", +"#. c #84849c9cc6c6", +"$. c #8c8c9c9ccece", +"%. c #94949494c6c6", +"&. c #8c8ca5a5efef", +"*. c #8484adadffff", +"=. c #8c8cadadf7f7", +"-. c #8484b5b5ffff", +";. c #8484bdbdffff", +":. c #8c8cbdbdffff", +">. c #9c9cbdbdf7f7", +",. c #b5b5bdbdc6c6", +"<. c #bdbdbdbdc6c6", +"1. c #9494c6c6ffff", +"2. c #9494ceceffff", +"3. c #9c9cc6c6ffff", +"4. c #9c9cceceffff", +"5. c #9c9cd6d6ffff", +"6. c #a5a5ceceffff", +"7. c #adadc6c6ffff", +"8. c #a5a5d6d6ffff", +"9. c #adadd6d6ffff", +"0. c #b5b5ceceffff", +"q. c #b5b5d6d6ffff", +"w. c #b5b5dedeffff", +"e. c #bdbdd6d6ffff", +"r. c #bdbde7e7ffff", +"t. c #c0c0c0c0c0c0", +"y. c #ceced6d6ffff", +"u. c #c6c6e7e7ffff", +"i. c #c6c6efefffff", +"p. c #cecee7e7ffff", +"a. c #ceceefefffff", +"s. c #c6c6f7f7ffff", +"d. c #cecef7f7ffff", +"f. c #d6d6efefffff", +"g. c #dedeefefffff", +"h. c #d6d6f7f7ffff", +"j. c #dedef7f7ffff", +"k. c #dedeffffffff", +"l. c #e7e7ffffffff", +"z. c #efefffffffff", +"x. c #f7f7ffffffff", +"c. c Gray100", +"v. c None", +/* pixels */ +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.<.` E c ` v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.O.b =.c.y.@.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.O.K 7.c.c.f.$.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.` W g.c.x.a.1.$.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.+.) >.c.c.z.s.5.*.$.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.B &.c.c.z.w.5.1.R ' v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.o.` 0.c.c.z.r.1.:.:.Q Z v.v.v.v.v.v.v.v.v.v.+.+.,.,.,.v.v.", +"v.v. .g q.c.c.a.5.:.-.*.~ ~ J .v.v.v.+.+.,.` C H f h S S J n X.", +"v.<.J p.c.c.d.4.-.*.~ ~ ~ ~ l q M P H b c I =.3.q.f.j.h.d.4.8 f ", +"+.n e.c.x.d.8.;.-.~ ~ Q Q ~ U ^ 2.6.w.i.l.j.h.h.a.u.9.1.:.Y < a ", +"b 6.c.k.r.2.-.*.~ Q Q Q Q Q Q :.3.8.8.4.1.:.;.-.^ Q ! Q Y l , 4 ", +"I x.i.5.4.-.*.~ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q R R R U k = 3 ", +"v 8.1.:.-.^ ~ Q Q Q Q Q Q R Q R R Q R Q R R R R T R Y Y G t $ 4 ", +"6 e Y Q Q ~ Q Q R R R Q Q R R Y U G G U Y Y Y U Y G U G D r % 4 ", +"] & < k D Y R Q R Q R R R Q F 7 < < 1 7 w r l l z x x l k e $ 5 ", +"+./ @ = e x U T R T R R Q Q r X . & X o O + $ = = 1 8 9 7 + p ", +"v.v.B @ = w l G Y T Y R T Q j y ] +...] V m > - . X X @ @ + & ( ", +"v.v.+.} s $ 1 r x G Y Y Y Y L v.v.v.v.v.v.v.+.+.O.X.| [ %.{ X.+.", +"v.v.v.v.O.2 O < e z G U Y G #.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.o.d $ , w x G G A @.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.+.u & = 0 k x t i v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.<. .; # < 9 < i v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.} . + $ # N v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.} u : * _ v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v." +}; diff --git a/kommander/editor/pics/large/line.xpm b/kommander/editor/pics/large/line.xpm new file mode 100644 index 00000000..93e0439e --- /dev/null +++ b/kommander/editor/pics/large/line.xpm @@ -0,0 +1,45 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 7 1", +" c #060606060505", +". c #010101010a0a", +"X c #090908083b3b", +"o c #1d1d1d1d2121", +"O c #0a0a0a0a4747", +"+ c #c0c0c0c0c0c0", +"@ c None", +/* pixels */ +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"oooooooooooooooooooooooooooooooo", +"O@OO@OO@O@O@O@O@OO@OO@OO@O@O@O@O", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"OXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXO", +"................................", +". .", +"o..............................o", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@", +"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" +}; diff --git a/kommander/editor/pics/large/lineedit.xpm b/kommander/editor/pics/large/lineedit.xpm new file mode 100644 index 00000000..1677865b --- /dev/null +++ b/kommander/editor/pics/large/lineedit.xpm @@ -0,0 +1,135 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 97 2", +" c Gray0", +". c Gray8", +"X c #191919191919", +"o c #2f2f2f2f2f2f", +"O c #373737373737", +"+ c #000000004b4b", +"@ c #000000005757", +"# c #000000005f5f", +"$ c #000000006464", +"% c #000000006b6b", +"& c #000000007373", +"* c #000000007d7d", +"= c #41413e3e3c3c", +"- c #464646464646", +"; c Gray30", +": c #525252524d4d", +"> c Gray34", +", c #5f5f5f5f5a5a", +"< c #646464645c5c", +"1 c #707069695555", +"2 c #666664646464", +"3 c #696966666161", +"4 c Gray43", +"5 c #000005058484", +"6 c #000000008e8e", +"7 c #000000009696", +"8 c #14141e1e8484", +"9 c #00000000a5a5", +"0 c #00000000aaaa", +"q c #00000000b2b2", +"w c #00000a0ab2b2", +"e c #00000202cdcd", +"r c #00000000d7d7", +"t c #00000000dfdf", +"y c #00000000e6e6", +"u c #00000000eeee", +"i c #00000000f5f5", +"p c Blue", +"a c #00000c0cffff", +"s c #19193737e9e9", +"d c #11115555ffff", +"f c #25254646eeee", +"g c #32325f5fffff", +"h c #39396161ffff", +"j c #5f5f6666b4b4", +"k c #6e6e6e6e8484", +"l c #757570708282", +"z c #46466e6effff", +"x c #50507a7affff", +"c c #70707878c3c3", +"v c #55558282ffff", +"b c #7d7d8989eeee", +"n c #73739898ffff", +"m c #8e8e8e8e8e8e", +"M c Gray59", +"N c #9d9d9d9d9d9d", +"B c #98989696a3a3", +"V c #a5a5a5a5a5a5", +"C c #afafafafafaf", +"Z c #b2b2aaaaafaf", +"A c #b2b2afafb7b7", +"S c #b2b2afafb9b9", +"D c #bebebebebebe", +"F c #87879191ebeb", +"G c #8e8e9898fafa", +"H c #9d9da3a3dada", +"J c #9d9dafafffff", +"K c #bebebebec1c1", +"L c #a5a5bebeffff", +"P c #b9b9c1c1e4e4", +"I c #b4b4c6c6ffff", +"U c #c1c1bebebebe", +"Y c #c6c6c1c1b9b9", +"T c #c0c0c0c0c0c0", +"R c #c3c3c3c3c3c3", +"E c #cdcdcdcdcdcd", +"W c #dcdcd5d5c6c6", +"Q c #dfdfdadacdcd", +"! c #d7d7d7d7d7d7", +"~ c gainsboro", +"^ c #c3c3cbcbfdfd", +"/ c #c1c1d5d5ffff", +"( c #cbcbdcdcffff", +") c #d7d7e1e1ffff", +"_ c #dcdce6e6ffff", +"` c #dfdfe9e9ffff", +"' c #f3f3eeeedcdc", +"] c #fafaf0f0cbcb", +"[ c #ffffffffd7d7", +"{ c #ffffffffdfdf", +"} c #e4e4eeeeffff", +"| c #eeeef5f5ffff", +" . c #ffffffffe6e6", +".. c Gray96", +"X. c #fffffffff5f5", +"o. c Gray100", +"O. c None", +/* pixels */ +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"A 4 = O X o X X . . . . X X X X X X X X . X X X O 2 C ", +"; - ", +"X D o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.~ X ", +"X o.o.o.o.o.o.o.o.o.o.| p 7 .o.o.o.o... o.o.M X ", +". o o.o.o.o.o.o.o.o.o.o.) p # ] o.o.o.o.o.N m o 4 m C o.o.R . ", +". - o.o.o.o.o.o.o.o.o.o.) p # [ o.o.o.o.o.o.o.E o.o.o.o.o.E ", +" > o.o.o./ v g J o.o.o.) p # ] n h ^ o.o.o.o.R o.o.o.o.o.E ", +" , o.( p i i p p t K o.) p 6 y u i i r X.o.o.R o.o.o.o.o.! ", +" 2 o.p q & H F i y % X.) p i * j b p r 8 o.o.R o.o.o.o.o.~ ", +". 3 o.u $ { o.o.o.p # [ _ p 7 l o.o.^ p $ ' o.R o.o.o.o.o.~ ", +" 2 o.X.X.o.I z a p # ] ` p @ [ o.o.o.p * A o.R o.o.o.o.o.~ . ", +" 4 o.( a p i y e p $ [ _ p @ .o.o.o.p 9 k o.R o.o.o.o.o.! ", +" < | p e q e c P p # ] ` p # { o.o.o.p 5 B o.R o.o.o.o.o.! ", +". 1 n y + { o.o.L p # [ } p $ ] o.o.o.p @ Q o.R o.o.o.o.o.! ", +" 1 x y & X.o.| p p # ] ` p t w o.o.d t + o.o.E o.o.o.o.o.! ", +"X = } p u p p u 7 y % W } p 9 t p p u $ Y K C = m V D o.o.E . ", +"X . o.G p u e 9 Z f 0 S o.y 5 s u e 7 U o. o.o.C . ", +"X o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.o.= X ", +"- X = : < 2 , , > > > > , , , , > > > , , 2 4 4 > ; o = ", +"C > o X X . . . . . . . . . X o ; V ", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.", +"O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O.O." +}; diff --git a/kommander/editor/pics/large/listbox.xpm b/kommander/editor/pics/large/listbox.xpm new file mode 100644 index 00000000..13ff67ef --- /dev/null +++ b/kommander/editor/pics/large/listbox.xpm @@ -0,0 +1,121 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 83 1", +" c Gray0", +". c #080808080000", +"X c Gray3", +"o c #080808081010", +"O c #101008080808", +"+ c #101010101010", +"@ c #101010101818", +"# c #181818181818", +"$ c #080810102929", +"% c Gray13", +"& c Gray16", +"* c #313131313131", +"= c #393939393939", +"- c #101018184242", +"; c #101018185252", +": c #101021216b6b", +"> c #181829297b7b", +", c #212131316363", +"< c #212131317373", +"1 c #424239393939", +"2 c #424242423939", +"3 c #4a4a42423939", +"4 c Gray26", +"5 c Gray29", +"6 c #52524a4a4242", +"7 c #525252524a4a", +"8 c Gray32", +"9 c #5a5a5a5a5a5a", +"0 c Gray39", +"q c Gray42", +"w c Gray45", +"e c #7b7b7b7b7b7b", +"r c #101029298484", +"t c #10103131b5b5", +"y c #10103131cece", +"u c #00002121e7e7", +"i c #00002121efef", +"p c #08082929e7e7", +"a c #08083131efef", +"s c #08083131f7f7", +"d c #18183939efef", +"f c #18183939f7f7", +"g c #18183939ffff", +"h c #18184242ffff", +"j c #31315252dede", +"k c #21214242ffff", +"l c #21214a4affff", +"z c #31315a5affff", +"x c #6b6b8484f7f7", +"c c #73738c8cefef", +"v c #73738484f7f7", +"b c #73738c8cf7f7", +"n c #7b7b8c8cf7f7", +"m c #7b7b9494f7f7", +"M c #848484848484", +"N c Gray55", +"B c Gray58", +"V c Gray61", +"C c #a5a59c9c9c9c", +"Z c #a5a5a5a59c9c", +"A c #a5a5a5a5a5a5", +"S c #adadadada5a5", +"D c Gray68", +"F c Gray71", +"G c Gray74", +"H c #94949c9cdede", +"J c #9c9ca5a5dede", +"K c #9494a5a5ffff", +"L c #b5b5bdbde7e7", +"P c #b5b5bdbdf7f7", +"I c #bdbdc6c6f7f7", +"U c #bdbdcecef7f7", +"Y c #c6c6c6c6c6c6", +"T c #cececececece", +"R c Gray84", +"E c Gray87", +"W c #ceced6d6ffff", +"Q c #e7e7e7e7e7e7", +"! c #efefefefefef", +"~ c #efefefefffff", +"^ c Gray97", +"/ c #f7f7f7f7ffff", +"( c Gray100", +/* pixels */ +"N0095544==&&&&%%%%%&%&&*=212377e", +"5X+*====44=444444444==**+@,<>:$5", +"5 w!FFFFDFDDDDDDDDDDDD^(0ojzkh;4", +"4 BA=4444=========*==*G(e rkhtO4", +"4 BF*=4==444=4====4===T(e @yd-.4", +"= q^TTTYYGGGGGGGYGYTTR!^0 O;rO+=", +"=++#%%%%#%##############@OXXXXO=", +"*+&8899000qqwwqqq009985#X*qew4o*", +"&X0(((((((((((((((((((!* w(((AX*", +"&X0((((((((((((((((((((= w(^^AX&", +"& q(F0q00000999999900T(4 qYN8BX%", +"&Xq(M*=4============&A(4 qw45M+%", +"&Xw(M*==============&V(5 q8&=MX%", +"&Xw(V*44444=4444=4===G(8 eB8MVX%", +"%Xw(!YGFFFFFDDDFFFGGY^(8 e(((DX%", +"&Xw(F5999888888888885Y(8 e(((A %", +"%Xe(N*===4==========&A(8 e(((AX%", +"& e(N&==============&V(9 e(((A %", +"&Xw(F7777777667677777T(9 e(((AX%", +"*Xw(~UIIPLPPPPPLPPIIU/(9 e(((D &", +"=Xw(KgllkkhkhkhhhkfhdL(8 e(((A *", +"= w(nsffffffddfdddddpH(8 e(((A *", +"= q(miaadadadadaadaauJ(8 e(((AX=", +"4 q(WcnbxvxxxxxvbvbncQ(5 e(((V =", +"4 0(QSSZZZZCVVCZCZZZS!(5 e(((V 4", +"6 9(V&*=************&D(4 e(((V 4", +"5 9(B*1==2==========&V(4 e(((V 4", +"8 8(A%**************&F(= e(((V 5", +"9 8(!FFFFFFFDDFFFFFFG!(* e(((V 9", +"9X*VDYYTTTRRERRTTTYYGDB% 4GTY0 9", +"0XXX XXX++X+++++++XXX X+X +XXX9", +"N45===**&%%#%######%#%%%&&**===N" +}; diff --git a/kommander/editor/pics/large/listview.xpm b/kommander/editor/pics/large/listview.xpm new file mode 100644 index 00000000..de987cc4 --- /dev/null +++ b/kommander/editor/pics/large/listview.xpm @@ -0,0 +1,148 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 110 2", +" c Gray0", +". c Gray3", +"X c #101010100808", +"o c #101010101010", +"O c #101010101818", +"+ c #181818181818", +"@ c Gray13", +"# c Gray16", +"$ c #313131313131", +"% c #393939393939", +"& c #424231311010", +"* c #424242422929", +"= c #5a5a52523131", +"- c Gray26", +"; c #424242424a4a", +": c Gray29", +"> c Gray32", +", c #5a5a5a5a5a5a", +"< c #73736b6b5252", +"1 c Gray39", +"2 c Gray42", +"3 c Gray45", +"4 c #737373737b7b", +"5 c #7b7b7b7b7b7b", +"6 c #7b7b84848484", +"7 c #84847b7b5a5a", +"8 c #b5b59c9c3131", +"9 c #bdbd9c9c3131", +"0 c #8c8c84846b6b", +"q c #9c9c94947b7b", +"w c #b5b59c9c5a5a", +"e c #bdbd9c9c5a5a", +"r c #a5a594946b6b", +"t c #adad9c9c6363", +"y c #a5a594947373", +"u c #adad9c9c7373", +"i c #adad9c9c7b7b", +"p c #b5b59c9c6363", +"a c #bdbda5a54242", +"s c #b5b5a5a57b7b", +"d c #f7f7bdbd3131", +"f c #c6c6a5a54242", +"g c #c6c6a5a54a4a", +"h c #cecea5a54242", +"j c #ceceb5b55a5a", +"k c #d6d6bdbd5252", +"l c #f7f7c6c63131", +"z c #f7f7c6c63939", +"x c #ffffcece3939", +"c c #dedecece4a4a", +"v c #efefd6d64a4a", +"b c #efefdede5252", +"n c #f7f7cece4242", +"m c #ffffcece4242", +"M c #ffffd6d64242", +"N c #ffffdede4242", +"B c #ffffdede4a4a", +"V c #e7e7d6d66363", +"C c #ffffe7e74a4a", +"Z c #ffffe7e75252", +"A c #ffffefef5252", +"S c #ffffefef5a5a", +"D c #fffff7f75a5a", +"F c #fffff7f76363", +"G c #ffffffff6363", +"H c #ffffffff6b6b", +"J c #fffff7f77373", +"K c #ffffffff7373", +"L c #ffffffff7b7b", +"P c #848484848484", +"I c Gray55", +"U c #949494948484", +"Y c #949494948c8c", +"T c #9c9c94948c8c", +"R c Gray58", +"E c #9c9c94949494", +"W c Gray61", +"Q c #9c9ca5a5a5a5", +"! c #a5a59c9c8484", +"~ c #adad9c9c8484", +"^ c #a5a59c9c9494", +"/ c #a5a59c9c9c9c", +"( c #a5a5a5a59c9c", +") c #b5b5adad8c8c", +"_ c #bdbdb5b59494", +"` c #bdbdb5b59c9c", +"' c #bdbdbdbd9494", +"] c #bdbdbdbd9c9c", +"[ c #a5a5a5a5a5a5", +"{ c #adadadada5a5", +"} c Gray68", +"| c #b5b5adada5a5", +" . c #b5b5b5b5a5a5", +".. c #b5b5b5b5adad", +"X. c #bdbdb5b5a5a5", +"o. c #bdbdb5b5adad", +"O. c #bdbdbdbda5a5", +"+. c #bdbdbdbdadad", +"@. c Gray71", +"#. c #bdbdbdbdb5b5", +"$. c Gray74", +"%. c #c6c6bdbd8c8c", +"&. c #c6c6bdbd9494", +"*. c #c6c6bdbda5a5", +"=. c #d6d6cece8c8c", +"-. c #d6d6cece9494", +";. c #d6d6d6d69494", +":. c #c0c0c0c0c0c0", +">. c #c6c6c6c6c6c6", +",. c None", +/* pixels */ +",.} R 2 > : % $ $ $ # # # @ @ + + + @ @ + @ + @ @ # # $ - , W ,.", +"[ % + . . . . . . . . . . . W ", +"2 o . . . . : ", +"- . . ; P Y E [ W ( [ [ W W W W W W W R W [ W I P 5 - # ", +"$ . , ,.#.-.-.;.-.-.=...,.,.,.,.,.,.,.,.,.,.,.,.,.,.>.> + ", +"# . R ,.' L K K K H F ! ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.R o ", +"@ . W ,.&.K H H H G S q ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.W o ", +"@ . . [ ,.&.H H F F F S q ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.[ . o ", +"+ . . @.,.' H F F F F S q ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.} . . ", +"+ . . @.,.%.H G F F F Z q ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.} . o ", +"+ o } ,.| a f 9 9 f 8 ( ,.,.,.,.,.,.,.,.,.,.,.,.,.,.,.} . o ", +"+ . . @.,.$.$.@.- $ @.@.>.,.,.$.+.O.*.*.O.O.#.,.,.,.,.,.} . . ", +"+ o @.,.,.,.,.; % ,.,.,.,.,.o.J H H F F D s ,.,.,.,.,.} . o ", +"+ . @.,.,.,.,.> @ P P P P 6 0 F S S S S A t ,.,.,.,.,.[ . o ", +"+ . } ,.,.,.,.> . @ + + + O * F S S Z Z Z w ,.,.,.,.,.} . o ", +"+ . . @.,.,.,.,.: $ $.$.$.$.>.` F S Z Z Z C p ,.,.,.,.,.} . o ", +"o o } ,.,.,.,.> $ ,.,.,.,.,._ S A S Z Z C t ,.,.,.,.,.} . o ", +"+ . @.,.,.,.,.> $ ,.,.,.,.,. .b m n m n x u ,.,.,.,.,.} . + ", +"+ . } ,.,.,.,.> $ ,.,.,.,.,.$./ E < & U T @.,.,.,.,.,.} + ", +"+ . } ,.,.,.,.> $ ,.,.,.,.,.,.,.,.6 O $.,.,.,.,.,.,.,.[ . + ", +"@ . } ,.,.,.,.> $ $.*.X.] ` X.` $.P o X.O.` ] ` ` +.,.Q @ ", +"@ . } ,.,.,.,.> % | H F F F F A ) P X V D D S S A j ,./ @ ", +"# } ,.,.,.,.I O 7 D S Z Z Z B i Q o c A Z B B C f ,.[ @ ", +"# . [ ,.,.,.,.>.4 = S Z Z Z Z N r ,.Y c Z B B B B h ,.[ # ", +"# W ,.,.,.,.,.,._ D Z Z B B N y ,.$.b C B B B M h ,.R # ", +"$ R ,.,.,.,.,.,.` A Z B Z B N y ,.#.v Z B M M N g ,.I $ ", +"% I ,.,.,.,.,.,.| v z z z z d ~ ,.$.k z d z z l e ,.5 % ", +"- 1 ,.,.,.,.,.,.$.{ / { { / ( $.,.,.@.^ ( { / / @.,., - ", +"> . P } @.$.$.$.$.>.,.,.,.,.,.$.$.$.$.,.,.,.$.@.} P $ > ", +"3 . o + # # $ $ $ # # # # # # $ # # # @ + . . . . 3 ", +"} . . } ", +",.[ , $ @ @ o o o o o . o . o . . . o . o o o o o + @ # % , [ ,." +}; diff --git a/kommander/editor/pics/large/multilineedit.xpm b/kommander/editor/pics/large/multilineedit.xpm new file mode 100644 index 00000000..e87a5713 --- /dev/null +++ b/kommander/editor/pics/large/multilineedit.xpm @@ -0,0 +1,108 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 70 1", +" c #040404040404", +". c Gray5", +"X c #111111111111", +"o c Gray24", +"O c #000000007d7d", +"+ c #414141414141", +"@ c #4e4e4e4e4e4e", +"# c Gray34", +"$ c #5b5b5b5b5b5b", +"% c Gray39", +"& c #6c6c6c6c6c6c", +"* c Gray44", +"= c Gray49", +"- c #000000008a8a", +"; c #00000000a4a4", +": c #00000000bebe", +"> c #343434348282", +", c #00000000c3c3", +"< c #00000000d4d4", +"1 c #00000000d8d8", +"2 c #00000000e1e1", +"3 c #00000000f6f6", +"4 c #04040404ffff", +"5 c #00000d0dffff", +"6 c #09091a1affff", +"7 c #16161616ffff", +"8 c #11111e1effff", +"9 c #16162323ffff", +"0 c #1e1e2727ffff", +"q c #1a1a3434ffff", +"w c #30303030cbcb", +"e c #27272727ffff", +"r c #34343434ffff", +"t c #38383838ffff", +"y c #6c6c7070baba", +"u c #52525f5fffff", +"i c #4e4e6868ffff", +"p c #57576363ffff", +"a c #5f5f6363ffff", +"s c #5b5b6868ffff", +"d c #63637979ffff", +"f c #75757979ffff", +"g c #79797d7dffff", +"h c #68688686ffff", +"j c #7d7d8f8fffff", +"k c #868686868686", +"l c #939393939393", +"z c Gray61", +"x c #a0a0a0a0a0a0", +"c c #a9a9a9a9a9a9", +"v c #bebebebebebe", +"b c #86868686e5e5", +"n c #82828f8fffff", +"m c #93939393ffff", +"M c #9797adadffff", +"N c #adadadadffff", +"B c #adadb6b6ffff", +"V c #bebec7c7ffff", +"C c #b1b1d0d0ffff", +"Z c #c0c0c0c0c0c0", +"A c Gray83", +"S c #cbcbd0d0ffff", +"D c #d4d4d4d4ffff", +"F c #ddddd8d8f6f6", +"G c #d4d4e5e5ffff", +"H c #e9e9e9e9e9e9", +"J c #e9e9eeeeffff", +"K c #eeeefbfbffff", +"L c Gray100", +"P c None", +/* pixels */ +"v*oXXXX................XXXXXoo&v", +"& . . . $", +"o &HLLLLLLLLLLLLLLLLLLLLLLHl X", +"X kLLLLLLLLLLLLLLLLLLLLLLLLLLL X", +". LLLLLLLLLLLLLLL65LLLLLLLLLLL .", +". LLLLLLLLLLLLLLL44LLLLLLLLLLL .", +". LLLLLLLLLLLLLLL44LLLLLLLLLLL .", +". LLLL444fLLLC44a44LLLd444LLLL .", +". LLL444444Lh444444LL444444LLL .", +". LL44DLL44L44LLN44Ln47LLB44LL .", +". LL44LLLLLL44LLL44L44qspi44LL .", +"X LL44LLLLLB4tLLL44L44444444LL .", +"X LL44LLLLpS44LLL44L44LLLLLLLL X", +"X LL44GLL44L44LLK44Lr40LLJ44LL X", +"X LLL444444Ln444444LL444444LLL X", +"X LLLL444aLLLS44er7LLLe444LLLL X", +"X.LLLLLLLLLLLLLLLLLLLLLLLLLLLL X", +"o LLLLLLLLLLL42LLLLL. vLLL X", +"X LLLLLLLLLLL4,LLLLLLLk LLLLLL o", +"o LLLLLLnLLLL4,LLBLLLLc LLLLLL X", +"o LLLM44444LL444444NLLc LLLLLL o", +"o LLL4;LL44OL444LS41LLx LLLLLL X", +"o LLL4FLLL4OL44bLLr4wLz LLLLLL o", +"o HLLL44444-L4;LLLL4<Lz LLLLLL o", +"o ALL4444V4;L4;LLLL42Lz LLLLLL o", +"@ cL44>LLG4OL44yLL84mLz LLLLLL o", +"@ kL44;Lj44OL443gu44LL@ LLLLLL o", +"# oLL444444:L934444L LLLL +", +"% LLLLLLLLLLLLLLLLLLLLLLLLLLL #", +"= LLLLLLLLLLLLLLLLLLLLLLLLLL %", +"x. +&=kk=*&%#$#####@oo. l", +"PkoXX................ ...XXXXokP" +}; diff --git a/kommander/editor/pics/large/newform.xpm b/kommander/editor/pics/large/newform.xpm new file mode 100644 index 00000000..d8e9bc4b --- /dev/null +++ b/kommander/editor/pics/large/newform.xpm @@ -0,0 +1,35 @@ +/* XPM */ +static char * newform_xpm[] = { +"34 26 6 1", +" c None", +". c #FFFFFF", +"+ c #000000", +"@ c #0000FF", +"# c #C0C0C0", +"$ c #808080", +"..................................", +".+++++++++++++++++++++++++++++++..", +".+@@@@@@@@@@@@@@@@@@@@@@@+#+#+#+$.", +".+++++++++++++++++++++++++++++++$.", +".+.............................+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$+$.", +".+++++++++++++++++++++++++++++++$.", +"..$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.", +".................................."}; diff --git a/kommander/editor/pics/large/ordertool.xpm b/kommander/editor/pics/large/ordertool.xpm new file mode 100644 index 00000000..71c05d6d --- /dev/null +++ b/kommander/editor/pics/large/ordertool.xpm @@ -0,0 +1,157 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 119 2", +" c Gray0", +". c Gray3", +"X c #101010101010", +"o c #181818181818", +"O c Gray13", +"+ c Gray16", +"@ c #313131313131", +"# c #393939393939", +"$ c Gray26", +"% c Gray29", +"& c Gray32", +"* c #5a5a5a5a5a5a", +"= c Gray39", +"- c Gray42", +"; c Gray45", +": c #7b7b7b7b7b7b", +"> c #29293131adad", +", c #29293131b5b5", +"< c #31313131adad", +"1 c #31313939a5a5", +"2 c #31313939adad", +"3 c #31313939b5b5", +"4 c #31313939bdbd", +"5 c #393942429c9c", +"6 c #39394242a5a5", +"7 c #39394242ffff", +"8 c #39394a4affff", +"9 c #424242429c9c", +"0 c #525252529c9c", +"q c #42424242a5a5", +"w c #42424a4aa5a5", +"e c #42424a4aadad", +"r c #4a4a4a4ab5b5", +"t c #4a4a4a4abdbd", +"y c #4a4a5252adad", +"u c #4a4a5252b5b5", +"i c #52525252a5a5", +"p c #52525a5aa5a5", +"a c #52525a5aadad", +"s c #5a5a5a5aa5a5", +"d c #52525252b5b5", +"f c #52525a5ab5b5", +"g c #52525a5abdbd", +"h c #5a5a6363adad", +"j c #5a5a6363b5b5", +"k c #63636363bdbd", +"l c #63636b6bbdbd", +"z c #6b6b6b6bb5b5", +"x c #7b7b7b7bb5b5", +"c c #4a4a5252dede", +"v c #42424a4affff", +"b c #4a4a5252e7e7", +"n c #4a4a5a5aefef", +"m c #42425252ffff", +"M c #4a4a5252ffff", +"N c #4a4a5a5affff", +"B c #52525a5aefef", +"V c #52525a5af7f7", +"C c #52525a5affff", +"Z c #5a5a6363c6c6", +"A c #52526363efef", +"S c #5a5a6363efef", +"D c #52526363f7f7", +"F c #52526363ffff", +"G c #5a5a6363f7f7", +"H c #5a5a6363ffff", +"J c #5a5a6b6bffff", +"K c #63636b6bdede", +"L c #7b7b7b7bcece", +"P c #7b7b7b7bd6d6", +"I c #63636b6befef", +"U c #63636b6bffff", +"Y c #63637373ffff", +"T c #6b6b7373ffff", +"R c #6b6b7b7bffff", +"E c #73737b7bffff", +"W c #7b7b8484bdbd", +"Q c #7b7b8484c6c6", +"! c #7b7b8484cece", +"~ c #73738484dede", +"^ c #7b7b8484e7e7", +"/ c #73738484ffff", +"( c #7b7b8484ffff", +") c #7b7b8c8cffff", +"_ c #848484848484", +"` c Gray55", +"' c #84848c8c9c9c", +"] c Gray58", +"[ c Gray61", +"{ c #84848484adad", +"} c #84848c8ca5a5", +"| c #8c8c8c8cadad", +" . c #84848484bdbd", +".. c #84848c8cbdbd", +"X. c #8c8c8c8cb5b5", +"o. c #9c9c9c9cb5b5", +"O. c #a5a5a5a5a5a5", +"+. c #a5a5a5a5adad", +"@. c Gray68", +"#. c #a5a5a5a5b5b5", +"$. c #adadadadb5b5", +"%. c #adadadadbdbd", +"&. c Gray71", +"*. c #b5b5b5b5bdbd", +"=. c Gray74", +"-. c #84848484c6c6", +";. c #84848c8cffff", +":. c #84849494ffff", +">. c #8c8c9494ffff", +",. c #8c8c9c9cffff", +"<. c #94949c9cffff", +"1. c #9494a5a5ffff", +"2. c #9c9ca5a5ffff", +"3. c #bdbdbdbdc6c6", +"4. c #a5a5adadffff", +"5. c #a5a5b5b5ffff", +"6. c #c0c0c0c0c0c0", +"7. c #c6c6c6c6c6c6", +"8. c None", +/* pixels */ +"8.8.@.+ X =.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.", +"8.O.+ . &.8.8.8.8.8.8.8.8.$.-.! L P P P P P P P P ! L ! W #.8.", +"[ X . &.8.8.8.8.8.8.8.*.^ 5.1.2.1.2.1.1.2.1.1.<.,.>.;.E t 8.", +"` . . &.8.8.8.8.8.8.8.&.S >.) ( ) ( ( / / / E / E R T H 3 8.", +"=.O._ . &.8.8.8.8.8.8.8.$.G ;.E R R T T T T T T Y Y U U C 4 8.", +"8.8.` . &.8.8.8.8.8.8.8.%.S ) E T T T Y T Y Y Y U U U J N , 8.", +"8.8.` . &.8.8.8.8.8.8.8.$.S ( R T Y Y Y U U U U U U J H N , 8.", +"8.8.] . &.8.8.8.8.8.8.8.$.B E Y Y U H U U J U J H H H F M < 8.", +"8.8.&.. . &.8.8.8.8.8.8.8.*.c H C M m m v m v m v v m v m 8 1 8.", +"8.8.=.& % =.8.8.8.8.8.8.8.=.| h h s s 0 0 0 0 0 0 0 p s s s ' 8.", +"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.7.=.=.7.=.7.=.=.7.=.7.3.=.8.8.8.", +"8.] $ @ # ; =.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.", +"[ . = 8.8.8.8.8.8.8.%.X... . .Q Q .Q .Q . . ...X.#.8.", +"% O ] # o =.8.8.8.8.8.=.~ 4.<.1.1.<.1.<.1.<.,.,.>.:.) T u 8.", +"- O ; 8.- X =.8.8.8.8.8.$.I :.) ( ( ( ( / / E ( / E R T H 3 8.", +"8.=.8._ * 8.8.8.8.8.8.$.G ( R T T Y Y U T Y U U U U H N 2 8.", +"8.8.: + &.8.8.8.8.8.8.%.A ( T Y Y U U U Y U U U J J H M > 8.", +"8.- $ =.8.8.8.8.8.8.8.$.D / T U Y U U U J J J U J H F m < 8.", +"` . & = - =.8.8.8.8.8.$.B R U U J J J J H H H H H H C m 1 8.", +"o . &.8.8.8.8.8.&.b H C N M v M M m M m v m v m 7 6 8.", +"$ @ # @ # @ % =.8.8.8.8.8.7.{ j a y w q 6 5 5 5 q 6 w w e y } 8.", +"8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.7.=.=.=.=.=.=.=.=.=.=.=.8.8.8.", +"8.O.& $ * O.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.", +"@.o . [ 8.8.8.8.8.8.8.o.l l k Z Z Z Z Z Z Z Z k k z z +.8.", +"% O = X - 8.8.8.8.8.8.=.K ) ( ( ( ( ( ( ( ( / E R R Y V i 8.", +"= o - O.o - 8.8.8.8.8.8.$.I ,.;.;.;.:.) ) ;.) ) ;.( / R J q 8.", +"8.8.$ _ 8.8.8.8.8.8.$.S / T Y Y U Y U J U U U J H H M 1 8.", +"8.8.= o # 8.8.8.8.8.8.$.D E Y U U U U J U J J H H H F v 1 8.", +"_ & ] 8.= . &.8.8.8.8.8.%.B R U U J J J H H H H H H H C 8 6 8.", +"@ @ [ % o =.8.8.8.8.8.$.n T J J H H H H H F H F F C C v 5 8.", +": - 8.8.8.8.8.8.&.b F C M M m m M m M m M m m m 7 9 8.", +"8.; O X O = =.8.8.8.8.8.8.=.x g f u y y y e w e e e r u d u } 8." +}; diff --git a/kommander/editor/pics/large/pixlabel.xpm b/kommander/editor/pics/large/pixlabel.xpm new file mode 100644 index 00000000..96c69bf4 --- /dev/null +++ b/kommander/editor/pics/large/pixlabel.xpm @@ -0,0 +1,204 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 166 2", +" c #000008084a4a", +". c #b5b5b5b5d6d6", +"X c #c6c6bdbdd6d6", +"o c #bdbdb5b5d6d6", +"O c #c6c6c6c6d6d6", +"+ c #cecec6c6d6d6", +"@ c #d6d6ceced6d6", +"# c #cecececed6d6", +"$ c #b5b5adadd6d6", +"% c #d6d6cecedede", +"& c #bdbdbdbdd6d6", +"* c #adadadadd6d6", +"= c #a5a5a5a5d6d6", +"- c #bdbdbdbdcece", +"; c #c6c6bdbdcece", +": c #adada5a5d6d6", +"> c #c6c6c6c6cece", +", c #b5b5a5a5d6d6", +"< c #deded6d6d6d6", +"1 c #dedececed6d6", +"2 c #d6d6c6c6d6d6", +"3 c #ceceb5b5dede", +"4 c #efefd6d6dede", +"5 c #9c9c9c9cd6d6", +"6 c #f7f7d6d6dede", +"7 c #f7f7cecee7e7", +"8 c #ffffdededede", +"9 c #e7e7cecedede", +"0 c #ffffdedee7e7", +"q c #ffffefefefef", +"w c #fffff7f7efef", +"e c #dedececedede", +"r c #ffffe7e7efef", +"t c Gray100", +"y c #ffffefefffff", +"u c #cecec6c6c6c6", +"i c #c6c6c6c6c6c6", +"p c #cecec6c6dede", +"a c #adadb5b5b5b5", +"s c #fffff7f7f7f7", +"d c #f7f7deded6d6", +"f c #bdbdadad7373", +"g c #84848c8c3939", +"h c #7b7b8c8c4242", +"j c #9c9ca5a58c8c", +"k c #adadb5b5adad", +"l c #8c8c9c9c6b6b", +"z c #73738c8c4a4a", +"x c #848494947373", +"c c #848494946b6b", +"v c #6b6b84843131", +"b c #636373733131", +"n c #fffffffff7f7", +"m c #ffffefefb5b5", +"M c #cecea5a54a4a", +"N c #8c8c84842929", +"B c #7b7b84843131", +"V c #6b6b7b7b2929", +"C c #636373732929", +"Z c #5a5a6b6b2121", +"A c #5a5a73732121", +"S c #5a5a7b7b2121", +"D c #5a5a7b7b2929", +"F c #cecebdbddede", +"G c #fffff7f7bdbd", +"H c #f7f7bdbd4a4a", +"J c #b5b58c8c3939", +"K c #73737b7b3131", +"L c #6b6b7b7b3131", +"P c #5a5a73732929", +"I c #5a5a6b6b2929", +"U c #bdbdbdbddede", +"Y c #b5b5b5b5dede", +"T c #adada5a5dede", +"R c #bdbdadaddede", +"E c #d6d6b5b5e7e7", +"W c #e7e7adad6b6b", +"Q c #bdbd84843939", +"! c #8c8c73733131", +"~ c #737373733131", +"^ c #525263632929", +"/ c #52526b6b2929", +"( c #94949c9c9494", +") c #8c8c9c9c7373", +"_ c #a5a5adad9c9c", +"` c #bdbdb5b5bdbd", +"' c #cecebdbdadad", +"] c #dedebdbdadad", +"[ c #94947b7b3131", +"{ c #7b7b73733131", +"} c #6b6b6b6b2929", +"| c #63636b6b2929", +" . c #63637b7b2929", +".. c #7b7b8c8c6363", +"X. c #63637b7b2121", +"o. c #73738c8c3131", +"O. c #8c8c9c9c5252", +"+. c #848494944242", +"@. c #7b7b8c8c3939", +"#. c #7b7b7b7b3131", +"$. c #73736b6b2929", +"%. c #9c9ca5a59c9c", +"&. c #6b6b7b7b5252", +"*. c #6b6b8c8c3131", +"=. c #7b7b94943131", +"-. c #7b7b94943939", +";. c #7b7b8c8c3131", +":. c #6b6b73732929", +">. c #52526b6b2121", +",. c #4a4a63631818", +"<. c #525263632121", +"1. c #5a5a6b6b3131", +"2. c #4a4a63632121", +"3. c #4a4a5a5a3939", +"4. c #4a4a5a5a2929", +"5. c #737384843131", +"6. c #4a4a5a5a2121", +"7. c #42424a4a3939", +"8. c #42424a4a3131", +"9. c #424252522929", +"0. c #5a5a63633131", +"q. c #52525a5a3939", +"w. c #5a5a63633939", +"e. c #52525a5a3131", +"r. c #4a4a52522929", +"t. c #393942422929", +"y. c #313139392121", +"u. c #292931312121", +"i. c #292929291818", +"p. c #292939391818", +"a. c #313139391818", +"s. c #39394a4a2121", +"d. c #393942423939", +"f. c #424242423939", +"g. c #393942423131", +"h. c #39394a4a3131", +"j. c #39394a4a2929", +"k. c #4a4a52523131", +"l. c #5a5a5a5a3131", +"z. c #42424a4a2929", +"x. c #212129291818", +"c. c #181821211818", +"v. c #181821211010", +"b. c #212121211818", +"n. c #212131311818", +"m. c #4a4a52523939", +"M. c #393942422121", +"N. c #52525a5a4a4a", +"B. c #4a4a52524242", +"V. c #4a4a5a5a4242", +"C. c #525263634a4a", +"Z. c #424252523131", +"A. c #525263633939", +"S. c #292931311818", +"D. c #5a5a63634a4a", +"F. c #424252523939", +"G. c #525252523131", +"H. c #5a5a63635252", +"J. c #52525a5a4242", +"K. c #424242422929", +"L. c #101010101010", +"P. c #5a5a6b6b5252", +"I. c #525263634242", +"U. c #5a5a63634242", +"Y. c #5a5a6b6b4242", +"T. c #63636b6b4242", +/* pixels */ +" ", +" ", +" . X o O + o . + @ + # X X + + + + # X $ o o + # O o O % ", +" . & . & & * & O O X X . * + + & X + + O O # # O $ = & X ", +" # . * - . . ; * : . ; & X + + X + # # + O > @ > = * - - ", +" O . > O - . - * . . & + X + @ @ + + # ; X - - O = * - . ", +" O > & - O ; & > X > + o , + < 1 + + + & O . = ; * = & O ", +" & > . * & > . = $ # 2 o 3 1 4 1 2 2 X $ $ : 5 - > * - # ", +" & # > - - X & : . + 2 1 4 6 7 8 9 2 + ; & - X > O - & & ", +" X O O O > > & > + X 1 9 0 q w 0 6 4 e 1 # # O # O O # & ", +" - * * - & > O + + X 1 6 r t t y r 6 u i p p X ; & & - a ", +" * = . - $ & X > + 2 e 8 s t t t d f g h j k l z x c v b ", +" X - > O ; - O @ @ 1 < 0 n t t m M N B V V C Z A A S b D ", +" . . - & & > X . X 1 F 9 s t G H J g K L C P I I P P b v ", +" = 5 5 > X U Y T $ + R E r s W Q ! ~ L C I I ^ / I P P b ", +" . . 5 * - ( ) _ ; ; ` ' ' ] [ { { } | I I I I P I P P . ", +" p O . . ..A X.o.O.+.@.K #.{ $.$.} | I I I P C C P P D b ", +" %...c &.A .v *.o.=.-.;.:.| | | :.L C C P P b b b .D b ", +" I >.,.<.P b b v o.-.-.g -.:.C K L L b C I I P P D 1.P b ", +" <.2.2./ / P .b v v o.-.-.@.@.;.v .P I / / / / I P P P ", +" 3.4.<.2.<./ P .b b *.o.o.5.v b 1.^ ^ <.6.<.<.^ / P P P ", +" 7.8.9.9.6.<./ I P b 1.0.q.w.w.e.r.t.y.u.i.u.p.a.s.4./ I ", +" 7.d.f.g.h.h.j.8.8.8.8.k.e.e.l.w.k.z.y.u.u.x.x.c.v.b.n.y. ", +" f.d.7.7.7.7.7.g.h.8.m.q.w.w.w.w.k.k.t.M.y.u.x.x.x.x.c.b. ", +" N.B.B.V.C.B.7.g.g.8.Z.k.q.A.w.A.e.z.j.t.y.u.u.u.u.S.S.n. ", +" D.C.C.V.F.g.g.g.g.g.8.8.k.G.k.r.z.M.y.y.u.n.x.x.x.c.c.x. ", +" H.C.J.V.m.F.m.F.k.8.8.8.k.k.k.z.t.K.t.y.b.v.x.x.v.L.a.b ", +" P.P.H.C.J.N.I.J.A.q.m.k.k.k.z.K.z.z.K.t.y.x.c.v.L.S.D v ", +" P.H.D.N.D.D.D.D.U.U.Y.w.e.k.k.k.k.k.z.y.x.u.i.c.x.P b D ", +" D.D.C.J.V.J.V.3.A.U.T.T.U.k.r.k.q.k.Z.k.t.y.y.M.P .D C ", +" ", +" " +}; diff --git a/kommander/editor/pics/large/pointer.xpm b/kommander/editor/pics/large/pointer.xpm new file mode 100644 index 00000000..57af144d --- /dev/null +++ b/kommander/editor/pics/large/pointer.xpm @@ -0,0 +1,27 @@ +/* XPM */ +static char * pointer_xpm[] = { +"22 22 2 1", +" c None", +". c #000000", +" ", +" ", +" ", +" ", +" ", +" . ", +" .. ", +" ... ", +" .... ", +" ..... ", +" ...... ", +" ....... ", +" ..... ", +" ..... ", +" . ... ", +" ... ", +" ... ", +" ... ", +" ", +" ", +" ", +" "}; diff --git a/kommander/editor/pics/large/print.xpm b/kommander/editor/pics/large/print.xpm new file mode 100644 index 00000000..c412d1b2 --- /dev/null +++ b/kommander/editor/pics/large/print.xpm @@ -0,0 +1,155 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 117 2", +" c Gray0", +". c #000000000808", +"X c #080800000808", +"o c Gray3", +"O c #080808081010", +"+ c #101008081010", +"@ c #101010101010", +"# c #101010101818", +"$ c #181818181818", +"% c #181818182121", +"& c #212118182121", +"* c Gray13", +"= c #212121212929", +"- c #292921212929", +"; c Gray16", +": c #292929293131", +"> c #313129293131", +", c #313131313131", +"< c #313131313939", +"1 c #393931313939", +"2 c #393939393939", +"3 c #393939394242", +"4 c #424239394242", +"5 c Gray26", +"6 c #424242424a4a", +"7 c #4a4a42424a4a", +"8 c Gray29", +"9 c #4a4a4a4a5252", +"0 c #52524a4a5252", +"q c Gray32", +"w c #525252525a5a", +"e c #5a5a5a5a5a5a", +"r c #5a5a5a5a6363", +"t c #63635a5a6363", +"y c Gray39", +"u c #636363636b6b", +"i c #6b6b63636b6b", +"p c Gray42", +"a c #6b6b6b6b7373", +"s c #73736b6b7373", +"d c Gray45", +"f c #737373737b7b", +"g c #7b7b73738484", +"h c #7b7b7b7b8484", +"j c Green", +"k c #1818ffff1010", +"l c #3131ffff3131", +"z c #3939ffff4242", +"x c #4a4affff4a4a", +"c c #7b7bffff7b7b", +"v c #7b7befef8484", +"b c #84847b7b8484", +"n c #84847b7b8c8c", +"m c #848484848484", +"M c #848484848c8c", +"N c #8c8c84848c8c", +"B c Gray55", +"V c #8c8c84849494", +"C c #8c8c8c8c9494", +"Z c #94948c8c9494", +"A c #94948c8c9c9c", +"S c Gray58", +"D c #949494949c9c", +"F c #9c9c94949c9c", +"G c Gray61", +"H c #9c9c9494a5a5", +"J c #9c9c9c9ca5a5", +"K c #8c8cbdbd9494", +"L c #9c9cbdbd9c9c", +"P c #a5a59c9ca5a5", +"I c #a5a59c9cadad", +"U c #a5a5a5a5a5a5", +"Y c #a5a5a5a5adad", +"T c #adada5a5adad", +"R c Gray68", +"E c #adada5a5b5b5", +"W c #adadadadb5b5", +"Q c #b5b5adadb5b5", +"! c #b5b5adadbdbd", +"~ c Gray71", +"^ c #b5b5b5b5bdbd", +"/ c #bdbdb5b5bdbd", +"( c Gray74", +") c #bdbdb5b5c6c6", +"_ c #bdbdbdbdc6c6", +"` c #8c8cffff8c8c", +"' c #a5a5ffffa5a5", +"] c #bdbdffffbdbd", +"[ c #c6c6b5b5c6c6", +"{ c #c6c6b5b5cece", +"} c #c6c6bdbdc6c6", +"| c #c6c6bdbdcece", +" . c #c0c0c0c0c0c0", +".. c #c6c6c6c6c6c6", +"X. c #c6c6c6c6cece", +"o. c #cecec6c6cece", +"O. c #cececececece", +"+. c #cecec6c6d6d6", +"@. c #cecececed6d6", +"#. c #d6d6ceced6d6", +"$. c #d6d6cecedede", +"%. c Gray84", +"&. c #d6d6d6d6dede", +"*. c #deded6d6dede", +"=. c Gray87", +"-. c #deded6d6e7e7", +";. c #cecef7f7cece", +":. c #d6d6ffffd6d6", +">. c #e7e7e7e7e7e7", +",. c #efefefefefef", +"<. c #e7e7ffffe7e7", +"1. c #f7f7efeff7f7", +"2. c Gray97", +"3. c #f7f7f7f7ffff", +"4. c #fffff7f7ffff", +"5. c Gray100", +"6. c None", +/* pixels */ +"6.6.6.6.6.6.6.6.6.( U ( O.O.%.%.%.O.O.....( ( ~ ~ 6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6...O.%.O.O...............O.O...R 6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6.~ ,.2.5.2.5.5.5.5.5.5.5.5.5.2...6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6.( ~ ( ~ ~ ( ~ ( ~ ~ ~ ~ R R R ( 6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6.........O.O.O.O.%.%.%.%.%.%...( 6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6.R ~ R R ~ R R R U U U G G G S ( 6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6.R ( ..( ( ( ( ( ( ( ( ( ....( 6.6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6...O.O.%.%.%.%.%.%.%.%.%.%.%.( 6.6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6.U U U U G U U G U U R R R ~ U 6.6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6.R O...........O.O.O...O.O.O.R 6.6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6...%.%.%.O.O.O.........( ( ~ ~ 6.6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.6.R U U U U R R R ~ ~ ~ ~ ( ( ~ 6.6.6.6.6.6.6.6.", +"6.6.6.6.6.6.6.6.~ ( 2.,.,.,.>.>.>.>.=.=.=.%.=.G U U ( 6.6.6.6.6.", +"6.6.6.6.6.6.6.U s ( 2.,.,.2.2.2.2.2.2.2.2.2.5.F r r 7 m 6.6.6.6.", +"6.6.6.6.6.( S a u f m m m M m M m m B S G G U f t 6 - & y ~ 6.6.", +"6.6.6.6.( D N M b b b h b h b h b b h b n n b i 5 ; = % $ 4 R 6.", +"6.6.6.( S } -.&.$.#.+.+.@.+.o.o.X._ { _ K L ) D 9 = & * & # q 6.", +"6.6.( S | 3.5.5.5.5.5.5.5.5.5.5.5.5.<.z j j v [ n 2 * & % @ & 6.", +"6.6.G @.4.5.5.5.5.5.5.5.5.5.5.5.5.5.c k x j z $.E a : * $ X % 6.", +"6.G &.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.] l l j ' 4.>.I w & O X % 6.", +"6.I 1.,.,.,.,.1.3.5.4.5.5.5.5.5.5.5.5.:.` ;.4.2.3.*.h & . X $ 6.", +"6.N / _ ) ! Q ^ ^ / / ) _ X.o.| } } } { { / W E Y F u @ X o $ 6.", +"6.N W ! Q W E T T Y Y I Y P I U I I Y P P P J F Z M t # . X $ 6.", +"6.M W Q W T Y Y Y P I P P I J I J P J P J H H F D n t # X X $ 6.", +"6.M T E T Y P P J I J P J P J J P J J H G F F D V b r @ X . & 6.", +"6.C P Y I J P J P J J J J G H G H F H F H F D Z M g t $ . y 6.", +"6.C J J P J J H J F H F F H F H F G F F D D Z C N h t $ = R 6.", +"6.B P I J H J F F F F F F F F D F D D D D A Z C N b t # X B 6.6.", +"6.F b C B C Z C V C V V C N V C C Z Z Z Z A Z C N n t O p 6.6.6.", +"6.^ d - - : > , < 1 2 3 3 4 5 6 7 7 9 9 0 q w 0 0 6 > e ( 6.6.6.", +"6.6.6.G 7 O X O O + O X o O + o O O + O O o O . o d ( 6.6.6.6.", +"6.6.6.6.( B e q q 9 8 7 5 5 3 4 2 , < ; & & % $ , D 6.6.6.6.6.6." +}; diff --git a/kommander/editor/pics/large/progress.xpm b/kommander/editor/pics/large/progress.xpm new file mode 100644 index 00000000..924ef598 --- /dev/null +++ b/kommander/editor/pics/large/progress.xpm @@ -0,0 +1,145 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 107 2", +" c #000000002929", +". c #000008082929", +"X c #080808082929", +"o c #000000003131", +"O c #000008083131", +"+ c #000008083939", +"@ c #080808083131", +"# c #080808083939", +"$ c #080810103131", +"% c #080810103939", +"& c #101010103131", +"* c #101010103939", +"= c #101018183131", +"- c #101018183939", +"; c #181818183939", +": c #181821213939", +"> c #101010104242", +", c #101018184242", +"< c #181818184242", +"1 c #181818184a4a", +"2 c #181821214242", +"3 c #212121214a4a", +"4 c #212129294a4a", +"5 c #212121215252", +"6 c #212129295252", +"7 c #292929295252", +"8 c #292931314a4a", +"9 c #313131314a4a", +"0 c #313131315252", +"q c #393939395a5a", +"w c #313139396363", +"e c #393939396363", +"r c #393942426363", +"t c #393942426b6b", +"y c #424242425252", +"u c #424242426363", +"i c #424242426b6b", +"p c #42424a4a6363", +"a c #4a4a52526363", +"s c #4a4a52526b6b", +"d c #525252527373", +"f c #52525a5a7b7b", +"g c #10101010cece", +"h c #10101010d6d6", +"j c #10101818dede", +"k c #00000000e7e7", +"l c #08080808f7f7", +"z c #08081010f7f7", +"x c #08081010ffff", +"c c #10101818efef", +"v c #18181818e7e7", +"b c #18181818f7f7", +"n c #18181818ffff", +"m c #18182121ffff", +"M c #21212121e7e7", +"N c #21212121efef", +"B c #21212929efef", +"V c #21212929f7f7", +"C c #21212929ffff", +"Z c #29292929f7f7", +"A c #29293131ffff", +"S c #5a5a63638484", +"D c #42424242ffff", +"F c #42424a4affff", +"G c #4a4a5252ffff", +"H c #7b7b8c8cb5b5", +"J c #94949c9c9c9c", +"K c Gray61", +"L c #8c8c9494a5a5", +"P c #9c9ca5a5adad", +"I c #a5a5a5a5a5a5", +"U c #a5a5a5a5adad", +"Y c #84848c8ccece", +"T c #84848c8cd6d6", +"R c #84849494c6c6", +"E c #8c8c9494cece", +"W c #8c8c9494d6d6", +"Q c #94949494dede", +"! c #9494a5a5cece", +"~ c #9c9ca5a5d6d6", +"^ c #9c9cadadd6d6", +"/ c #adadbdbdc6c6", +"( c #adadb5b5dede", +") c #adadbdbddede", +"_ c #a5a5adade7e7", +"` c #adadbdbde7e7", +"' c #b5b5c6c6c6c6", +"] c #b5b5c6c6cece", +"[ c #bdbdc6c6cece", +"{ c #bdbdcececece", +"} c #b5b5c6c6e7e7", +"| c #bdbdcecee7e7", +" . c #bdbdceceefef", +".. c #bdbdd6d6efef", +"X. c #c0c0c0c0c0c0", +"o. c #cecededeefef", +"O. c #cecee7e7efef", +"+. c #d6d6efeff7f7", +"@. c #e7e7efeff7f7", +"#. c #e7e7f7f7f7f7", +"$. c #e7e7fffff7f7", +"%. c #e7e7ffffffff", +"&. c #efeff7f7f7f7", +"*. c #efeff7f7ffff", +"=. c #efefffffffff", +"-. c #f7f7ffffffff", +";. c None", +/* pixels */ +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +"U s q 7 5 3 1 < % # # % * # > # , > > > , > , > % * > > < 3 u I ", +"q o $ = : - : : : < : : : ; : : : ; ; ; ; - ; ; * - & O o q ", +"1 9 H E R ' ~ E E [ ! T E { ! Y E { { { { { { { { { { ' s 4 ", +", . d D A M ( G C M } G C V .F n V +.$.#.#.$.#.#.$.#.$.-.P o 2 ", +"* . f m x h ^ C l j ) A l v } C l v o.#.#.#.#.#.#.#.#.#.%./ o < ", +"> X f C l h ^ A l j ) Z l v ) C l v O.$.#.+.#.+.#.#.+.#.=./ O < ", +"> S V z h ! A z h ) A z j } Z z j o.#.#.#.#.#.+.#.#.#.=.] @ ; ", +"* X S n z h ! A l h ) Z l v ) Z l v o.$.#.+.#.#.#.#.#.#.=.[ O < ", +"% X S C z g ^ C l h ) Z z j } V l j O.#.#.#.#.+.#.#.+.$.=.] O < ", +"* O S b z h ^ Z z h ) Z z j } V l M o.$.#.+.#.#.#.#.#.#.=.[ O ; ", +"* X f V z g ! A z h ) Z l j } V l j o.$.#.#.#.$.+.#.#.#.=.] # - ", +"> X f b z h ^ V l h ) Z l j } V l v O.$.#.#.#.#.#.$.#.#.=.[ O ; ", +"* . f c k g ) N k g | B k j ..N k j +.&.%.$.$.%.$.#.$.%.-.' o < ", +"> a E W ^ @._ Q ( *.` Q ( *.` Q ( *.=.=.=.=.#.=.%.#.#.&.L o 2 ", +"8 o + 0 p p r s s s i s s s u s s s i r u r r t r e e w 6 + o 9 ", +"J y 8 ; ; * & @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ & @ & & ; ; ; 8 y K ", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.", +";.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;.;." +}; diff --git a/kommander/editor/pics/large/project.xpm b/kommander/editor/pics/large/project.xpm new file mode 100644 index 00000000..68040ba4 --- /dev/null +++ b/kommander/editor/pics/large/project.xpm @@ -0,0 +1,50 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 12 1", +" c Gray0", +". c Gray19", +"X c #585858", +"o c #ffa858", +"O c #808080", +"+ c #a0a0a4", +"@ c #ffdca8", +"# c #c0c0c0", +"$ c gainsboro", +"% c #ffffc0", +"& c Gray100", +"* c None", +/* pixels */ +"********************************", +"*************** **************", +"************** #&# *************", +"************** $&$ *************", +"******* ***. ### .*** .******", +"****** $&# X O$&&&$O X #&$ *****", +"***** +$$++$&#OXXXO#&$$+$$+ ****", +"***** X#+$&+XXOO+OOXX+&$+#X ****", +"***** XX#$OXOoooo@oo+XO$#XX ****", +"****** $OX+oo@o@o@@o+XO$ *****", +"****** $+O+oo@o@@@@%@@+X+$ *****", +"**X O$O+oo@@@X.X@@%@o+O#O X*", +"** $&$+$Ooo@o@X.+.X@@%@oO$+$&$ *", +"* #$$#+$Oo@@%@O#*#O@%@%oO&+#&$# ", +"* +$$$+$+oo%@%@O.O@%&%@o+$+$$$+ ", +"* .OO+X#$Oo@%@%@@@&&%%@O#$X+OO. ", +"** XXX.O##Oo@%%%&&&%%@O+&+.XXX *", +"*** +$+Oo@%%%&%@@O#$# **", +"****** OO#$#O+o@@@o++$&#OO *****", +"***** X#+O#$&#+OOO+$&$#O+#O ****", +"*****.$&$+OO#$$$$&$$#+O+$&$ ****", +"**** $$&&$O.XO+$$$+OX.O$$&$$.***", +"**** +$$+OX ..OOOOO.. XO+$$+ ***", +"**** X+OOX **.#$$$#.** XOO+X ***", +"***** XX *** O$&&O *** XX ****", +"****** ***** O$&$O ***** *****", +"************** +++ *************", +"************** XXX *************", +"*************** **************", +"********************************", +"********************************", +"********************************" +}; diff --git a/kommander/editor/pics/large/pushbutton.xpm b/kommander/editor/pics/large/pushbutton.xpm new file mode 100644 index 00000000..5ad0bcd4 --- /dev/null +++ b/kommander/editor/pics/large/pushbutton.xpm @@ -0,0 +1,72 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 34 1", +" c #070707070707", +". c #0e0e0e0e0e0e", +"X c Gray9", +"o c Gray12", +"O c #272727272727", +"+ c #2f2f2f2f2f2f", +"@ c #373737373737", +"# c #3f3f3f3f3f3f", +"$ c #464646464646", +"% c Gray31", +"& c Gray34", +"* c #5f5f5f5f5f5f", +"= c #676767676767", +"- c #6f6f6f6f6f6f", +"; c #777777777777", +": c Gray50", +"> c Gray53", +", c Gray56", +"< c #979797979797", +"1 c #9f9f9f9f9f9f", +"2 c #a7a7a7a7a7a7", +"3 c #afafafafafaf", +"4 c #b7b7b7b7b7b7", +"5 c Gray75", +"6 c #c0c0c0c0c0c0", +"7 c #c5c5c5c5c5c5", +"8 c Gray81", +"9 c Gray84", +"0 c #dfdfdfdfdfdf", +"q c #e7e7e7e7e7e7", +"w c #efefefefefef", +"e c #f6f6f6f6f6f6", +"r c Gray100", +"t c None", +/* pixels */ +"tttttttttttttttttttttttttttttttt", +"tttttttttttttttttttttttttttttttt", +"tttttttttttttttttttttttttttttttt", +"tttttttttttttttttttttttttttttttt", +"tt5332332323333323222223211235tt", +"t48qqwwwwqwqqqq00000999887743<2t", +"47rreewwwweewwqqq0009987554321-3", +"17q97555444444455433332222111<-;", +"145533333333222222221211211<<,-*", +"<34322221:;>12111<,<11111>><<,-*", +",333222:o o-111- -2111# &1<,;&", +"123222= o*;=O &21- =111# &<<,>;%", +"13222> O<2121@ :2- =21% %1<<,,-$", +"<2323% ;21<11> $3- =2* $1<<<,>;%", +"13222@ <1<1<11Oo1- -; @1<<<<,>;%", +"<2221oX<11<1<1#.1- $. %1<<<,,>;%", +"<2221Xo<1<<<11# <- +# ;1<<,,>-%", +"<2221O <<1<1<1+X1- o,,XX,<<<,>;%", +",2222$ :2<<<1,.@2- *21= %1<,,>-%", +",2211> O<1111% -2- *1<1+ -1,,>;$", +"122112* +:,:$ @<1- *1<<> X><,>-%", +"<121<<1= #<<1- &1<<1& +,,>-%", +"<1111<<1>*%&:<<<<>=:<,,<,==,,>=&", +"<12<<<<,<<1<<,<,,<<<,,<,,<<,>>*&", +"1,1<<<,,,,,,,,,>,>,,,,,,,,,,>>&-", +"4:,,,>,>,>>:>:>::>::::>>>:>>>-#1", +"t<====-=========*=====*===*&&$;5", +"tt2:*%$####@@@@@#@@@#@##$$%*;1tt", +"tttttttttttttttttttttttttttttttt", +"tttttttttttttttttttttttttttttttt", +"tttttttttttttttttttttttttttttttt", +"tttttttttttttttttttttttttttttttt" +}; diff --git a/kommander/editor/pics/large/radiobutton.xpm b/kommander/editor/pics/large/radiobutton.xpm new file mode 100644 index 00000000..17ef6339 --- /dev/null +++ b/kommander/editor/pics/large/radiobutton.xpm @@ -0,0 +1,67 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 29 1", +" c #2a2a2a2a2a2a", +". c #373737373737", +"X c #3f3f3f3f3f3f", +"o c Gray28", +"O c Gray31", +"+ c Gray34", +"@ c #5f5f5f5f5f5f", +"# c Gray40", +"$ c Gray43", +"% c #777777777777", +"& c Gray50", +"* c Gray53", +"= c #8e8e8e8e8e8e", +"- c #979797979797", +"; c #989898989898", +": c #a4a4a4a4a4a4", +"> c #afafafafafaf", +", c #b4b4b4b4b4b4", +"< c Gray75", +"1 c #c0c0c0c0c0c0", +"2 c #c6c6c6c6c6c6", +"3 c Gray81", +"4 c #d7d7d7d7d7d7", +"5 c #dfdfdfdfdfdf", +"6 c #e2e2e2e2e2e2", +"7 c #efefefefefef", +"8 c Gray96", +"9 c Gray100", +"0 c None", +/* pixels */ +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"000000000000>=%###*>000000000000", +"0000000000,*+O@%%#oo%,0000000000", +"000000000,#.%489996:o+>000000000", +"00000000,#X<94:*%=,96#O,00000000", +"00000000&X<9:#+O++O#58@$00000000", +"0000000>X*9-+++++O+o+73X:0000000", +"0000000&o5<+++++O+O+X*9*%0000000", +"0000000@$9%++++O+OOOoo8<+0000000", +"0000000o=7@+O+OOOOOOOX45o0000000", +"0000000X-6@O+OOOOOOoo.36O0000000", +"0000000O*8+OOOOOOOOOo.75+0000000", +"0000000%@9*oOOOOOooo.@9>#0000000", +"0000000:.25XoOOoooOX 39$-0000000", +"0000000<##9<X.oooo :9,@<0000000", +"00000000>o=94$X. .@394O:00000000", +"000000000:o*79733799<O;000000000", +"0000000000>@O-3774>$O:0000000000", +"00000000000<;$OOOO@-<00000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000", +"00000000000000000000000000000000" +}; diff --git a/kommander/editor/pics/large/redo.xpm b/kommander/editor/pics/large/redo.xpm new file mode 100644 index 00000000..1ee1f563 --- /dev/null +++ b/kommander/editor/pics/large/redo.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 4 1", +" c #000000008080", +". c #808080808080", +"X c #c0c0c0c0c0c0", +"o c None", +/* pixels */ +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"ooooooo. ooooooooooooooo", +"oooooo. ooooooooo oooo", +"ooooo. ooooooo ooooooo oooo", +"oooo. ooooooooo oooo oooo", +"oooo ooooooooooo oo oooo", +"oooo oooooooooooooo oooo", +"oooo ooooooooooooooo oooo", +"oooo ooooooooooooooo oooo", +"oooo oooooooooooooo oooo", +"oooo ooooooooooooo oooo", +"oooo. ooooooooooo oooo", +"ooooo. ooooooooo oooo", +"oooooo .ooooooooooooooooooooooo", +"ooooooo .oooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo" +}; diff --git a/kommander/editor/pics/large/right.xpm b/kommander/editor/pics/large/right.xpm new file mode 100644 index 00000000..a8410132 --- /dev/null +++ b/kommander/editor/pics/large/right.xpm @@ -0,0 +1,181 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 143 2", +" c #00001818e7e7", +". c #00001818efef", +"X c #00001818ffff", +"o c #10102121d6d6", +"O c #10102121dede", +"+ c #10102929d6d6", +"@ c #18183131cece", +"# c #00002121efef", +"$ c #00002121ffff", +"% c #00002929ffff", +"& c #08082929ffff", +"* c #08083131ffff", +"= c #10102929e7e7", +"- c #10103939f7f7", +"; c #10103939ffff", +": c #21213131c6c6", +"> c #21213131cece", +", c #21213939dede", +"< c #29293939dede", +"1 c #31314242bdbd", +"2 c #10104242ffff", +"3 c #18184242ffff", +"4 c #21214242dede", +"5 c #39394a4ac6c6", +"6 c #39395252d6d6", +"7 c #21214242e7e7", +"8 c #21214a4aefef", +"9 c #29294a4ae7e7", +"0 c #21214a4affff", +"q c #21215252ffff", +"w c #29295252ffff", +"e c #29295a5affff", +"r c #39395a5ae7e7", +"t c #31315a5affff", +"y c #31316363ffff", +"u c #39396363f7f7", +"i c #39396363ffff", +"p c #39396b6bffff", +"a c #42424a4ab5b5", +"s c #42425252b5b5", +"d c #52525a5abdbd", +"f c #52526b6bbdbd", +"g c #5a5a6363bdbd", +"h c #5a5a6b6bbdbd", +"j c #63636b6bb5b5", +"k c #63636b6bbdbd", +"l c #6b6b7373b5b5", +"z c #6b6b7373bdbd", +"x c #73737b7bb5b5", +"c c #42425a5acece", +"v c #4a4a6363cece", +"b c #42426363dede", +"n c #4a4a7373dede", +"m c #52526b6bc6c6", +"M c #52526b6bcece", +"N c #42426b6be7e7", +"B c #42426b6befef", +"V c #4a4a6b6be7e7", +"C c #42426b6bffff", +"Z c #42427373ffff", +"A c #4a4a7373ffff", +"S c #4a4a7b7bffff", +"D c #52527b7be7e7", +"F c #5a5a7b7bf7f7", +"G c #7b7b8484b5b5", +"H c #7b7b8c8cbdbd", +"J c #52528484ffff", +"K c #52528c8cffff", +"L c #5a5a8484ffff", +"P c #5a5a8c8cffff", +"I c #73738484cece", +"U c #7b7b9494c6c6", +"Y c #73739494dede", +"T c #7b7b9494d6d6", +"R c #63638484efef", +"E c #63638c8cffff", +"W c #63639494ffff", +"Q c #63639c9cffff", +"! c #6b6b9c9cffff", +"~ c #73738c8ce7e7", +"^ c #73739494efef", +"/ c #73739c9cf7f7", +"( c #73739c9cffff", +") c #7373a5a5ffff", +"_ c #7b7ba5a5ffff", +"` c #7b7badadffff", +"' c #7b7bb5b5ffff", +"] c #84848c8ca5a5", +"[ c #84848c8cadad", +"{ c #8c8c8c8cadad", +"} c #84849494b5b5", +"| c #94949494a5a5", +" . c #94949494adad", +".. c #94949c9cadad", +"X. c #9c9c9c9cadad", +"o. c #9c9ca5a5adad", +"O. c #a5a5a5a5a5a5", +"+. c #a5a5a5a5adad", +"@. c Gray68", +"#. c #a5a5a5a5b5b5", +"$. c #a5a5adadb5b5", +"%. c #adadadadb5b5", +"&. c #adadadadbdbd", +"*. c Gray71", +"=. c #b5b5b5b5bdbd", +"-. c Gray74", +";. c #84849c9cd6d6", +":. c #8c8ca5a5cece", +">. c #8484adadffff", +",. c #8484b5b5ffff", +"<. c #8484bdbdffff", +"1. c #8c8cb5b5ffff", +"2. c #8c8cbdbdffff", +"3. c #9494adade7e7", +"4. c #b5b5b5b5c6c6", +"5. c #b5b5bdbdc6c6", +"6. c #bdbdbdbdc6c6", +"7. c #9494c6c6ffff", +"8. c #9494ceceffff", +"9. c #9c9cc6c6ffff", +"0. c #9c9cceceffff", +"q. c #a5a5ceceffff", +"w. c #a5a5d6d6ffff", +"e. c #adaddedeffff", +"r. c #b5b5dedeffff", +"t. c #bdbddedeffff", +"y. c #adade7e7ffff", +"u. c #b5b5efefffff", +"i. c #bdbde7e7ffff", +"p. c #bdbdefefffff", +"a. c #c0c0c0c0c0c0", +"s. c #cecee7e7ffff", +"d. c #c6c6f7f7ffff", +"f. c #cecef7f7ffff", +"g. c #ceceffffffff", +"h. c #d6d6efefffff", +"j. c #dedeefefffff", +"k. c #d6d6f7f7ffff", +"l. c #d6d6ffffffff", +"z. c #e7e7ffffffff", +"x. c #efefffffffff", +"c. c #f7f7ffffffff", +"v. c None", +/* pixels */ +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.-.Y N x -.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.O.j.r.p k %.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.X.h.l.0.Z v &.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.O.r.e.w.0.Q 8 x v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.o.e.8.0.w.0.W q [ -.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.o.7.7.7.7.0.0.) u z =.v.v.v.v.", +"v.v.-.4.5.-.-.v.v.v.v.v.v.v.v.v.v.X.,.2.7.2.7.0.0.' Z c $.v.v.v.", +"@.} ~ F D n M I H .4.-.-.v.v.v.#.m ` 2.1.2.2.7.7.7.<.p 4 #.v.v.", +"f q.c.x.z.h.t.q.1._ ^ Y U T ;.:.3.1.,.,.,.,.1.,.1.2.7.>.Z 9 o.-.", +"N y.g.d.p.i.r.p.d.d.f.k.k.k.j.x.x.s.>.` ,.,.,.,.,.,.,.2.2.K - { ", +"B 0.u.w.0.0.0.7.9.0.7.0.w.e.e.e.0.2.,.,.` >.,.,.,.` ` ` ` _ y c ", +"V 8.e.0.7.2.2.2.2.2.<.1.,.,.,.,.,.,.,.` >.' >.` ` ` ) ) ! ! Z 9 ", +"V 2.w.7.1.,.>.` ` ` _ ` ` ` ` ` ` ` ` ` ` ` ` ` _ ) ! E J C 3 , ", +"b ' 0.2.` ` ` ) ) ( ) ( ! ! ! ! ( ` >.` ` ` ` ) ) ! W S p 0 X 5 ", +"6 Q ,.) W E L J S Z C y w 3 3 3 e L ` _ ` ` _ ) ! W J e 3 $ + .", +"l q Z t 0 2 * $ $ # # O > 1 a a = ; ) ` ) ) ( ! W Z 0 * X + #.v.", +"*.k = # O > a d G | &.-.-.-.-.#.s Q _ ) ! ! W A 0 * X o ] v.v.", +"v.v.+.| ..=.-.-.v.v.v.v.v.v.v.v.v.+./ ( ! W P y 3 & X 5 #.-.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.-.^ P L J y ; % . s *.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.-.R J S t ; $ X g -.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.6.D i e ; % = j *.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.-.r ; * X @ +.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.-.7 $ X : X.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.-.h < h %.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.", +"v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v.v." +}; diff --git a/kommander/editor/pics/large/slider.xpm b/kommander/editor/pics/large/slider.xpm new file mode 100644 index 00000000..9941817b --- /dev/null +++ b/kommander/editor/pics/large/slider.xpm @@ -0,0 +1,133 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 95 2", +" c #060606060202", +". c #000000000d0d", +"X c #0f0f0e0e0000", +"o c Gray6", +"O c #000000001717", +"+ c #1c1c1c1c0e0e", +"@ c #151515151515", +"# c #010101012b2b", +"$ c #000000003434", +"% c #000000003a3a", +"& c #121214143e3e", +"* c #212121211414", +"= c #262626261d1d", +"- c #2d2d2d2d2222", +"; c #373737372e2e", +": c #353535353535", +"> c Gray23", +", c #010101015353", +"< c #000000006767", +"1 c #020202026e6e", +"2 c #000000007f7f", +"3 c #434343434343", +"4 c #434344444a4a", +"5 c #4c4c4b4b4545", +"6 c Gray33", +"7 c #6e6e6d6d6767", +"8 c #000000008484", +"9 c #000000008e8e", +"0 c #000000009292", +"q c #000000009f9f", +"w c #00000000a4a4", +"e c #00000000acac", +"r c #03030303b7b7", +"t c #00000000c6c6", +"y c #00000000cece", +"u c #00000000d7d7", +"i c #00000000dfdf", +"p c #09090d0ddada", +"a c #0c0c1111dcdc", +"s c #1b1b1d1dc1c1", +"d c #1a1a1b1bd6d6", +"f c #01010101e1e1", +"g c #01010101e8e8", +"h c #06060909e0e0", +"j c #00000000f2f2", +"k c #05050606fdfd", +"l c #07070909ffff", +"z c #09090c0cffff", +"x c #0e0e1313ffff", +"c c #14141d1de0e0", +"v c #13131515ffff", +"b c #1b1b1f1fffff", +"n c #1d1d2b2beaea", +"m c #15152323ffff", +"M c #1c1c2323ffff", +"N c #37373838e6e6", +"B c #35353636ffff", +"V c #3d3d4d4dcbcb", +"C c #39394f4fd6d6", +"Z c #28284141eded", +"A c #3a3a5353ffff", +"S c #45454f4f8d8d", +"D c #54545c5c8080", +"F c #5e5e67678080", +"G c #61616a6a8585", +"H c #59597373caca", +"J c #4b4b6b6beded", +"K c #46466161f1f1", +"L c #45456767ffff", +"P c #52526c6cf1f1", +"I c #50506f6fffff", +"U c #52527272ffff", +"Y c Gray52", +"T c Gray56", +"R c Gray58", +"E c #9d9d9d9d9d9d", +"W c #90909797b8b8", +"Q c #afafafafafaf", +"! c #b7b7b7b7b7b7", +"~ c #bebebebebebe", +"^ c #84849a9ad4d4", +"/ c #8d8d9898ffff", +"( c #bfbfc7c7e4e4", +") c #c0c0c0c0c0c0", +"_ c #c5c5c5c5c5c5", +"` c Gray81", +"' c #d0d0d0d0d0d0", +"] c #c0c0c4c4ffff", +"[ c #c9c9d0d0ffff", +"{ c #d6d6ddddffff", +"} c #dadae2e2ffff", +"| c #e6e6e6e6e6e6", +" . c Gray95", +".. c Gray100", +"X. c None", +/* pixels */ +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"E W ^ H P P P P U P L K I J J J C C J P P K P P K A Z A Z C H R ", +"H m k k z z z z z k k k k k k k k k k k k k k k k k k k k k k s ", +"N k k k k k f w 0 8 8 8 8 8 8 8 8 8 8 8 8 8 8 9 w i k k k k k s ", +"c k k k k k , & k k k k k p ", +"n k k k k k $ o @ @ @ @ @ @ o o o o o o o o o 4 b k k k k p ", +"n k k k k k $ T ~ ` ` ` ` ` ! | . . .| . . .| .B k k k k f ", +"Z k k k e j # = ` ! ! ! Q Q Q R T .................B r t k k p ", +"d k g , . g $ ; _ Q Q Q Q Q ! T T ................B 1 . w k h ", +"c t # O g # ; ` Q Q Q Q Q Q R 6 ................B 2 2 y ", +"d < O g $ ; _ ! Q Q Q E ! T 5 ................B 2 1 ", +"n k 2 j % - _ Q Q Q Q Q Q R 3 ................B 2 , t ", +"N k k r % g , * ~ Q Q Q Q Q Q R > ................B 2 O q k h ", +"J k k k j k , + ! E E R R R E Y : ................B f i k k a ", +"V k k k k k , @ ' 3 @ @ @ @ o . > ................B k k k k p ", +"s k k k k k 1 X ..7 5 ................M k k k k p ", +"V k k k k k p S [ ( F F F F D D D W } } { { { [ ] / l k k k k s ", +"G k k k k k k x k x M b M M b b b v z z z z l k k k k k k k k s ", +"E s s u p p f p p p p p p p p p p p p p p p p p p y y y s s s G ", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.", +"X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X." +}; diff --git a/kommander/editor/pics/large/spacer.xpm b/kommander/editor/pics/large/spacer.xpm new file mode 100644 index 00000000..cd4ec08e --- /dev/null +++ b/kommander/editor/pics/large/spacer.xpm @@ -0,0 +1,248 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 210 2", +" c Gray0", +". c #080800000000", +"X c #101000000000", +"o c #101008080808", +"O c #181800000000", +"+ c #181808080000", +"@ c #181808080808", +"# c #101010100808", +"$ c #181810101010", +"% c #212108080000", +"& c #212108080808", +"* c #292900000000", +"= c #292908080808", +"- c #212110100808", +"; c #292910100808", +": c #212110101010", +"> c #212118181818", +", c #292910101010", +"< c #292918181010", +"1 c #292918181818", +"2 c #313108080000", +"3 c #393908080000", +"4 c #313110101010", +"5 c #313118181010", +"6 c #313118181818", +"7 c #393921211818", +"8 c Gray16", +"9 c #313121212121", +"0 c #313129292929", +"q c #393921212121", +"w c #393929292929", +"e c #424208080000", +"r c #4a4a08080000", +"t c #5a5a08080000", +"y c #5a5a10100000", +"u c #424221211818", +"i c #424229292121", +"p c #424229292929", +"a c #4a4a29292929", +"s c #424231313131", +"d c #424239393939", +"f c #4a4a39393939", +"g c #525231313131", +"h c #525239393131", +"j c #525239393939", +"k c #636318180808", +"l c #6b6b10100000", +"z c #737310100000", +"x c #737318180808", +"c c #7b7b18180808", +"v c #7b7b31312121", +"b c #636342423939", +"n c #6b6b4a4a3131", +"m c #737342422929", +"M c Gray26", +"N c Gray29", +"B c #525242424242", +"V c #52524a4a4a4a", +"C c #5a5a42424242", +"Z c #5a5a5a5a5a5a", +"A c #636342424242", +"S c #63634a4a4242", +"D c #6b6b4a4a4a4a", +"F c #636352524a4a", +"G c #6b6b52524242", +"H c #6b6b5a5a4a4a", +"J c #63635a5a5a5a", +"K c #6b6b52525252", +"L c #737352524a4a", +"P c #73735a5a4a4a", +"I c #7b7b52524242", +"U c #73735a5a5252", +"Y c #6b6b63634a4a", +"T c #7b7b63635a5a", +"R c Gray39", +"E c #6b6b63636363", +"W c Gray42", +"Q c #7b7b6b6b6b6b", +"! c Gray45", +"~ c #7b7b73737373", +"^ c #848410100000", +"/ c #848418180808", +"( c #8c8c18180808", +") c #949418180808", +"_ c #8c8c21211010", +"` c #8c8c29291818", +"' c #949421211010", +"] c #949429291818", +"[ c #949431311818", +"{ c #8c8c39392929", +"} c #949439392929", +"| c #a5a521210808", +" . c #adad21210808", +".. c #a5a529291010", +"X. c #b5b521210808", +"o. c #b5b529291010", +"O. c #b5b531311818", +"+. c #bdbd31311818", +"@. c #b5b539392121", +"#. c #8c8c42422929", +"$. c #84844a4a3131", +"%. c #b5b542422929", +"&. c #b5b54a4a3131", +"*. c #b5b552523939", +"=. c #b5b55a5a3939", +"-. c #bdbd52523131", +";. c #94944a4a4242", +":. c #9c9c52524242", +">. c #9c9c63635a5a", +",. c #84846b6b6363", +"<. c #8c8c6b6b6363", +"1. c #949473736b6b", +"2. c #949473737373", +"3. c #9c9c7b7b7373", +"4. c #9c9c7b7b7b7b", +"5. c #b5b563635a5a", +"6. c #b5b573736363", +"7. c #c6c621210808", +"8. c #cece39391818", +"9. c #d6d629291010", +"0. c #d6d631311010", +"q. c #dede31311010", +"w. c #f7f739391818", +"e. c #ffff39391010", +"r. c #e7e739392121", +"t. c #c6c642422121", +"y. c #dede42422929", +"u. c #ffff42422121", +"i. c #ffff4a4a2121", +"p. c #ffff52522929", +"a. c #ffff5a5a3939", +"s. c #ffff63633131", +"d. c #ffff63633939", +"f. c #c6c663635252", +"g. c #d6d663634a4a", +"h. c #d6d66b6b5252", +"j. c #efef63634a4a", +"k. c #e7e76b6b5252", +"l. c #efef6b6b5252", +"z. c #e7e773735a5a", +"x. c #ffff63634242", +"c. c #ffff73734a4a", +"v. c #ffff7b7b4a4a", +"b. c #efef7b7b6363", +"n. c #9c9c84847b7b", +"m. c #cece84847373", +"M. c #d6d684846b6b", +"N. c #dede84846b6b", +"B. c #d6d684847373", +"V. c #dede94947373", +"C. c #ffff84845a5a", +"Z. c #ffff8c8c5a5a", +"A. c #efef8c8c6b6b", +"S. c #e7e79c9c7b7b", +"D. c #ffff8c8c6b6b", +"F. c #f7f794947373", +"G. c #848484848484", +"H. c #8c8c84848484", +"J. c Gray55", +"K. c Gray58", +"L. c #9c9c94949494", +"P. c Gray61", +"I. c #a5a584848484", +"U. c #a5a58c8c8484", +"Y. c #a5a58c8c8c8c", +"T. c #adad8c8c8c8c", +"R. c #a5a59c9c9c9c", +"E. c #b5b594948c8c", +"W. c #b5b594949494", +"Q. c #bdbd9c9c9494", +"!. c #a5a5a5a5a5a5", +"~. c Gray68", +"^. c #b5b5adada5a5", +"/. c #b5b5adadadad", +"(. c #bdbdadada5a5", +"). c #b5b5b5b5adad", +"_. c #bdbdb5b5adad", +"`. c Gray71", +"'. c #bdbdb5b5b5b5", +"]. c Gray74", +"[. c #c6c68c8c8484", +"{. c #ceceadada5a5", +"}. c #dedebdbdb5b5", +"|. c #e7e7a5a58484", +" X c #e7e7bdbd9c9c", +".X c #efefb5b59494", +"XX c #f7f7a5a58484", +"oX c #f7f7adad8c8c", +"OX c #ffffadad8484", +"+X c #ffffbdbd8c8c", +"@X c #f7f7bdbd9c9c", +"#X c #f7f7c6c69c9c", +"$X c #ffffc6c69c9c", +"%X c #efefc6c6a5a5", +"&X c #f7f7ceceadad", +"*X c #ffffd6d6a5a5", +"=X c #ffffd6d6adad", +"-X c #f7f7d6d6b5b5", +";X c #f7f7dedebdbd", +":X c #ffffdedeb5b5", +">X c #ffffe7e7b5b5", +",X c #ffffe7e7bdbd", +"<X c #c0c0c0c0c0c0", +"1X c #c6c6c6c6c6c6", +"2X c #f7f7efefc6c6", +"3X c #f7f7f7f7cece", +"4X c #fffff7f7c6c6", +"5X c #ffffffffd6d6", +"6X c #ffffffffdede", +"7X c None", +/* pixels */ +"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X", +"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X", +"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X", +"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X", +"/.y.+.L.7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7XT.0.r.(.", +"[.e.X.E 7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X>.q.e.[.", +"m.i...N 1X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X].;.0.i.B.", +"N.d.[ w ].7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X].{ 8.s.M.", +"V.Z.#.> ].7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X].` t.v.V.", +"|.OX$.$ '.7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X_._ -.F.S.", +" X*XI o `.7X^.H.K.].7X7X7X7X7X!.K.).7X7X7X7X7X7X!.!.7X`.( -.+X.X", +";X4XP o `.R.p & X V ].7X7X7XH.q % $ P.7X7X7X].Q 5 + R ^.' *.*X%X", +"3X5XH @ L.j 5 . R 1X7XR.i - . > `.7X7XH.u & . D ' =.:X&X", +"3X6XY o C L : . . . . ~.].K b + . . ! 7X`.C g . . O ^ =.>X-X", +"2X5XH . T Q.< X + & X W !.1.4.& . + O > ].H.3.T X X + . t *.=X&X", +"-X,XG X Q.I.X ! B S <.1 B {.,.o M 5 T i W F }.U X @ h C y &.$X@X", +"#X$Xn 4 <.q > ].K.S 3.& a 2.< d `.s E.A X D 4.- Z W T W.k %.OXoX", +"XXOXm , q . W 7X].w = % i q . K.7X~ 4 ; = h 7 X ~.`.6 p e %.D.F.", +"A.C.m X X o ~.7X7XH.O & ; . 0 ].7X`.< O ; , . Z 7X7XJ X 2 @.c.b.", +"z.x.v G.7X7X7X].M X . # ~.7X7X7XJ.X X . 8 `.7X7X`.8 * O.a.l.", +"k.p.` H.7X7X7X7X7X'.~ R !.7X7X7X7X1XJ.V R `.7X7X7X7XR.y +.i.j.", +"h.u./ o /.7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X^.' o.w.g.", +"6.q./ o ~.7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X_._ .9.f.", +"6.7.x @ `.7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X`.' ..X.5.", +"4.| l : ].7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X].] ) ) 1.", +"Y.z y 9 ].7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X].} c z n.", +"!.e 3 f ].7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X1X:.r 3 L.", +"].s > ~ 7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7XU.p f `.", +"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X", +"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X", +"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X", +"7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X7X" +}; diff --git a/kommander/editor/pics/large/spinbox.xpm b/kommander/editor/pics/large/spinbox.xpm new file mode 100644 index 00000000..b79f32f4 --- /dev/null +++ b/kommander/editor/pics/large/spinbox.xpm @@ -0,0 +1,102 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 64 1", +" c #000000002424", +". c #0b0b0b0b3f3f", +"X c #000000004141", +"o c #000000005656", +"O c #131316164c4c", +"+ c #000000006363", +"@ c #000000006f6f", +"# c #08080c0c7070", +"$ c #000000008787", +"% c #000000008a8a", +"& c #000000009595", +"* c #000000009f9f", +"= c #00000000a6a6", +"- c #00000000aaaa", +"; c #00000000b6b6", +": c #17171f1fb4b4", +"> c #27272e2e8484", +", c #272730308181", +"< c #00000000cece", +"1 c #00000000d7d7", +"2 c #00000000dada", +"3 c #00000000e5e5", +"4 c #00000000efef", +"5 c #00000000f7f7", +"6 c #00000606ffff", +"7 c #00000c0cffff", +"8 c #01011919ffff", +"9 c #0f0f1b1bffff", +"0 c #04042020ffff", +"q c #0f0f2f2fffff", +"w c #12122424ffff", +"e c #16162c2cffff", +"r c #1b1b3535ffff", +"t c #1f1f3b3bffff", +"y c #20203535e6e6", +"u c #29293f3ff8f8", +"i c #3e3e49498d8d", +"p c #24244040ffff", +"a c #2f2f4e4effff", +"s c #2f2f5252ffff", +"d c #30304f4fffff", +"f c #37375151ffff", +"g c #35355c5cffff", +"h c #3e3e5858ffff", +"j c #59596464b8b8", +"k c #46466363ffff", +"l c #4f4f6767ffff", +"z c #57576b6be3e3", +"x c #51516b6bffff", +"c c #57577575ffff", +"v c #59597676ffff", +"b c #69697b7bc7c7", +"n c #64647676e8e8", +"m c #6d6d8686d8d8", +"M c #75758181dada", +"N c #72729090f5f5", +"B c #7b7ba0a0ffff", +"V c #9090bbbbffff", +"C c #9d9dc4c4ffff", +"Z c #aeaececefcfc", +"A c #b4b4d3d3ffff", +"S c #b8b8dbdbffff", +"D c #c0c0c0c0c0c0", +"F c None", +/* pixels */ +"FFFFFFFFFFFFFFbMybFFFFFFFFFFFFFF", +"FFFFFFFFFFFFFFbB4-bFFFFFFFFFFFFF", +"FFFFFFFFFFFFFjZe75%FFFFFFFFFFFFF", +"FFFFFFFFFFFFjAk7667,FFFFFFFFFFFF", +"FFFFFFFFFFFbZN066664bFFFFFFFFFFF", +"FFFFFFFFFFFbCt666665=FFFFFFFFFFF", +"FFFFFFFFFFbSg76666665>FFFFFFFFFF", +"FFFFFFFFFbAN8666666663jFFFFFFFFF", +"FFFFFFFFFbVq6666666666;bFFFFFFFF", +"FFFFFFFFjCa666666666665iFFFFFFFF", +"FFFFFFFbNk6666666666666<jFFFFFFF", +"FFFFFFFjm666666666666666$FFFFFFF", +"FFFFFFjc96666666666666665iFFFFFF", +"FFFFFF:966666666666666665#FFFFFF", +"FFFFFFi$&****==--=****&%@,FFFFFF", +"FFFFFFFbbjjjjjjjjjjjjjjbbFFFFFFF", +"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +"FFFFFFbbnzvxxvvvvxkhddyy:bFFFFFF", +"FFFFFFilhfdddaasupprrww97#FFFFFF", +"FFFFFFi666666666666666662OFFFFFF", +"FFFFFFF*6666666666666666+bFFFFFF", +"FFFFFFFj<66666666666666=iFFFFFFF", +"FFFFFFFFi66666666666663 FFFFFFFF", +"FFFFFFFFF;666666666666obFFFFFFFF", +"FFFFFFFFFj16666666666-iFFFFFFFFF", +"FFFFFFFFFFi6666666662.FFFFFFFFFF", +"FFFFFFFFFFF:66666666.bFFFFFFFFFF", +"FFFFFFFFFFFb1666666%iFFFFFFFFFFF", +"FFFFFFFFFFFFi36666<.FFFFFFFFFFFF", +"FFFFFFFFFFFFF>6664.bFFFFFFFFFFFF", +"FFFFFFFFFFFFFF$66XbFFFFFFFFFFFFF", +"FFFFFFFFFFFFFFb>OjFFFFFFFFFFFFFF" +}; diff --git a/kommander/editor/pics/large/table.xpm b/kommander/editor/pics/large/table.xpm new file mode 100644 index 00000000..c664d366 --- /dev/null +++ b/kommander/editor/pics/large/table.xpm @@ -0,0 +1,69 @@ +/* XPM */ +static char * table_xpm[] = { +"32 32 34 1", +" c None", +". c #8C8C8C", +"+ c #636363", +"@ c #5A5A5A", +"# c #4A4A4A", +"$ c #424242", +"% c #393939", +"& c #292929", +"* c #212121", +"= c #313131", +"- c #424239", +"; c #423939", +"> c #4A4239", +", c #52524A", +"' c #7B7B7B", +") c #080808", +"! c #101010", +"~ c #101018", +"{ c #213163", +"] c #213173", +"^ c #18297B", +"/ c #10216B", +"( c #081029", +"_ c #000000", +": c #BEC9D1", +"< c #101852", +"[ c #100808", +"} c #080800", +"| c #0019FF", +"1 c #080810", +"2 c #0098FF", +"3 c #524A42", +"4 c #525252", +"5 c #181818", +".++@##$$%%&&&&*****&*&&=%-;->,,'", +"#)!=%%%%$$%$$$$$$$$$%%==!~{]^/(#", +"#_:::::__::::::__:::::__::::::<$", +"$_:::::__::::::__:::::__::::::[$", +"$_:::::__::::::__:::::__::::::}$", +"%_____________________________!%", +"%!____________________________[%", +"=)|||||__||||||__|||||__||||||1=", +"&_|||||__||||||__|||||__||||||)=", +"&_|||||__||||||__|||||__||||||)&", +"&_|||||__||||||__|||||__||||||)*", +"&_____________________________!*", +"&!____________________________)*", +"&)22222__222222__22222__222222)*", +"*)22222__222222__22222__222222)*", +"&)22222__222222__22222__222222_*", +"*)22222__222222__22222__222222)*", +"&______________________________*", +"&)____________________________)*", +"=)|||||__||||||__|||||__||||||_&", +"%)|||||__||||||__|||||__||||||_=", +"%_|||||__||||||__|||||__||||||_=", +"%_|||||__||||||__|||||__||||||)%", +"$______________________________%", +"$______________________________$", +"3_22222__222222__22222__222222_$", +"#_22222__222222__22222__222222_$", +"4_22222__222222__22222__222222_#", +"@_22222__222222__22222__222222_@", +"@)22222__222222__22222__222222_@", +"+)))_)))!!)!!!!!!!)))__)!)_!)))@", +".$#%%%==&**5*555555*5***&&==%%%."}; diff --git a/kommander/editor/pics/large/tabwidget.xpm b/kommander/editor/pics/large/tabwidget.xpm new file mode 100644 index 00000000..3b9eb98b --- /dev/null +++ b/kommander/editor/pics/large/tabwidget.xpm @@ -0,0 +1,94 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 56 1", +" c #101010101818", +". c #181818181818", +"X c #181818182121", +"o c Gray13", +"O c #212121212929", +"+ c Gray16", +"@ c #292929293131", +"# c #313131313131", +"$ c #313131313939", +"% c #393939393939", +"& c #393939394242", +"* c Gray26", +"= c #424242424a4a", +"- c Gray29", +"; c #4a4a4a4a5252", +": c Gray32", +"> c #525252525a5a", +", c #5a5a5a5a5a5a", +"< c #5a5a5a5a6363", +"1 c Gray39", +"2 c #636363636b6b", +"3 c Gray42", +"4 c #6b6b6b6b7373", +"5 c Gray45", +"6 c #737373737b7b", +"7 c #7b7b7b7b7b7b", +"8 c #7b7b7b7b8484", +"9 c #848484848484", +"0 c #848484848c8c", +"q c Gray55", +"w c #8c8c8c8c9494", +"e c Gray58", +"r c #949494949c9c", +"t c Gray61", +"y c #9c9c9c9ca5a5", +"u c #a5a5a5a5a5a5", +"i c #a5a5a5a5adad", +"p c Gray68", +"a c #adadadadb5b5", +"s c Gray71", +"d c Gray74", +"f c #bdbdbdbdc6c6", +"g c #c0c0c0c0c0c0", +"h c #c6c6c6c6c6c6", +"j c #c6c6c6c6cece", +"k c #cececececece", +"l c #cecececed6d6", +"z c Gray84", +"x c #d6d6d6d6dede", +"c c Gray87", +"v c #dedededee7e7", +"b c #e7e7e7e7e7e7", +"n c #efefefefefef", +"m c Gray97", +"M c Gray100", +"N c None", +/* pixels */ +"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", +"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", +"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", +"NNNNdewqwe0qq5weq9076qq99wpNNNNN", +"NNNduvcczzkkf:aclkje:zxkzi:sNNNN", +"NNNpdztew00qw,%wq0wq&>wqwq*8NNNN", +"NNftny00099896@,0889<+69891%sNNN", +"NNssb0q0998888=#99896@*0886$9NNN", +"Ndtna9998887781+,8787;+5877:&dNN", +"Nsymw8988778776𕛦+*8872+qNN", +"Ntbl89898877877<+:8776=+4776*&dN", +"dwMp888877767685*$7877<O*876,+eN", +"psme897788787777<#:6674*#5884%:f", +"qzl988887777878885wpw752;:>,>=@e", +"5di978787887888900tpdkvnbczzkt-&", +"4yu9878777787878898880etupadft=*", +"2ui08778787787878888988767766,@&", +"1tiq8877878777878797878888886>#%", +"<rie7878777878777877787777775:$%", +"<tie9787878777778778777878772-$#", +",eur887777676868676767676666<-##", +",wyr077878787776776767676765,=##", +"17ye977776766767676666666665>*#$", +"84rw076767667676666676565654:&+*", +"q1ew867666676666675656655562;&+;", +"e:0q966777667676666665665652-%o1", +"p&12111<<11<1<<1,<,1<<,<<,<:&$.7", +"s$oXoOO+@+++++++@+++++++OO+Oo. w", +"he351,:-=**&&%%%%%%$%$$%%**;,37d", +"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", +"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN", +"NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" +}; diff --git a/kommander/editor/pics/large/textbrowser.xpm b/kommander/editor/pics/large/textbrowser.xpm new file mode 100644 index 00000000..39b70cb5 --- /dev/null +++ b/kommander/editor/pics/large/textbrowser.xpm @@ -0,0 +1,196 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 158 2", +" c Gray0", +". c #000000000808", +"X c Gray3", +"o c #080808081010", +"O c #080808081818", +"+ c #101010101010", +"@ c #101010101818", +"# c #181818181818", +"$ c #080808082121", +"% c #101010102121", +"& c #181818182121", +"* c #181818182929", +"= c Gray13", +"- c #212121212929", +"; c Gray16", +": c #212121213131", +"> c #292929293131", +", c #292929293939", +"< c #313131313131", +"1 c #313131313939", +"2 c #393939393939", +"3 c #313131314242", +"4 c #313131314a4a", +"5 c #393939394242", +"6 c Gray26", +"7 c #424242424a4a", +"8 c Gray29", +"9 c #4a4a4a4a5252", +"0 c #4a4a4a4a5a5a", +"q c Gray32", +"w c #525252525a5a", +"e c #5a5a5a5a5a5a", +"r c #525252526b6b", +"t c #5a5a5a5a6363", +"y c Gray39", +"u c Gray42", +"i c #636363637373", +"p c #6b6b6b6b7373", +"a c Gray45", +"s c #7b7b7b7b7b7b", +"d c #00000000efef", +"f c Blue", +"g c #08080808ffff", +"h c #08081010ffff", +"j c #10101010ffff", +"k c #18181818f7f7", +"l c #18181818ffff", +"z c #21212121f7f7", +"x c #21212929f7f7", +"c c #29293131efef", +"v c #29293131ffff", +"b c #31313939e7e7", +"n c #31313939efef", +"m c #31313131f7f7", +"M c #39393939f7f7", +"N c #39393939ffff", +"B c #39394242dede", +"V c #31314242f7f7", +"C c #39394a4affff", +"Z c #7b7b7b7b8484", +"A c #42424a4ad6d6", +"S c #42424242f7f7", +"D c #42424a4af7f7", +"F c #4a4a5252e7e7", +"G c #4a4a5252efef", +"H c #42425252ffff", +"J c #4a4a5a5affff", +"K c #52525252efef", +"L c #5a5a5a5aefef", +"P c #52525a5af7f7", +"I c #52526363ffff", +"U c #5a5a6363f7f7", +"Y c #5a5a6b6bffff", +"T c #6b6b6b6bd6d6", +"R c #6b6b6b6bdede", +"E c #73737373d6d6", +"W c #6b6b6b6be7e7", +"Q c #6b6b6b6befef", +"! c #6b6b6b6bf7f7", +"~ c #6b6b7373efef", +"^ c #6b6b7b7bffff", +"/ c #7b7b7b7befef", +"( c #73737373f7f7", +") c #7b7b8484e7e7", +"_ c #73738484ffff", +"` c #7b7b8484f7f7", +"' c #7b7b8484ffff", +"] c #848484848484", +"[ c #848484848c8c", +"{ c Gray55", +"} c #8c8c8c8c9494", +"| c Gray58", +" . c #949494949c9c", +".. c Gray61", +"X. c #9c9c9c9ca5a5", +"o. c #a5a5a5a5a5a5", +"O. c #a5a5a5a5adad", +"+. c Gray68", +"@. c #a5a5a5a5b5b5", +"#. c #adadadadb5b5", +"$. c Gray71", +"%. c #b5b5b5b5bdbd", +"&. c Gray74", +"*. c #8c8c8c8ccece", +"=. c #84848484d6d6", +"-. c #8c8c8c8cd6d6", +";. c #8c8c9494cece", +":. c #94949494cece", +">. c #84848484efef", +",. c #8c8c8c8cefef", +"<. c #84848c8cf7f7", +"1. c #8c8c9494efef", +"2. c #8c8c9494f7f7", +"3. c #94949494efef", +"4. c #9c9c9c9cefef", +"5. c #94949c9cf7f7", +"6. c #9c9ca5a5f7f7", +"7. c #9c9ca5a5ffff", +"8. c #a5a5a5a5d6d6", +"9. c #bdbdbdbdc6c6", +"0. c #bdbdbdbddede", +"q. c #a5a5a5a5e7e7", +"w. c #a5a5a5a5efef", +"e. c #a5a5adadf7f7", +"r. c #a5a5adadffff", +"t. c #a5a5b5b5ffff", +"y. c #adadb5b5f7f7", +"u. c #b5b5b5b5e7e7", +"i. c #bdbdbdbde7e7", +"p. c #bdbdbdbdefef", +"a. c #c0c0c0c0c0c0", +"s. c #c6c6c6c6c6c6", +"d. c #cececececece", +"f. c #cecececedede", +"g. c Gray84", +"h. c #dedededed6d6", +"j. c Gray87", +"k. c #c6c6c6c6e7e7", +"l. c #c6c6cecee7e7", +"z. c #c6c6ceceefef", +"x. c #c6c6ceceffff", +"c. c #d6d6d6d6e7e7", +"v. c #dedededee7e7", +"b. c #dedededeefef", +"n. c #e7e7e7e7dede", +"m. c #efefefefdede", +"M. c #f7f7f7f7dede", +"N. c #e7e7e7e7e7e7", +"B. c #e7e7e7e7efef", +"V. c #efefe7e7e7e7", +"C. c #efefefefe7e7", +"Z. c #efefefefefef", +"A. c #f7f7f7f7e7e7", +"S. c #f7f7f7f7efef", +"D. c Gray97", +"F. c #fffffffff7f7", +"G. c Gray100", +"H. c None", +/* pixels */ +"H.O.r 4 , - * % O O O O O O o O O O O o O O O O O @ - : 1 0 .&.", +"o.$ . # - < 2 5 5 6 6 6 8 8 8 9 8 8 8 8 7 6 6 6 5 5 1 > - . { ", +"0 ] d.d.g.g.g.g.j.j.j.j.j.j.j.j.j.j.j.j.j.j.j.h.g.g.h.g.O.& > ", +": 1 g.{ +.N.N.N.N.N.j.j.j.j.N.j.j.j.N.j.j.j.n.j.v.N.C.%.s Z.Z @ ", +"& t { { Z.j.j.j.j.N.N.N.j.j.N.j.N.j.N.N.n.v.N.n.N.j.< ; Z.+.O ", +"@ u { | G.N.N.N.Z.Z.N.Z.Z.j.N.j.Z.D.N.j.v.N.Z.Z.N.Z.; < G.9.o ", +"& 5 6 2 s j.N.N.o.e 6 y +.N.N.N.s u d.N.N.j.Z a d.u + + u | & ", +"& ; # # 6 j.N.e = 8 # ] Z.N.a q Z.S.s e j.6 X 2 ] * ", +"@ a | { D.Z.] u Z.Z.j.q &.Z.N.q +.9. 6 N.C.j.= 2 D.d.@ ", +"@ a | ] D.N.2 X j.Z.N.Z.s. a Z.Z.g.# = ; # d.Z.N.v.# 2 D.s.% ", +"@ a | ] Z.j.= < < < < < 8 N.N.Z.+. o.Z.N.N.n.# 2 D.d.@ ", +"& a .. ] D.j.# + q q q q q e { j.N.Z... { Z.N.N.j.# 2 D.s.@ ", +"- a .. s D.j.< # Z.D.Z.Z.Z.s.j.N.Z.s.+ 2 8 $.Z.N.j.+ 6 G.s.@ ", +"- a +. a G.Z.u ] D.Z.D.{ ] Z.j.< X s.g.+ ; g.Z.j.= 2 G.9.# ", +"- u s. # e g.j.= e | y = g.Z.u s Z.D.] q Z.N.2 8 [ - ", +": y N.] ; # $.Z.g.u = X # y d.Z.d.6 e j.N.N.N.y 6 s.Z.+.6 ; p ; ", +": y v.Z.j.j.N.N.N.Z.N.h.j.Z.N.N.j.N.N.N.j.N.N.N.N.j.N.Z.Z.D.$.* ", +"> t j.n.N.N.n.n.m.N.N.N.C.m.N.n.N.n.C.m.M.m.m.A.C.C.N.N.N.D.$.* ", +"1 e j.v.n.v.z.u.e.6.2.2.2.4.i.n.N.i.4.,./ ! ( / 3.i.N.n.N.D.#.- ", +"1 q j.n.b.r.^ J C D D V V C H U M f f f f f f f f f M i.C.D.+.- ", +"1 w j.B.7.b A E *.;.:.-.=.T b f f f z M G K G M z f f k d.F.o.> ", +"5 q n.x.G *.n.m.C.C.C.C.m.M.L f h / n.n.N.m.V.n.v.u.K f W F.X.> ", +"3 8 j.7.) n.N.j.N.j.N.N.N.N.m z I ` A.N.N.N.N.N.n.A.C.l S D.o.> ", +"7 6 h.t.<.n.n.N.n.N.N.N.n.N.N n ! 1.M.n.N.N.n.N.M.C.w.f G F...> ", +"9 5 g.y._ 3.c.v.N.N.n.N.N.C.( J v L p.l.v.c.c.k.4.P f f 4.F.} 1 ", +"9 2 h.k.~ Y ^ 2.2.5.6.2.<.' J x d d f f g j g f f f f Q m.D.{ 5 ", +"0 < d.m.0.R F D D D D V c c B *.>.M j f f f f j z K q.C.N.D.Z 5 ", +"y - d.N.N.n.f.8.;.=.=.;.8.0.n.C.C.N.v.l.i.u.k.v.v.C.C.N.N.G.p 7 ", +"p @ &.Z.N.N.N.C.A.C.A.S.A.C.N.N.C.N.C.C.C.A.C.C.N.C.N.N.Z.G.0 q ", +"[ } G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.G.g.@ u ", +"$.@ @ i | O.#.&.&.&.&.&.&.&.&.&.&.%.%.%.#.#.#.@.O.O. .[ p : o +.", +"H.o.2 # O o o O o O o O O o O O O o O o @ O @ @ @ @ & - ; 7 o.H." +}; diff --git a/kommander/editor/pics/large/textview.xpm b/kommander/editor/pics/large/textview.xpm new file mode 100644 index 00000000..356f8bfe --- /dev/null +++ b/kommander/editor/pics/large/textview.xpm @@ -0,0 +1,103 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 65 1", +" c Gray0", +". c Gray3", +"X c #080808081010", +"o c #080808081818", +"O c #101010101010", +"+ c #101010101818", +"@ c #181818181818", +"# c #181818182121", +"$ c Gray13", +"% c #212121212929", +"& c Gray16", +"* c #212121213131", +"= c #292929293131", +"- c #313131313131", +"; c #313131313939", +": c #393939393939", +"> c #313131314242", +", c #393939394242", +"< c Gray26", +"1 c #424242424a4a", +"2 c #4a4a4a4a4242", +"3 c Gray29", +"4 c #4a4a4a4a5252", +"5 c #525252524a4a", +"6 c Gray32", +"7 c #525252525a5a", +"8 c #5a5a5a5a5a5a", +"9 c #525252526363", +"0 c #5a5a5a5a6363", +"q c Gray39", +"w c #636363636b6b", +"e c Gray42", +"r c #6b6b6b6b7373", +"t c Gray45", +"y c #7b7b7b7b7373", +"u c #7b7b7b7b7b7b", +"i c #7b7b7b7b8484", +"p c #848484848484", +"a c #848484848c8c", +"s c Gray55", +"d c #8c8c8c8c9494", +"f c #949494948c8c", +"g c Gray58", +"h c #949494949c9c", +"j c Gray61", +"k c #9c9c9c9ca5a5", +"l c #a5a5a5a5a5a5", +"z c #a5a5a5a5adad", +"x c Gray68", +"c c #adadadadb5b5", +"v c Gray71", +"b c #b5b5b5b5bdbd", +"n c Gray74", +"m c #c0c0c0c0c0c0", +"M c #c6c6c6c6c6c6", +"N c #cececececece", +"B c #cecececed6d6", +"V c Gray84", +"C c Gray87", +"Z c #e7e7e7e7e7e7", +"A c #efefefefefef", +"S c #f7f7f7f7efef", +"D c Gray97", +"F c Gray100", +"G c None", +/* pixels */ +"Gz9>=%#+oXXXXXXXXXXXXXXXo+$%;4gn", +"lo +$--::,<<<2333321<<<<:;-&#. a", +"4 uNNNBNVVVVVVVVVVVVVVVVVVNVNl@=", +"*-NplZCCCCCCCCCCCCCCVCCCCCZvyZuO", +"#7s sZCCCVCCVCVCVCVCCCCCCCV&&AkX", +"Oes sDCCCZZZZZCCCZACCCCZACA&-FbO", +"+:: :uVCCj8:qlZCCueMCCCutMeOOes@", +"#&@ @<VZ8 $3@ uZZt 6ZAu 8V: .-p#", +"Ors pAZp qZZV3.vZC3 xn :CZC@:DM+", +"+rf pAC:.VZCAM eAZN@$&OMZCC@:AM+", +"+eg uAV$ ----- 3CCAl jACCC@-AM+", +"#eg uAV@O666668pCCZj pACCCO<An+", +"$tj uAC&@ZAZZZMVCZM.:< vACVO<Dn+", +"$el tDZe pAAAp uAV-.MNO$VZC@:Dn@", +"%en @8NV$ 8sq $NZe tAAp 6ZC: 3p$", +"%qCp&@vZNe$.@8MAM<6CCCCq:MZx<&r&", +"%8CZVVCCZZCVVAZCVCZCCCCZCCCZZAc#", +"=8CCCCCCCCCCCCCCCCCCCCCCCCCCCSx#", +"-6VCCCCCCCCCCCCCCCCCCCCCCCCCCAx%", +";6VCCCCCCCCCCCCCCCCCCCCCCCCCZAl%", +";5VCCCCCCCCCCCCCCCCCCCCCCCCCCAk&", +";3VCCCCCCCCCCCCCCCCCCCCCCCCCZAj=", +",2VCCCCCCCCCCCCCCCCCCCCCCCCCCAh=", +",<VCCCCCCCCCCCCCCCCCCCCCCCCCCSh&", +"4:BCCCCCCCCCCCCCCCCCCCCCCCCCZAd;", +"3;NCCCCCCCCCCCCCCCCCCCCCCCCCCAa:", +"4&NCCCCCCCCCCCCCCCCCCCCCCCCCZDu,", +"0$MCCCCCCCCCCCZCZCZCCCCZCZCZCSe,", +"rOnZCZCZCZZCZZCZCZCZCZZCCCZCZD46", +"i sFFFFFFDFDDFFFFFFFFFDFFFFFFV+e", +"v+Owskxvbvbnbvvvvcccczxzzkdar%.x", +"Gl;@XXXXXOXXXOXXXXXXXOoOO+@$&<lG" +}; diff --git a/kommander/editor/pics/large/toolbutton.xpm b/kommander/editor/pics/large/toolbutton.xpm new file mode 100644 index 00000000..a61a4774 --- /dev/null +++ b/kommander/editor/pics/large/toolbutton.xpm @@ -0,0 +1,123 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 85 1", +" c #181818181818", +". c #313131313131", +"X c #313131313939", +"o c #393939393939", +"O c #5a5a29290000", +"+ c #636331310808", +"@ c #636331311010", +"# c #737331310000", +"$ c #7b7b39390000", +"% c #6b6b42422929", +"& c Gray26", +"* c Gray29", +"= c #4a4a4a4a5252", +"- c Gray32", +"; c #5a5a5a5a5a5a", +": c #737352524242", +"> c #73735a5a4a4a", +", c Gray39", +"< c Gray42", +"1 c #6b6b6b6b7373", +"2 c #7b7b6b6b6363", +"3 c Gray45", +"4 c #7b7b7b7b7b7b", +"5 c #73737b7b8484", +"6 c #7b7b7b7b8484", +"7 c #7b7b7b7b8c8c", +"8 c #7b7b84848c8c", +"9 c #848439390000", +"0 c #8c8c5a5a3939", +"q c #9c9c5a5a2929", +"w c #a5a54a4a0000", +"e c #b5b552520808", +"r c #84847b7b7373", +"t c #c6c65a5a0808", +"y c #cece63631010", +"u c #d6d673732121", +"i c #d6d67b7b3131", +"p c #8c8c84847b7b", +"a c #adad94947b7b", +"s c #b5b594947373", +"d c #b5b594947b7b", +"f c #cece8c8c5a5a", +"g c #c6c694945a5a", +"h c #d6d68c8c4242", +"j c #848484848484", +"k c Gray55", +"l c #8c8c8c8c9494", +"z c #8c8c94949494", +"x c #94948c8c8c8c", +"c c Gray58", +"v c #949494949c9c", +"b c #94949c9c9494", +"n c #94949c9c9c9c", +"m c #9c9c9c9c9494", +"M c Gray61", +"N c #94949c9ca5a5", +"B c #a5a59c9c8c8c", +"V c #adad9c9c8c8c", +"C c #a5a5a5a59c9c", +"Z c #a5a5a5a5a5a5", +"A c #a5a5adadadad", +"S c #adada5a5a5a5", +"D c Gray68", +"F c #a5a5adadb5b5", +"G c #adadb5b5bdbd", +"H c Gray71", +"J c #b5b5b5b5bdbd", +"K c Gray74", +"L c #b5b5c6c6cece", +"P c #c0c0c0c0c0c0", +"I c #c6c6c6c6c6c6", +"U c #cececececece", +"Y c #c6c6ceced6d6", +"T c Gray84", +"R c Gray87", +"E c #ceced6d6e7e7", +"W c #d6d6dedeefef", +"Q c #e7e7deded6d6", +"! c #e7e7e7e7e7e7", +"~ c #efefefefefef", +"^ c #e7e7f7f7ffff", +"/ c #efeff7f7ffff", +"( c Gray97", +") c Gray100", +"_ c None", +/* pixels */ +"________________________________", +"________________________________", +"________________________________", +"_____KZMZZZZZDZDZDZZZZZZMMH_____", +"____DIR!R!RRRRTTTTUTUUIIHDcM____", +"___HK))))))))((~~!!RRUIKKDZ<D___", +"___MK~!TUIIIIIIIIKKKHDDZMMc,3___", +"___cDIIHHHDZZZDDADZMZZMZMMc<;___", +"___MDHHDZZZJTEF87lMZMMMMMck<-___", +"___MDHDDZZMG^/E856cMCMMccck<-___", +"___MZDDZZNCMJ^/Y858vMMcMcck<*___", +"___kDDZZZCMMcY^/L568cMccckk<*___", +"___kZDZZMMMMMcE^^G786bmcccj<&___", +"___kDDZZMMMMMbfQ/^5o=Mccckj<*___", +"___kZZZZMMMMnVy0WWX 1MMcckk<&___", +"___kZDZZMMMMNfeOSNo<cMccckj<*___", +"___kDZZZMMMvmi9:nkcMMcccckj<&___", +"___MZZZMMMmndy+rMMMcccMcckj<&___", +"___MZZZMMMMNhw%cncccMcccccj<&___", +"___MZZZMMMvBu#2NcMcMccccckj<&___", +"___cZZZMMMnge@xMcccccccckkj<&___", +"___cZZMMMvMi$>NcmcMcccccckj<*___", +"___kMZMMMvst+pMccccccccckkj,*___", +"___cMZMMcvaq:cccccckcckckkj,*___", +"___ccZcccczlzczkkckckkkkkkj;-___", +"___ZkMccckkkkkkkkjkkkkkkkkj-,___", +"___K4ckkjjjjj444444444j4j43oM___", +"____M;;;;,;;;;;;;;;;;;;--*o<K___", +"_____Z<*&oo.o......o.oo&*;cK____", +"________________________________", +"________________________________", +"________________________________" +}; diff --git a/kommander/editor/pics/large/undo.xpm b/kommander/editor/pics/large/undo.xpm new file mode 100644 index 00000000..a4f309ec --- /dev/null +++ b/kommander/editor/pics/large/undo.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"32 32 4 1", +" c #000000008080", +". c #808080808080", +"X c #c0c0c0c0c0c0", +"o c None", +/* pixels */ +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"ooooooooooooooo .ooooooo", +"oooo ooooooooo .oooooo", +"oooo ooooooo ooooooo .ooooo", +"oooo oooo ooooooooo .oooo", +"oooo oo ooooooooooo oooo", +"oooo oooooooooooooo oooo", +"oooo ooooooooooooooo oooo", +"oooo ooooooooooooooo oooo", +"oooo oooooooooooooo oooo", +"oooo ooooooooooooo oooo", +"oooo ooooooooooo .oooo", +"oooo ooooooooo .ooooo", +"ooooooooooooooooooooooo. oooooo", +"oooooooooooooooooooooo. ooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo", +"oooooooooooooooooooooooooooooooo" +}; diff --git a/kommander/editor/pics/mini/down.xpm b/kommander/editor/pics/mini/down.xpm new file mode 100644 index 00000000..0a0bae1d --- /dev/null +++ b/kommander/editor/pics/mini/down.xpm @@ -0,0 +1,71 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"16 16 49 1", +" c #06062d2dffff", +". c #08082e2effff", +"X c #1b1b3f3ff1f1", +"o c #3d3d4e4ebbbb", +"O c #2f2f5050e1e1", +"+ c #26265151fbfb", +"@ c #2b2b5959fefe", +"# c #31315454e2e2", +"$ c #37375e5ef3f3", +"% c #3c3c6565eeee", +"& c #3a3a6565ffff", +"* c #44445b5bc2c2", +"= c #48486060c5c5", +"- c #50506f6fcccc", +"; c #47477575ffff", +": c #4d4d7d7dffff", +"> c #53537c7cebeb", +", c #6c6c8484baba", +"< c #6e6e8787c7c7", +"1 c #6b6b9292e2e2", +"2 c #65659797ffff", +"3 c #6c6c9d9dffff", +"4 c #6c6ca1a1ffff", +"5 c #7e7ea2a2eaea", +"6 c #7676a6a6fefe", +"7 c #7f7fafafffff", +"8 c #8f8f9999b7b7", +"9 c #9f9fa2a2b3b3", +"0 c #8e8e9e9ec0c0", +"q c #8282a9a9e8e8", +"w c #8787b7b7ffff", +"e c #8787b8b8ffff", +"r c #8e8ebebeffff", +"t c #a4a4b4b4cdcd", +"y c #a6a6babaecec", +"u c #9797c8c8ffff", +"i c #9d9dceceffff", +"p c #9f9fd3d3ffff", +"a c #a2a2cecef6f6", +"s c #a2a2d1d1ffff", +"d c #b2b2c9c9eeee", +"f c #b9b9cacaeeee", +"g c #babad6d6f8f8", +"h c #b5b5ebebffff", +"j c #c0c0c0c0c0c0", +"k c #dadafafaffff", +"l c #e1e1fafaffff", +"z c #f6f6ffffffff", +"x c None", +/* pixels */ +"xxxxx9yfdq8xxxxx", +"xxxxx5zlks#9xxxx", +"xxxxt1hpu2Oxxxxx", +"xxxxx<uir:otxxxx", +"xxxxx0wuw;-xxxxx", +"xxxxx8wuw&,xxxxx", +"xxxxxt5u7$9xxxxx", +"xxxxxtqi7$9xxxxx", +"xtxxx8aiw:,txxtx", +"x<agywrwww655>*x", +"x,%4eeww7w76& -x", +"xx,@3www776;.=9x", +"xxx,@37766: otxx", +"xxxx,+262; o9xxx", +"xxxxx,+::.otxxxx", +"xxxxxx<OX-9xxxxx" +}; diff --git a/kommander/editor/pics/mini/form.xpm b/kommander/editor/pics/mini/form.xpm new file mode 100644 index 00000000..66bf2633 --- /dev/null +++ b/kommander/editor/pics/mini/form.xpm @@ -0,0 +1,27 @@ +/* XPM */ +static char * form_xpm[] = { +"20 20 4 2", +" c None", +". c None", +"+ c #000079", +"@ c #FFFFFF", +". . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . . . . . . . . . . . . ", +". . + + + + + + + + + + + + + + + + . . ", +". . + . . + @ @ @ @ @ @ @ @ + . . + . . ", +". . + + + + + + + + + + + + + + + + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ + . . ", +". . + + + + + + + + + + + + + + + + . . ", +". . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . . . . . . . . . . . . "}; diff --git a/kommander/editor/pics/mini/image.xpm b/kommander/editor/pics/mini/image.xpm new file mode 100644 index 00000000..2c1479da --- /dev/null +++ b/kommander/editor/pics/mini/image.xpm @@ -0,0 +1,28 @@ +/* XPM */ +static const char *image_xpm[] = { +"17 15 9 1", +" c #7F7F7F", +". c #FFFFFF", +"X c #00B6FF", +"o c #BFBFBF", +"O c #FF6C00", +"+ c #000000", +"@ c #0000FF", +"# c #6CFF00", +"$ c #FFB691", +" ..XX", +" ........o .XXX", +" .OOOOOOOo. XXX+", +" .O@@@@@@+++XXX++", +" .O@@@@@@O.XXX+++", +" .O@@@@@@OXXX+++.", +" .O######XXX++...", +" .O#####XXX++....", +" .O##$#$XX+o+....", +" .O#$$$$$+.o+....", +" .O##$$##O.o+....", +" .OOOOOOOO.o+....", +" ..........o+....", +" ooooooooooo+....", +"+++++++++++++...." +}; diff --git a/kommander/editor/pics/mini/left.xpm b/kommander/editor/pics/mini/left.xpm new file mode 100644 index 00000000..97e8c809 --- /dev/null +++ b/kommander/editor/pics/mini/left.xpm @@ -0,0 +1,69 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"16 16 47 1", +" c #0f0f3c3cffff", +". c #16163939efef", +"X c #18183f3ffbfb", +"o c #27273f3fd1d1", +"O c #17174545ffff", +"+ c #1d1d4343f2f2", +"@ c #1d1d4c4cffff", +"# c #30305656d8d8", +"$ c #3a3a5252d4d4", +"% c #20204747fcfc", +"& c #2c2c5656ffff", +"* c #34346262ffff", +"= c #3b3b6b6bffff", +"- c #63637777b8b8", +"; c #4b4b6363c4c4", +": c #48486767c9c9", +"> c #51516d6dcdcd", +", c #45457474ffff", +"< c #4c4c7d7dffff", +"1 c #7a7a8c8cbdbd", +"2 c #56568585ffff", +"3 c #5f5f8b8bfafa", +"4 c #76768b8bc0c0", +"5 c #67679797ffff", +"6 c #6a6a9898f4f4", +"7 c #6f6f9f9fffff", +"8 c #7f7fa3a3e9e9", +"9 c #7676a6a6ffff", +"0 c #7676a8a8ffff", +"q c #7e7eafafffff", +"w c #7f7fb1b1ffff", +"e c #8f8fa6a6e9e9", +"r c #8383b1b1f5f5", +"t c #8282b5b5ffff", +"y c #9494c4c4fafa", +"u c #9797cbcbffff", +"i c #9f9fc6c6f1f1", +"p c #9f9fd4d4ffff", +"a c #bbbbe4e4ffff", +"s c #c0c0c0c0c0c0", +"d c #cecedcdcfdfd", +"f c #c3c3e6e6ffff", +"g c #d8d8e1e1f9f9", +"h c #e6e6eaeafafa", +"j c #e4e4f9f9ffff", +"k c #eeeeffffffff", +"l c None", +/* pixels */ +"llllllllllllllll", +"lllll4elllllllll", +"lllleghellllllll", +"lll1hkilllllllll", +"ll1kkp01llllllll", +"l4kkywq4le1e4e84", +"1dky9q958iaafat#", +"ijuq997qyyrt09,&", +"6tw99777557755,o", +"-%39779*X%&*=,*+", +"l$@2577>11;$o.+;", +"ll>O,571llllll1l", +"lll:X<2lllllllll", +"llll- @4llllllll", +"lllll-.4llllllll", +"llllllllllllllll" +}; diff --git a/kommander/editor/pics/mini/resetproperty.xpm b/kommander/editor/pics/mini/resetproperty.xpm new file mode 100644 index 00000000..43bdc1b0 --- /dev/null +++ b/kommander/editor/pics/mini/resetproperty.xpm @@ -0,0 +1,13 @@ +/* XPM */ +static char * resetproperty_xpm[] = { +"7 6 4 1", +" c None", +". c #C00000", +"+ c #FF0000", +"@ c None", +".+@@@+.", +"@.+@+.@", +"@@.+.@@", +"@@+.+@@", +"@+.@.+@", +"+.@@@.+"}; diff --git a/kommander/editor/pics/mini/right.xpm b/kommander/editor/pics/mini/right.xpm new file mode 100644 index 00000000..24bcaae6 --- /dev/null +++ b/kommander/editor/pics/mini/right.xpm @@ -0,0 +1,77 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"16 16 55 1", +" c #02022525fefe", +". c #06062a2afbfb", +"X c #1c1c3c3ce5e5", +"o c #22223737d6d6", +"O c #3b3b5353cbcb", +"+ c #26264a4aebeb", +"@ c #2c2c4f4feeee", +"# c #33335b5bf1f1", +"$ c #32325a5afafa", +"% c #35356565ffff", +"& c #39396464ffff", +"* c #3e3e6969fefe", +"= c #49495d5dbcbc", +"- c #62627777bbbb", +"; c #68687d7db8b8", +": c #40405d5dcaca", +"> c #49496363c6c6", +", c #50507171dfdf", +"< c #4c4c7575e9e9", +"1 c #5c5c7a7aeaea", +"2 c #79798989afaf", +"3 c #54548484ffff", +"4 c #5d5d8e8efdfd", +"5 c #6e6e8585c5c5", +"6 c #67679696ffff", +"7 c #6d6d9898f0f0", +"8 c #6d6d9b9bfafa", +"9 c #79799898e8e8", +"0 c #6c6ca0a0ffff", +"q c #7f7fa0a0e3e3", +"w c #7676a6a6ffff", +"e c #7c7ca8a8f2f2", +"r c #7f7fafafffff", +"t c #8888a2a2f0f0", +"y c #8686b6b6ffff", +"u c #8888b7b7ffff", +"i c #8c8cb8b8f0f0", +"p c #8f8fbfbfffff", +"a c #9595c7c7ffff", +"s c #9797c8c8ffff", +"d c #9d9dcfcfffff", +"f c #9f9fd2d2ffff", +"g c #a2a2d0d0f0f0", +"h c #a1a1d0d0ffff", +"j c #a9a9dedeffff", +"k c #b1b1d7d7f2f2", +"l c #bebedbdbf5f5", +"z c #bcbcd9d9fefe", +"x c #adade2e2ffff", +"c c #b9b9e5e5ffff", +"v c #c0c0c0c0c0c0", +"b c #ccccf0f0f2f2", +"n c #cdcdf6f6ffff", +"m c #e2e2ffffffff", +"M c None", +/* pixels */ +"MMMMMMMMMMMMMMMM", +"MMMMMMMMMq2MMMMM", +"MMMMMMMMMbr5MMMM", +"MMMMMMMMMdj65MMM", +"MMMMMMMMMqsdw5MM", +"2tqq5qMM2yppa6-M", +"imncllgkzyryyp4;", +"exaasadharrrrr8<", +"7fuyrww0rrrrw6*X", +",03*%$@+&rrw8%.;", +"2XoO>;22-8w8% =M", +"MMMMMMMMM96$ >MM", +"MMMMMMMMM1%.>MMM", +"MMMMMMMMM# >MMMM", +"MMMMMMMMM:-MMMMM", +"MMMMMMMMMMMMMMMM" +}; diff --git a/kommander/editor/pics/mini/up.xpm b/kommander/editor/pics/mini/up.xpm new file mode 100644 index 00000000..29117588 --- /dev/null +++ b/kommander/editor/pics/mini/up.xpm @@ -0,0 +1,68 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"16 16 46 1", +" c #16163636ebeb", +". c #17173a3aecec", +"X c #1a1a3f3ff3f3", +"o c #1b1b4343fefe", +"O c #3f3f5656d1d1", +"+ c #2b2b5c5cffff", +"@ c #31315f5fffff", +"# c #36366767fefe", +"$ c #3b3b6666ffff", +"% c #3f3f6e6effff", +"& c #69697b7bb8b8", +"* c #4d4d6565cccc", +"= c #51516c6ccece", +"- c #55557272cece", +"; c #58587171c7c7", +": c #42426d6deded", +"> c #47477777ffff", +", c #4a4a7a7affff", +"< c #64647b7bc0c0", +"1 c #72728787bbbb", +"2 c #50508585ffff", +"3 c #5c5c8a8af7f7", +"4 c #6a6a8989d7d7", +"5 c #60608e8effff", +"6 c #66669797ffff", +"7 c #67679898ffff", +"8 c #6a6a9b9bf4f4", +"9 c #6e6e9e9effff", +"0 c #7676a7a7ffff", +"q c #7777a9a9ffff", +"w c #7878a1a1f7f7", +"e c #7e7eafafffff", +"r c #8989bdbdffff", +"t c #9090c6c6ffff", +"y c #9696ccccffff", +"u c #9999c9c9f9f9", +"i c #9d9dd1d1ffff", +"p c #b2b2c6c6f4f4", +"a c #bfbfe6e6fefe", +"s c #c0c0c0c0c0c0", +"d c #d1d1e0e0fcfc", +"f c #dbdbf9f9ffff", +"g c #e4e4ebebfcfc", +"h c #e7e7ffffffff", +"j c Gray100", +"k c None", +/* pixels */ +"kkkkkk1pw1kkkkkk", +"kkkkk1gfi>;kkkkk", +"kkkk1ghure>&kkkk", +"kkk1ghte009@<kkk", +"kk1jhr009999#&kk", +"k1dhy00999999+&k", +"k4auq09999763$.k", +"k1k1k1>99$*kw11k", +"kkkkkk:q7o1kkkkk", +"kkkkkk3e6+1kkkkk", +"kkkkk18e9@;kkkkk", +"kkkkk1eq6$Okkkkk", +"kkkkk1r06>.kkkkk", +"kkkkk4e65,.kkkkk", +"kkkkk-2%##X1kkkk", +"kkkkk1... =kkkkk" +}; diff --git a/kommander/editor/pics/mkimages b/kommander/editor/pics/mkimages new file mode 100644 index 00000000..370c0551 --- /dev/null +++ b/kommander/editor/pics/mkimages @@ -0,0 +1,3 @@ +#!/bin/sh +#qembed *.xbm *.xpm small/*.xbm small/*.xpm small/*.png small/disabled/*.xpm small/disabled/*.xbm small/disabled/*.png mini/*.xpm mini/*.xbm background.png qtlogo.png > images.h +./qembed *.xbm small/*.xpm small/*.png small/disabled/*.xpm small/disabled/*.png mini/*.xpm background.png qtlogo.png> images.h diff --git a/kommander/editor/pics/mkpics b/kommander/editor/pics/mkpics new file mode 100644 index 00000000..015714d7 --- /dev/null +++ b/kommander/editor/pics/mkpics @@ -0,0 +1,2 @@ +#!/bin/sh +qembed small/filenew.xpm small/fileopen.xpm small/filesave.xpm small/print.xpm small/editcut.xpm small/editcopy.xpm small/editpaste.xpm small/searchfind.xpm small/undo.xpm small/redo.xpm > ../plugins/wizards/images.h diff --git a/kommander/editor/pics/no.xbm b/kommander/editor/pics/no.xbm new file mode 100644 index 00000000..9dc36cfd --- /dev/null +++ b/kommander/editor/pics/no.xbm @@ -0,0 +1,10 @@ +#define no_width 25 +#define no_height 25 +static unsigned char no_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00, + 0x00,0x80,0xff,0x01,0x00,0xc0,0xc3,0x03,0x00,0xe0,0x00,0x07,0x00,0xf0,0x01, + 0x0e,0x00,0xb0,0x03,0x0c,0x00,0x38,0x07,0x1c,0x00,0x18,0x0e,0x18,0x00,0x18, + 0x1c,0x18,0x00,0x18,0x38,0x18,0x00,0x18,0x70,0x18,0x00,0x38,0xe0,0x1c,0x00, + 0x30,0xc0,0x0d,0x00,0x70,0x80,0x0f,0x00,0xe0,0x00,0x07,0x00,0xc0,0xc3,0x03, + 0x00,0x80,0xff,0x01,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/qtlogo.png b/kommander/editor/pics/qtlogo.png Binary files differnew file mode 100644 index 00000000..4e1a1472 --- /dev/null +++ b/kommander/editor/pics/qtlogo.png diff --git a/kommander/editor/pics/sizeall.xbm b/kommander/editor/pics/sizeall.xbm new file mode 100644 index 00000000..77324ab7 --- /dev/null +++ b/kommander/editor/pics/sizeall.xbm @@ -0,0 +1,10 @@ +#define sizeall_width 25 +#define sizeall_height 25 +static unsigned char sizeall_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x38,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x10, + 0x00,0x00,0x00,0x10,0x00,0x00,0x40,0x10,0x04,0x00,0x60,0x10,0x0c,0x00,0x70, + 0x10,0x1c,0x00,0xf8,0xff,0x3f,0x00,0x70,0x10,0x1c,0x00,0x60,0x10,0x0c,0x00, + 0x40,0x10,0x04,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0xfe,0x00, + 0x00,0x00,0x7c,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/sizeb.xbm b/kommander/editor/pics/sizeb.xbm new file mode 100644 index 00000000..e8912e4e --- /dev/null +++ b/kommander/editor/pics/sizeb.xbm @@ -0,0 +1,10 @@ +#define sizeb_width 25 +#define sizeb_height 25 +static unsigned char sizeb_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,0x00,0xc0,0x03, + 0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0x02,0x00,0x00,0x40,0x04,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x40,0x04,0x00, + 0x00,0x80,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x80,0x07,0x00,0x00,0xc0,0x07, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/sizef.xbm b/kommander/editor/pics/sizef.xbm new file mode 100644 index 00000000..cf8dd754 --- /dev/null +++ b/kommander/editor/pics/sizef.xbm @@ -0,0 +1,10 @@ +#define sizef_width 25 +#define sizef_height 25 +static unsigned char sizef_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03,0x00,0x00,0xc0, + 0x03,0x00,0x00,0x80,0x03,0x00,0x00,0x40,0x03,0x00,0x00,0x20,0x02,0x00,0x00, + 0x10,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x04,0x00,0x00,0x20,0x02,0x00,0x00, + 0x60,0x01,0x00,0x00,0xe0,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0xe0,0x03,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/sizeh.xbm b/kommander/editor/pics/sizeh.xbm new file mode 100644 index 00000000..1b2f05cf --- /dev/null +++ b/kommander/editor/pics/sizeh.xbm @@ -0,0 +1,10 @@ +#define sizeh_width 25 +#define sizeh_height 25 +static unsigned char sizeh_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x40,0x00,0x04,0x00,0x60,0x00,0x0c,0x00,0x70,0x00,0x1c,0x00,0xf8, + 0xff,0x3f,0x00,0x70,0x00,0x1c,0x00,0x60,0x00,0x0c,0x00,0x40,0x00,0x04,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/sizev.xbm b/kommander/editor/pics/sizev.xbm new file mode 100644 index 00000000..9b2483a7 --- /dev/null +++ b/kommander/editor/pics/sizev.xbm @@ -0,0 +1,10 @@ +#define sizev_width 25 +#define sizev_height 25 +static unsigned char sizev_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00, + 0x00,0x00,0x1c,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x08, + 0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00, + 0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00, + 0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x7f,0x00, + 0x00,0x00,0x3e,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/small/adjustsize.png b/kommander/editor/pics/small/adjustsize.png Binary files differnew file mode 100644 index 00000000..6ade1e22 --- /dev/null +++ b/kommander/editor/pics/small/adjustsize.png diff --git a/kommander/editor/pics/small/book.xpm b/kommander/editor/pics/small/book.xpm new file mode 100644 index 00000000..f7f73a62 --- /dev/null +++ b/kommander/editor/pics/small/book.xpm @@ -0,0 +1,32 @@ +/* XPM */ +/* Drawn by Mark Donohoe for the K Desktop Environment */ +/* See http://www.kde.org */ +static char*openbook[]={ +"22 22 4 1", +"# c #000000", +"a c #808080", +"b c #ffffff", +". c None", +"......................", +"......................", +"......................", +"......................", +".....##...............", +"....#ab#....###.......", +"....#abb#.##bb#.......", +"....#abbb#abbb###.....", +"....#abbb#bbbb#a#.....", +"....#abbb#abbb#a#.....", +"....#abbb#bbbb#a#.....", +"....#abbb#abbb#a#.....", +"....#abbb#bbbb#a#.....", +".....#abb#abb##a#.....", +"......#ab#b##bba#.....", +".......#a##aaaaa#.....", +".......##a#######.....", +"........##............", +"......................", +"......................", +"......................", +"......................"}; + diff --git a/kommander/editor/pics/small/buttongroup.png b/kommander/editor/pics/small/buttongroup.png Binary files differnew file mode 100644 index 00000000..d89e28fd --- /dev/null +++ b/kommander/editor/pics/small/buttongroup.png diff --git a/kommander/editor/pics/small/checkbox.png b/kommander/editor/pics/small/checkbox.png Binary files differnew file mode 100644 index 00000000..ab6f53e0 --- /dev/null +++ b/kommander/editor/pics/small/checkbox.png diff --git a/kommander/editor/pics/small/closebutton.png b/kommander/editor/pics/small/closebutton.png Binary files differnew file mode 100644 index 00000000..63903b30 --- /dev/null +++ b/kommander/editor/pics/small/closebutton.png diff --git a/kommander/editor/pics/small/combobox.png b/kommander/editor/pics/small/combobox.png Binary files differnew file mode 100644 index 00000000..7d4890a7 --- /dev/null +++ b/kommander/editor/pics/small/combobox.png diff --git a/kommander/editor/pics/small/connecttool.png b/kommander/editor/pics/small/connecttool.png Binary files differnew file mode 100644 index 00000000..fca6748f --- /dev/null +++ b/kommander/editor/pics/small/connecttool.png diff --git a/kommander/editor/pics/small/customwidget.png b/kommander/editor/pics/small/customwidget.png Binary files differnew file mode 100644 index 00000000..ab790e1f --- /dev/null +++ b/kommander/editor/pics/small/customwidget.png diff --git a/kommander/editor/pics/small/databrowser.xpm b/kommander/editor/pics/small/databrowser.xpm new file mode 100644 index 00000000..6b6c11f7 --- /dev/null +++ b/kommander/editor/pics/small/databrowser.xpm @@ -0,0 +1,156 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 128 2", +" c #c2c2d3", +". c #9696a3", +"X c #ababbb", +"o c #dbdbef", +"O c GhostWhite", +"+ c #7d7d89", +"@ c #7e7e89", +"# c #61616a", +"$ c #414147", +"% c #dadaee", +"& c #d8d8ec", +"* c #71717b", +"= c #46464c", +"- c #47474e", +"; c #efeffe", +": c #acacbc", +"> c #c1c1d3", +", c #d9d9ed", +"< c #ddddf1", +"1 c #f6f6ff", +"2 c #ddddf0", +"3 c #f4f4ff", +"4 c #a1a1ad", +"5 c #606069", +"6 c #82828e", +"7 c #9897a3", +"8 c #c2c2ca", +"9 c #9494a1", +"0 c #d5d5e9", +"q c #61616b", +"w c #f1f1fe", +"e c #adadbc", +"r c #f2f2ff", +"t c #9f9fab", +"y c #9595a3", +"u c #606068", +"i c #b0b0ba", +"p c #706f77", +"a c #45454b", +"s c #e5e5f4", +"d c #fefeff", +"f c #9a9aa7", +"g c #9797a5", +"h c #f5f5ff", +"j c #5c5c60", +"k c #3f3f45", +"l c #3d3d43", +"z c #515157", +"x c #828184", +"c c #38383d", +"v c #404046", +"b c #9a9aa9", +"n c #dadaed", +"m c #7e7e8a", +"M c #414146", +"N c #4b4b50", +"B c #4a4a50", +"V c #f1f1ff", +"C c #dcdcf0", +"Z c #9e9eab", +"A c #f3f3ff", +"S c #f9f9ff", +"D c #a5a5b0", +"F c #59595f", +"G c #e8e8eb", +"H c #f7f7ff", +"J c #62626b", +"K c #adadbd", +"L c #9696a4", +"P c #00007b", +"I c Gray0", +"U c Gray100", +"Y c None", +"T c Gray0", +"R c Gray0", +"E c Gray0", +"W c Gray0", +"Q c Gray0", +"! c Gray0", +"~ c Gray0", +"^ c Gray0", +"/ c Gray0", +"( c Gray0", +") c Gray0", +"_ c Gray0", +"` c Gray0", +"' c Gray0", +"] c Gray0", +"[ c Gray0", +"{ c Gray0", +"} c Gray0", +"| c Gray0", +" . c Gray0", +".. c Gray0", +"X. c Gray0", +"o. c Gray0", +"O. c Gray0", +"+. c Gray0", +"@. c Gray0", +"#. c Gray0", +"$. c Gray0", +"%. c Gray0", +"&. c Gray0", +"*. c Gray0", +"=. c Gray0", +"-. c Gray0", +";. c Gray0", +":. c Gray0", +">. c Gray0", +",. c Gray0", +"<. c Gray0", +"1. c Gray0", +"2. c Gray0", +"3. c Gray0", +"4. c Gray0", +"5. c Gray0", +"6. c Gray0", +"7. c Gray0", +"8. c Gray0", +"9. c Gray0", +"0. c Gray0", +"q. c Gray0", +"w. c Gray0", +"e. c Gray0", +"r. c Gray0", +"t. c Gray0", +"y. c Gray0", +"u. c Gray0", +/* pixels */ +"Y Y o o K K K K K K K K K K K Y Y Y Y Y Y Y ", +"Y b . @ @ J J J J J J J J J p Y Y Y Y Y Y ", +"Y X . . + + + + # # # $ c M Y Y Y Y Y Y ", +"Y L U U O < X X X . @ q # - $ B Y Y Y Y Y Y ", +"Y L U U U O O 2 X . m J - $ N Y Y Y Y Y Y ", +"Y L U U U U S < I I I I I I I I I I I I I Y ", +"Y L U U U U O 2 I U U U U U U U U U U U I Y ", +"Y L U U U U O C I U U U U P U P U U U U I Y ", +"Y L U U U U H o I U U U P P U P P U U U I Y ", +"Y L U U U U 1 o I U U P P P U P P P U U I Y ", +"Y L U U U U 1 o I U P P P P U P P P P U I Y ", +"Y L U U U U h % I U P P P P U P P P P U I Y ", +"Y L U U U U 3 % I U U P P P U P P P U U I Y ", +"Y L U U U U 3 % I U U U P P U P P U U U I Y ", +"Y L U U U U A n I U U U U P U P U U U U I Y ", +"Y L U U U U r , I U U U U U U U U U U U I Y ", +"Y L U U U U V , I I I I I I I I I I I I I Y ", +"Y L U U U U w & > : L @ 5 = k j Y Y Y Y Y Y ", +"Y L U U U U ; & > e L @ 5 = v z Y Y Y Y Y Y ", +"Y L U U U d ; & : L + u a l F Y Y Y Y Y Y ", +"Y D 4 i 8 G s 0 X L 6 * * * x Y Y Y Y Y Y ", +"Y Y t 4 Z f g L L L L y 9 7 . Y Y Y Y Y Y Y " +}; diff --git a/kommander/editor/pics/small/datatable.xpm b/kommander/editor/pics/small/datatable.xpm new file mode 100644 index 00000000..182c3bc9 --- /dev/null +++ b/kommander/editor/pics/small/datatable.xpm @@ -0,0 +1,156 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 128 2", +" c #c2c2d3", +". c #9696a3", +"X c #ababbb", +"o c #dbdbef", +"O c GhostWhite", +"+ c #7d7d89", +"@ c #7e7e89", +"# c #61616a", +"$ c #414147", +"% c #dadaee", +"& c #d8d8ec", +"* c #71717b", +"= c #46464c", +"- c #47474e", +"; c #efeffe", +": c #acacbc", +"> c #c1c1d3", +", c #d9d9ed", +"< c #ddddf1", +"1 c #f6f6ff", +"2 c #ddddf0", +"3 c #f4f4ff", +"4 c #a1a1ad", +"5 c #606069", +"6 c #82828e", +"7 c #9897a3", +"8 c #c2c2ca", +"9 c #9494a1", +"0 c #d5d5e9", +"q c #61616b", +"w c #f1f1fe", +"e c #adadbc", +"r c #f2f2ff", +"t c #9f9fab", +"y c #9595a3", +"u c #606068", +"i c #b0b0ba", +"p c #706f77", +"a c #45454b", +"s c #e5e5f4", +"d c #fefeff", +"f c #9a9aa7", +"g c #9797a5", +"h c #f5f5ff", +"j c #5c5c60", +"k c #3f3f45", +"l c #3d3d43", +"z c #515157", +"x c #828184", +"c c #38383d", +"v c #404046", +"b c #9a9aa9", +"n c #dadaed", +"m c #7e7e8a", +"M c #414146", +"N c #4b4b50", +"B c #4a4a50", +"V c #f1f1ff", +"C c #dcdcf0", +"Z c #9e9eab", +"A c #f3f3ff", +"S c #f9f9ff", +"D c #a5a5b0", +"F c #59595f", +"G c #e8e8eb", +"H c #f7f7ff", +"J c #62626b", +"K c #adadbd", +"L c #9696a4", +"P c #868692", +"I c Gray0", +"U c Gray100", +"Y c None", +"T c Gray0", +"R c Gray0", +"E c Gray0", +"W c Gray0", +"Q c Gray0", +"! c Gray0", +"~ c Gray0", +"^ c Gray0", +"/ c Gray0", +"( c Gray0", +") c Gray0", +"_ c Gray0", +"` c Gray0", +"' c Gray0", +"] c Gray0", +"[ c Gray0", +"{ c Gray0", +"} c Gray0", +"| c Gray0", +" . c Gray0", +".. c Gray0", +"X. c Gray0", +"o. c Gray0", +"O. c Gray0", +"+. c Gray0", +"@. c Gray0", +"#. c Gray0", +"$. c Gray0", +"%. c Gray0", +"&. c Gray0", +"*. c Gray0", +"=. c Gray0", +"-. c Gray0", +";. c Gray0", +":. c Gray0", +">. c Gray0", +",. c Gray0", +"<. c Gray0", +"1. c Gray0", +"2. c Gray0", +"3. c Gray0", +"4. c Gray0", +"5. c Gray0", +"6. c Gray0", +"7. c Gray0", +"8. c Gray0", +"9. c Gray0", +"0. c Gray0", +"q. c Gray0", +"w. c Gray0", +"e. c Gray0", +"r. c Gray0", +"t. c Gray0", +"y. c Gray0", +"u. c Gray0", +/* pixels */ +"Y Y o o K K K K K K K K K K K Y Y Y Y Y Y Y ", +"Y b . @ @ J J J J J J J J J p Y Y Y Y Y Y ", +"Y X . . + + + + # # # $ c M Y Y Y Y Y Y ", +"Y L U U O < X X X . @ q # - $ B Y Y Y Y Y Y ", +"Y L U U U O O 2 X . m J - $ N Y Y Y Y Y Y ", +"Y L U U U U S < I I I I I I I I I I I I I Y ", +"Y L U U U U O 2 I U U I U U U U U U U U I Y ", +"Y L U U U U O C I U U I U U U U U U U U I Y ", +"Y L U U U U H o I I I I I I I I I I I I I Y ", +"Y L U U U U 1 o I U U I U U U U U U U U I Y ", +"Y L U U U U 1 o I P P I P P P P P P P P I Y ", +"Y L U U U U h % I U U I U U U U U U U U I Y ", +"Y L U U U U 3 % I P P I P P P P P P P P I Y ", +"Y L U U U U 3 % I U U I U U U U U U U U I Y ", +"Y L U U U U A n I P P I P P P P P P P P I Y ", +"Y L U U U U r , I U U I U U U U U U U U I Y ", +"Y L U U U U V , I I I I I I I I I I I I I Y ", +"Y L U U U U w & > : L @ 5 = k j Y Y Y Y Y Y ", +"Y L U U U U ; & > e L @ 5 = v z Y Y Y Y Y Y ", +"Y L U U U d ; & : L + u a l F Y Y Y Y Y Y ", +"Y D 4 i 8 G s 0 X L 6 * * * x Y Y Y Y Y Y ", +"Y Y t 4 Z f g L L L L y 9 7 . Y Y Y Y Y Y Y " +}; diff --git a/kommander/editor/pics/small/dataview.xpm b/kommander/editor/pics/small/dataview.xpm new file mode 100644 index 00000000..aeb8a9cc --- /dev/null +++ b/kommander/editor/pics/small/dataview.xpm @@ -0,0 +1,156 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 128 2", +" c #ababbb", +". c #9696a3", +"X c #c2c2d3", +"o c #7e7e89", +"O c #7d7d89", +"+ c GhostWhite", +"@ c #dbdbef", +"# c #61616a", +"$ c #71717b", +"% c #dadaee", +"& c #414147", +"* c #d8d8ec", +"= c Gray56", +"- c #d9d9ed", +"; c #ddddf0", +": c Gray94", +"> c #c1c1d3", +", c #efeffe", +"< c #46464c", +"1 c #a1a1ad", +"2 c #acacbc", +"3 c #47474e", +"4 c #f4f4ff", +"5 c #f6f6ff", +"6 c #606069", +"7 c #ddddf1", +"8 c #b2b2b2", +"9 c #bcbcbc", +"0 c gainsboro", +"q c #38383d", +"w c #9595a3", +"e c #a5a5b0", +"r c #717171", +"t c #020202", +"y c #7b7b7b", +"u c #3e3e3e", +"i c #b0b0ba", +"p c #9a9aa7", +"a c #fefeff", +"s c Gray6", +"d c #3f3f45", +"f c #626262", +"g c #7e7e8a", +"h c Gray53", +"j c #464646", +"k c #7c7c7c", +"l c Gray15", +"z c #d5d5e9", +"x c #dddddd", +"c c #dcdcf0", +"v c #828184", +"b c #3d3d43", +"n c Gray9", +"m c #e9e9e9", +"M c #59595f", +"N c Gray4", +"B c #353535", +"V c #9797a5", +"C c #5c5c60", +"Z c Gray80", +"A c #9897a3", +"S c Gray93", +"D c #0b0b0b", +"F c #808080", +"G c Gray95", +"H c #f7f7ff", +"J c #45454b", +"K c #404046", +"L c #c1c1c1", +"P c #f3f3ff", +"I c #585858", +"U c Gray84", +"Y c #909090", +"T c #2a2a2a", +"R c #4b4b50", +"E c Gray23", +"W c Gray96", +"Q c #444444", +"! c #f9f9ff", +"~ c Gray35", +"^ c #111111", +"/ c Gray34", +"( c Gray44", +") c #e8e8eb", +"_ c #e5e5f4", +"` c #c2c2ca", +"' c Gray74", +"] c Gray52", +"[ c #9e9eab", +"{ c #f1f1fe", +"} c #fefefe", +"| c #f9f9f9", +" . c #414146", +".. c #f1f1ff", +"X. c #9f9fab", +"o. c #f2f2ff", +"O. c #515157", +"+. c #4a4a50", +"@. c Gray5", +"#. c Gray1", +"$. c #606068", +"%. c #dadaed", +"&. c #686868", +"*. c #706f77", +"=. c #9a9aa9", +"-. c #adadbc", +";. c #f5f5ff", +":. c #9494a1", +">. c #61616b", +",. c Gray77", +"<. c #82828e", +"1. c #62626b", +"2. c #adadbd", +"3. c #9696a4", +"4. c Gray0", +"5. c Gray100", +"6. c None", +"7. c Gray0", +"8. c Gray0", +"9. c Gray0", +"0. c Gray0", +"q. c Gray0", +"w. c Gray0", +"e. c Gray0", +"r. c Gray0", +"t. c Gray0", +"y. c Gray0", +"u. c Gray0", +/* pixels */ +"6.6.@ @ 2.2.2.2.2.2.2.2.2.2.2.6.6.6.6.6.6.6.", +"6.X =.. o o 1.1.1.1.1.1.1.1.1.*.6.6.6.6.6.6.", +"6. X X . . O O O O # # # & q .6.6.6.6.6.6.", +"6.3.5.5.+ 7 . o >.# 3 & +.6.6.6.6.6.6.", +"6.3.5.5.5.+ + ; X . g 1.3 & R 6.6.6.6.6.6.", +"6.3.5.5.5.5.! 7 4.4.4.4.4.4.4.4.4.4.4.4.4.6.", +"6.3.5.5.5.5.+ ; 4.5.5.5.5.5.5.5.5.5.5.5.4.6.", +"6.3.5.5.5.5.+ c 4.5.5.5.5.5.5.5.5.5.5.5.4.6.", +"6.3.5.5.5.5.H @ 4.U F j l T ~ Y x : S 5.4.6.", +"6.3.5.5.5.5.5 @ 4.N D @.4.4.u / n = ,.m 4.6.", +"6.3.5.5.5.5.5 @ 4.4.Q f 4.4.s ^ ( : ] 8 4.6.", +"6.3.5.5.5.5.;.% 4.#.I L E 4.t B 0 5.9 = 4.6.", +"6.3.5.5.5.5.4 % 4.' r k h &.y Z W | G } 4.6.", +"6.3.5.5.5.5.4 % 4.5.5.5.5.5.5.5.5.5.5.5.4.6.", +"6.3.5.5.5.5.P %.4.5.5.5.5.5.5.5.5.5.5.5.4.6.", +"6.3.5.5.5.5.o.- 4.5.5.5.5.5.5.5.5.5.5.5.4.6.", +"6.3.5.5.5.5...- 4.4.4.4.4.4.4.4.4.4.4.4.4.6.", +"6.3.5.5.5.5.{ * > 2 3.o 6 < d C 6.6.6.6.6.6.", +"6.3.5.5.5.5., * > -.3.o 6 < K O.6.6.6.6.6.6.", +"6.3.5.5.5.a , * X 2 3.O $.J b M 6.6.6.6.6.6.", +"6.e 1 i ` ) _ z X 3.<.$ $ $ v 6.6.6.6.6.6.", +"6.6.X.1 [ p V 3.3.3.3.w :.A . 6.6.6.6.6.6.6." +}; diff --git a/kommander/editor/pics/small/dateedit.png b/kommander/editor/pics/small/dateedit.png Binary files differnew file mode 100644 index 00000000..48286bec --- /dev/null +++ b/kommander/editor/pics/small/dateedit.png diff --git a/kommander/editor/pics/small/datepicker.png b/kommander/editor/pics/small/datepicker.png Binary files differnew file mode 100644 index 00000000..4bcc6450 --- /dev/null +++ b/kommander/editor/pics/small/datepicker.png diff --git a/kommander/editor/pics/small/datetimeedit.png b/kommander/editor/pics/small/datetimeedit.png Binary files differnew file mode 100644 index 00000000..68a56737 --- /dev/null +++ b/kommander/editor/pics/small/datetimeedit.png diff --git a/kommander/editor/pics/small/dial.png b/kommander/editor/pics/small/dial.png Binary files differnew file mode 100644 index 00000000..260033c2 --- /dev/null +++ b/kommander/editor/pics/small/dial.png diff --git a/kommander/editor/pics/small/disabled/adjustsize.png b/kommander/editor/pics/small/disabled/adjustsize.png Binary files differnew file mode 100644 index 00000000..56bbd3ec --- /dev/null +++ b/kommander/editor/pics/small/disabled/adjustsize.png diff --git a/kommander/editor/pics/small/disabled/connecttool.png b/kommander/editor/pics/small/disabled/connecttool.png Binary files differnew file mode 100644 index 00000000..173da192 --- /dev/null +++ b/kommander/editor/pics/small/disabled/connecttool.png diff --git a/kommander/editor/pics/small/disabled/editbreaklayout.png b/kommander/editor/pics/small/disabled/editbreaklayout.png Binary files differnew file mode 100644 index 00000000..17412eff --- /dev/null +++ b/kommander/editor/pics/small/disabled/editbreaklayout.png diff --git a/kommander/editor/pics/small/disabled/editcopy.png b/kommander/editor/pics/small/disabled/editcopy.png Binary files differnew file mode 100644 index 00000000..0392669a --- /dev/null +++ b/kommander/editor/pics/small/disabled/editcopy.png diff --git a/kommander/editor/pics/small/disabled/editcut.xpm b/kommander/editor/pics/small/disabled/editcut.xpm new file mode 100644 index 00000000..846287d2 --- /dev/null +++ b/kommander/editor/pics/small/disabled/editcut.xpm @@ -0,0 +1,32 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 4 1", +" c Gray100", +". c #848284", +"X c Gray0", +"o c none", +/* pixels */ +"ooooooo.ooooo.oooooooo", +"ooooooo. oooo. ooooooo", +"ooooooo. oooo. ooooooo", +"ooooooo. ooo.. ooooooo", +"ooooooo..ooo. ooooooo", +"oooooooo. oo. oooooooo", +"oooooooo..o.. oooooooo", +"ooooooooo... oooooooo", +"ooooooooo... ooooooooo", +"oooooooooo. ooooooooo", +"oooooooooo. oooooooooo", +"ooooooooo.o.oooooooooo", +"oooooooo.. ...oooooooo", +"ooooooo.o. . .ooooooo", +"oooooo.o . . oo.oooooo", +"ooooo.o o. . ooo.ooooo", +"oooo.o oo. . ooo. oooo", +"oooo. ooo. o.ooo. oooo", +"oooo. ooo. o. o.o oooo", +"oooo. oo.o oo..o ooooo", +"ooooo...o oooo oooooo", +"oooooo ooooooooooooo" +}; diff --git a/kommander/editor/pics/small/disabled/editgrid.png b/kommander/editor/pics/small/disabled/editgrid.png Binary files differnew file mode 100644 index 00000000..1eb30e07 --- /dev/null +++ b/kommander/editor/pics/small/disabled/editgrid.png diff --git a/kommander/editor/pics/small/disabled/edithlayout.png b/kommander/editor/pics/small/disabled/edithlayout.png Binary files differnew file mode 100644 index 00000000..bb347268 --- /dev/null +++ b/kommander/editor/pics/small/disabled/edithlayout.png diff --git a/kommander/editor/pics/small/disabled/edithlayoutsplit.png b/kommander/editor/pics/small/disabled/edithlayoutsplit.png Binary files differnew file mode 100644 index 00000000..be482a4a --- /dev/null +++ b/kommander/editor/pics/small/disabled/edithlayoutsplit.png diff --git a/kommander/editor/pics/small/disabled/editpaste.png b/kommander/editor/pics/small/disabled/editpaste.png Binary files differnew file mode 100644 index 00000000..90a56778 --- /dev/null +++ b/kommander/editor/pics/small/disabled/editpaste.png diff --git a/kommander/editor/pics/small/disabled/editslots.xpm b/kommander/editor/pics/small/disabled/editslots.xpm new file mode 100644 index 00000000..872b7974 --- /dev/null +++ b/kommander/editor/pics/small/disabled/editslots.xpm @@ -0,0 +1,44 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 16 1", +" c Gray100", +". c #fefefe", +"X c Gray99", +"o c #c89a6d", +"O c #c89544", +"+ c #c58d52", +"@ c #848284", +"# c Gray0", +"$ c none", +"% c Gray0", +"& c Gray0", +"* c Gray0", +"= c Gray0", +"- c Gray0", +"; c Gray0", +": c Gray0", +/* pixels */ +"$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$@@@$$$$$$$$$$$$$", +"$$$$$@@ @ $$$$$$$$$$$$", +"$$$$@@ @ $$$@@@$$$$$$", +"$$$@@ $@ $@@@ @@@$$$$", +"$$$@ $$@ $@ $ @ $$$", +"$$@@ $$$@ @@ $$$$@@$$$", +"@@@ $$$@ @ $$$$$@@@@", +"@@@ $$$$@ @ $$$$$$@@@@", +"$ @@$$$$@ @@$$$$$@@ ", +"$$$@ $$$@ $@ $$$$@ $$", +"$$$@@$$$@ $@@@$@@@ $$$", +"$$$$@@$$@ $$ @@@ $$$", +"$$$$$@@$@ $$$$ $$$$$", +"$$$$$$@@@ $$$$$$$$$$$$", +"$$$$$$$ $$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$$$$$$$", +"$$$$$$$$$$$$$$$$$$$$$$" +}; diff --git a/kommander/editor/pics/small/disabled/editvlayout.png b/kommander/editor/pics/small/disabled/editvlayout.png Binary files differnew file mode 100644 index 00000000..a5de1cdc --- /dev/null +++ b/kommander/editor/pics/small/disabled/editvlayout.png diff --git a/kommander/editor/pics/small/disabled/editvlayoutsplit.png b/kommander/editor/pics/small/disabled/editvlayoutsplit.png Binary files differnew file mode 100644 index 00000000..fdce42d8 --- /dev/null +++ b/kommander/editor/pics/small/disabled/editvlayoutsplit.png diff --git a/kommander/editor/pics/small/disabled/filesave.png b/kommander/editor/pics/small/disabled/filesave.png Binary files differnew file mode 100644 index 00000000..0f09208f --- /dev/null +++ b/kommander/editor/pics/small/disabled/filesave.png diff --git a/kommander/editor/pics/small/disabled/layout.xpm b/kommander/editor/pics/small/disabled/layout.xpm new file mode 100644 index 00000000..ccb40df0 --- /dev/null +++ b/kommander/editor/pics/small/disabled/layout.xpm @@ -0,0 +1,42 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 14 1", +" c #676767676767", +". c #6f6f6f6f6f6f", +"X c #777777777777", +"o c Gray50", +"O c Gray53", +"+ c Gray56", +"@ c #979797979797", +"# c #9f9f9f9f9f9f", +"$ c #a7a7a7a7a7a7", +"% c #afafafafafaf", +"& c #b7b7b7b7b7b7", +"* c Gray75", +"= c Gray78", +"- c Gray81", +/* pixels */ +"**=======****========*", +"==-------=***-=--=--==", +"=-=-=-===****=========", +"&%%%%%%%%%&&%%%%%%%%%&", +"%+OOOOOOO@%%#OOOOOOO+%", +"%OXXXXXXX+%%+XXXXXXXO$", +"&$#######$&&$#######$&", +"*&&&*&*&*&***&*&*&*&&*", +"**==*===******==*==***", +"==-----=-***=-=--=-===", +"*=-------*&**=--===-==", +"&&&&&&&&&%&&&&&%&&&%&&", +"%@+++++++@%%#+++++++@%", +"%+oooXoXo+%%@oooooooO%", +"&$#######$&&%#######$&", +"*&&&&&&&&&**&&&&&&&&&*", +"*********&************", +"*=-------***=-------=*", +"*=-------**&==-----===", +"&&&&&&&&&%&&&&&&&&&&&*", +"&#+++++++@%%#+++++++#%", +"%O.......O$%O... ...o$" +}; diff --git a/kommander/editor/pics/small/disabled/left.xpm b/kommander/editor/pics/small/disabled/left.xpm new file mode 100644 index 00000000..2d1323f4 --- /dev/null +++ b/kommander/editor/pics/small/disabled/left.xpm @@ -0,0 +1,32 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 4 1", +" c Gray100", +". c #848284", +"X c Gray0", +"o c none", +/* pixels */ +"oooooooooooooooooooooo", +"oooooooooooooooooooooo", +"oooooooo..oooooooooooo", +"ooooooo...oooooooooooo", +"oooooo....oooooooooooo", +"ooooo.....oooooooooooo", +"oooo... ..oooooooooooo", +"ooo...o ..oooooooooooo", +"oo...oo ..............", +"o...ooo ..............", +"...oooo ..", +"...oooooooooooooooo ..", +" ...oooo..............", +" ...oo ..............", +"o ...o .. o", +"oo ... ..oooooooooooo", +"ooo .....oooooooooooo", +"oooo ....oooooooooooo", +"ooooo ...oooooooooooo", +"oooooo ..oooooooooooo", +"ooooooo ooooooooooooo", +"oooooooooooooooooooooo" +}; diff --git a/kommander/editor/pics/small/disabled/redo.png b/kommander/editor/pics/small/disabled/redo.png Binary files differnew file mode 100644 index 00000000..198368f0 --- /dev/null +++ b/kommander/editor/pics/small/disabled/redo.png diff --git a/kommander/editor/pics/small/disabled/right.xpm b/kommander/editor/pics/small/disabled/right.xpm new file mode 100644 index 00000000..c9414419 --- /dev/null +++ b/kommander/editor/pics/small/disabled/right.xpm @@ -0,0 +1,32 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 4 1", +" c Gray100", +". c #848284", +"X c Gray0", +"o c none", +/* pixels */ +"oooooooooooooooooooooo", +"oooooooooooooooooooooo", +"oooooooooooo..oooooooo", +"oooooooooooo...ooooooo", +"oooooooooooo....oooooo", +"oooooooooooo.....ooooo", +"oooooooooooo.. ...oooo", +"oooooooooooo.. o...ooo", +".............. oo...oo", +".............. ooo...o", +".. oooo...", +".. oooooooooooooooo...", +"..............oooo... ", +".............. oo... ", +"o .. o... o", +"oooooooooooo.. ... oo", +"oooooooooooo..... ooo", +"oooooooooooo.... oooo", +"oooooooooooo... ooooo", +"oooooooooooo.. oooooo", +"ooooooooooooo ooooooo", +"oooooooooooooooooooooo" +}; diff --git a/kommander/editor/pics/small/disabled/searchfind.png b/kommander/editor/pics/small/disabled/searchfind.png Binary files differnew file mode 100644 index 00000000..5da4456a --- /dev/null +++ b/kommander/editor/pics/small/disabled/searchfind.png diff --git a/kommander/editor/pics/small/disabled/undo.png b/kommander/editor/pics/small/disabled/undo.png Binary files differnew file mode 100644 index 00000000..387cbe94 --- /dev/null +++ b/kommander/editor/pics/small/disabled/undo.png diff --git a/kommander/editor/pics/small/editbreaklayout.png b/kommander/editor/pics/small/editbreaklayout.png Binary files differnew file mode 100644 index 00000000..badbb8e7 --- /dev/null +++ b/kommander/editor/pics/small/editbreaklayout.png diff --git a/kommander/editor/pics/small/editcopy.png b/kommander/editor/pics/small/editcopy.png Binary files differnew file mode 100644 index 00000000..2f931cb2 --- /dev/null +++ b/kommander/editor/pics/small/editcopy.png diff --git a/kommander/editor/pics/small/editcut.png b/kommander/editor/pics/small/editcut.png Binary files differnew file mode 100644 index 00000000..a911482d --- /dev/null +++ b/kommander/editor/pics/small/editcut.png diff --git a/kommander/editor/pics/small/editdelete.xpm b/kommander/editor/pics/small/editdelete.xpm new file mode 100644 index 00000000..2221114f --- /dev/null +++ b/kommander/editor/pics/small/editdelete.xpm @@ -0,0 +1,226 @@ +/* XPM */ +static char * editdelete_xpm[] = { +"22 22 201 2", +" c None", +". c #454545", +"+ c #8B8B8B", +"@ c #282828", +"# c #464646", +"$ c #6F6F6F", +"% c #F7F7F7", +"& c #FDFDFD", +"* c #5A5A5A", +"= c #C2C2C2", +"- c #424242", +"; c #F0F0F0", +"> c #D7D7D7", +", c #CDCDCD", +"' c #EBEBEB", +") c #CFCFCF", +"! c #AAAAAA", +"~ c #E5E5E5", +"{ c #686868", +"] c #F5F5F5", +"^ c #C9C9C9", +"/ c #313131", +"( c #F4F4F4", +"_ c #DCDCDC", +": c #E0E0E0", +"< c #E3E3E3", +"[ c #D0D0D0", +"} c #656363", +"| c #B5B5B5", +"1 c #A8A8A8", +"2 c #252525", +"3 c #F1F1F1", +"4 c #B8B8B8", +"5 c #E7E7E7", +"6 c #B9B9B9", +"7 c #D2D2D2", +"8 c #B3B3B3", +"9 c #E8E8E8", +"0 c #9E9D9D", +"a c #7A797A", +"b c #676767", +"c c #4E4E4E", +"d c #161616", +"e c #A5A4A4", +"f c #B4B4B4", +"g c #DFDFDF", +"h c #8F8E8E", +"i c #9F9F9E", +"j c #F2F0EE", +"k c #E7E2DF", +"l c #D1CBC6", +"m c #ACA39D", +"n c #211F1E", +"o c #F2F2F2", +"p c #C1C1C1", +"q c #D8D7D7", +"r c #BEBEBE", +"s c #EEEEEE", +"t c #D1D1D1", +"u c #C8C6C5", +"v c #CCC8C4", +"w c #D1CBC5", +"x c #DCD2CA", +"y c #E4D7CD", +"z c #2E2B29", +"A c #EFEEEE", +"B c #E2DEDC", +"C c #D7D2CE", +"D c #D6CEC8", +"E c #DBD1C8", +"F c #E4D6CC", +"G c #E6D6C8", +"H c #2E2A27", +"I c #ECECEC", +"J c #A4A3A3", +"K c #CDCDCC", +"L c #A1A09F", +"M c #BEBBB9", +"N c #E4DED8", +"O c #BAB3AD", +"P c #9D958E", +"Q c #B6ACA2", +"R c #BAACA1", +"S c #E3D0C0", +"T c #2D2926", +"U c #939291", +"V c #C5C2C0", +"W c #95918E", +"X c #9E9893", +"Y c #B8AFA7", +"Z c #8F867F", +"` c #978D83", +" . c #CFBEAF", +".. c #E1CCB9", +"+. c #2D2824", +"@. c #F3F3F3", +"#. c #D1D0CF", +"$. c #DFDBD8", +"%. c #CEC8C2", +"&. c #C5BEB7", +"*. c #D3C8BE", +"=. c #C3B6AC", +"-. c #D1C1B4", +";. c #D4C2B3", +">. c #D2BDAB", +",. c #DFC5B0", +"'. c #2C2723", +"). c #000000", +"!. c #6E6E6E", +"~. c #EFEDEC", +"{. c #C5C1BE", +"]. c #D8D1CC", +"^. c #C4BBB4", +"/. c #BAB0A7", +"(. c #CABCB1", +"_. c #B7A89C", +":. c #C8B6A7", +"<. c #CCB8A5", +"[. c #C8B19D", +"}. c #DBBFA7", +"|. c #28231E", +"1. c #333333", +"2. c #6E6E6F", +"3. c #808080", +"4. c #6D6C6B", +"5. c #E9E4E0", +"6. c #99938F", +"7. c #9B948E", +"8. c #A39991", +"9. c #9E9289", +"0. c #AEA094", +"a. c #BAA99A", +"b. c #9A897B", +"c. c #9D8A7A", +"d. c #AC9582", +"e. c #D9B99E", +"f. c #38332E", +"g. c #999999", +"h. c #505050", +"i. c #2D2D2D", +"j. c #A4A4A4", +"k. c #5E5E5F", +"l. c #4B4B4B", +"m. c #6C6A67", +"n. c #F2EAE2", +"o. c #F6EAE1", +"p. c #F4E6DB", +"q. c #F2E2D3", +"r. c #F1DECD", +"s. c #EFD8C5", +"t. c #EDD4BE", +"u. c #EBCFB7", +"v. c #EACAB0", +"w. c #E8C5A8", +"x. c #D7B496", +"y. c #2D2621", +"z. c #818181", +"A. c #7A7A7A", +"B. c #707070", +"C. c #4D4D4D", +"D. c #444444", +"E. c #4A4A4A", +"F. c #575552", +"G. c #B2AAA3", +"H. c #B1A69E", +"I. c #B0A399", +"J. c #AD9D90", +"K. c #AC998A", +"L. c #AA9685", +"M. c #A9927F", +"N. c #A88F7A", +"O. c #A68B73", +"P. c #A3856C", +"Q. c #25201B", +"R. c #595959", +"S. c #3A3A3A", +"T. c #434343", +"U. c #3F3F3F", +"V. c #292929", +"W. c #040404", +"X. c #2B2B2B", +"Y. c #545454", +"Z. c #6D6D6D", +"`. c #3D3D3D", +" + c #212121", +".+ c #898989", +"++ c #272727", +"@+ c #010101", +"#+ c #787878", +"$+ c #6A6A6A", +"%+ c #606060", +"&+ c #0B0B0B", +"*+ c #555555", +"=+ c #525252", +"-+ c #868686", +";+ c #515151", +">+ c #0C0C0C", +",+ c #777777", +"'+ c #7C7C7C", +")+ c #343434", +"!+ c #171717", +" ", +" . + + + + + + + @ # ", +" $ % & & & & & & * = - ", +" $ ; > , ' ) ! ~ { ] ^ / ", +" $ ( _ ' : < [ ; } | [ 1 2 ", +" $ 3 4 5 6 7 8 9 0 a b c d ", +" $ ' e f g ^ h i j k l m n ", +" $ o p q r s t u v w x y z ", +" $ ( 7 < [ A B C D E F G H ", +" $ I J K L M N O P Q R S T ", +" $ s 0 U V W X Y Z ` ...+. ", +" $ @.#.$.%.&.*.=.-.;.>.,.'. ", +" ).!.~.{.].^./.(._.:.<.[.}.|.). ", +" 1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i. ", +" ).j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.# z.A. ", +" B.C.D.E.F.G.H.I.0.J.K.L.M.N.O.P.Q.- R.$ S.", +" A.T.U.V.).).).).).).).).).).).).W.X.Y.Z.`.", +" +.+++@+).).).).).).).).).).).).).W.. #+ ", +" $+%+. ).).).).).).).).).).).).&+*+{ =+ ", +" X.D.-+-+;+>+>+>+>+>+>+>+,+-+'+)+ ", +" ).).D.A.A.A.A.A.A.A.!+).). ", +" "}; diff --git a/kommander/editor/pics/small/editgrid.png b/kommander/editor/pics/small/editgrid.png Binary files differnew file mode 100644 index 00000000..f2b18e8a --- /dev/null +++ b/kommander/editor/pics/small/editgrid.png diff --git a/kommander/editor/pics/small/edithlayout.png b/kommander/editor/pics/small/edithlayout.png Binary files differnew file mode 100644 index 00000000..68e3c76a --- /dev/null +++ b/kommander/editor/pics/small/edithlayout.png diff --git a/kommander/editor/pics/small/edithlayoutsplit.png b/kommander/editor/pics/small/edithlayoutsplit.png Binary files differnew file mode 100644 index 00000000..86c2cfdb --- /dev/null +++ b/kommander/editor/pics/small/edithlayoutsplit.png diff --git a/kommander/editor/pics/small/editlower.xpm b/kommander/editor/pics/small/editlower.xpm new file mode 100644 index 00000000..43ca1ebc --- /dev/null +++ b/kommander/editor/pics/small/editlower.xpm @@ -0,0 +1,113 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 85 1", +" c #dede5a5a3939", +". c #ffff5a5a3939", +"X c #ffff63633939", +"o c #dede6b6b5252", +"O c #d6d673735a5a", +"+ c #cece73736363", +"@ c #cece7b7b6b6b", +"# c #c6c67b7b7373", +"$ c #d6d673736363", +"% c #e7e763634242", +"& c #e7e763634a4a", +"* c #efef63634242", +"= c #efef7b7b5a5a", +"- c #f7f76b6b4a4a", +"; c #ffff63634242", +": c #ffff6b6b4242", +"> c #ffff6b6b4a4a", +", c #ffff73734a4a", +"< c #ffff73735252", +"1 c #ffff7b7b5a5a", +"2 c #949484847b7b", +"3 c #bdbd84847b7b", +"4 c #cece84847373", +"5 c #cece8c8c7b7b", +"6 c #d6d684847373", +"7 c #dede8c8c7b7b", +"8 c #e7e784846b6b", +"9 c #efef84846363", +"0 c #efef8c8c7373", +"q c #efef94947b7b", +"w c #ffff84846363", +"e c #ffff8c8c7373", +"r c #ffff94947b7b", +"t c #94948c8c8c8c", +"y c #9c9c8c8c8c8c", +"u c #9c9c94949494", +"i c Gray61", +"p c #b5b594949494", +"a c #bdbda5a59c9c", +"s c #a5a5a5a5a5a5", +"d c #adada5a5a5a5", +"f c #b5b5adadadad", +"g c #bdbdadada5a5", +"h c #bdbdb5b5b5b5", +"j c #bdbdbdbdb5b5", +"k c Gray74", +"l c #cece8c8c8484", +"z c #c6c694948c8c", +"x c #cece94948c8c", +"c c #cece9c9c8c8c", +"v c #c6c69c9c9494", +"b c #c6c69c9c9c9c", +"n c #d6d69c9c8c8c", +"m c #cecea5a59c9c", +"M c #c6c6adada5a5", +"N c #c6c6b5b5adad", +"B c #c6c6b5b5b5b5", +"V c #c6c6bdbdbdbd", +"C c #efef9c9c8484", +"Z c #efef9c9c8c8c", +"A c #efefa5a59494", +"S c #c0c0c0c0c0c0", +"D c #c6c6c6c6c6c6", +"F c #cecec6c6c6c6", +"G c #cecececec6c6", +"H c #d6d6cececece", +"J c #d6d6d6d6cece", +"K c #deded6d6d6d6", +"L c #dedededed6d6", +"P c #e7e7deded6d6", +"I c #e7e7dededede", +"U c #efefe7e7dede", +"Y c #ffffefefdede", +"T c #e7e7e7e7e7e7", +"R c #efefe7e7e7e7", +"E c #efefefefe7e7", +"W c #f7f7efefe7e7", +"Q c #ffffefefe7e7", +"! c #f7f7f7f7efef", +"~ c #fffff7f7efef", +"^ c Gray97", +"/ c #fffff7f7f7f7", +"( c #fffffffff7f7", +") c Gray100", +"_ c None", +/* pixels */ +"+&oO+$@#345zpzvk______", +"=,<>>>,>:>>::> i______", +"8>>>,>>,>,>>>,%u______", +"6:>>>>>>>>>>>>%t______", +"7:>>>>>>>>>>>,*t______", +"l:>>:>>:>>:>>>*y______", +"x>:>>>:;XXXXXX.2______", +"c:>>::1AZCCq009ykkkhhk", +"a;:>:;r)))^^(^^!ERUITs", +"m>:>:Xe((((((((((((()d", +"g>:;:;w(/~~~/~/~~/~~)d", +"f-;>:;1~(~//~~~~/~(~)s", +"N-:;;;<Q(~~~/~/~~~~~)f", +"Bo;:;;<Y/~/~~~~~~~~~(j", +"VMmbvnnU(~~~~~~~~~~~)j", +"______kT/~~~~~~~~~~~(k", +"______DK(~~~~~~~~~~~)j", +"______kI~~~~~~~~~~~~(k", +"______kK~~~~~~~~~!~~(j", +"______DG/~~~!~~!~~~~(V", +"_______K~~~~~~~~~~~~(V", +"_______kGDkHFDKJHPKLWF" +}; diff --git a/kommander/editor/pics/small/editpaste.png b/kommander/editor/pics/small/editpaste.png Binary files differnew file mode 100644 index 00000000..e395fc76 --- /dev/null +++ b/kommander/editor/pics/small/editpaste.png diff --git a/kommander/editor/pics/small/editraise.xpm b/kommander/editor/pics/small/editraise.xpm new file mode 100644 index 00000000..4e563adf --- /dev/null +++ b/kommander/editor/pics/small/editraise.xpm @@ -0,0 +1,110 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 82 1", +" c #adad5a5a4a4a", +". c #b5b55a5a4242", +"X c #bdbd5a5a4242", +"o c #adad63634a4a", +"O c #a5a563635252", +"+ c #adad63635252", +"@ c #d6d652523939", +"# c #d6d65a5a3939", +"$ c #dede52523939", +"% c #e7e74a4a2929", +"& c #ffff5a5a3131", +"* c #ffff5a5a3939", +"= c #ffff63633939", +"- c #cece5a5a4242", +"; c #d6d65a5a4242", +": c #d6d66b6b5a5a", +"> c #dede6b6b5252", +", c #d6d673735a5a", +"< c #cece73736363", +"1 c #d6d673736363", +"2 c #dede7b7b6363", +"3 c #e7e763634a4a", +"4 c #efef73735252", +"5 c #f7f76b6b4a4a", +"6 c #ffff63634242", +"7 c #ffff6b6b4242", +"8 c #ffff6b6b4a4a", +"9 c #ffff73734a4a", +"0 c #f7f773735252", +"q c #bdbd84847b7b", +"w c #c6c684847373", +"e c #c6c68c8c7b7b", +"r c #d6d684847373", +"t c #dede8c8c7b7b", +"y c #e7e784846b6b", +"u c #bdbd8c8c8484", +"i c #b5b594948c8c", +"p c #bdbd9c9c9c9c", +"a c #a5a5a5a5a5a5", +"s c #adada5a5a5a5", +"d c Gray68", +"f c #bdbdadada5a5", +"g c Gray71", +"h c #bdbdb5b5b5b5", +"j c #bdbdbdbdb5b5", +"k c Gray74", +"l c #bdbdc6c6c6c6", +"z c #cece8c8c8484", +"x c #c6c694948c8c", +"c c #cece94948484", +"v c #cece9c9c8c8c", +"b c #cecea5a59c9c", +"n c #c6c6adada5a5", +"m c #c6c6adadadad", +"M c #c6c6b5b5adad", +"N c #c6c6bdbdbdbd", +"B c #f7f7a5a58c8c", +"V c #ffffadad9c9c", +"C c #ffffb5b5a5a5", +"Z c #c6c6c6c6bdbd", +"A c #d6d6c6c6b5b5", +"S c #ffffc6c6b5b5", +"D c #ffffcecebdbd", +"F c #c0c0c0c0c0c0", +"G c #c6c6c6c6c6c6", +"H c #cecec6c6c6c6", +"J c #cecececec6c6", +"K c #cececececece", +"L c #d6d6cececece", +"P c #dedececec6c6", +"I c #deded6d6cece", +"U c #deded6d6d6d6", +"Y c #e7e7deded6d6", +"T c #efefdeded6d6", +"R c #ffffd6d6cece", +"E c #e7e7e7e7dede", +"W c #efefefefe7e7", +"Q c #fffff7f7efef", +"! c #fffff7f7f7f7", +"~ c #fffffffff7f7", +"^ c Gray100", +"/ c None", +/* pixels */ +",3>:<1<wqweuixfN//////", +"09987988787666Ok//////", +"28888888888999+h//////", +"y7888888888888og//////", +"r7888888878889 h//////", +"t7887887888789.g//////", +"z8787878787878Xgk/////", +"c7878878878787-gHZNjkd", +"v7878787787877;E^~~~^a", +"p7686786868687#U~~!!^s", +"b7777867777768@I~QQQ^s", +"f8687686868687@I~!!Q^a", +"n6766767676767$P~QQQ^g", +"m6676676667687$P~QQQ~j", +"g24058666=***&%A~QQQ^k", +"kjNhgMmnRDSCCVBT!QQQ^j", +"///////l~^~^^~^!QQQQ~j", +"///////JQQQQQQQQQQQQ~k", +"///////kQQQQQQQQQQQQ~j", +"///////kQQQQQQQQQQQQ~N", +"///////NQQQQQQQQQQQQ~Z", +"///////kkGkGKZLUKUYUWH" +}; diff --git a/kommander/editor/pics/small/editslots.png b/kommander/editor/pics/small/editslots.png Binary files differnew file mode 100644 index 00000000..b86bddb6 --- /dev/null +++ b/kommander/editor/pics/small/editslots.png diff --git a/kommander/editor/pics/small/editvlayout.png b/kommander/editor/pics/small/editvlayout.png Binary files differnew file mode 100644 index 00000000..f4cd3f9c --- /dev/null +++ b/kommander/editor/pics/small/editvlayout.png diff --git a/kommander/editor/pics/small/editvlayoutsplit.png b/kommander/editor/pics/small/editvlayoutsplit.png Binary files differnew file mode 100644 index 00000000..0180cf5a --- /dev/null +++ b/kommander/editor/pics/small/editvlayoutsplit.png diff --git a/kommander/editor/pics/small/exec.png b/kommander/editor/pics/small/exec.png Binary files differnew file mode 100644 index 00000000..14dc7455 --- /dev/null +++ b/kommander/editor/pics/small/exec.png diff --git a/kommander/editor/pics/small/filenew.png b/kommander/editor/pics/small/filenew.png Binary files differnew file mode 100644 index 00000000..9520080e --- /dev/null +++ b/kommander/editor/pics/small/filenew.png diff --git a/kommander/editor/pics/small/fileopen.png b/kommander/editor/pics/small/fileopen.png Binary files differnew file mode 100644 index 00000000..30052901 --- /dev/null +++ b/kommander/editor/pics/small/fileopen.png diff --git a/kommander/editor/pics/small/filesave.png b/kommander/editor/pics/small/filesave.png Binary files differnew file mode 100644 index 00000000..c137165b --- /dev/null +++ b/kommander/editor/pics/small/filesave.png diff --git a/kommander/editor/pics/small/form.xpm b/kommander/editor/pics/small/form.xpm new file mode 100644 index 00000000..02880b55 --- /dev/null +++ b/kommander/editor/pics/small/form.xpm @@ -0,0 +1,67 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 39 1", +" c #4a4a9f9fffff", +". c #53539f9ff6f6", +"X c #4f4fa4a4ffff", +"o c #5656a7a7fefe", +"O c #5757adadffff", +"+ c #5e5eafafffff", +"@ c #5e5eb2b2ffff", +"# c #6161aeaef7f7", +"$ c #6060afaff8f8", +"% c #bdbdc5c5c1c1", +"& c #c0c0c0c0c0c0", +"* c #c6c6d0d0cccc", +"= c #cdcdd7d7d3d3", +"- c #d1d1dcdcd7d7", +"; c #d4d4dfdfdbdb", +": c #d7d7e4e4dfdf", +"> c #dadae5e5dfdf", +", c #cecee2e2e8e8", +"< c #d2d2e7e7efef", +"1 c #d4d4e8e8efef", +"2 c #dddde7e7e2e2", +"3 c #dfdfecece7e7", +"4 c #d7d7ececf4f4", +"5 c #dadaefeff6f6", +"6 c #dcdcf0f0f7f7", +"7 c #dedef0f0fafa", +"8 c #e2e2eeeee7e7", +"9 c #e4e4efefeaea", +"0 c #e7e7f3f3eeee", +"q c #e8e8f0f0e6e6", +"w c #efeff7f7ecec", +"e c #e0e0f1f1fdfd", +"r c #ececf7f7f2f2", +"t c #efeffcfcf6f6", +"y c #f1f1fafaefef", +"u c #f7f7fffff6f6", +"i c #f9f9fffff7f7", +"p c Gray100", +"a c None", +/* pixels */ +"#$$$$$$$$$$+#+.+.+.+.#", +"#+++O+oOoooXXoXoX .", +"#@++++++++o+ooooooooo.", +"<e777757444544414<<4,;", +"ypiuuuuuuuuyyyywwwwqw8", +"wtuttttrrr6wr00000999>", +"9tttrtrrrrw0w00090999:", +"2utrtrrrw6w0009098999;", +"2trrrr6w6w00090899338-", +">trrrww0w000908993838-", +";tw6w6009090998938333;", +">w6w0w000999989833223-", +"2rw009099998333322323=", +">009090899188332323>2=", +";090998988832322322>3*", +"-0098198383323232>>>2*", +"-08388833332222:>:2::=", +"*08883332323222:>::::=", +"*9833323322>22:>>>:::*", +";9232323>>:2:::::;:;:*", +"-323222>222:>:::;:;->a", +"*2>:>:::;:;;;;-;----;%" +}; diff --git a/kommander/editor/pics/small/frame.png b/kommander/editor/pics/small/frame.png Binary files differnew file mode 100644 index 00000000..c070b9c4 --- /dev/null +++ b/kommander/editor/pics/small/frame.png diff --git a/kommander/editor/pics/small/groupbox.png b/kommander/editor/pics/small/groupbox.png Binary files differnew file mode 100644 index 00000000..4025b4dc --- /dev/null +++ b/kommander/editor/pics/small/groupbox.png diff --git a/kommander/editor/pics/small/help.png b/kommander/editor/pics/small/help.png Binary files differnew file mode 100644 index 00000000..35394010 --- /dev/null +++ b/kommander/editor/pics/small/help.png diff --git a/kommander/editor/pics/small/home.xpm b/kommander/editor/pics/small/home.xpm new file mode 100644 index 00000000..f88530dc --- /dev/null +++ b/kommander/editor/pics/small/home.xpm @@ -0,0 +1,160 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 132 2", +" c Gray0", +". c #080800000000", +"X c #080808080000", +"o c #080810100808", +"O c #101010100000", +"+ c #292921210000", +"@ c #313129290000", +"# c #393929290000", +"$ c #393931310000", +"% c #393939390808", +"& c #393939391010", +"* c #393931312929", +"= c #313139393131", +"- c #4a4a42420808", +"; c #525252521818", +": c #424242423131", +"> c #424242423939", +", c #42424a4a3131", +"< c #52525a5a2121", +"1 c #636352520000", +"2 c #63635a5a0808", +"3 c #6b6b5a5a0000", +"4 c #6b6b5a5a1010", +"5 c #737373731818", +"6 c #63636b6b2121", +"7 c #6b6b73732121", +"8 c #737373732929", +"9 c #73737b7b2929", +"0 c #7b7b7b7b2121", +"q c #7b7b7b7b2929", +"w c #42424a4a4a4a", +"e c #4a4a42424242", +"r c Gray29", +"t c #4a4a52525252", +"y c #52524a4a4a4a", +"u c #5a5a52524a4a", +"i c Gray32", +"p c #5a5a5a5a5252", +"a c #525263635a5a", +"s c #636363635a5a", +"d c Gray39", +"f c #63636b6b6363", +"g c #6b6b6b6b6363", +"h c Gray42", +"j c #73736b6b6363", +"k c #73736b6b6b6b", +"l c #7b7b73736b6b", +"z c Gray45", +"x c #7b7b73737373", +"c c #7b7b7b7b7373", +"v c #7b7b7b7b7b7b", +"b c #7b7b84847b7b", +"n c #8c8c7b7b0808", +"m c #84847b7b1818", +"M c #8c8c7b7b1010", +"N c #84847b7b7373", +"B c #8c8c84841818", +"V c #949484840808", +"C c #848484842929", +"Z c #848484843939", +"A c #949484842121", +"S c #a5a594942121", +"D c #adad9c9c2121", +"F c #b5b5a5a50808", +"G c #b5b5a5a51818", +"H c #b5b5a5a52121", +"J c #bdbdadad2929", +"K c #bdbdadad3131", +"L c #8c8c94945252", +"P c #949494944a4a", +"I c #949494945252", +"U c #94949c9c5a5a", +"Y c #8c8c8c8c6b6b", +"T c #848484847b7b", +"R c #8c8c84847b7b", +"E c #9c9c9c9c6363", +"W c #9c9c9c9c6b6b", +"Q c #a5a5a5a57373", +"! c #cecebdbd2121", +"~ c #c6c6b5b53131", +"^ c #c6c6b5b53939", +"/ c #cecec6c63131", +"( c #d6d6c6c63131", +") c #e7e7d6d61818", +"_ c #f7f7dede1818", +"` c #e7e7d6d63939", +"' c #efefdede3131", +"] c #efefdede3939", +"[ c #f7f7e7e71818", +"{ c #ffffe7e71818", +"} c #848484848484", +"| c #84848c8c8484", +" . c #8c8c84848484", +".. c #8c8c8c8c8484", +"X. c Gray55", +"o. c #94948c8c8484", +"O. c #949494948484", +"+. c #949494948c8c", +"@. c #9c9c94948c8c", +"#. c #9c9c9c9c8c8c", +"$. c #9c9c9c9c9494", +"%. c Gray61", +"&. c #9c9ca5a59c9c", +"*. c #9c9cadada5a5", +"=. c #a5a594948c8c", +"-. c #a5a59c9c9494", +";. c #a5a59c9c9c9c", +":. c #a5a5a5a59c9c", +">. c #adada5a59c9c", +",. c #b5b5a5a59c9c", +"<. c #a5a5a5a5a5a5", +"1. c #a5a5adada5a5", +"2. c #a5a5adadadad", +"3. c #adadadada5a5", +"4. c Gray68", +"5. c #adadb5b5adad", +"6. c #a5a5bdbdb5b5", +"7. c #adadb5b5b5b5", +"8. c #b5b5adada5a5", +"9. c Gray71", +"0. c #b5b5bdbdb5b5", +"q. c #bdbdb5b5b5b5", +"w. c #bdbdbdbdb5b5", +"e. c Gray74", +"r. c #adadc6c6bdbd", +"t. c #bdbdc6c6bdbd", +"y. c #c0c0c0c0c0c0", +"u. c #c6c6d6d6cece", +"i. c #c6c6deded6d6", +"p. c #cecededed6d6", +"a. c #d6d6e7e7e7e7", +"s. c None", +/* pixels */ +"s.s.s.s.s.s.s.s.s.s.3.%.s.s.s.s.s.s.s.s.s.s.", +"s.s.s.s.s.s.s.s.s.9.e.| 4.s.s.s.s.s.s.s.s.s.", +"s.s.s.s.s.s.s.s.e.:.p.&.g e.s.s.s.s.s.s.s.s.", +"s.s.s.s.s.s.s.s.<.2.5.R t } s.s.s.s.s.s.s.s.", +"s.s.s.s.s.s.s.9.&.6.&. .d t %.s.s.s.s.s.s.s.", +"s.s.s.s.s.s.e.;.>.1.i.&.l p y 9.s.s.s.s.s.s.", +"s.s.s.s.s.s.%.-.-.3.a.>.N s e d e.s.s.s.s.s.", +"s.s.s.s.s.4.| 6.t.2.:.:.N i a w X.s.s.s.s.s.", +"s.s.s.s.e.+.*.r.5.1.%...b s f a = <.s.s.s.s.", +"s.s.s.e.$.=.>.@.;.0.u.-.:.k j u * r 9.s.s.s.", +"s.s.s.4.o.1.8.>.3.u.a.,.8.x g g y = } s.s.s.", +"s.s.s.e.7.1.v k z b T R c s : * z 4.e.s.s.s.", +"s.s.s.s.s.9.4 1 - $ + O O . O X c s.s.s.s.s.", +"s.s.s.s.s.w.! [ ] ` / D M 2 @ O c s.s.s.s.s.", +"s.s.s.s.s.e.~ ) ' ] ] ( H V 3 @ c s.s.s.s.s.", +"s.s.s.s.s.e.~ ) ' K A S G M 1 @ v s.s.s.s.s.", +"s.s.s.s.s.e.^ _ D O O 4 n 2 $ T s.s.s.s.s.", +"s.s.s.s.s.q.J _ m O X @ M 3 # > h v s.s.s.", +"s.s.s.s.e.Y F { B X % M 3 @ . O , s.s.s.", +"s.s.s.t.O.6 B ) B o & < 0 n 2 - ; 9 Y s.s.s.", +"s.s.s.#.7 9 q C C 8 9 9 9 5 8 q C q O.s.s.s.", +"s.s.s.Q W W W E E U U L I L P P P Z :.s.s.s." +}; diff --git a/kommander/editor/pics/small/iconview.png b/kommander/editor/pics/small/iconview.png Binary files differnew file mode 100644 index 00000000..13b8f153 --- /dev/null +++ b/kommander/editor/pics/small/iconview.png diff --git a/kommander/editor/pics/small/image.xpm b/kommander/editor/pics/small/image.xpm new file mode 100644 index 00000000..f122e2b4 --- /dev/null +++ b/kommander/editor/pics/small/image.xpm @@ -0,0 +1,226 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 198 2", +" c Gray3", +". c #080808081010", +"X c #101010101010", +"o c #101018181818", +"O c #181818181818", +"+ c #181818182121", +"@ c #181821212121", +"# c #181821212929", +"$ c #292921211010", +"% c #292921211818", +"& c Gray13", +"* c #212121212929", +"= c Gray16", +"- c #313131313131", +"; c #313139394242", +": c #393942424242", +"> c #424231312929", +", c #424242423131", +"< c #424242423939", +"1 c #4a4a42423939", +"2 c #4a4a4a4a3131", +"3 c #4a4a4a4a3939", +"4 c #63635a5a3939", +"5 c #6b6b5a5a3939", +"6 c #4a4a4a4a4242", +"7 c Gray29", +"8 c #52524a4a4a4a", +"9 c #5a5a4a4a4242", +"0 c #5a5a52524a4a", +"q c #5a5a5a5a4242", +"w c #5a5a5a5a4a4a", +"e c Gray32", +"r c #5a5a52525252", +"t c #5a5a5a5a5252", +"y c #5a5a5a5a5a5a", +"u c #4a4a52526363", +"i c #63635a5a5a5a", +"p c #6b6b6b6b5252", +"a c #737363635a5a", +"s c #7b7b73735252", +"d c Gray39", +"f c #6b6b63636363", +"g c #6b6b6b6b6363", +"h c Gray42", +"j c #6b6b73737b7b", +"k c #73736b6b6363", +"l c #73736b6b6b6b", +"z c #737373736b6b", +"x c #7b7b73737373", +"c c #7b7b7b7b7b7b", +"v c #6b6b73738484", +"b c #84847b7b5a5a", +"n c #a5a573735252", +"m c #b5b57b7b5252", +"M c #9c9c84845252", +"N c #9c9c84845a5a", +"B c #848484846b6b", +"V c #8c8c84846b6b", +"C c #949484847b7b", +"Z c #94948c8c7b7b", +"A c #9c9c8c8c7b7b", +"S c #949494947373", +"D c #9c9ca5a57b7b", +"F c #adad84845a5a", +"G c #bdbd8c8c5a5a", +"H c #a5a58c8c6363", +"J c #adad8c8c6363", +"K c #adad9c9c6b6b", +"L c #a5a59c9c7b7b", +"P c #bdbda5a56b6b", +"I c #b5b5a5a57373", +"U c #bdbdadad7373", +"Y c #cecea5a56b6b", +"T c #ceceadad6b6b", +"R c #c6c6adad7b7b", +"E c #ceceadad7b7b", +"W c #ceceb5b57373", +"Q c #848484848484", +"! c #848484848c8c", +"~ c #8c8c8c8c8484", +"^ c #8c8c8c8c9494", +"/ c #8c8c94948c8c", +"( c #8c8c94949c9c", +") c #949494948c8c", +"_ c #9c9c9c9c8c8c", +"` c #949494949c9c", +"' c #9c9c94949494", +"] c Gray61", +"[ c #9c9ca5a5adad", +"{ c #9c9ca5a5b5b5", +"} c #a5a594948484", +"| c #a5a59c9c8c8c", +" . c #a5a59c9c9494", +".. c #a5a59c9c9c9c", +"X. c #a5a5a5a58c8c", +"o. c #a5a5a5a59c9c", +"O. c #adada5a59c9c", +"+. c #b5b5a5a58c8c", +"@. c #bdbdadad9494", +"#. c #b5b5b5b59c9c", +"$. c #bdbdbdbd9c9c", +"%. c #a5a5a5a5a5a5", +"&. c #a5a5a5a5adad", +"*. c #a5a5adadadad", +"=. c #adadadada5a5", +"-. c Gray68", +";. c #adadadadb5b5", +":. c #b5b5adada5a5", +">. c #b5b5adadadad", +",. c #b5b5b5b5adad", +"<. c #bdbdb5b5a5a5", +"1. c #bdbdbdbda5a5", +"2. c Gray71", +"3. c #b5b5bdbdb5b5", +"4. c #bdbdb5b5b5b5", +"5. c #bdbdbdbdb5b5", +"6. c Gray74", +"7. c #adadbdbdc6c6", +"8. c #b5b5bdbdc6c6", +"9. c #bdbdc6c6b5b5", +"0. c #bdbdc6c6c6c6", +"q. c #ceceb5b58484", +"w. c #d6d6bdbd8484", +"e. c #dedebdbd8484", +"r. c #d6d6b5b59494", +"t. c #dedeb5b59494", +"y. c #c6c6bdbda5a5", +"u. c #cecebdbda5a5", +"i. c #efefb5b58484", +"p. c #efefbdbd8484", +"a. c #efefbdbd8c8c", +"s. c #e7e7b5b59494", +"d. c #efefbdbd9494", +"f. c #f7f7bdbd8484", +"g. c #f7f7bdbd8c8c", +"h. c #c6c6c6c68c8c", +"j. c #d6d6c6c68c8c", +"k. c #deded6d68c8c", +"l. c #deded6d69494", +"z. c #c6c6c6c6adad", +"x. c #dedededea5a5", +"c. c #efefc6c68c8c", +"v. c #e7e7c6c69494", +"b. c #e7e7dede9494", +"n. c #e7e7dede9c9c", +"m. c #f7f7cece8c8c", +"M. c #f7f7d6d69c9c", +"N. c #e7e7dedeadad", +"B. c #e7e7e7e7a5a5", +"V. c #efefe7e7a5a5", +"C. c #efefe7e7adad", +"Z. c #efefefefa5a5", +"A. c #efefefefb5b5", +"S. c #f7f7efefadad", +"D. c #f7f7efefb5b5", +"F. c #f7f7f7f7b5b5", +"G. c #f7f7f7f7bdbd", +"H. c #c0c0c0c0c0c0", +"J. c #c6c6c6c6c6c6", +"K. c #c6c6c6c6cece", +"L. c #c6c6cececece", +"P. c #cecec6c6c6c6", +"I. c #cecececec6c6", +"U. c #cececececece", +"Y. c #ceced6d6cece", +"T. c #ceced6d6dede", +"R. c #d6d6cecec6c6", +"E. c #d6d6d6d6c6c6", +"W. c #d6d6d6d6cece", +"Q. c #deded6d6c6c6", +"!. c #deded6d6cece", +"~. c #dedededec6c6", +"^. c Gray84", +"/. c #d6d6dededede", +"(. c #deded6d6d6d6", +"). c #dedededed6d6", +"_. c Gray87", +"`. c #dedededee7e7", +"'. c #e7e7e7e7dede", +"]. c #efefe7e7d6d6", +"[. c #efefe7e7dede", +"{. c #f7f7f7f7d6d6", +"}. c #ffffffffdede", +"|. c #e7e7e7e7e7e7", +" X c #e7e7e7e7efef", +".X c #e7e7efefefef", +"XX c #efefefefefef", +"oX c #e7e7efeff7f7", +"OX c #efefefeff7f7", +"+X c #efeff7f7f7f7", +"@X c #f7f7efefefef", +"#X c Gray97", +"$X c #f7f7f7f7ffff", +"%X c #f7f7ffffffff", +"&X c #fffff7f7f7f7", +"*X c #fffffffff7f7", +"=X c Gray100", +"-X c None", +/* pixels */ +"u.c.n.x.B.A.A.S.D.F.G.F.S.M.p.g.Z.V.B.n.Z.N.", +"r.W < 0 Z R.W.=.E.;._ !.W.].[.[.[.'.Y./ D C.", +"t.U @ + 6 Q %.2.0.2.-.J.K.`.=X=X=X=X=XOX~.x.", +"s.P * O k ^.&X#XXX`.^.J.3.2.).=X=X=X=X=X}.n.", +"t.G * & = k W.|.|.XX|.^.J.&.] Q ~ >.^.XX{.l.", +"s.m * O O - 7 e l ..I.=X=X+XJ.j + X + s V.", +"d.J % Q ! r c z -.*.x [.=XXX^.L.` 5.( : q n.", +"v.J o C *X.X@X=X=X%X` Q.=X=X=X=X=X=X=X=XY.B.", +"a.F @ = k ,.^.U.=X7.7 Q.=X=X=X=X=X=X=X$X9.l.", +"g.n @ & r :._.0.U.u % ./.6.).=X=X=X=XoX~ k.", +"i.N . a @X%X X6.-.j d i O.|.&X=X=X+X#X{ w b.", +"f.M 8 !.%X] h y ) %.o.#X=X|.U.J.U.(.[ # 2 V.", +"f.q.).#X#XT.! R.=X=X;...^ e f ~ P.|.|.v , Z.", +"m.K : x 4.[ _ @X=X=X=X%X$X`.[ h =.8.c ; 3 N.", +"Y N 4 b S V X.$.#.<.z.y.1.| 9 5 L | B w p h.", +"&.%.%.%.%.%.~ $ Q %.< 1 %.g > ' ..] ] ] ] o.", +"-X-X-X-X-X-X<.H 5.-X6 y -X>.T =.-X-X-X-X-X-X", +"-X-X-X-X-X6.j.} -X-X8 i -X6.e.@.-X-X-X-X-X-X", +"-X-X-X-X-X5.W %.-X-X8 i -X-X@.W 6.-X-X-X-X-X", +"-X-X-X-X-Xy.I 2.-X-X8 i -X-X,.e.=.-X-X-X-X-X", +"-X-X-X-X6.j.A -X-X-X8 i -X-X5.w.+.-X-X-X-X-X", +"-X-X-X-X5.E ..-X-X-Xt g -X-X-X@.R 6.-X-X-X-X" +}; diff --git a/kommander/editor/pics/small/konsole.png b/kommander/editor/pics/small/konsole.png Binary files differnew file mode 100644 index 00000000..3e60f289 --- /dev/null +++ b/kommander/editor/pics/small/konsole.png diff --git a/kommander/editor/pics/small/label.png b/kommander/editor/pics/small/label.png Binary files differnew file mode 100644 index 00000000..5d7d7b4c --- /dev/null +++ b/kommander/editor/pics/small/label.png diff --git a/kommander/editor/pics/small/layout.xpm b/kommander/editor/pics/small/layout.xpm new file mode 100644 index 00000000..03968e26 --- /dev/null +++ b/kommander/editor/pics/small/layout.xpm @@ -0,0 +1,121 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 93 2", +" c #212108080000", +". c #292908080000", +"X c #313108080000", +"o c #313108080808", +"O c #313110100808", +"+ c #313110101010", +"@ c #313118181010", +"# c #393918181010", +"$ c #393921211818", +"% c #424229292121", +"& c #4a4a31312929", +"* c #4a4a31313131", +"= c #525239393131", +"- c #636310100000", +"; c #6b6b10100000", +": c #6b6b10100808", +"> c #6b6b18180808", +", c #737318180808", +"< c #636321211010", +"1 c #6b6b21211010", +"2 c #6b6b29291818", +"3 c #737321211010", +"4 c #737331312929", +"5 c #7b7b31312929", +"6 c #7b7b42423131", +"7 c #636352524a4a", +"8 c #737363636363", +"9 c #b5b539392121", +"0 c #b5b539392929", +"q c #bdbd39392121", +"w c #bdbd39392929", +"e c #848442423939", +"r c #adad42423131", +"t c #bdbd42422929", +"y c #b5b542423131", +"u c #b5b54a4a3131", +"i c #b5b54a4a3939", +"p c #bdbd42423131", +"a c #bdbd4a4a3131", +"s c #bdbd4a4a3939", +"d c #8c8c52524a4a", +"f c #adad52524242", +"g c #b5b552524242", +"h c #b5b552524a4a", +"j c #bdbd52524242", +"k c #bdbd52524a4a", +"l c #adad63635252", +"z c #adad6b6b5a5a", +"x c #bdbd63635252", +"c c #adad73736363", +"v c #b5b56b6b6363", +"b c #b5b57b7b7373", +"n c #c6c642422929", +"m c #c6c642423131", +"M c #cece42423131", +"N c #dede6b6b5a5a", +"B c #dede7b7b6b6b", +"V c #f7f75a5a4242", +"C c #ffff5a5a4242", +"Z c #efef63634a4a", +"A c #e7e76b6b5a5a", +"S c #efef6b6b5a5a", +"D c #ffff63634242", +"F c #ffff63634a4a", +"G c #ffff6b6b4a4a", +"H c #ffff6b6b5252", +"J c #f7f773735a5a", +"K c #ffff73735252", +"L c #ffff73735a5a", +"P c #e7e773736363", +"I c #e7e77b7b6363", +"U c #efef7b7b6363", +"Y c #f7f77b7b6363", +"T c #f7f77b7b6b6b", +"R c #ffff7b7b6363", +"E c #b5b584847b7b", +"W c #dede84847373", +"Q c #e7e784846b6b", +"! c #efef8c8c7b7b", +"~ c #f7f784846b6b", +"^ c #ffff84846363", +"/ c #ffff84846b6b", +"( c #f7f784847373", +") c #a5a5a5a5a5a5", +"_ c Gray68", +"` c Gray71", +"' c #bdbdb5b5b5b5", +"] c Gray74", +"[ c #dede94948484", +"{ c #c6c6bdbdbdbd", +"} c #c0c0c0c0c0c0", +"| c #c6c6c6c6c6c6", +" . c None", +/* pixels */ +" .j q w w w w q q p ] ] g q q w q w q q s .", +" .Y L K L K L K L J ] { P H H H H H H G J .", +" .T R R R R R R R Y ] ] B R L J L J L J J .", +" .u 0 0 0 0 0 0 9 r ' ] f 9 0 0 0 9 0 9 y .", +" .2 : - > : - : : < ] ] 4 - : - > : : : < .", +" .* O O + ] ] & % .", +" .` ) _ _ ) _ ) ) _ ] | _ ) _ _ _ _ _ ) _ .", +" . . . . . . . . . . . . . . . . . . . . . .", +" .b g h h h h h g l ] ] z g g h g h g g c .", +" .P F Z D G V G V Z ` | N D V V V V V V S .", +" .! / / / / / ^ / U ` ] Q R ^ R ^ R R R ~ .", +" .x n m m m t m n s ` ] h m m t m t n t j .", +" .6 > > > > , > > 1 ` | 5 ; > > : > > : 5 .", +" .7 . o X O o O . $ ` ] & o O o O o O . = .", +" .` _ _ _ _ _ _ _ _ ] | _ _ _ _ _ _ _ _ ` .", +" . . . . . . . . . . . . . . . . . . . . . .", +" .E r i f i i i i f ' ] l i i i i i i r c .", +" .W F Z F G Z F F Z ` ] A V Z Z D Z D C I .", +" .[ / / / / / / / T ` | Q / R R R R R R ( .", +" .v M m m m m m m a ` ] k n m n m n m t k .", +" .d , , , , , , , 3 ` ] 5 , , , > , > , e .", +" .8 . @ # @ # @ + $ ` ] = O + # # # # O 7 ." +}; diff --git a/kommander/editor/pics/small/lcdnumber.png b/kommander/editor/pics/small/lcdnumber.png Binary files differnew file mode 100644 index 00000000..64eda5e4 --- /dev/null +++ b/kommander/editor/pics/small/lcdnumber.png diff --git a/kommander/editor/pics/small/left.xpm b/kommander/editor/pics/small/left.xpm new file mode 100644 index 00000000..1936290c --- /dev/null +++ b/kommander/editor/pics/small/left.xpm @@ -0,0 +1,141 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 113 2", +" c #08082929efef", +". c #00002929ffff", +"X c #08082929f7f7", +"o c #08083131ffff", +"O c #10102929e7e7", +"+ c #10102929ffff", +"@ c #18183131e7e7", +"# c #18183939e7e7", +"$ c #10103131ffff", +"% c #10103939ffff", +"& c #21213939e7e7", +"* c #10104242ffff", +"= c #18184242ffff", +"- c #29294242dede", +"; c #31314242d6d6", +": c #39395252dede", +"> c #21214242e7e7", +", c #29294242e7e7", +"< c #21215252ffff", +"1 c #29295252ffff", +"2 c #29295a5affff", +"3 c #31316363ffff", +"4 c #39396363ffff", +"5 c #39396b6bffff", +"6 c #5a5a6b6bbdbd", +"7 c #6b6b7373b5b5", +"8 c #42425252c6c6", +"9 c #4a4a5a5acece", +"0 c #42425252d6d6", +"q c #52526363c6c6", +"w c #5a5a6b6bc6c6", +"e c #42426363e7e7", +"r c #42426b6bffff", +"t c #42427373efef", +"y c #42427373ffff", +"u c #4a4a7373ffff", +"i c #4a4a7b7bffff", +"p c #7b7b8484b5b5", +"a c #52528484ffff", +"s c #5a5a8c8cffff", +"d c #6b6b8c8cdede", +"f c #7b7b8484c6c6", +"g c #7b7b8c8cc6c6", +"h c #7b7b8c8ccece", +"j c #73738c8cd6d6", +"k c #7b7b8c8cd6d6", +"l c #7b7b9494d6d6", +"z c #7b7b9c9cd6d6", +"x c #63638484efef", +"c c #63638c8cffff", +"v c #6b6b9494efef", +"b c #63639494ffff", +"n c #63639c9cffff", +"m c #6b6b9c9cffff", +"M c #73739494e7e7", +"N c #73739c9ce7e7", +"B c #73739c9cf7f7", +"V c #7373a5a5ffff", +"C c #7b7badadffff", +"Z c #7b7bb5b5ffff", +"A c #84849494bdbd", +"S c #8c8c9494bdbd", +"D c #94949494adad", +"F c #94949494b5b5", +"G c #94949c9cbdbd", +"H c #9c9c9c9cbdbd", +"J c #9c9ca5a5b5b5", +"K c Gray68", +"L c #a5a5a5a5bdbd", +"P c #adadadadb5b5", +"I c #adadadadbdbd", +"U c #b5b5b5b5bdbd", +"Y c #b5b5bdbdbdbd", +"T c Gray74", +"R c #84849494c6c6", +"E c #8c8c9c9cc6c6", +"W c #8484a5a5efef", +"Q c #8c8ca5a5e7e7", +"! c #8484adadffff", +"~ c #8c8cb5b5efef", +"^ c #8484b5b5ffff", +"/ c #8484bdbdffff", +"( c #8c8cbdbdffff", +") c #9c9cb5b5f7f7", +"_ c #9c9cbdbdf7f7", +"` c #adadadadc6c6", +"' c #b5b5b5b5c6c6", +"] c #b5b5bdbdc6c6", +"[ c #bdbdbdbdc6c6", +"{ c #adadbdbdefef", +"} c #9494c6c6ffff", +"| c #9494ceceffff", +" . c #9c9cceceffff", +".. c #a5a5d6d6ffff", +"X. c #adaddedeffff", +"o. c #bdbdcecef7f7", +"O. c #b5b5dedeffff", +"+. c #bdbdd6d6ffff", +"@. c #adade7e7ffff", +"#. c #bdbde7e7ffff", +"$. c #c0c0c0c0c0c0", +"%. c #cecededef7f7", +"&. c #c6c6e7e7ffff", +"*. c #c6c6efefffff", +"=. c #cecee7e7ffff", +"-. c #d6d6e7e7ffff", +";. c #dedee7e7ffff", +":. c #d6d6ffffffff", +">. c #dedeffffffff", +",. c #efefffffffff", +"<. c #f7f7ffffffff", +"1. c Gray100", +"2. c None", +/* pixels */ +"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.2.G Q k U 2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.F ) 1.{ ' 2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.T E o.1.>.~ U 2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.T S -.1.:...N ] 2.2.2.2.2.2.2.2.2.2.2.", +"2.2.T R %.1.:. .( M U 2.2.2.2.2.2.2.2.2.2.2.", +"2.U g ;.1.&.} ^ Z B F T [ Y ' H R g j M j L ", +"[ h -.1.*./ C C C m t d l z W _ X.=.*.#.n 0 ", +"A +.<.*.} ! C V V V C ..O.#.&.O.X. .( C 5 , ", +"W ,.@.( C C V V V V C C ! C V V V m m b 2 > ", +"c | ^ ! C V V V V V V V m m m m m b b s 1 # ", +"q 1 s m V m m m V m u 4 5 y i a a s a a < , ", +"K ; * u b m m m V b + O @ X $ = = < 1 % - ", +"2.J - = r c b m m c 7 J I D f 6 8 ; - , - p ", +"2.2.U 0 o 3 a b b v U 2.2.2.2.2.2.T U U U 2.", +"2.2.2.P 9 o 3 s s x I 2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.Y w o 2 y e I 2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.T 7 . * , ` 2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.T p & : U 2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2." +}; diff --git a/kommander/editor/pics/small/line.png b/kommander/editor/pics/small/line.png Binary files differnew file mode 100644 index 00000000..5c64dfb5 --- /dev/null +++ b/kommander/editor/pics/small/line.png diff --git a/kommander/editor/pics/small/lineedit.png b/kommander/editor/pics/small/lineedit.png Binary files differnew file mode 100644 index 00000000..dafdfdf3 --- /dev/null +++ b/kommander/editor/pics/small/lineedit.png diff --git a/kommander/editor/pics/small/listbox.png b/kommander/editor/pics/small/listbox.png Binary files differnew file mode 100644 index 00000000..d467fc9f --- /dev/null +++ b/kommander/editor/pics/small/listbox.png diff --git a/kommander/editor/pics/small/listview.png b/kommander/editor/pics/small/listview.png Binary files differnew file mode 100644 index 00000000..d71cc1c9 --- /dev/null +++ b/kommander/editor/pics/small/listview.png diff --git a/kommander/editor/pics/small/multilineedit.png b/kommander/editor/pics/small/multilineedit.png Binary files differnew file mode 100644 index 00000000..e2f08995 --- /dev/null +++ b/kommander/editor/pics/small/multilineedit.png diff --git a/kommander/editor/pics/small/newform.xpm b/kommander/editor/pics/small/newform.xpm new file mode 100644 index 00000000..d8e9bc4b --- /dev/null +++ b/kommander/editor/pics/small/newform.xpm @@ -0,0 +1,35 @@ +/* XPM */ +static char * newform_xpm[] = { +"34 26 6 1", +" c None", +". c #FFFFFF", +"+ c #000000", +"@ c #0000FF", +"# c #C0C0C0", +"$ c #808080", +"..................................", +".+++++++++++++++++++++++++++++++..", +".+@@@@@@@@@@@@@@@@@@@@@@@+#+#+#+$.", +".+++++++++++++++++++++++++++++++$.", +".+.............................+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+..#.#.#.#.#.#.#.#.#.#.#.#.#.$+$.", +".+.#.#.#.#.#.#.#.#.#.#.#.#.#.#$+$.", +".+.$$$$$$$$$$$$$$$$$$$$$$$$$$$$+$.", +".+++++++++++++++++++++++++++++++$.", +"..$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.", +".................................."}; diff --git a/kommander/editor/pics/small/ordertool.png b/kommander/editor/pics/small/ordertool.png Binary files differnew file mode 100644 index 00000000..ad122839 --- /dev/null +++ b/kommander/editor/pics/small/ordertool.png diff --git a/kommander/editor/pics/small/pixlabel.png b/kommander/editor/pics/small/pixlabel.png Binary files differnew file mode 100644 index 00000000..32b90d82 --- /dev/null +++ b/kommander/editor/pics/small/pixlabel.png diff --git a/kommander/editor/pics/small/pointer.png b/kommander/editor/pics/small/pointer.png Binary files differnew file mode 100644 index 00000000..67e38a36 --- /dev/null +++ b/kommander/editor/pics/small/pointer.png diff --git a/kommander/editor/pics/small/print.xpm b/kommander/editor/pics/small/print.xpm new file mode 100644 index 00000000..8701d460 --- /dev/null +++ b/kommander/editor/pics/small/print.xpm @@ -0,0 +1,117 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 89 1", +" c Gray0", +". c #101008081010", +"X c #101010101010", +"o c #101010101818", +"O c #181810101818", +"+ c #181818181818", +"@ c #181818182121", +"# c #212118182121", +"$ c Gray13", +"% c #212121212929", +"& c #292921212929", +"* c Gray16", +"= c #292929293131", +"- c #313129293131", +"; c #313131313131", +": c #313131313939", +"> c #393931313939", +", c #393939393939", +"< c #393939394242", +"1 c #424239394242", +"2 c Gray26", +"3 c #4a4a4a4a5252", +"4 c #5a5a52525a5a", +"5 c #5a5a5a5a6363", +"6 c #6b6b63636b6b", +"7 c Gray42", +"8 c #6b6b6b6b7373", +"9 c #73736b6b7373", +"0 c #7b7b73737b7b", +"q c #7b7b73738484", +"w c #0808ffff0808", +"e c #2929ffff2929", +"r c #3131ffff3131", +"t c #5a5acece5a5a", +"y c #6b6bffff6363", +"u c #7b7bffff7b7b", +"i c #84847b7b8484", +"p c #84847b7b8c8c", +"a c #8c8c7b7b9494", +"s c #848484848c8c", +"d c #8c8c84848c8c", +"f c Gray55", +"g c #8c8c84849494", +"h c #8c8c8c8c9494", +"j c #94948c8c9494", +"k c #94948c8c9c9c", +"l c Gray58", +"z c #949494949c9c", +"x c #9c9c94949c9c", +"c c Gray61", +"v c #9c9c9494a5a5", +"b c #9c9c9c9ca5a5", +"n c #a5a59c9ca5a5", +"m c #a5a59c9cadad", +"M c #adad9c9cadad", +"N c #a5a5a5a5a5a5", +"B c #a5a5a5a5adad", +"V c #adada5a5adad", +"C c Gray68", +"Z c #adadadadb5b5", +"A c #b5b5adadb5b5", +"S c Gray71", +"D c Gray74", +"F c #9494c6c69494", +"G c #9c9ccecea5a5", +"H c #bdbdd6d6bdbd", +"J c #c0c0c0c0c0c0", +"K c #c6c6c6c6c6c6", +"L c #cecec6c6cece", +"P c #cececececece", +"I c #cecececed6d6", +"U c #d6d6ceced6d6", +"Y c #d6d6cecedede", +"T c Gray84", +"R c #d6d6d6d6dede", +"E c #deded6d6dede", +"W c Gray87", +"Q c #deded6d6e7e7", +"! c #dedededee7e7", +"~ c #d6d6ffffd6d6", +"^ c #e7e7dedee7e7", +"/ c #e7e7e7e7e7e7", +"( c #e7e7e7e7efef", +") c #efefe7e7efef", +"_ c #efefefefefef", +"` c #e7e7ffffe7e7", +"' c Gray97", +"] c Gray100", +"[ c None", +/* pixels */ +"[[[[[[SDPPPPKKDDCD[[[[", +"[[[[[[D_/////___WD[[[[", +"[[[[[[DKKKPPKKKKDK[[[[", +"[[[[[[SDDDDSDDSSCD[[[[", +"[[[[[KCKDKKKDDDKS[[[[[", +"[[[[[DDSDDDDDDKKS[[[[[", +"[[[[[DSKDDDDDKDKC[[[[[", +"[[[[[KDDDDDDDDDDS[[[[[", +"[[[[[CP/WWWWWWTWNNZ[[[", +"[[[Dc9STPTPTPTWWj427S[", +"[[Dziq0000000pag8<%@2N", +"[DcE(!ERRRRUYGtFn2##O<", +"Db)]]]]]]]]]~ewePa;@X#", +"V']]]]]]]]]]`yru]Q0@ #", +"BRILITRRW^!E!RHUILhO @", +"jAZVBmBnmmNmnmMvzh6o #", +"jZZmBnnnbnbbbbvxxg6o +", +"lmmnbnbbbvcvxxxvjs6O 3", +"jBnnvcvxvcvxvxzjhd8o+C", +"lsdgfgdhgdhhjhjkhg6+l[", +"S9%@$%&&&=--::>>:-:l[[", +"[[C511,:;;;**%++.2c[[[" +}; diff --git a/kommander/editor/pics/small/progress.png b/kommander/editor/pics/small/progress.png Binary files differnew file mode 100644 index 00000000..29416702 --- /dev/null +++ b/kommander/editor/pics/small/progress.png diff --git a/kommander/editor/pics/small/pushbutton.png b/kommander/editor/pics/small/pushbutton.png Binary files differnew file mode 100644 index 00000000..61f779ce --- /dev/null +++ b/kommander/editor/pics/small/pushbutton.png diff --git a/kommander/editor/pics/small/radiobutton.png b/kommander/editor/pics/small/radiobutton.png Binary files differnew file mode 100644 index 00000000..10c1d8c3 --- /dev/null +++ b/kommander/editor/pics/small/radiobutton.png diff --git a/kommander/editor/pics/small/redo.png b/kommander/editor/pics/small/redo.png Binary files differnew file mode 100644 index 00000000..abdad26c --- /dev/null +++ b/kommander/editor/pics/small/redo.png diff --git a/kommander/editor/pics/small/richtextedit.png b/kommander/editor/pics/small/richtextedit.png Binary files differnew file mode 100644 index 00000000..73573a8a --- /dev/null +++ b/kommander/editor/pics/small/richtextedit.png diff --git a/kommander/editor/pics/small/right.xpm b/kommander/editor/pics/small/right.xpm new file mode 100644 index 00000000..76e2d033 --- /dev/null +++ b/kommander/editor/pics/small/right.xpm @@ -0,0 +1,141 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"22 22 113 2", +" c #00001818f7f7", +". c #00001818ffff", +"X c #00002121f7f7", +"o c #00002121ffff", +"O c #00002929ffff", +"+ c #10103131efef", +"@ c #18183131e7e7", +"# c #18183939e7e7", +"$ c #10103131ffff", +"% c #10103939ffff", +"& c #29293939d6d6", +"* c #31313939cece", +"= c #10104242ffff", +"- c #18184242ffff", +"; c #39394a4ac6c6", +": c #29295252ffff", +"> c #29295a5affff", +", c #31315252efef", +"< c #31315a5affff", +"1 c #31316363ffff", +"2 c #39396b6bffff", +"3 c #4a4a5a5abdbd", +"4 c #63636b6bbdbd", +"5 c #6b6b7373b5b5", +"6 c #73737b7bbdbd", +"7 c #42424a4ac6c6", +"8 c #4a4a5252c6c6", +"9 c #4a4a5a5acece", +"0 c #52525a5ac6c6", +"q c #52526363c6c6", +"w c #52526b6bcece", +"e c #5a5a6b6bc6c6", +"r c #4a4a7373e7e7", +"t c #4a4a7373efef", +"y c #42427373ffff", +"u c #4a4a7b7bffff", +"i c #52527b7bffff", +"p c #63637373c6c6", +"a c #63637373cece", +"s c #6b6b7b7bc6c6", +"d c #7b7b8484b5b5", +"f c #5a5a8484e7e7", +"g c #5a5a8484efef", +"h c #52528484f7f7", +"j c #52528484ffff", +"k c #5a5a8c8cffff", +"l c #5a5a9494ffff", +"z c #6b6b8484d6d6", +"x c #6b6b8c8cd6d6", +"c c #73738484c6c6", +"v c #7b7b8c8ccece", +"b c #63638484e7e7", +"n c #63638c8cefef", +"m c #6b6b8484e7e7", +"M c #63639494ffff", +"N c #6b6b9494ffff", +"B c #6b6b9c9cffff", +"V c #73739c9ce7e7", +"C c #73739c9cffff", +"Z c #7373a5a5ffff", +"A c #7b7badadffff", +"S c #84848484b5b5", +"D c #84848c8cbdbd", +"F c #8c8c9494b5b5", +"G c #94949494b5b5", +"H c #94949c9cb5b5", +"J c #9c9c9c9cb5b5", +"K c #9c9c9c9cbdbd", +"L c #a5a5a5a5b5b5", +"P c #adadadadb5b5", +"I c #adadadadbdbd", +"U c #b5b5b5b5bdbd", +"Y c #b5b5bdbdbdbd", +"T c Gray74", +"R c #84849494c6c6", +"E c #84849494cece", +"W c #8c8ca5a5cece", +"Q c #8c8cadadd6d6", +"! c #9c9ca5a5c6c6", +"~ c #9494adadd6d6", +"^ c #9c9cadadd6d6", +"/ c #9c9cbdbdd6d6", +"( c #8c8cadadefef", +") c #8484adadffff", +"_ c #8484b5b5ffff", +"` c #8c8cb5b5f7f7", +"' c #8c8cb5b5ffff", +"] c #8c8cbdbdffff", +"[ c #9494bdbdffff", +"{ c #a5a5bdbdd6d6", +"} c #b5b5b5b5c6c6", +"| c #bdbdbdbdc6c6", +" . c #adadbdbdefef", +".. c #8c8cc6c6ffff", +"X. c #9494c6c6ffff", +"o. c #9494ceceffff", +"O. c #9c9cceceffff", +"+. c #a5a5d6d6ffff", +"@. c #adaddedeffff", +"#. c #b5b5d6d6ffff", +"$. c #adade7e7ffff", +"%. c #b5b5e7e7ffff", +"&. c #bdbde7e7ffff", +"*. c #bdbdefefffff", +"=. c #c0c0c0c0c0c0", +"-. c #c6c6cececece", +";. c #c6c6efefffff", +":. c #ceceefefffff", +">. c #c6c6f7f7ffff", +",. c #cecef7f7ffff", +"<. c #d6d6f7f7ffff", +"1. c #e7e7ffffffff", +"2. c None", +/* pixels */ +"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.T ! f G T 2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.Y -.;.t D 2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.T { *.o.h p T 2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.Y / O.+.O.u 6 T 2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.T Q X.X.o.O.k a U 2.2.", +"P E m z c R K } T | T H V ] ] ] X.X.l 9 I 2.", +"x <.1.:.#.O.` ( W ~ ^ .' A _ _ ] ] ] j w P ", +"g >.%.$.@.%.%.&.;.,.<.;.[ A _ _ _ ) _ ] u q ", +"n $.O.[ ] ] ] _ ] ] ] _ A ) A ) A A Z Z M , ", +"g O.X._ _ A A A A A A A _ A A A A Z N j > # ", +"r .._ Z B M k k u 2 2 k A A A A C B i : o 3 ", +"e y 1 : - $ + @ & ; ; + k ) Z Z B u - o 7 U ", +"L 9 & & 3 4 S J U T T F b Z C N j - o * L 2.", +"2.Y P Y 2.2.2.2.2.2.2.T W M M y % o 8 P 2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.W j y = . 0 Y 2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.v < % X 4 P 2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.s O 5 | 2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.D & d T 2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.", +"2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2." +}; diff --git a/kommander/editor/pics/small/scrollbar.png b/kommander/editor/pics/small/scrollbar.png Binary files differnew file mode 100644 index 00000000..466c58de --- /dev/null +++ b/kommander/editor/pics/small/scrollbar.png diff --git a/kommander/editor/pics/small/searchfind.png b/kommander/editor/pics/small/searchfind.png Binary files differnew file mode 100644 index 00000000..3f369fdb --- /dev/null +++ b/kommander/editor/pics/small/searchfind.png diff --git a/kommander/editor/pics/small/shellscript.png b/kommander/editor/pics/small/shellscript.png Binary files differnew file mode 100644 index 00000000..59de8cfe --- /dev/null +++ b/kommander/editor/pics/small/shellscript.png diff --git a/kommander/editor/pics/small/slider.png b/kommander/editor/pics/small/slider.png Binary files differnew file mode 100644 index 00000000..525bd1ca --- /dev/null +++ b/kommander/editor/pics/small/slider.png diff --git a/kommander/editor/pics/small/spacer.png b/kommander/editor/pics/small/spacer.png Binary files differnew file mode 100644 index 00000000..926e8afc --- /dev/null +++ b/kommander/editor/pics/small/spacer.png diff --git a/kommander/editor/pics/small/spinbox.png b/kommander/editor/pics/small/spinbox.png Binary files differnew file mode 100644 index 00000000..7ae20630 --- /dev/null +++ b/kommander/editor/pics/small/spinbox.png diff --git a/kommander/editor/pics/small/statusbar.png b/kommander/editor/pics/small/statusbar.png Binary files differnew file mode 100644 index 00000000..ac08552d --- /dev/null +++ b/kommander/editor/pics/small/statusbar.png diff --git a/kommander/editor/pics/small/table.png b/kommander/editor/pics/small/table.png Binary files differnew file mode 100644 index 00000000..4bbd9c2d --- /dev/null +++ b/kommander/editor/pics/small/table.png diff --git a/kommander/editor/pics/small/tabwidget.png b/kommander/editor/pics/small/tabwidget.png Binary files differnew file mode 100644 index 00000000..1254bb63 --- /dev/null +++ b/kommander/editor/pics/small/tabwidget.png diff --git a/kommander/editor/pics/small/textbrowser.png b/kommander/editor/pics/small/textbrowser.png Binary files differnew file mode 100644 index 00000000..090e2f84 --- /dev/null +++ b/kommander/editor/pics/small/textbrowser.png diff --git a/kommander/editor/pics/small/textedit.png b/kommander/editor/pics/small/textedit.png Binary files differnew file mode 100644 index 00000000..823d0818 --- /dev/null +++ b/kommander/editor/pics/small/textedit.png diff --git a/kommander/editor/pics/small/textview.png b/kommander/editor/pics/small/textview.png Binary files differnew file mode 100644 index 00000000..ec2270c3 --- /dev/null +++ b/kommander/editor/pics/small/textview.png diff --git a/kommander/editor/pics/small/timeedit.png b/kommander/editor/pics/small/timeedit.png Binary files differnew file mode 100644 index 00000000..01b37888 --- /dev/null +++ b/kommander/editor/pics/small/timeedit.png diff --git a/kommander/editor/pics/small/timer.png b/kommander/editor/pics/small/timer.png Binary files differnew file mode 100644 index 00000000..e2e17452 --- /dev/null +++ b/kommander/editor/pics/small/timer.png diff --git a/kommander/editor/pics/small/toolbutton.png b/kommander/editor/pics/small/toolbutton.png Binary files differnew file mode 100644 index 00000000..25d240a1 --- /dev/null +++ b/kommander/editor/pics/small/toolbutton.png diff --git a/kommander/editor/pics/small/undo.png b/kommander/editor/pics/small/undo.png Binary files differnew file mode 100644 index 00000000..839a823f --- /dev/null +++ b/kommander/editor/pics/small/undo.png diff --git a/kommander/editor/pics/temp.tmp b/kommander/editor/pics/temp.tmp new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/kommander/editor/pics/temp.tmp diff --git a/kommander/editor/pics/toolbox.png b/kommander/editor/pics/toolbox.png Binary files differnew file mode 100644 index 00000000..2ab71dc7 --- /dev/null +++ b/kommander/editor/pics/toolbox.png diff --git a/kommander/editor/pics/uparrow.xbm b/kommander/editor/pics/uparrow.xbm new file mode 100644 index 00000000..dc0edccb --- /dev/null +++ b/kommander/editor/pics/uparrow.xbm @@ -0,0 +1,10 @@ +#define uparrow_width 25 +#define uparrow_height 25 +static unsigned char uparrow_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x10,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0xfe, + 0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00, + 0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00, + 0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00, + 0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/vsplit.xbm b/kommander/editor/pics/vsplit.xbm new file mode 100644 index 00000000..bcd0e4b7 --- /dev/null +++ b/kommander/editor/pics/vsplit.xbm @@ -0,0 +1,10 @@ +#define vsplit_width 25 +#define vsplit_height 25 +static unsigned char vsplit_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x24, + 0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x10,0x24,0x08,0x00,0x18, + 0x24,0x18,0x00,0xfc,0xe7,0x3f,0x00,0x18,0x24,0x18,0x00,0x10,0x24,0x08,0x00, + 0x00,0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x24,0x00, + 0x00,0x00,0x24,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pics/wait.xbm b/kommander/editor/pics/wait.xbm new file mode 100644 index 00000000..e2fd6896 --- /dev/null +++ b/kommander/editor/pics/wait.xbm @@ -0,0 +1,10 @@ +#define wait_width 25 +#define wait_height 25 +static unsigned char wait_bits[] = { + 0x00,0x00,0x00,0x00,0xc0,0xff,0x07,0x00,0xc0,0x00,0x06,0x00,0xc0,0xff,0x07, + 0x00,0x80,0x00,0x02,0x00,0x80,0x00,0x02,0x00,0x80,0x54,0x02,0x00,0x80,0x28, + 0x02,0x00,0x80,0x11,0x03,0x00,0x00,0x83,0x01,0x00,0x00,0xd6,0x00,0x00,0x00, + 0x6c,0x00,0x00,0x00,0x6c,0x00,0x00,0x00,0xc6,0x00,0x00,0x00,0x93,0x01,0x00, + 0x80,0x01,0x03,0x00,0x80,0x10,0x02,0x00,0x80,0x28,0x02,0x00,0x80,0x54,0x02, + 0x00,0x80,0xaa,0x02,0x00,0xc0,0xff,0x07,0x00,0xc0,0x00,0x06,0x00,0xc0,0xff, + 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }; diff --git a/kommander/editor/pixmapchooser.cpp b/kommander/editor/pixmapchooser.cpp new file mode 100644 index 00000000..1a5a8535 --- /dev/null +++ b/kommander/editor/pixmapchooser.cpp @@ -0,0 +1,1105 @@ +/********************************************************************** +** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qvariant.h> // HP-UX compiler needs this here + +#include "pixmapchooser.h" +#include "formwindow.h" +#if defined(DESIGNER) && !defined(RESOURCE) +#include "pixmapfunction.h" +#endif +#include "metadatabase.h" +#include "mainwindow.h" +#ifndef KOMMANDER +#include "pixmapcollectioneditor.h" +#endif +#ifndef KOMMANDER +#include "pixmapcollection.h" +#endif +#ifndef KOMMANDER +#include "project.h" +#endif + +#include <qapplication.h> +#include <qimage.h> +#include <qpainter.h> +#include <qlabel.h> +#include <qlineedit.h> +#include <qpushbutton.h> +#include <qiconview.h> + +#include <klocale.h> + +#if defined(DESIGNER) +#include "pics/images.h" + +#ifdef Q_WS_MACX +//logo is 40x40 on the mac, if it changes - please notify the Qt/Mac team +static const char * const logo_xpm[] = { +"40 40 543 2", +" c None", +". c #C9D98D", +"+ c #A0BC30", +"@ c #A4C132", +"# c #ABC92F", +"$ c #AAC733", +"% c #8FA733", +"& c #657821", +"* c #3F4E17", +"= c #2A360C", +"- c #182306", +"; c #121B06", +"> c #141C06", +", c #1D2608", +"' c #2A350E", +") c #405017", +"! c #667C1C", +"~ c #8FAA24", +"{ c #A8C12D", +"] c #728326", +"^ c #313A14", +"/ c #090B08", +"( c #000003", +"_ c #000001", +": c #000002", +"< c #000004", +"[ c #000000", +"} c #080D01", +"| c #333E11", +"1 c #6E8529", +"2 c #A2C230", +"3 c #ACC735", +"4 c #7D8F2C", +"5 c #2A300E", +"6 c #000300", +"7 c #000007", +"8 c #010009", +"9 c #020104", +"0 c #020301", +"a c #020300", +"b c #010200", +"c c #010101", +"d c #020010", +"e c #010010", +"f c #000005", +"g c #000503", +"h c #28360C", +"i c #789128", +"j c #AAC835", +"k c #A4BE36", +"l c #515F1E", +"m c #040800", +"n c #00000C", +"o c #02000D", +"p c #040303", +"q c #020200", +"r c #020203", +"s c #020202", +"t c #000008", +"u c #000105", +"v c #000202", +"w c #000201", +"x c #020207", +"y c #02020C", +"z c #00000B", +"A c #02010E", +"B c #000013", +"C c #030900", +"D c #4C5E1B", +"E c #A1BD33", +"F c #9BB52F", +"G c #333E10", +"H c #010002", +"I c #03020B", +"J c #020109", +"K c #030204", +"L c #010104", +"M c #020009", +"N c #02000A", +"O c #000009", +"P c #000006", +"Q c #04050B", +"R c #020106", +"S c #020307", +"T c #040507", +"U c #000104", +"V c #34410D", +"W c #99B236", +"X c #9BB332", +"Y c #2B360A", +"Z c #020006", +"` c #040301", +" . c #030304", +".. c #01010A", +"+. c #020113", +"@. c #010011", +"#. c #010500", +"$. c #0A0F05", +"%. c #131C07", +"&. c #0B1205", +"*. c #020706", +"=. c #010309", +"-. c #030503", +";. c #030402", +">. c #2C350C", +",. c #9DB52F", +"'. c #A3BD2F", +"). c #03000A", +"!. c #030102", +"~. c #020101", +"{. c #030209", +"]. c #02010B", +"^. c #010301", +"/. c #242C08", +"(. c #5A6720", +"_. c #81922B", +":. c #93A732", +"<. c #9AB530", +"[. c #9CB734", +"}. c #90AA32", +"|. c #7E942C", +"1. c #566820", +"2. c #273310", +"3. c #000403", +"4. c #00000E", +"5. c #020211", +"6. c #03030B", +"7. c #020205", +"8. c #01000C", +"9. c #33410B", +"0. c #A7BF37", +"a. c #ADC935", +"b. c #4F5F18", +"c. c #020103", +"d. c #080401", +"e. c #050205", +"f. c #232C06", +"g. c #768722", +"h. c #A4BB2E", +"i. c #D5E38D", +"j. c #A2BE3A", +"k. c #738833", +"l. c #202C0A", +"m. c #05030A", +"n. c #020206", +"o. c #030303", +"p. c #505B20", +"q. c #ACC934", +"r. c #7C8E2B", +"s. c #050900", +"t. c #010201", +"u. c #030200", +"v. c #020001", +"w. c #050207", +"x. c #030004", +"y. c #000203", +"z. c #49531D", +"A. c #A2B836", +"B. c #9FBD30", +"C. c #4E5A1C", +"D. c #000200", +"E. c #04040A", +"F. c #040403", +"G. c #010005", +"H. c #040600", +"I. c #7A9222", +"J. c #ACCB2D", +"K. c #A9C22F", +"L. c #282F0B", +"M. c #020304", +"N. c #030109", +"O. c #55671A", +"P. c #AEC93D", +"Q. c #A9C931", +"R. c #546523", +"S. c #00000A", +"T. c #020204", +"U. c #010300", +"V. c #272F0B", +"W. c #A7BE34", +"X. c #728327", +"Y. c #020108", +"Z. c #030305", +"`. c #030208", +" + c #46511B", +".+ c #ACC739", +"++ c #93AC39", +"@+ c #263605", +"#+ c #566A1D", +"$+ c #ADC93C", +"%+ c #ACC840", +"&+ c #44541E", +"*+ c #010205", +"=+ c #010206", +"-+ c #020107", +";+ c #010007", +">+ c #030400", +",+ c #728226", +"'+ c #AAC732", +")+ c #323A14", +"!+ c #030401", +"~+ c #01000D", +"{+ c #242D06", +"]+ c #A2B835", +"^+ c #95AD3E", +"/+ c #212C0F", +"(+ c #010604", +"_+ c #5F7327", +":+ c #ABC934", +"<+ c #A2BD3A", +"[+ c #202C09", +"}+ c #01010B", +"|+ c #020105", +"1+ c #333B14", +"2+ c #ABC23C", +"3+ c #8EA631", +"4+ c #0A0C08", +"5+ c #010008", +"6+ c #010102", +"7+ c #020011", +"8+ c #030500", +"9+ c #778823", +"0+ c #96AD3A", +"a+ c #232D0D", +"b+ c #020212", +"c+ c #000109", +"d+ c #030800", +"e+ c #5F7126", +"f+ c #ABCB35", +"g+ c #71862A", +"h+ c #020401", +"i+ c #090C03", +"j+ c #8FA238", +"k+ c #647822", +"l+ c #02000B", +"m+ c #232B08", +"n+ c #A5BB30", +"o+ c #96AC35", +"p+ c #242C0A", +"q+ c #020402", +"r+ c #030403", +"s+ c #000100", +"t+ c #576D1D", +"u+ c #A2BC37", +"v+ c #232D0A", +"w+ c #010004", +"x+ c #677822", +"y+ c #596620", +"z+ c #CBDC71", +"A+ c #96B034", +"B+ c #232B0E", +"C+ c #01020B", +"D+ c #010109", +"E+ c #030502", +"F+ c #040603", +"G+ c #010107", +"H+ c #253704", +"I+ c #B2CE3A", +"J+ c #586721", +"K+ c #425014", +"L+ c #C3D771", +"M+ c #29360C", +"N+ c #020302", +"O+ c #81912F", +"P+ c #94AE38", +"Q+ c #23300B", +"R+ c #040408", +"S+ c #010105", +"T+ c #010207", +"U+ c #242C0C", +"V+ c #91AB33", +"W+ c #D0E18D", +"X+ c #7F922B", +"Y+ c #010400", +"Z+ c #010106", +"`+ c #2A3408", +" @ c #182406", +".@ c #00000D", +"+@ c #0B0F06", +"@@ c #93A736", +"#@ c #96AE38", +"$@ c #000101", +"%@ c #030308", +"&@ c #232A0B", +"*@ c #98AC37", +"=@ c #94AB32", +"-@ c #0C1204", +";@ c #1B2307", +">@ c #9EB62F", +",@ c #010100", +"'@ c #9AB431", +")@ c #97AD37", +"!@ c #242B0E", +"~@ c #01000B", +"{@ c #01010C", +"]@ c #272C13", +"^@ c #9CAF3B", +"/@ c #131B07", +"(@ c #151B07", +"_@ c #9CB230", +":@ c #ADC555", +"<@ c #131C06", +"[@ c #94AB38", +"}@ c #252E0A", +"|@ c #262914", +"1@ c #9DAF46", +"2@ c #9DBA30", +"3@ c #141C07", +"4@ c #010302", +"5@ c #141906", +"6@ c #9CB332", +"7@ c #9EBB31", +"8@ c #1D2609", +"9@ c #010003", +"0@ c #0B1105", +"a@ c #91AA31", +"b@ c #222C0D", +"c@ c #05040A", +"d@ c #232B0A", +"e@ c #98AC3A", +"f@ c #91AB2D", +"g@ c #0B1204", +"h@ c #1D2307", +"i@ c #A0B834", +"j@ c #A5C233", +"k@ c #29340F", +"l@ c #020705", +"m@ c #7E942D", +"n@ c #95AE3B", +"o@ c #232E10", +"p@ c #03040C", +"q@ c #02020B", +"r@ c #020400", +"s@ c #222A0B", +"t@ c #92AE2E", +"u@ c #7D9327", +"v@ c #030704", +"w@ c #2A340D", +"x@ c #A7BF35", +"y@ c #BAD355", +"z@ c #3E4E18", +"A@ c #020110", +"B@ c #566821", +"C@ c #243503", +"D@ c #020213", +"E@ c #030501", +"F@ c #030306", +"G@ c #030207", +"H@ c #010203", +"I@ c #030206", +"J@ c #202E0B", +"K@ c #95AF37", +"L@ c #59691D", +"M@ c #43501A", +"N@ c #ADC732", +"O@ c #657A1D", +"P@ c #000102", +"Q@ c #01000E", +"R@ c #010108", +"S@ c #27330F", +"T@ c #A3BE3D", +"U@ c #586C1E", +"V@ c #000404", +"W@ c #00010A", +"X@ c #050704", +"Y@ c #262B13", +"Z@ c #262B15", +"`@ c #02010C", +" # c #212E08", +".# c #97AE3B", +"+# c #ADC440", +"@# c #232D06", +"## c #030101", +"$# c #6B7D21", +"%# c #D5E48D", +"&# c #8DA828", +"*# c #02020A", +"=# c #000106", +"-# c #000401", +";# c #748736", +"># c #AECB3D", +",# c #5E7227", +"'# c #010204", +")# c #252B0C", +"!# c #9BAD3F", +"~# c #A0B148", +"{# c #232B0B", +"]# c #020007", +"^# c #020209", +"/# c #2C3418", +"(# c #646E34", +"_# c #030600", +":# c #030202", +"<# c #050102", +"[# c #0A1002", +"}# c #90A727", +"|# c #CFDE8D", +"1# c #343D13", +"2# c #02010D", +"3# c #040509", +"4# c #020308", +"5# c #202B09", +"6# c #9FBE2E", +"7# c #ACCA34", +"8# c #5E7026", +"9# c #252C0D", +"0# c #9AAE39", +"a# c #9AAE3D", +"b# c #22290D", +"c# c #010306", +"d# c #010209", +"e# c #020004", +"f# c #030201", +"g# c #030100", +"h# c #030009", +"i# c #333C12", +"j# c #AAC42F", +"k# c #738429", +"l# c #03020F", +"m# c #4B591A", +"n# c #A9C831", +"o# c #A9C932", +"p# c #576B1F", +"q# c #263706", +"r# c #91AB34", +"s# c #92AC37", +"t# c #202C0C", +"u# c #6F8422", +"v# c #A8BF33", +"w# c #2B340C", +"x# c #03010D", +"y# c #516221", +"z# c #AFC655", +"A# c #95AE39", +"B# c #202E09", +"C# c #000204", +"D# c #020102", +"E# c #28360A", +"F# c #7D8E2C", +"G# c #040700", +"H# c #03020C", +"I# c #475520", +"J# c #A3BD3C", +"K# c #98AF3A", +"L# c #2D3516", +"M# c #010103", +"N# c #0B0D05", +"O# c #7E9627", +"P# c #B0C833", +"Q# c #4E5A17", +"R# c #222B0B", +"S# c #72852B", +"T# c #A4BE35", +"U# c #AFC544", +"V# c #666F37", +"W# c #171A0A", +"X# c #93AB3A", +"Y# c #A4BA2F", +"Z# c #36400C", +"`# c #040404", +" $ c #28310B", +".$ c #5C6C20", +"+$ c #7F922A", +"@$ c #93A833", +"#$ c #9CB92D", +"$$ c #90AA2C", +"%$ c #59691F", +"&$ c #222A07", +"*$ c #040501", +"=$ c #222D0D", +"-$ c #93AA3F", +";$ c #9DB03A", +">$ c #2C340D", +",$ c #000500", +"'$ c #0D1205", +")$ c #131A07", +"!$ c #0B1203", +"~$ c #010502", +"{$ c #020008", +"]$ c #010202", +"^$ c #212D0D", +"/$ c #94AE34", +"($ c #9FB435", +"_$ c #343F0C", +":$ c #040207", +"<$ c #020502", +"[$ c #2D4102", +"}$ c #A6BD33", +"|$ c #4F5B1D", +"1$ c #030701", +"2$ c #020201", +"3$ c #040502", +"4$ c #030505", +"5$ c #020100", +"6$ c #040102", +"7$ c #030007", +"8$ c #090C04", +"9$ c #16190A", +"0$ c #0A1301", +"a$ c #708727", +"b$ c #ACC836", +"c$ c #7B9223", +"d$ c #29300D", +"e$ c #7F9626", +"f$ c #94AB39", +"g$ c #212E0C", +"h$ c #020603", +"i$ c #101A01", +"j$ c #7A912E", +"k$ c #ADCB2F", +"l$ c #B0CD3A", +"m$ c #A6BD34", +"n$ c #728225", +"o$ c #0A0D03", +"p$ c #0C1101", +"q$ c #343D12", +"r$ c #6F8421", +"s$ c #94AB41", +"t$ c #202C0D", +"u$ c #0A1302", +"v$ c #7A902F", +"w$ c #B0CE37", +"x$ c #ABC33C", +"y$ c #8EA236", +"z$ c #677821", +"A$ c #425115", +"B$ c #2A3409", +"C$ c #151A07", +"D$ c #141A06", +"E$ c #1C2307", +"F$ c #2B330D", +"G$ c #43511B", +"H$ c #6C7E22", +"I$ c #ABC530", +"J$ c #92AC32", +"K$ c #314305", +"L$ c #6F8625", +"M$ c #ACCB30", +"N$ c #9CB330", +"O$ c #9CB432", +"P$ c #A1B935", +"Q$ c #A8BF36", +"R$ c #ADC632", +" ", +" . + @ # ", +" $ % & * = - ; > , ' ) ! ~ ", +" { ] ^ / ( _ _ : < : [ ( ( : } | 1 2 ", +" 3 4 5 6 [ 7 8 9 0 a b b c 8 d e 8 f g h i j ", +" k l m n o p q q r s s t u v w x y z A B t C D E ", +" F G [ H I J K L M N t 7 n O P P Q R S T U t < [ V W ", +" X Y _ Z ` ...+.@.7 [ #.$.; %.&.*.: : t =.-.;.S z : >.,. ", +" '.G < ).!.~.{.].P ^./.(._.:.<.[.}.|.1.2.3.4.5.6.7...8.[ 9.0. ", +" a.b.[ M c.d.e.J [ f.g.h.i. j.k.l.( m.n.L x o.[ p.q. ", +" r.s.t.u.v.w.x.y.z.A. B.C.D.f E.F.c G.H.I.J. ", +" K.L.O M.b 7.N.y.O.P. Q.R.v S.T.U.R f V.W. ", +" X.a Y.c Z.`.[ +.+ ++@+#+$+ %+&+[ *+=+-+;+>+,+ ", +" '+)+_ !+0 ~+f {+]+ ^+/+O (+_+:+ <+[+: }+n.|+: 1+2+ ", +" 3+4+5+b 6+7+8+9+ 0+a+: b+c+d+e+f+ g+h+7 n.r f i+j+ ", +" k+( 8 r l+7 m+n+ o+p+< 6.q+r+< s+t+ u+v+[ w+6+: [ x+ ", +" * [ 9 R d _ y+z+ A+B+[ C+D+E+F+G+[ H+ I+J+[ < 6+c : K+ ", +" L+M+[ q |+e N+O+ P+Q+[ L R+S+7.T+[ U+V+W+ X+Y+< [ Z+z `+ ", +" @_ a T..@+@@@ #@Q+$@D.T.%@( L : &@*@ =@-@f c 5+n ;@>@ ", +" ; : ,@t O ; '@ )@!@[ h+G+~@;+~@{@]@^@ <+/@f U.w _ (@_@ ", +" :@> _ c u P <@[. [@}@[ L .;+Z+c |+S.|@1@ 2@3@P 4@a [ 5@6@ ", +" 7@8@[ 9@w < 0@a@ ^+b@P y c@`.P 6+Y+b ;+_ d@e@ f@g@t *+T.( h@i@ ", +" j@k@: 8 w f l@m@ n@o@( p@q@x 9 8.5+b r@T.].[ s@t@ u@v@8.( `.< w@x@ ", +" y@z@: A@x Q _ B@ C@7 D@E+E@F@S+8 7 G@H@I@l+M [ J@K@ L@< 8.~.G@[ M@N@ ", +" O@P@Q@y R@: S@T@ U@V@W@-.X@x ( Y@Z@: `@N |+r t._ #.#+#@#f N.##I@[ $#%# ", +" &#} 5+n *#=#-#;# >#,#C '#Y._ )#!#~#{#_ ]#q a s ^#[ /#(#_#:#<#x.f [#}# ", +" |#1#: 2#3#4#n 5#6# 7#8#D.( 9#0# a#b#[ t.|+L c#d#n [ e#f#g#h#< i#j# ", +" k#U.@.( r+l#: m#n# o#p#q#r# s#t#_ =+4@,@9@G._ r 6+c ( 6 u# ", +" v#w#S.z 7.x#l+6 y#%+ z# A#B#[ C#6+c ,@c c s D#[ E# ", +" F#G#O H#Z+8 ..y.I#J# K#L#8 G.c c c c o.M#N#O# ", +" P#Q#[ Y.n.q .=#[ R#S#T# U#V#c : c c s c o.T.W#X# ", +" Y#Z#[ J `#>+U.*+f -# $.$+$@$ #$$$u@%$&$*$~@T.,@c c o.s s [ =$-$ ", +" ;$>$_ G@L U.=+Q@O [ [ ,$'$)$3@!$~$( 7 {$9 6+s o.o.s s s ]$[ ^$/$ ", +" ($_$[ M M n.T.|+G@R ;+P n z 7 7 R@:$<#g#c c H L 6+s s ]$<$[ [$ ", +" }$|$1$P P q 2$L R c 3$4$'#H@0 a 5$6$7$( [ 8$9$[ ]$]$t.s+0$a$ ", +" b$c$d$D.[ f : H S+;+D.b r %@G@9 ( : w M+e$f$g$[ h$s+i$j$k$ ", +" l$m$n$1+o$[ : z n [ [ ( f _ s+p$q$r$ s$t$[ u$v$w$ ", +" x$y$z$A$B$;@C$D$E$F$G$H$}#I$ J$K$L$M$ ", +" >@N$O$P$Q$R$ ", +" "}; +#else +static const char * const logo_xpm[] = { +/* width height num_colors chars_per_pixel */ +"21 16 213 2", +" c white", +". c #A3C511", +"+ c #A2C511", +"@ c #A2C611", +"# c #A2C510", +"$ c #A2C513", +"% c #A2C412", +"& c #A2C413", +"* c #A2C414", +"= c #A2C515", +"- c #A2C50F", +"; c #A3C510", +"> c #A2C410", +", c #A2C411", +"' c #A2C314", +") c #A2C316", +"! c #A2C416", +"~ c #A0C315", +"{ c #A1C313", +"] c #A1C412", +"^ c #A2C40F", +"/ c #A1C410", +"( c #A0C510", +"_ c #A0C511", +": c #A1C414", +"< c #9FC30E", +"[ c #98B51B", +"} c #5F7609", +"| c #5C6E0E", +"1 c #5B6E10", +"2 c #5C6C14", +"3 c #5A6E0A", +"4 c #839E16", +"5 c #A0C515", +"6 c #A0C513", +"7 c #A2C512", +"8 c #A1C512", +"9 c #A1C511", +"0 c #A1C50F", +"a c #91AE12", +"b c #505E11", +"c c #1F2213", +"d c #070606", +"e c #040204", +"f c #040306", +"g c #15160F", +"h c #2F3A0D", +"i c #859F1B", +"j c #A1C215", +"k c #A0C50F", +"l c #A1C510", +"m c #A0C110", +"n c #839C1B", +"o c #1E240A", +"p c #050205", +"q c #030304", +"r c #323917", +"s c #556313", +"t c #56680B", +"u c #536609", +"v c #4A561B", +"w c #0B0D04", +"x c #030208", +"y c #090A05", +"z c #5F6F18", +"A c #A0C117", +"B c #91AF10", +"C c #1E2209", +"D c #030205", +"E c #17190D", +"F c #7D981C", +"G c #9ABA12", +"H c #A3C411", +"I c #A3C713", +"J c #95B717", +"K c #7F9A18", +"L c #8FAE1B", +"M c #394413", +"N c #040305", +"O c #090807", +"P c #6C7E19", +"Q c #A6C614", +"R c #A1C411", +"S c #64761F", +"T c #030105", +"U c #070707", +"V c #728513", +"W c #A2C40C", +"X c #A2C70B", +"Y c #89A519", +"Z c #313B11", +"` c #101409", +" . c #586A19", +".. c #97B620", +"+. c #1B2207", +"@. c #282D11", +"#. c #A6C41B", +"$. c #A1C413", +"%. c #A3C512", +"&. c #2E370B", +"*. c #030108", +"=. c #21260F", +"-. c #A5C21A", +";. c #A0C60D", +">. c #6D841A", +",. c #0F1007", +"'. c #040207", +"). c #0E1009", +"!. c #515F14", +"~. c #A2C41B", +"{. c #5E701B", +"]. c #030203", +"^. c #0B0B04", +"/. c #87A111", +"(. c #A0C411", +"_. c #A0C316", +":. c #212907", +"<. c #222C0B", +"[. c #A3C516", +"}. c #9CBE1A", +"|. c #5E6F1B", +"1. c #0E0F0B", +"2. c #040205", +"3. c #181B0D", +"4. c #93AE25", +"5. c #A0C610", +"6. c #617715", +"7. c #030306", +"8. c #070704", +"9. c #809818", +"0. c #A1C415", +"a. c #475416", +"b. c #030309", +"c. c #12170B", +"d. c #91B01E", +"e. c #5C721F", +"f. c #05050B", +"g. c #33371D", +"h. c #0E0F08", +"i. c #040405", +"j. c #758921", +"k. c #46511B", +"l. c #030207", +"m. c #131409", +"n. c #9FB921", +"o. c #859D21", +"p. c #080809", +"q. c #030305", +"r. c #46521C", +"s. c #8EB017", +"t. c #627713", +"u. c #4D5F17", +"v. c #97B71D", +"w. c #77901D", +"x. c #151708", +"y. c #0D0D0B", +"z. c #0C0B08", +"A. c #455216", +"B. c #A5C616", +"C. c #A0C114", +"D. c #556118", +"E. c #050307", +"F. c #050407", +"G. c #363E17", +"H. c #5D7309", +"I. c #A2BF28", +"J. c #A2C417", +"K. c #A4C620", +"L. c #60701D", +"M. c #030103", +"N. c #030303", +"O. c #809A1B", +"P. c #A0C310", +"Q. c #A0C410", +"R. c #A3C415", +"S. c #9CB913", +"T. c #6F801F", +"U. c #1A210A", +"V. c #1D1E0D", +"W. c #1D220F", +"X. c #1E210F", +"Y. c #0F0F07", +"Z. c #0E1007", +"`. c #090906", +" + c #2B360E", +".+ c #97B813", +"++ c #A2C50E", +"@+ c #A5C517", +"#+ c #90AD20", +"$+ c #5D6C1A", +"%+ c #394115", +"&+ c #050704", +"*+ c #040304", +"=+ c #202807", +"-+ c #5E6B21", +";+ c #728D0C", +">+ c #65791D", +",+ c #29330F", +"'+ c #7A911D", +")+ c #A2C614", +"!+ c #A1C513", +"~+ c #A3C50E", +"{+ c #A3C414", +"]+ c #9CBD11", +"^+ c #95B40C", +"/+ c #94B50F", +"(+ c #95B510", +"_+ c #99B913", +":+ c #A0C414", +"<+ c #9ABC11", +"[+ c #A0C314", +"}+ c #A1C40F", +"|+ c #A3C513", +". + + @ + # # $ % & * = & - + + + + + # # ", +"; > , > # > > $ ' ) ! ~ { ] ^ , - > , > # ", +"+ + / ( _ : < [ } | 1 2 3 4 5 6 : 7 8 # # ", +"+ 9 # ( 0 a b c d e e e f g h i j 9 k l + ", +"+ + > m n o p q r s t u v w x y z A & # # ", +"# % k B C D E F G H I J K L M N O P Q ] , ", +"$ R > S T U V W , X Y Z ` ...+.T @.#.$.] ", +"% %.* &.*.=.-.;.> >.,.'.).!.~.{.].^./.R 7 ", +"7 (._.:.D <.[.}.|.1.2.2.3.4.5.6.7.8.9._ 8 ", +". % 0.a.b.c.d.e.f.N g.h.2.i.j.k.l.m.n.$ # ", +"; + ; o.p.q.r.s.t.u.v.w.x.2.y.z.].A.B.l : ", +"# # R C.D.E.F.G.H.I.J.K.L.2.M.M.N.O.P.; l ", +"# / Q.R.S.T.U.].8.V.W.X.Y.e Z.`.]. +.+++7 ", +"+ + 9 / ; @+#+$+%+&+e *+=+-+;+>+,+'+)+, # ", +"# + > % & !+~+{+]+^+/+(+_+) Q.:+<+[+$ R # ", +"7 + > }+# % k |+8 + > + * $ _ / , 7 8 ] - "}; +#endif + +static ImageIconProvider *imageIconProvider = 0; +static PixmapChooser *pixmapChooser = 0; +#endif + +PixmapView::PixmapView( QWidget *parent ) + : QScrollView( parent ) +{ + viewport()->setBackgroundMode( PaletteBase ); +} + +void PixmapView::setPixmap( const QPixmap &pix ) +{ + pixmap = pix; + resizeContents( pixmap.size().width(), pixmap.size().height() ); + viewport()->repaint( false ); +} + +void PixmapView::drawContents( QPainter *p, int cx, int cy, int cw, int ch ) +{ + p->fillRect( cx, cy, cw, ch, colorGroup().brush( QColorGroup::Base ) ); + p->drawPixmap( 0, 0, pixmap ); +} + +void PixmapView::previewUrl( const QUrl &u ) +{ + if ( u.isLocalFile() ) { + QString path = u.path(); + QPixmap pix( path ); + if ( !pix.isNull() ) + setPixmap( pix ); + } else { + qWarning( "Previewing remot files not supported" ); + } +} + +QStringList qChoosePixmaps( QWidget *parent ) +{ + if ( !imageIconProvider && !QFileDialog::iconProvider() ) + QFileDialog::setIconProvider( ( imageIconProvider = new ImageIconProvider ) ); + + QString filter; + QString all = qApp->translate( "qChoosePixmap", "All Pixmaps (" ); + for ( uint i = 0; i < QImageIO::outputFormats().count(); i++ ) { + filter += qApp->translate( "qChoosePixmap", "%1-Pixmaps (%2)\n" ). + arg( QImageIO::outputFormats().at( i ) ). + arg( "*." + QString( QImageIO::outputFormats().at( i ) ).lower() ); + all += "*." + QString( QImageIO::outputFormats().at( i ) ).lower() + ";"; + } + filter.prepend( all + qApp->translate( "qChoosePixmap", ")\n" ) ); + filter += qApp->translate( "qChoosePixmap", "All Files (*)" ); + + QFileDialog fd( QString::null, filter, parent, 0, true ); + fd.setMode( QFileDialog::ExistingFiles ); + fd.setContentsPreviewEnabled( true ); + PixmapView *pw = new PixmapView( &fd ); + fd.setContentsPreview( pw, pw ); + fd.setViewMode( QFileDialog::List ); + fd.setPreviewMode( QFileDialog::Contents ); + fd.setCaption( qApp->translate( "qChoosePixmap", "Choose Images" ) ); + if ( fd.exec() == QDialog::Accepted ) + return fd.selectedFiles(); + return QStringList(); +} + +QPixmap qChoosePixmap( QWidget *parent, FormWindow *fw, const QPixmap &old, QString *fn ) +{ +#if defined(DESIGNER) + if ( !fw || fw->savePixmapInline() ) { + if ( !imageIconProvider && !QFileDialog::iconProvider() ) + QFileDialog::setIconProvider( ( imageIconProvider = new ImageIconProvider ) ); + + QString filter; + QString all = i18n( "All Pixmaps" ); + all += " ("; + for ( uint i = 0; i < QImageIO::outputFormats().count(); i++ ) { + filter += i18n( "%1-Pixmaps (%2)\n" ). + arg( QImageIO::outputFormats().at( i ) ). + arg( "*." + QString( QImageIO::outputFormats().at( i ) ).lower() ); + all += "*." + QString( QImageIO::outputFormats().at( i ) ).lower() + ";"; + } + filter.prepend( all + ")\n" ); + filter += i18n( "All Files (*)" ); + + QFileDialog fd( QString::null, filter, parent, 0, true ); + fd.setContentsPreviewEnabled( true ); + PixmapView *pw = new PixmapView( &fd ); + fd.setContentsPreview( pw, pw ); + fd.setViewMode( QFileDialog::List ); + fd.setPreviewMode( QFileDialog::Contents ); + fd.setCaption( i18n( "Choose Pixmap" ) ); + if ( fd.exec() == QDialog::Accepted ) { + QPixmap pix( fd.selectedFile() ); + if ( fn ) + *fn = fd.selectedFile(); + MetaDataBase::setPixmapArgument( fw, pix.serialNumber(), fd.selectedFile() ); + return pix; + } + } +#ifndef KOMMANDER + else if ( fw && fw->savePixmapInProject() ) { + PixmapCollectionEditor dia( parent, 0, true ); + dia.setProject( fw->project() ); + dia.setChooserMode( true ); + dia.setCurrentItem( MetaDataBase::pixmapKey( fw, old.serialNumber() ) ); + if ( dia.exec() == QDialog::Accepted ) { + QPixmap pix( fw->project()->pixmapCollection()->pixmap( dia.viewPixmaps->currentItem()->text() ) ); + MetaDataBase::setPixmapKey( fw, pix.serialNumber(), dia.viewPixmaps->currentItem()->text() ); + return pix; + } + } +#endif + else { + PixmapFunction dia( parent, 0, true ); + QObject::connect( dia.helpButton, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); + dia.labelFunction->setText( fw->pixmapLoaderFunction() + "(" ); + dia.editArguments->setText( MetaDataBase::pixmapArgument( fw, old.serialNumber() ) ); + dia.editArguments->setFocus(); + if ( dia.exec() == QDialog::Accepted ) { + QPixmap pix( PixmapChooser::loadPixmap( "image.xpm" ) ); + MetaDataBase::setPixmapArgument( fw, pix.serialNumber(), dia.editArguments->text() ); + return pix; + } + } +#else + Q_UNUSED( parent ); + Q_UNUSED( fw ); + Q_UNUSED( old ); +#endif + return QPixmap(); +} + +ImageIconProvider::ImageIconProvider( QWidget *parent, const char *name ) + : QFileIconProvider( parent, name ), imagepm( PixmapChooser::loadPixmap( "image.xpm", PixmapChooser::Mini ) ) +{ + fmts = QImage::inputFormats(); +} + +ImageIconProvider::~ImageIconProvider() +{ +} + +const QPixmap * ImageIconProvider::pixmap( const QFileInfo &fi ) +{ + QString ext = fi.extension().upper(); + if ( fmts.contains( ext ) ) { + return &imagepm; + } else { + return QFileIconProvider::pixmap( fi ); + } +} + +PixmapChooser::PixmapChooser() +{ + // #### hardcoded at the moment + miniPixDir = "pics/mini/"; + noSizePixDir = "pics/"; + smallPixDir = "pics/small/"; + largePixDir = "pics/large/"; +} + +QString PixmapChooser::pixmapPath( Size size ) const +{ + if ( size == Small ) + return smallPixDir; + if ( size == Mini ) + return miniPixDir; + if ( size == NoSize ) + return noSizePixDir; + return largePixDir; +} + +QPixmap PixmapChooser::loadPixmap( const QString &name, Size size ) +{ +#if defined(DESIGNER) + if ( !pixmapChooser ) + pixmapChooser = new PixmapChooser; + + if ( name == "logo" ) + return QPixmap( logo_xpm ); + + if ( name[ 0 ] == '/' || name[ 0 ] == '\\' || name[ 1 ] == ':' ) + return QPixmap( name ); + + QString lookup; + switch ( size ) { + case Small: + lookup = "small/"; + break; + case Disabled: + lookup = "small/disabled/"; + break; + case Large: + lookup = "large/"; + break; + case Mini: + lookup = "mini/"; + break; + default: + break; + } + + QString lookup_png = lookup + QFileInfo( name ).baseName() + ".png"; + lookup += name; + + Embed *e = &embed_vec[ 0 ]; + while ( e->name ) { + if ( QString( e->name ) == lookup ) { + QImage img; + img.loadFromData( (const uchar*)e->data, e->size ); + QPixmap pix; + pix.convertFromImage( img ); + return pix; + } else if ( QString( e->name ) == lookup_png ) { + QImage img; + img.loadFromData( (const uchar*)e->data, e->size ); + QPixmap pix; + pix.convertFromImage( img ); + return pix; + } + e++; + } + + // fallback + return QPixmap( pixmapChooser->pixmapPath( size ) + name ); +#else + Q_UNUSED( name ); + Q_UNUSED( size ); + return QPixmap(); +#endif +} +#include "pixmapchooser.moc" diff --git a/kommander/editor/pixmapchooser.h b/kommander/editor/pixmapchooser.h new file mode 100644 index 00000000..22e5f94c --- /dev/null +++ b/kommander/editor/pixmapchooser.h @@ -0,0 +1,86 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef PIXMAPCHOOSER_H +#define PIXMAPCHOOSER_H + +#include <qfiledialog.h> +#include <qscrollview.h> +#include <qpixmap.h> +#include <qurl.h> + +class FormWindow; + +class PixmapView : public QScrollView, + public QFilePreview +{ + Q_OBJECT + +public: + PixmapView( QWidget *parent ); + void setPixmap( const QPixmap &pix ); + void drawContents( QPainter *p, int, int, int, int ); + void previewUrl( const QUrl &u ); + +private: + QPixmap pixmap; + +}; + +class ImageIconProvider : public QFileIconProvider +{ + Q_OBJECT + +public: + ImageIconProvider( QWidget *parent = 0, const char *name = 0 ); + ~ImageIconProvider(); + + const QPixmap *pixmap( const QFileInfo &fi ); + +private: + QStrList fmts; + QPixmap imagepm; + +}; + +QPixmap qChoosePixmap( QWidget *parent, FormWindow *fw = 0, const QPixmap &old = QPixmap(), QString *fn = 0 ); +QStringList qChoosePixmaps( QWidget *parent ); + + +class PixmapChooser +{ +public: + enum Size { Mini, Small, Large, NoSize, Disabled }; + + PixmapChooser(); + QString pixmapPath( Size size ) const; + + static QPixmap loadPixmap( const QString &name, Size size = Small ); + +private: + QString smallPixDir; + QString largePixDir; + QString miniPixDir; + QString noSizePixDir; + +}; + + +#endif diff --git a/kommander/editor/pixmapfunction.ui b/kommander/editor/pixmapfunction.ui new file mode 100644 index 00000000..a75869dc --- /dev/null +++ b/kommander/editor/pixmapfunction.ui @@ -0,0 +1,923 @@ +<!DOCTYPE UI><UI> +<class>PixmapFunction</class><comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget> + <class>QDialog</class> + <property stdset="1"> + <name>name</name> + <cstring>PixmapFunction</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>0</x> + <y>0</y> + <width>300</width> + <height>108</height> + </rect> + </property> + <property stdset="1"> + <name>caption</name> + <string>Choose Pixmap</string> + </property> + <property stdset="1"> + <name>sizeGripEnabled</name> + <bool>true</bool> + </property> + <vbox> + <property stdset="1"> + <name>margin</name> + <number>11</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel3</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Enter arguments for loading the pixmap:</string> + </property> + <property> + <name>buddy</name> + <cstring>editArguments</cstring> + </property> + </widget> + <widget> + <class>QFrame</class> + <property stdset="1"> + <name>name</name> + <cstring>Frame9</cstring> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Sunken</enum> + </property> + <property stdset="1"> + <name>frameShape</name> + <enum>StyledPanel</enum> + </property> + <property stdset="1"> + <name>lineWidth</name> + <number>2</number> + </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> + </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>2</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>0</number> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>labelFunction</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>QPixmap(</string> + </property> + <property stdset="1"> + <name>palette</name> + <palette> + <active> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>233</red> + <green>233</green> + <blue>233</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </active> + <disabled> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>242</red> + <green>242</green> + <blue>242</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </disabled> + <inactive> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>242</red> + <green>242</green> + <blue>242</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </inactive> + </palette> + </property> + </widget> + <widget> + <class>QLineEdit</class> + <property stdset="1"> + <name>name</name> + <cstring>editArguments</cstring> + </property> + <property stdset="1"> + <name>frame</name> + <bool>false</bool> + </property> + <property stdset="1"> + <name>palette</name> + <palette> + <active> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>233</red> + <green>233</green> + <blue>233</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </active> + <disabled> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>242</red> + <green>242</green> + <blue>242</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </disabled> + <inactive> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>242</red> + <green>242</green> + <blue>242</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </inactive> + </palette> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel5</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>)</string> + </property> + <property stdset="1"> + <name>palette</name> + <palette> + <active> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>233</red> + <green>233</green> + <blue>233</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </active> + <disabled> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>242</red> + <green>242</green> + <blue>242</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </disabled> + <inactive> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>211</red> + <green>211</green> + <blue>211</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>242</red> + <green>242</green> + <blue>242</blue> + </color> + <color> + <red>105</red> + <green>105</green> + <blue>105</blue> + </color> + <color> + <red>140</red> + <green>140</green> + <blue>140</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + <color> + <red>0</red> + <green>0</green> + <blue>128</blue> + </color> + <color> + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </inactive> + </palette> + </property> + </widget> + </hbox> + </widget> + <spacer> + <property> + <name>name</name> + <cstring>Spacer1</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Vertical</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget> + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout3</cstring> + </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>helpButton</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Help</string> + </property> + <property stdset="1"> + <name>autoDefault</name> + <bool>true</bool> + </property> + </widget> + <spacer> + <property> + <name>name</name> + <cstring>Horizontal Spacing2</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>buttonOk</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&OK</string> + </property> + <property stdset="1"> + <name>autoDefault</name> + <bool>true</bool> + </property> + <property stdset="1"> + <name>default</name> + <bool>true</bool> + </property> + </widget> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>buttonCancel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>&Cancel</string> + </property> + <property stdset="1"> + <name>autoDefault</name> + <bool>true</bool> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>PixmapFunction</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>PixmapFunction</receiver> + <slot>reject()</slot> + </connection> +</connections> +</UI> diff --git a/kommander/editor/preferences.ui b/kommander/editor/preferences.ui new file mode 100644 index 00000000..6bd5dac3 --- /dev/null +++ b/kommander/editor/preferences.ui @@ -0,0 +1,669 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>Preferences</class> +<comment>********************************************************************* +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*********************************************************************</comment> +<widget class="QDialog"> + <property name="name"> + <cstring>Preferences</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>467</width> + <height>404</height> + </rect> + </property> + <property name="caption"> + <string>Preferences</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Preferences</b><p>Change the preferences of Qt Designer. There is always one tab with general preferences. There may be additional tabs, depending on which plugins are installed.</p></string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QTabWidget"> + <property name="name"> + <cstring>tabWidget</cstring> + </property> + <widget class="QWidget"> + <property name="name"> + <cstring>pageGeneral</cstring> + </property> + <attribute name="title"> + <string>General</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QButtonGroup" row="0" column="0" rowspan="2" colspan="1"> + <property name="name"> + <cstring>ButtonGroup1</cstring> + </property> + <property name="title"> + <string>Backgro&und</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="StyledButton" row="0" column="1"> + <property name="name"> + <cstring>buttonColor</cstring> + </property> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>TabFocus</enum> + </property> + <property name="scale" stdset="0"> + <bool>false</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Choose a color</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Select a color in the color dialog.</string> + </property> + </widget> + <widget class="QRadioButton" row="0" column="0"> + <property name="name"> + <cstring>radioColor</cstring> + </property> + <property name="focusPolicy"> + <enum>TabFocus</enum> + </property> + <property name="text"> + <string>Co&lor</string> + </property> + <property name="toolTip" stdset="0"> + <string>Use a background color</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Use a background color.</string> + </property> + </widget> + <widget class="QRadioButton" row="1" column="0"> + <property name="name"> + <cstring>radioPixmap</cstring> + </property> + <property name="text"> + <string>&Pixmap</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Use a background pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Use a background pixmap.</string> + </property> + </widget> + <widget class="StyledButton" row="1" column="1"> + <property name="name"> + <cstring>buttonPixmap</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>TabFocus</enum> + </property> + <property name="scale" stdset="0"> + <bool>false</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Select a pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Choose a pixmap file.</string> + </property> + </widget> + </grid> + </widget> + <widget class="QCheckBox" row="0" column="1"> + <property name="name"> + <cstring>checkBoxShowGrid</cstring> + </property> + <property name="text"> + <string>Show &grid</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Show Grid</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Customize the grid appearance for all forms.</b><p>When <b>Show Grid</b> is checked, all forms show a grid.</p></string> + </property> + </widget> + <widget class="QGroupBox" row="1" column="1"> + <property name="name"> + <cstring>GroupBox1</cstring> + </property> + <property name="title"> + <string>Gr&id</string> + </property> + <property name="whatsThis" stdset="0"> + <string></string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkBoxGrid</cstring> + </property> + <property name="text"> + <string>Sn&ap to grid</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Snap to the grid</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Customize the grid-settings for all forms.</b><p>When <b>Snap to Grid</b> is checked, the widgets snap to the grid using the the X/Y resolution.</p></string> + </property> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout4</cstring> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QSpinBox" row="0" column="1"> + <property name="name"> + <cstring>spinGridX</cstring> + </property> + <property name="maxValue"> + <number>50</number> + </property> + <property name="minValue"> + <number>5</number> + </property> + <property name="value"> + <number>10</number> + </property> + <property name="toolTip" stdset="0"> + <string>Grid resolution</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Customize the grid-settings for all forms.</b><p>When <b>Show Grid</b> is checked, a grid is shown on all forms using the X/Y resolution.</p></string> + </property> + </widget> + <widget class="QSpinBox" row="1" column="1"> + <property name="name"> + <cstring>spinGridY</cstring> + </property> + <property name="maxValue"> + <number>50</number> + </property> + <property name="minValue"> + <number>5</number> + </property> + <property name="value"> + <number>10</number> + </property> + <property name="toolTip" stdset="0"> + <string>Grid resolution</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Customize the grid-settings for all forms.</b><p>When <b>Show Grid</b> is checked, a grid is shown on all forms using the X/Y resolution.</p></string> + </property> + </widget> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>Label1</cstring> + </property> + <property name="text"> + <string>Grid-&X:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>spinGridX</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>Label1_2</cstring> + </property> + <property name="text"> + <string>Grid-&Y:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>spinGridY</cstring> + </property> + </widget> + </grid> + </widget> + </vbox> + </widget> + <spacer row="3" column="0"> + <property name="name"> + <cstring>Spacer3</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="whatsThis" stdset="0"> + <string>A splash screen is displayed when starting Qt Designer if this option is checked.</string> + </property> + </spacer> + <widget class="QGroupBox" row="2" column="0"> + <property name="name"> + <cstring>GroupBox5</cstring> + </property> + <property name="title"> + <string>Ge&neral</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkBoxWorkspace</cstring> + </property> + <property name="text"> + <string>Restore last &workspace on startup</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Restore last workspace</string> + </property> + <property name="whatsThis" stdset="0"> + <string>The current workspace settings will be restored the next time you start Qt Designer if this option is checked.</string> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkBoxSplash</cstring> + </property> + <property name="text"> + <string>Show &splash screen on startup</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <property name="toolTip" stdset="0"> + <string>Show Splashscreen</string> + </property> + <property name="whatsThis" stdset="0"> + <string>A splash screen is displayed when starting Qt Designer if this option is checked.</string> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkAutoEdit</cstring> + </property> + <property name="text"> + <string>Disable data&base auto-edit in preview</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>Label3</cstring> + </property> + <property name="text"> + <string>&Documentation path:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>editDocPath</cstring> + </property> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout6</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLineEdit"> + <property name="name"> + <cstring>editDocPath</cstring> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Enter the path to the documentation.</b><p>You may provide an $environment variable as the first part of the pathname.</p></string> + </property> + </widget> + <widget class="QToolButton"> + <property name="name"> + <cstring>buttonDocPath</cstring> + </property> + <property name="focusPolicy"> + <enum>TabFocus</enum> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="toolTip" stdset="0"> + <string>Select path</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Look for the documentation path.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> + </widget> + <widget class="QGroupBox" row="2" column="1"> + <property name="name"> + <cstring>GroupBox3</cstring> + </property> + <property name="title"> + <string>&Toolbars</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkBoxBigIcons</cstring> + </property> + <property name="text"> + <string>Show &big icons</string> + </property> + <property name="toolTip" stdset="0"> + <string>Big Icons</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Big icons will be used in the toolbars if this is checked.</string> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>checkBoxTextLabels</cstring> + </property> + <property name="text"> + <string>Show text lab&els</string> + </property> + <property name="toolTip" stdset="0"> + <string>Text Labels</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Text labels will be usin in the toolbars if this is checked.</string> + </property> + </widget> + </vbox> + </widget> + </grid> + </widget> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout6</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>helpButton</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>false</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<customwidgets> + <customwidget> + <class>StyledButton</class> + <header location="local">styledbutton.h</header> + <sizehint> + <width>40</width> + <height>25</height> + </sizehint> + <container>0</container> + <sizepolicy> + <hordata>5</hordata> + <verdata>5</verdata> + </sizepolicy> + <pixmap>image0</pixmap> + <signal>clicked()</signal> + <signal>changed()</signal> + <property type="Color">color</property> + <property type="Pixmap">pixmap</property> + <property type="Bool">scale</property> + </customwidget> +</customwidgets> +<images> + <image name="image0"> + <data format="XPM.GZ" length="1112">789c9dd2cb8e9b301406e07d9e0225bba89a09601350d505302c5b7559a9eac23e6672b363620c0ca9faeef53949da2e2a55eab123f9e38f2f217e5e475f3e7f8cd6cf8bde0b7f8008f6c2456b3518337ffdf6e1fb62992451e8691ac5cb778be55304d1277b6e71fc12c6ab0d157222e61bd8e4c812196f6216535a13f318624a6764b2495842e99558249014c81e99c6294b69d3376291424ae9806431638cd28628183081f4489e70ce13e4852878c129ad905992f18cd291283295517a466ed32ddfa64847945bb595c80e99a739cf29d54499ab9c528b2c58c10b86344428540148400a26b8a0541241b482d215523299494a0551c9562ae409091c32e0c82351410b942aa4e22a53941e882d36e41ed966d8903b2215f215f99a6143b6442afaafff5aff485658622584a091941256948443d1cabbdd6ebf3f28753c09a9e9cdc1fe703c9e4ea19f689a0430fa4c8908082be093d08d016bbb0bbd5e7ceafade5b30de19d083b3fa9e008cd39b9fafd69495b473af7fcfb15325c1d61eea0afaf005ddf97b5295c658a866338f97591babef7340fa396c6c5ca9e7fe650807d0bf566b4262299986ba335a3b4a2cc84b69ac85b1b673037d8fabf95b023a9c09cc7530e104dd5419ed6e27083fb09a7c752db5a9bd31cde4ec634ed8a39aebbe337618c3f6fdc5dee6d8b0bb0d6b5b8b1fad43d78fe4e14e3f6aace8e29d9d736777fea3c686eee0138c9726d4d00c548df7a315ff750f7ebc5ffc04a0e5308d</data> + </image> +</images> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>Preferences</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>Preferences</receiver> + <slot>reject()</slot> + </connection> + <connection> + <sender>checkBoxGrid</sender> + <signal>toggled(bool)</signal> + <receiver>spinGridX</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection> + <sender>checkBoxGrid</sender> + <signal>toggled(bool)</signal> + <receiver>spinGridY</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection> + <sender>radioColor</sender> + <signal>toggled(bool)</signal> + <receiver>buttonColor</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection> + <sender>radioPixmap</sender> + <signal>toggled(bool)</signal> + <receiver>buttonPixmap</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <connection> + <sender>checkBoxShowGrid</sender> + <signal>toggled(bool)</signal> + <receiver>GroupBox1</receiver> + <slot>setEnabled(bool)</slot> + </connection> + <slot access="protected" language="C++" returnType="void">init()</slot> + <slot access="protected" language="C++" returnType="void">destroy()</slot> +</connections> +<tabstops> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> + <tabstop>tabWidget</tabstop> + <tabstop>radioColor</tabstop> + <tabstop>radioPixmap</tabstop> + <tabstop>buttonColor</tabstop> + <tabstop>buttonPixmap</tabstop> + <tabstop>checkBoxShowGrid</tabstop> + <tabstop>checkBoxGrid</tabstop> + <tabstop>spinGridX</tabstop> + <tabstop>spinGridY</tabstop> + <tabstop>checkBoxWorkspace</tabstop> + <tabstop>checkBoxSplash</tabstop> + <tabstop>checkAutoEdit</tabstop> + <tabstop>editDocPath</tabstop> + <tabstop>buttonDocPath</tabstop> + <tabstop>checkBoxBigIcons</tabstop> + <tabstop>checkBoxTextLabels</tabstop> + <tabstop>helpButton</tabstop> +</tabstops> +</UI> diff --git a/kommander/editor/previewframe.cpp b/kommander/editor/previewframe.cpp new file mode 100644 index 00000000..9ffd77af --- /dev/null +++ b/kommander/editor/previewframe.cpp @@ -0,0 +1,52 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qvbox.h> +#include <qpainter.h> + +#include "previewframe.h" + +PreviewFrame::PreviewFrame( QWidget *parent, const char *name ) + : QVBox( parent, name ) +{ + setMinimumSize(200, 200); + setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); + setLineWidth(1); + + PreviewWorkspace * w = new PreviewWorkspace( this ); + w->setEraseColor(colorGroup().dark()); + previewWidget = new PreviewWidget( w ); + previewWidget->move( 10, 10 ); +} + +void PreviewFrame::setPreviewPalette(QPalette pal) +{ + previewWidget->setPalette(pal); +} + +void PreviewWorkspace::paintEvent( QPaintEvent* ) +{ + QPainter p ( this ); + p.setPen( QPen( white ) ); + p.drawText ( 0, height() / 2, width(), height(), AlignHCenter, + "The moose in the noose\nate the goose who was loose." ); +} + +#include "previewframe.moc" diff --git a/kommander/editor/previewframe.h b/kommander/editor/previewframe.h new file mode 100644 index 00000000..b8ff33a4 --- /dev/null +++ b/kommander/editor/previewframe.h @@ -0,0 +1,53 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef __previewframe_h__ +#define __previewframe_h__ + +#include <qvbox.h> +#include <qworkspace.h> + +#include "previewwidgetimpl.h" + +class PreviewWorkspace : public QWorkspace +{ + Q_OBJECT +public: + PreviewWorkspace( QWidget* parent = 0, const char* name = 0 ) + : QWorkspace( parent, name ) {} + ~PreviewWorkspace() {} + +protected: + void paintEvent( QPaintEvent* ); +}; + +class PreviewFrame : public QVBox +{ + Q_OBJECT + +public: + PreviewFrame( QWidget *parent = 0, const char *name = 0 ); + void setPreviewPalette(QPalette); + +private: + PreviewWidget *previewWidget; +}; + +#endif diff --git a/kommander/editor/previewwidget.ui b/kommander/editor/previewwidget.ui new file mode 100644 index 00000000..317313cf --- /dev/null +++ b/kommander/editor/previewwidget.ui @@ -0,0 +1,279 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>PreviewWidgetBase</class> +<widget class="QWidget"> + <property name="name"> + <cstring>PreviewWidgetBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>378</width> + <height>236</height> + </rect> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + </sizepolicy> + </property> + <property name="caption"> + <string>Preview Window</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout6</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout17</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QButtonGroup"> + <property name="name"> + <cstring>ButtonGroup1</cstring> + </property> + <property name="title"> + <string>ButtonGroup</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QRadioButton"> + <property name="name"> + <cstring>RadioButton1</cstring> + </property> + <property name="text"> + <string>RadioButton1</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + <widget class="QRadioButton"> + <property name="name"> + <cstring>RadioButton2</cstring> + </property> + <property name="text"> + <string>RadioButton2</string> + </property> + </widget> + <widget class="QRadioButton"> + <property name="name"> + <cstring>RadioButton3</cstring> + </property> + <property name="text"> + <string>RadioButton3</string> + </property> + </widget> + </vbox> + </widget> + <widget class="QButtonGroup"> + <property name="name"> + <cstring>ButtonGroup2</cstring> + </property> + <property name="title"> + <string>ButtonGroup2</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QCheckBox"> + <property name="name"> + <cstring>CheckBox1</cstring> + </property> + <property name="text"> + <string>CheckBox1</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + <widget class="QCheckBox"> + <property name="name"> + <cstring>CheckBox2</cstring> + </property> + <property name="text"> + <string>CheckBox2</string> + </property> + </widget> + </vbox> + </widget> + <widget class="QProgressBar"> + <property name="name"> + <cstring>ProgressBar1</cstring> + </property> + <property name="progress"> + <number>50</number> + </property> + </widget> + </vbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout5</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLineEdit"> + <property name="name"> + <cstring>LineEdit1</cstring> + </property> + <property name="text"> + <string>LineEdit</string> + </property> + </widget> + <widget class="QComboBox"> + <item> + <property name="text"> + <string>ComboBox</string> + </property> + </item> + <property name="name"> + <cstring>ComboBox1</cstring> + </property> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout13</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QSpinBox"> + <property name="name"> + <cstring>SpinBox1</cstring> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>PushButton1</cstring> + </property> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </hbox> + </widget> + <widget class="QScrollBar"> + <property name="name"> + <cstring>ScrollBar1</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + </widget> + <widget class="QSlider"> + <property name="name"> + <cstring>Slider1</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + </widget> + <widget class="QTextView"> + <property name="name"> + <cstring>textView</cstring> + </property> + <property name="maximumSize"> + <size> + <width>32767</width> + <height>50</height> + </size> + </property> + <property name="text"> + <string><p> +<a href="http://www.trolltech.com"> http://www.trolltech.com </a> +</p> +<p> +<a href="http://www.kde.org"> http://www.kde.org </a> +</p></string> + </property> + </widget> + </vbox> + </widget> + </hbox> + </widget> + <spacer> + <property name="name"> + <cstring>Spacer2</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </vbox> +</widget> +<connections> + <slot access="protected" language="C++" returnType="void">init()</slot> + <slot access="protected" language="C++" returnType="void">destroy()</slot> +</connections> +</UI> diff --git a/kommander/editor/previewwidgetimpl.cpp b/kommander/editor/previewwidgetimpl.cpp new file mode 100644 index 00000000..9febc180 --- /dev/null +++ b/kommander/editor/previewwidgetimpl.cpp @@ -0,0 +1,60 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "qobjectlist.h" +#include "previewwidgetimpl.h" + +PreviewWidget::PreviewWidget( QWidget *parent, const char *name ) + : PreviewWidgetBase( parent, name ) +{ + // install event filter on child widgets + QObjectList *l = queryList("QWidget"); + QObjectListIt it(*l); + QObject * obj; + while ((obj = it.current()) != 0) { + ++it; + obj->installEventFilter(this); + ((QWidget*)obj)->setFocusPolicy(NoFocus); + } +} + +void PreviewWidget::closeEvent(QCloseEvent *e) +{ + e->ignore(); +} + +bool PreviewWidget::eventFilter(QObject *, QEvent *e) +{ + switch ( e->type() ) { + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + case QEvent::MouseButtonDblClick: + case QEvent::MouseMove: + case QEvent::KeyPress: + case QEvent::KeyRelease: + case QEvent::Enter: + case QEvent::Leave: + return true; // ignore; + default: + break; + } + return false; +} +#include "previewwidgetimpl.moc" diff --git a/kommander/editor/previewwidgetimpl.h b/kommander/editor/previewwidgetimpl.h new file mode 100644 index 00000000..142a7758 --- /dev/null +++ b/kommander/editor/previewwidgetimpl.h @@ -0,0 +1,37 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef __previewwidgetimpl_h__ +#define __previewwidgetimpl_h__ + +#include "previewwidget.h" + +class PreviewWidget : public PreviewWidgetBase +{ + Q_OBJECT + +public: + PreviewWidget( QWidget *parent = 0, const char *name = 0 ); + + void closeEvent(QCloseEvent *); + bool eventFilter(QObject *, QEvent *); +}; + +#endif diff --git a/kommander/editor/propertyeditor.cpp b/kommander/editor/propertyeditor.cpp new file mode 100644 index 00000000..9dfb7759 --- /dev/null +++ b/kommander/editor/propertyeditor.cpp @@ -0,0 +1,3706 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qvariant.h> // HP-UX compiler needs this here + +#include "propertyeditor.h" +#include "pixmapchooser.h" +#include "formwindow.h" +#include "command.h" +#include "metadatabase.h" +#include "widgetdatabase.h" +#include "widgetfactory.h" +#include "globaldefs.h" +#include "defs.h" +#include "asciivalidator.h" +#include "paletteeditorimpl.h" +#include "multilineeditorimpl.h" +#include "mainwindow.h" +#ifndef KOMMANDER +#include "project.h" +#endif +#include "hierarchyview.h" + +#include <limits.h> + +#include <qpainter.h> +#include <qpalette.h> +#include <qapplication.h> +#include <qheader.h> +#include <qlineedit.h> +#include <qstrlist.h> +#include <qmetaobject.h> +#include <qcombobox.h> +#include <qpushbutton.h> +#include <qhbox.h> +#include <qfontdialog.h> +#include <qspinbox.h> +#include <qevent.h> +#include <qobjectlist.h> +#include <qlistbox.h> +#include <qfontdatabase.h> +#include <qcolor.h> +#include <kcolordialog.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qsizepolicy.h> +#include <qbitmap.h> +#include <qtooltip.h> +#include <qwhatsthis.h> +#include <qaccel.h> +#include <qworkspace.h> +#include <qtimer.h> +#include <qdragobject.h> +#include <qdom.h> +#include <qprocess.h> +#include <qstyle.h> +#include <qdatetimeedit.h> + +#include "pics/arrow.xbm" +#include "pics/uparrow.xbm" +#include "pics/cross.xbm" +#include "pics/wait.xbm" +#include "pics/ibeam.xbm" +#include "pics/sizeh.xbm" +#include "pics/sizev.xbm" +#include "pics/sizeb.xbm" +#include "pics/sizef.xbm" +#include "pics/sizeall.xbm" +#include "pics/vsplit.xbm" +#include "pics/hsplit.xbm" +#include "pics/hand.xbm" +#include "pics/no.xbm" + +#include <klocale.h> + +static QFontDatabase *fontDataBase = 0; +QString assistantPath(); + +static void cleanupFontDatabase() +{ + delete fontDataBase; + fontDataBase = 0; +} + +static QStringList getFontList() +{ + if ( !fontDataBase ) { + fontDataBase = new QFontDatabase; + qAddPostRoutine( cleanupFontDatabase ); + } + return fontDataBase->families(); +} + + +class PropertyWhatsThis : public QWhatsThis +{ +public: + PropertyWhatsThis( PropertyList *l ); + QString text( const QPoint &pos ); + bool clicked( const QString& href ); + +private: + PropertyList *propertyList; + +}; + +PropertyWhatsThis::PropertyWhatsThis( PropertyList *l ) + : QWhatsThis( l->viewport() ), propertyList( l ) +{ +} + +QString PropertyWhatsThis::text( const QPoint &pos ) +{ + return propertyList->whatsThisAt( pos ); +} + +bool PropertyWhatsThis::clicked( const QString& href ) +{ + if ( !href.isEmpty() ) { + QStringList lst; + lst << assistantPath() << (QString( "d:" ) + QString( href )); + QProcess proc( lst ); + proc.start(); + } + return false; // do not hide window +} + + +/*! + \class PropertyItem propertyeditor.h + \brief Base class for all property items + + This is the base class for each property item for the + PropertyList. A simple property item has just a name and a value to + provide an editor for a datatype. But more complex datatypes might + provide an expandable item for editing single parts of the + datatype. See hasSubItems(), initChildren() for that. +*/ + +/*! If this item should be a child of another property item, specify + \a prop as the parent item. +*/ + +PropertyItem::PropertyItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ) + : QListViewItem( l, after ), listview( l ), property( prop ), propertyName( propName ) +{ + setSelectable( false ); + open = false; + setText( 0, propertyName ); + changed = false; + setText( 1, "" ); + resetButton = 0; +} + +PropertyItem::~PropertyItem() +{ + if ( resetButton ) + delete resetButton->parentWidget(); + resetButton = 0; +} + +void PropertyItem::toggle() +{ +} + +void PropertyItem::updateBackColor() +{ + if ( itemAbove() && this != listview->firstChild() ) { + if ( ( ( PropertyItem*)itemAbove() )->backColor == *backColor1 ) + backColor = *backColor2; + else + backColor = *backColor1; + } else { + backColor = *backColor1; + } + if ( listview->firstChild() == this ) + backColor = *backColor1; +} + +QColor PropertyItem::backgroundColor() +{ + updateBackColor(); + if ( (QListViewItem*)this == listview->currentItem() ) + return *selectedBack; + return backColor; +} + +/*! If a subclass is a expandable item, this is called when the child +items should be created. +*/ + +void PropertyItem::createChildren() +{ +} + +/*! If a subclass is a expandable item, this is called when the child +items should be initialized. +*/ + +void PropertyItem::initChildren() +{ +} + +void PropertyItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align ) +{ + QColorGroup g( cg ); + g.setColor( QColorGroup::Base, backgroundColor() ); + g.setColor( QColorGroup::Foreground, Qt::black ); + g.setColor( QColorGroup::Text, Qt::black ); + int indent = 0; + if ( column == 0 ) { + indent = 20 + ( property ? 20 : 0 ); + p->fillRect( 0, 0, width, height(), backgroundColor() ); + p->save(); + p->translate( indent, 0 ); + } + + if ( isChanged() && column == 0 ) { + p->save(); + QFont f = p->font(); + f.setBold( true ); + p->setFont( f ); + } + + if ( !hasCustomContents() || column != 1 ) { + QListViewItem::paintCell( p, g, column, width - indent, align ); + } else { + p->fillRect( 0, 0, width, height(), backgroundColor() ); + drawCustomContents( p, QRect( 0, 0, width, height() ) ); + } + + if ( isChanged() && column == 0 ) + p->restore(); + if ( column == 0 ) + p->restore(); + if ( hasSubItems() && column == 0 ) { + p->save(); + p->setPen( cg.foreground() ); + p->setBrush( cg.base() ); + p->drawRect( 5, height() / 2 - 4, 9, 9 ); + p->drawLine( 7, height() / 2, 11, height() / 2 ); + if ( !isOpen() ) + p->drawLine( 9, height() / 2 - 2, 9, height() / 2 + 2 ); + p->restore(); + } + p->save(); + p->setPen( QPen( cg.dark(), 1 ) ); + p->drawLine( 0, height() - 1, width, height() - 1 ); + p->drawLine( width - 1, 0, width - 1, height() ); + p->restore(); + + if ( listview->currentItem() == this && column == 0 && + !listview->hasFocus() && !listview->viewport()->hasFocus() ) + paintFocus( p, cg, QRect( 0, 0, width, height() ) ); +} + +void PropertyItem::paintBranches( QPainter * p, const QColorGroup & cg, + int w, int y, int h ) +{ + QColorGroup g( cg ); + g.setColor( QColorGroup::Base, backgroundColor() ); + QListViewItem::paintBranches( p, g, w, y, h ); +} + +void PropertyItem::paintFocus( QPainter *p, const QColorGroup &cg, const QRect &r ) +{ + p->save(); + QApplication::style().drawPrimitive(QStyle::PE_Panel, p, r, cg, + QStyle::Style_Sunken, QStyleOption(1,1) ); + p->restore(); +} + +/*! Subclasses which are expandable items have to return true + here. Default is false. +*/ + +bool PropertyItem::hasSubItems() const +{ + return false; +} + +/*! Returns the parent property item here if this is a child or 0 + otherwise. + */ + +PropertyItem *PropertyItem::propertyParent() const +{ + return property; +} + +bool PropertyItem::isOpen() const +{ + return open; +} + +void PropertyItem::setOpen( bool b ) +{ + if ( b == open ) + return; + open = b; + + if ( !open ) { + children.setAutoDelete( true ); + children.clear(); + children.setAutoDelete( false ); + qApp->processEvents(); + listview->updateEditorSize(); + return; + } + + createChildren(); + initChildren(); + qApp->processEvents(); + listview->updateEditorSize(); +} + +/*! Subclasses have to show the editor of the item here +*/ + +void PropertyItem::showEditor() +{ + createResetButton(); + resetButton->parentWidget()->show(); +} + +/*! Subclasses have to hide the editor of the item here +*/ + +void PropertyItem::hideEditor() +{ + createResetButton(); + resetButton->parentWidget()->hide(); +} + +/*! This is called to init the value of the item. Reimplement in + subclasses to init the editor +*/ + +void PropertyItem::setValue( const QVariant &v ) +{ + val = v; +} + +QVariant PropertyItem::value() const +{ + return val; +} + +bool PropertyItem::isChanged() const +{ + return changed; +} + +void PropertyItem::setChanged( bool b, bool updateDb ) +{ + if ( propertyParent() ) + return; + if ( changed == b ) + return; + changed = b; + repaint(); + if ( updateDb ) + MetaDataBase::setPropertyChanged( listview->propertyEditor()->widget(), name(), changed ); + updateResetButtonState(); +} + +QString PropertyItem::name() const +{ + return propertyName; +} + +void PropertyItem::createResetButton() +{ + if ( resetButton ) { + resetButton->parentWidget()->lower(); + return; + } + QHBox *hbox = new QHBox( listview->viewport() ); + hbox->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); + hbox->setLineWidth( 1 ); + resetButton = new QPushButton( hbox ); + resetButton->setPixmap( PixmapChooser::loadPixmap( "resetproperty.xpm", PixmapChooser::Mini ) ); + resetButton->setFixedWidth( resetButton->sizeHint().width() ); + hbox->layout()->setAlignment( Qt::AlignRight ); + listview->addChild( hbox ); + hbox->hide(); + QObject::connect( resetButton, SIGNAL( clicked() ), + listview, SLOT( resetProperty() ) ); + QToolTip::add( resetButton, i18n("Reset the property to its default value" ) ); + QWhatsThis::add( resetButton, i18n("Click this button to reset the property to its default value" ) ); + updateResetButtonState(); +} + +void PropertyItem::updateResetButtonState() +{ + if ( !resetButton ) + return; + if ( propertyParent() || !WidgetFactory::canResetProperty( listview->propertyEditor()->widget(), name() ) ) + resetButton->setEnabled( false ); + else + resetButton->setEnabled( isChanged() ); +} + +/*! Call this to place/resize the item editor correctly (normally + call it from showEditor()) +*/ + +void PropertyItem::placeEditor( QWidget *w ) +{ + createResetButton(); + QRect r = listview->itemRect( this ); + if ( !r.size().isValid() ) { + listview->ensureItemVisible( this ); +#if defined(Q_WS_WIN) + listview->repaintContents( false ); +#endif + r = listview->itemRect( this ); + } + r.setX( listview->header()->sectionPos( 1 ) ); + r.setWidth( listview->header()->sectionSize( 1 ) - 1 ); + r.setWidth( r.width() - resetButton->width() - 2 ); + r = QRect( listview->viewportToContents( r.topLeft() ), r.size() ); + w->resize( r.size() ); + listview->moveChild( w, r.x(), r.y() ); + resetButton->parentWidget()->resize( resetButton->sizeHint().width() + 10, r.height() ); + listview->moveChild( resetButton->parentWidget(), r.x() + r.width() - 8, r.y() ); + resetButton->setFixedHeight( r.height() - 3 ); +} + +/*! This should be called by subclasses if the use changed the value + of the property and this value should be applied to the widget property +*/ + +void PropertyItem::notifyValueChange() +{ + if ( !propertyParent() ) { + listview->valueChanged( this ); + setChanged( true ); + if ( hasSubItems() ) + initChildren(); + } else { + propertyParent()->childValueChanged( this ); + setChanged( true ); + } +} + +/*! If a subclass is a expandable item reimplement this as this is + always called if a child item changed its value. So update the + display of the item here then. +*/ + +void PropertyItem::childValueChanged( PropertyItem * ) +{ +} + +/*! When adding a child item, call this (normally from addChildren() +*/ + +void PropertyItem::addChild( PropertyItem *i ) +{ + children.append( i ); +} + +int PropertyItem::childCount() const +{ + return children.count(); +} + +PropertyItem *PropertyItem::child( int i ) const +{ + // ARRRRRRRRG + return ( (PropertyItem*)this )->children.at( i ); +} + +/*! If the contents of the item is not displayable with a text, but + you want to draw it yourself (using drawCustomContents()), return + true here. +*/ + +bool PropertyItem::hasCustomContents() const +{ + return false; +} + +/*! + \sa hasCustomContents() +*/ + +void PropertyItem::drawCustomContents( QPainter *, const QRect & ) +{ +} + +QString PropertyItem::currentItem() const +{ + return QString::null; +} + +int PropertyItem::currentIntItem() const +{ + return -1; +} + +void PropertyItem::setCurrentItem( const QString & ) +{ +} + +void PropertyItem::setCurrentItem( int ) +{ +} + +int PropertyItem::currentIntItemFromObject() const +{ + return -1; +} + +QString PropertyItem::currentItemFromObject() const +{ + return QString::null; +} + +void PropertyItem::setFocus( QWidget *w ) +{ + if ( !qApp->focusWidget() || + listview->propertyEditor()->formWindow() && + ( !MainWindow::self->isAFormWindowChild( qApp->focusWidget() ) && + !qApp->focusWidget()->inherits( "Editor" ) ) ) + w->setFocus(); +} + +void PropertyItem::setText( int col, const QString &t ) +{ + QString txt( t ); + if ( col == 1 ) + txt = txt.replace( QRegExp( "\n" ), " " ); + QListViewItem::setText( col, txt ); +} + +// -------------------------------------------------------------- + +PropertyTextItem::PropertyTextItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool comment, bool multiLine, bool ascii, bool a ) + : PropertyItem( l, after, prop, propName ), withComment( comment ), + hasMultiLines( multiLine ), asciiOnly( ascii ), accel( a ) +{ + lin = 0; + box = 0; +} + +QLineEdit *PropertyTextItem::lined() +{ + if ( lin ) + return lin; + if ( hasMultiLines ) { + box = new QHBox( listview->viewport() ); + box->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); + box->setLineWidth( 2 ); + box->hide(); + } + + lin = 0; + if ( hasMultiLines ) + lin = new QLineEdit( box ); + else + lin = new QLineEdit( listview->viewport() ); + + if ( asciiOnly ) { + if ( PropertyItem::name() == "name" ) + lin->setValidator( new AsciiValidator( lin, "ascii_validator" ) ); + else + lin->setValidator( new AsciiValidator( QString("!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" + "\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9" + "\xaa\xab\xac\xad\xae\xaf\xb1\xb2\xb3" + "\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc" + "\xbd\xbe\xbf"), lin, "ascii_validator" ) ); + } if ( !hasMultiLines ) { + lin->hide(); + } else { + button = new QPushButton( i18n("..."), box ); + button->setFixedWidth( 20 ); + connect( button, SIGNAL( clicked() ), + this, SLOT( getText() ) ); + lin->setFrame( false ); + } + connect( lin, SIGNAL( returnPressed() ), + this, SLOT( setValue() ) ); + connect( lin, SIGNAL( textChanged( const QString & ) ), + this, SLOT( setValue() ) ); + if ( PropertyItem::name() == "name" || PropertyItem::name() == "itemName" ) + connect( lin, SIGNAL( returnPressed() ), + listview->propertyEditor()->formWindow()->commandHistory(), + SLOT( checkCompressedCommand() ) ); + lin->installEventFilter( listview ); + return lin; +} + +PropertyTextItem::~PropertyTextItem() +{ + delete (QLineEdit*)lin; + lin = 0; + delete (QHBox*)box; + box = 0; +} + +void PropertyTextItem::setChanged( bool b, bool updateDb ) +{ + PropertyItem::setChanged( b, updateDb ); + if ( withComment && childCount() > 0 ) + ( (PropertyTextItem*)PropertyItem::child( 0 ) )->lined()->setEnabled( b ); +} + +bool PropertyTextItem::hasSubItems() const +{ + return withComment; +} + +void PropertyTextItem::childValueChanged( PropertyItem *child ) +{ + if ( PropertyItem::name() != "name" ) + MetaDataBase::setPropertyComment( listview->propertyEditor()->widget(), + PropertyItem::name(), child->value().toString() ); + else + MetaDataBase::setExportMacro( listview->propertyEditor()->widget(), child->value().toString() ); + listview->propertyEditor()->formWindow()->commandHistory()->setModified( true ); +} + +static QString to_string( const QVariant &v, bool accel ) +{ + if ( !accel ) + return v.toString(); + return QAccel::keyToString( v.toInt() ); +} + +void PropertyTextItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !lin || lin->text().length() == 0 ) { + lined()->blockSignals( true ); + lined()->setText( to_string( value(), accel ) ); + lined()->blockSignals( false ); + } + + QWidget* w; + if ( hasMultiLines ) + w = box; + else + w= lined(); + + placeEditor( w ); + if ( !w->isVisible() || !lined()->hasFocus() ) { + w->show(); + setFocus( lined() ); + } +} + +void PropertyTextItem::createChildren() +{ + PropertyTextItem *i = new PropertyTextItem( listview, this, this, + PropertyItem::name() == "name" ? + "export macro" : "comment", false, false, + PropertyItem::name() == "name" ); + i->lined()->setEnabled( isChanged() ); + addChild( i ); +} + +void PropertyTextItem::initChildren() +{ + if ( !childCount() ) + return; + PropertyItem *item = PropertyItem::child( 0 ); + if ( item ) { + if ( PropertyItem::name() != "name" ) + item->setValue( MetaDataBase::propertyComment( listview->propertyEditor()->widget(), + PropertyItem::name() ) ); + else + item->setValue( MetaDataBase::exportMacro( listview->propertyEditor()->widget() ) ); + } +} + +void PropertyTextItem::hideEditor() +{ + PropertyItem::hideEditor(); + QWidget* w; + if ( hasMultiLines ) + w = box; + else + w = lined(); + + w->hide(); +} + +void PropertyTextItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + if ( lin ) { + lined()->blockSignals( true ); + int oldCursorPos; + oldCursorPos = lin->cursorPosition(); + lined()->setText( to_string( v, accel ) ); + if ( oldCursorPos < (int)lin->text().length() ) + lin->setCursorPosition( oldCursorPos ); + lined()->blockSignals( false ); + } + setText( 1, to_string( v, accel ) ); + PropertyItem::setValue( v ); +} + +void PropertyTextItem::setValue() +{ + setText( 1, lined()->text() ); + QVariant v; + if ( accel ) + v = QAccel::stringToKey( lined()->text() ); + else + v = lined()->text(); + PropertyItem::setValue( v ); + notifyValueChange(); +} + +void PropertyTextItem::getText() +{ + QString txt = TextEditor::getText( listview, value().toString() ); + if ( !txt.isEmpty() ) { + setText( 1, txt ); + PropertyItem::setValue( txt ); + notifyValueChange(); + lined()->blockSignals( true ); + lined()->setText( txt ); + lined()->blockSignals( false ); + } +} + +// -------------------------------------------------------------- + +PropertyDoubleItem::PropertyDoubleItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + lin = 0; +} + +QLineEdit *PropertyDoubleItem::lined() +{ + if ( lin ) + return lin; + lin = new QLineEdit( listview->viewport() ); + lin->setValidator( new QDoubleValidator( lin, "double_validator" ) ); + + connect( lin, SIGNAL( returnPressed() ), + this, SLOT( setValue() ) ); + connect( lin, SIGNAL( textChanged( const QString & ) ), + this, SLOT( setValue() ) ); + lin->installEventFilter( listview ); + return lin; +} + +PropertyDoubleItem::~PropertyDoubleItem() +{ + delete (QLineEdit*)lin; + lin = 0; +} + +void PropertyDoubleItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !lin ) { + lined()->blockSignals( true ); + lined()->setText( QString::number( value().toDouble() ) ); + lined()->blockSignals( false ); + } + QWidget* w = lined(); + + placeEditor( w ); + if ( !w->isVisible() || !lined()->hasFocus() ) { + w->show(); + setFocus( lined() ); + } +} + + +void PropertyDoubleItem::hideEditor() +{ + PropertyItem::hideEditor(); + QWidget* w = lined(); + w->hide(); +} + +void PropertyDoubleItem::setValue( const QVariant &v ) +{ + if ( value() == v ) + return; + if ( lin ) { + lined()->blockSignals( true ); + int oldCursorPos; + oldCursorPos = lin->cursorPosition(); + lined()->setText( QString::number( v.toDouble() ) ); + if ( oldCursorPos < (int)lin->text().length() ) + lin->setCursorPosition( oldCursorPos ); + lined()->blockSignals( false ); + } + setText( 1, QString::number( v.toDouble() ) ); + PropertyItem::setValue( v ); +} + +void PropertyDoubleItem::setValue() +{ + setText( 1, lined()->text() ); + QVariant v = lined()->text().toDouble(); + PropertyItem::setValue( v ); + notifyValueChange(); +} + + +// -------------------------------------------------------------- + +PropertyDateItem::PropertyDateItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + lin = 0; +} + +QDateEdit *PropertyDateItem::lined() +{ + if ( lin ) + return lin; + lin = new QDateEdit( listview->viewport() ); + QObjectList *l = lin->queryList( "QLineEdit" ); + for ( QObject *o = l->first(); o; o = l->next() ) + o->installEventFilter( listview ); + delete l; + connect( lin, SIGNAL( valueChanged( const QDate & ) ), + this, SLOT( setValue() ) ); + return lin; +} + +PropertyDateItem::~PropertyDateItem() +{ + delete (QDateEdit*)lin; + lin = 0; +} + +void PropertyDateItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !lin ) { + lined()->blockSignals( true ); + lined()->setDate( value().toDate() ); + lined()->blockSignals( false ); + } + placeEditor( lin ); + if ( !lin->isVisible() ) { + lin->show(); + setFocus( lin ); + } +} + +void PropertyDateItem::hideEditor() +{ + PropertyItem::hideEditor(); + if ( lin ) + lin->hide(); +} + +void PropertyDateItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + + if ( lin ) { + lined()->blockSignals( true ); + if ( lined()->date() != v.toDate() ) + lined()->setDate( v.toDate() ); + lined()->blockSignals( false ); + } + setText( 1, v.toDate().toString( ::Qt::ISODate ) ); + PropertyItem::setValue( v ); +} + +void PropertyDateItem::setValue() +{ + setText( 1, lined()->date().toString( ::Qt::ISODate ) ); + QVariant v; + v = lined()->date(); + PropertyItem::setValue( v ); + notifyValueChange(); +} + +// -------------------------------------------------------------- + +PropertyTimeItem::PropertyTimeItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + lin = 0; +} + +QTimeEdit *PropertyTimeItem::lined() +{ + if ( lin ) + return lin; + lin = new QTimeEdit( listview->viewport() ); + connect( lin, SIGNAL( valueChanged( const QTime & ) ), + this, SLOT( setValue() ) ); + QObjectList *l = lin->queryList( "QLineEdit" ); + for ( QObject *o = l->first(); o; o = l->next() ) + o->installEventFilter( listview ); + delete l; + return lin; +} + +PropertyTimeItem::~PropertyTimeItem() +{ + delete (QTimeEdit*)lin; + lin = 0; +} + +void PropertyTimeItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !lin ) { + lined()->blockSignals( true ); + lined()->setTime( value().toTime() ); + lined()->blockSignals( false ); + } + placeEditor( lin ); + if ( !lin->isVisible() ) { + lin->show(); + setFocus( lin ); + } +} + +void PropertyTimeItem::hideEditor() +{ + PropertyItem::hideEditor(); + if ( lin ) + lin->hide(); +} + +void PropertyTimeItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + + if ( lin ) { + lined()->blockSignals( true ); + if ( lined()->time() != v.toTime() ) + lined()->setTime( v.toTime() ); + lined()->blockSignals( false ); + } + setText( 1, v.toTime().toString( ::Qt::ISODate ) ); + PropertyItem::setValue( v ); +} + +void PropertyTimeItem::setValue() +{ + setText( 1, lined()->time().toString( ::Qt::ISODate ) ); + QVariant v; + v = lined()->time(); + PropertyItem::setValue( v ); + notifyValueChange(); +} + +// -------------------------------------------------------------- + +PropertyDateTimeItem::PropertyDateTimeItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + lin = 0; +} + +QDateTimeEdit *PropertyDateTimeItem::lined() +{ + if ( lin ) + return lin; + lin = new QDateTimeEdit( listview->viewport() ); + connect( lin, SIGNAL( valueChanged( const QDateTime & ) ), + this, SLOT( setValue() ) ); + QObjectList *l = lin->queryList( "QLineEdit" ); + for ( QObject *o = l->first(); o; o = l->next() ) + o->installEventFilter( listview ); + delete l; + return lin; +} + +PropertyDateTimeItem::~PropertyDateTimeItem() +{ + delete (QDateTimeEdit*)lin; + lin = 0; +} + +void PropertyDateTimeItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !lin ) { + lined()->blockSignals( true ); + lined()->setDateTime( value().toDateTime() ); + lined()->blockSignals( false ); + } + placeEditor( lin ); + if ( !lin->isVisible() ) { + lin->show(); + setFocus( lin ); + } +} + +void PropertyDateTimeItem::hideEditor() +{ + PropertyItem::hideEditor(); + if ( lin ) + lin->hide(); +} + +void PropertyDateTimeItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + + if ( lin ) { + lined()->blockSignals( true ); + if ( lined()->dateTime() != v.toDateTime() ) + lined()->setDateTime( v.toDateTime() ); + lined()->blockSignals( false ); + } + setText( 1, v.toDateTime().toString( ::Qt::ISODate ) ); + PropertyItem::setValue( v ); +} + +void PropertyDateTimeItem::setValue() +{ + setText( 1, lined()->dateTime().toString( ::Qt::ISODate ) ); + QVariant v; + v = lined()->dateTime(); + PropertyItem::setValue( v ); + notifyValueChange(); +} + +// -------------------------------------------------------------- + +PropertyBoolItem::PropertyBoolItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + comb = 0; +} + +QComboBox *PropertyBoolItem::combo() +{ + if ( comb ) + return comb; + comb = new QComboBox( false, listview->viewport() ); + comb->hide(); + comb->insertItem( i18n("False" ) ); + comb->insertItem( i18n("True" ) ); + connect( comb, SIGNAL( activated( int ) ), + this, SLOT( setValue() ) ); + comb->installEventFilter( listview ); + return comb; +} + +PropertyBoolItem::~PropertyBoolItem() +{ + delete (QComboBox*)comb; + comb = 0; +} + +void PropertyBoolItem::toggle() +{ + bool b = value().toBool(); + setValue( QVariant( !b, 0 ) ); + setValue(); +} + +void PropertyBoolItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !comb ) { + combo()->blockSignals( true ); + if ( value().toBool() ) + combo()->setCurrentItem( 1 ); + else + combo()->setCurrentItem( 0 ); + combo()->blockSignals( false ); + } + placeEditor( combo() ); + if ( !combo()->isVisible() || !combo()->hasFocus() ) { + combo()->show(); + setFocus( combo() ); + } +} + +void PropertyBoolItem::hideEditor() +{ + PropertyItem::hideEditor(); + combo()->hide(); +} + +void PropertyBoolItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + + if ( comb ) { + combo()->blockSignals( true ); + if ( v.toBool() ) + combo()->setCurrentItem( 1 ); + else + combo()->setCurrentItem( 0 ); + combo()->blockSignals( false ); + } + QString tmp = i18n("True" ); + if ( !v.toBool() ) + tmp = i18n("False" ); + setText( 1, tmp ); + PropertyItem::setValue( v ); +} + +void PropertyBoolItem::setValue() +{ + if ( !comb ) + return; + setText( 1, combo()->currentText() ); + bool b = combo()->currentItem() == 0 ? (bool)false : (bool)true; + PropertyItem::setValue( QVariant( b, 0 ) ); + notifyValueChange(); +} + +// -------------------------------------------------------------- + +PropertyIntItem::PropertyIntItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool s ) + : PropertyItem( l, after, prop, propName ), signedValue( s ) +{ + spinBx = 0; +} + +QSpinBox *PropertyIntItem::spinBox() +{ + if ( spinBx ) + return spinBx; + if ( signedValue ) + spinBx = new QSpinBox( -INT_MAX, INT_MAX, 1, listview->viewport() ); + else + spinBx = new QSpinBox( 0, INT_MAX, 1, listview->viewport() ); + spinBx->hide(); + spinBx->installEventFilter( listview ); + QObjectList *ol = spinBx->queryList( "QLineEdit" ); + if ( ol && ol->first() ) + ol->first()->installEventFilter( listview ); + delete ol; + connect( spinBx, SIGNAL( valueChanged( int ) ), + this, SLOT( setValue() ) ); + return spinBx; +} + +PropertyIntItem::~PropertyIntItem() +{ + delete (QSpinBox*)spinBx; + spinBx = 0; +} + +void PropertyIntItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !spinBx ) { + spinBox()->blockSignals( true ); + if ( signedValue ) + spinBox()->setValue( value().toInt() ); + else + spinBox()->setValue( value().toUInt() ); + spinBox()->blockSignals( false ); + } + placeEditor( spinBox() ); + if ( !spinBox()->isVisible() || !spinBox()->hasFocus() ) { + spinBox()->show(); + setFocus( spinBox() ); + } +} + +void PropertyIntItem::hideEditor() +{ + PropertyItem::hideEditor(); + spinBox()->hide(); +} + +void PropertyIntItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + + if ( spinBx ) { + spinBox()->blockSignals( true ); + if ( signedValue ) + spinBox()->setValue( v.toInt() ); + else + spinBox()->setValue( v.toUInt() ); + spinBox()->blockSignals( false ); + } + + if ( signedValue ) + setText( 1, QString::number( v.toInt() ) ); + else + setText( 1, QString::number( v.toUInt() ) ); + PropertyItem::setValue( v ); +} + +void PropertyIntItem::setValue() +{ + if ( !spinBx ) + return; + setText( 1, QString::number( spinBox()->value() ) ); + if ( signedValue ) + PropertyItem::setValue( spinBox()->value() ); + else + PropertyItem::setValue( (uint)spinBox()->value() ); + notifyValueChange(); +} + +// -------------------------------------------------------------- + +PropertyListItem::PropertyListItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool e ) + : PropertyItem( l, after, prop, propName ), editable( e ) +{ + comb = 0; + oldInt = -1; +} + +QComboBox *PropertyListItem::combo() +{ + if ( comb ) + return comb; + comb = new QComboBox( editable, listview->viewport() ); + comb->hide(); + connect( comb, SIGNAL( activated( int ) ), + this, SLOT( setValue() ) ); + comb->installEventFilter( listview ); + if ( editable ) { + QObjectList *ol = comb->queryList( "QLineEdit" ); + if ( ol && ol->first() ) + ol->first()->installEventFilter( listview ); + delete ol; + } + return comb; +} + +PropertyListItem::~PropertyListItem() +{ + delete (QComboBox*)comb; + comb = 0; +} + +void PropertyListItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !comb ) { + combo()->blockSignals( true ); + combo()->clear(); + combo()->insertStringList( value().toStringList() ); + combo()->blockSignals( false ); + } + placeEditor( combo() ); + if ( !combo()->isVisible() || !combo()->hasFocus() ) { + combo()->show(); + setFocus( combo() ); + } +} + +void PropertyListItem::hideEditor() +{ + PropertyItem::hideEditor(); + combo()->hide(); +} + +void PropertyListItem::setValue( const QVariant &v ) +{ + if ( comb ) { + combo()->blockSignals( true ); + combo()->clear(); + combo()->insertStringList( v.toStringList() ); + combo()->blockSignals( false ); + } + setText( 1, v.toStringList().first() ); + PropertyItem::setValue( v ); +} + +void PropertyListItem::setValue() +{ + if ( !comb ) + return; + setText( 1, combo()->currentText() ); + QStringList lst; + for ( uint i = 0; i < combo()->listBox()->count(); ++i ) + lst << combo()->listBox()->item( i )->text(); + PropertyItem::setValue( lst ); + notifyValueChange(); + oldInt = currentIntItem(); + oldString = currentItem(); +} + +QString PropertyListItem::currentItem() const +{ + return ( (PropertyListItem*)this )->combo()->currentText(); +} + +void PropertyListItem::setCurrentItem( const QString &s ) +{ + if ( comb && currentItem().lower() == s.lower() ) + return; + + if ( !comb ) { + combo()->blockSignals( true ); + combo()->clear(); + combo()->insertStringList( value().toStringList() ); + combo()->blockSignals( false ); + } + for ( uint i = 0; i < combo()->listBox()->count(); ++i ) { + if ( combo()->listBox()->item( i )->text().lower() == s.lower() ) { + combo()->setCurrentItem( i ); + setText( 1, combo()->currentText() ); + break; + } + } + oldInt = currentIntItem(); + oldString = currentItem(); +} + +void PropertyListItem::addItem( const QString &s ) +{ + combo()->insertItem( s ); +} + +void PropertyListItem::setCurrentItem( int i ) +{ + if ( comb && i == combo()->currentItem() ) + return; + + if ( !comb ) { + combo()->blockSignals( true ); + combo()->clear(); + combo()->insertStringList( value().toStringList() ); + combo()->blockSignals( false ); + } + combo()->setCurrentItem( i ); + setText( 1, combo()->currentText() ); + oldInt = currentIntItem(); + oldString = currentItem(); +} + +int PropertyListItem::currentIntItem() const +{ + return ( (PropertyListItem*)this )->combo()->currentItem(); +} + +int PropertyListItem::currentIntItemFromObject() const +{ + return oldInt; +} + +QString PropertyListItem::currentItemFromObject() const +{ + return oldString; +} + +// -------------------------------------------------------------- + +PropertyCoordItem::PropertyCoordItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, Type t ) + : PropertyItem( l, after, prop, propName ), typ( t ) +{ + lin = 0; + +} + +QLineEdit *PropertyCoordItem::lined() +{ + if ( lin ) + return lin; + lin = new QLineEdit( listview->viewport() ); + lin->setReadOnly( true ); + lin->installEventFilter( listview ); + lin->hide(); + return lin; +} + +void PropertyCoordItem::createChildren() +{ + PropertyItem *i = this; + if ( typ == Rect || typ == Point ) { + i = new PropertyIntItem( listview, i, this, i18n("x" ), true ); + addChild( i ); + i = new PropertyIntItem( listview, i, this, i18n("y" ), true ); + addChild( i ); + } + if ( typ == Rect || typ == Size ) { + i = new PropertyIntItem( listview, i, this, i18n("width" ), true ); + addChild( i ); + i = new PropertyIntItem( listview, i, this, i18n("height" ), true ); + addChild( i ); + } +} + +void PropertyCoordItem::initChildren() +{ + PropertyItem *item = 0; + for ( int i = 0; i < childCount(); ++i ) { + item = PropertyItem::child( i ); + if ( item->name() == i18n("x" ) ) { + if ( typ == Rect ) + item->setValue( val.toRect().x() ); + else if ( typ == Point ) + item->setValue( val.toPoint().x() ); + } else if ( item->name() == i18n("y" ) ) { + if ( typ == Rect ) + item->setValue( val.toRect().y() ); + else if ( typ == Point ) + item->setValue( val.toPoint().y() ); + } else if ( item->name() == i18n("width" ) ) { + if ( typ == Rect ) + item->setValue( val.toRect().width() ); + else if ( typ == Size ) + item->setValue( val.toSize().width() ); + } else if ( item->name() == i18n("height" ) ) { + if ( typ == Rect ) + item->setValue( val.toRect().height() ); + else if ( typ == Size ) + item->setValue( val.toSize().height() ); + } + } +} + +PropertyCoordItem::~PropertyCoordItem() +{ + delete (QLineEdit*)lin; + lin = 0; +} + +void PropertyCoordItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !lin ) + lined()->setText( text( 1 ) ); + placeEditor( lined() ); + if ( !lined()->isVisible() || !lined()->hasFocus() ) { + lined()->show(); + setFocus( lined() ); + } +} + +void PropertyCoordItem::hideEditor() +{ + PropertyItem::hideEditor(); + lined()->hide(); +} + +void PropertyCoordItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + + QString s; + if ( typ == Rect ) + s = "[ " + QString::number( v.toRect().x() ) + ", " + QString::number( v.toRect().y() ) + ", " + + QString::number( v.toRect().width() ) + ", " + QString::number( v.toRect().height() ) + " ]"; + else if ( typ == Point ) + s = "[ " + QString::number( v.toPoint().x() ) + ", " + + QString::number( v.toPoint().y() ) + " ]"; + else if ( typ == Size ) + s = "[ " + QString::number( v.toSize().width() ) + ", " + + QString::number( v.toSize().height() ) + " ]"; + setText( 1, s ); + if ( lin ) + lined()->setText( s ); + PropertyItem::setValue( v ); +} + +bool PropertyCoordItem::hasSubItems() const +{ + return true; +} + +void PropertyCoordItem::childValueChanged( PropertyItem *child ) +{ + if ( typ == Rect ) { + QRect r = value().toRect(); + if ( child->name() == i18n("x" ) ) + r.setX( child->value().toInt() ); + else if ( child->name() == i18n("y" ) ) + r.setY( child->value().toInt() ); + else if ( child->name() == i18n("width" ) ) + r.setWidth( child->value().toInt() ); + else if ( child->name() == i18n("height" ) ) + r.setHeight( child->value().toInt() ); + setValue( r ); + } else if ( typ == Point ) { + QPoint r = value().toPoint(); + if ( child->name() == i18n("x" ) ) + r.setX( child->value().toInt() ); + else if ( child->name() == i18n("y" ) ) + r.setY( child->value().toInt() ); + setValue( r ); + } else if ( typ == Size ) { + QSize r = value().toSize(); + if ( child->name() == i18n("width" ) ) + r.setWidth( child->value().toInt() ); + else if ( child->name() == i18n("height" ) ) + r.setHeight( child->value().toInt() ); + setValue( r ); + } + notifyValueChange(); +} + +// -------------------------------------------------------------- + +PropertyPixmapItem::PropertyPixmapItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool isIconSet ) + : PropertyItem( l, after, prop, propName ), iconSet( isIconSet ) +{ + box = new QHBox( listview->viewport() ); + box->hide(); + pixPrev = new QLabel( box ); + pixPrev->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Minimum ) ); + pixPrev->setBackgroundColor( pixPrev->colorGroup().color( QColorGroup::Base ) ); + button = new QPushButton( "...", box ); + button->setFixedWidth( 20 ); + box->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); + box->setLineWidth( 2 ); + pixPrev->setFrameStyle( QFrame::NoFrame ); + box->installEventFilter( listview ); + connect( button, SIGNAL( clicked() ), + this, SLOT( getPixmap() ) ); +} +PropertyPixmapItem::~PropertyPixmapItem() +{ + delete (QHBox*)box; +} + +void PropertyPixmapItem::showEditor() +{ + PropertyItem::showEditor(); + placeEditor( box ); + if ( !box->isVisible() ) { + box->show(); + listView()->viewport()->setFocus(); + } +} + +void PropertyPixmapItem::hideEditor() +{ + PropertyItem::hideEditor(); + box->hide(); +} + +void PropertyPixmapItem::setValue( const QVariant &v ) +{ + QString s; + if ( !iconSet ) + pixPrev->setPixmap( v.toPixmap() ); + else + pixPrev->setPixmap( v.toIconSet().pixmap() ); + PropertyItem::setValue( v ); + repaint(); +} + +void PropertyPixmapItem::getPixmap() +{ + QPixmap pix = qChoosePixmap( listview, listview->propertyEditor()->formWindow(), value().toPixmap() ); + if ( !pix.isNull() ) { + if ( !iconSet ) + setValue( pix ); + else + setValue( QIconSet( pix ) ); + notifyValueChange(); + } +} + +bool PropertyPixmapItem::hasCustomContents() const +{ + return true; +} + +void PropertyPixmapItem::drawCustomContents( QPainter *p, const QRect &r ) +{ + QPixmap pix( (!iconSet ? value().toPixmap() : value().toIconSet().pixmap()) ); + if ( !pix.isNull() ) { + p->save(); + p->setClipRect( QRect( QPoint( (int)(p->worldMatrix().dx() + r.x()), + (int)(p->worldMatrix().dy() + r.y()) ), + r.size() ) ); + p->drawPixmap( r.x(), r.y() + ( r.height() - pix.height() ) / 2, pix ); + p->restore(); + } +} + + +// -------------------------------------------------------------- + +PropertyColorItem::PropertyColorItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool children ) + : PropertyItem( l, after, prop, propName ), withChildren( children ) +{ + box = new QHBox( listview->viewport() ); + box->hide(); + colorPrev = new QFrame( box ); + button = new QPushButton( "...", box ); + button->setFixedWidth( 20 ); + box->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); + box->setLineWidth( 2 ); + colorPrev->setFrameStyle( QFrame::Plain | QFrame::Box ); + colorPrev->setLineWidth( 2 ); + QPalette pal = colorPrev->palette(); + QColorGroup cg = pal.active(); + cg.setColor( QColorGroup::Foreground, cg.color( QColorGroup::Base ) ); + pal.setActive( cg ); + pal.setInactive( cg ); + pal.setDisabled( cg ); + colorPrev->setPalette( pal ); + box->installEventFilter( listview ); + connect( button, SIGNAL( clicked() ), + this, SLOT( getColor() ) ); +} + +void PropertyColorItem::createChildren() +{ + PropertyItem *i = this; + i = new PropertyIntItem( listview, i, this, i18n("Red" ), true ); + addChild( i ); + i = new PropertyIntItem( listview, i, this, i18n("Green" ), true ); + addChild( i ); + i = new PropertyIntItem( listview, i, this, i18n("Blue" ), true ); + addChild( i ); +} + +void PropertyColorItem::initChildren() +{ + PropertyItem *item = 0; + for ( int i = 0; i < childCount(); ++i ) { + item = PropertyItem::child( i ); + if ( item->name() == i18n("Red" ) ) + item->setValue( val.toColor().red() ); + else if ( item->name() == i18n("Green" ) ) + item->setValue( val.toColor().green() ); + else if ( item->name() == i18n("Blue" ) ) + item->setValue( val.toColor().blue() ); + } +} + +PropertyColorItem::~PropertyColorItem() +{ + delete (QHBox*)box; +} + +void PropertyColorItem::showEditor() +{ + PropertyItem::showEditor(); + placeEditor( box ); + if ( !box->isVisible() ) { + box->show(); + listView()->viewport()->setFocus(); + } +} + +void PropertyColorItem::hideEditor() +{ + PropertyItem::hideEditor(); + box->hide(); +} + +void PropertyColorItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + + QString s; + setText( 1, v.toColor().name() ); + colorPrev->setBackgroundColor( v.toColor() ); + PropertyItem::setValue( v ); +} + +bool PropertyColorItem::hasSubItems() const +{ + return withChildren; +} + +void PropertyColorItem::childValueChanged( PropertyItem *child ) +{ + QColor c( val.toColor() ); + if ( child->name() == i18n("Red" ) ) + c.setRgb( child->value().toInt(), c.green(), c.blue() ); + else if ( child->name() == i18n("Green" ) ) + c.setRgb( c.red(), child->value().toInt(), c.blue() ); + else if ( child->name() == i18n("Blue" ) ) + c.setRgb( c.red(), c.green(), child->value().toInt() ); + setValue( c ); + notifyValueChange(); +} + +void PropertyColorItem::getColor() +{ + QColor c = val.asColor(); + if ( KColorDialog::getColor( c, listview ) == QDialog::Accepted ) { + setValue( c ); + notifyValueChange(); + } +} + +bool PropertyColorItem::hasCustomContents() const +{ + return true; +} + +void PropertyColorItem::drawCustomContents( QPainter *p, const QRect &r ) +{ + p->save(); + p->setPen( QPen( black, 1 ) ); + p->setBrush( val.toColor() ); + p->drawRect( r.x() + 2, r.y() + 2, r.width() - 5, r.height() - 5 ); + p->restore(); +} + +// -------------------------------------------------------------- + +PropertyFontItem::PropertyFontItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + box = new QHBox( listview->viewport() ); + box->hide(); + lined = new QLineEdit( box ); + button = new QPushButton( "...", box ); + button->setFixedWidth( 20 ); + box->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); + box->setLineWidth( 2 ); + lined->setFrame( false ); + lined->setReadOnly( true ); + box->setFocusProxy( lined ); + box->installEventFilter( listview ); + lined->installEventFilter( listview ); + button->installEventFilter( listview ); + connect( button, SIGNAL( clicked() ), + this, SLOT( getFont() ) ); +} + +void PropertyFontItem::createChildren() +{ + PropertyItem *i = this; + i = new PropertyListItem( listview, i, this, i18n("Family" ), false ); + addChild( i ); + i = new PropertyIntItem( listview, i, this, i18n("Point Size" ), true ); + addChild( i ); + i = new PropertyBoolItem( listview, i, this, i18n("Bold" ) ); + addChild( i ); + i = new PropertyBoolItem( listview, i, this, i18n("Italic" ) ); + addChild( i ); + i = new PropertyBoolItem( listview, i, this, i18n("Underline" ) ); + addChild( i ); + i = new PropertyBoolItem( listview, i, this, i18n("Strikeout" ) ); + addChild( i ); +} + +void PropertyFontItem::initChildren() +{ + PropertyItem *item = 0; + for ( int i = 0; i < childCount(); ++i ) { + item = PropertyItem::child( i ); + if ( item->name() == i18n("Family" ) ) { + ( (PropertyListItem*)item )->setValue( getFontList() ); + ( (PropertyListItem*)item )->setCurrentItem( val.toFont().family() ); + } else if ( item->name() == i18n("Point Size" ) ) + item->setValue( val.toFont().pointSize() ); + else if ( item->name() == i18n("Bold" ) ) + item->setValue( QVariant( val.toFont().bold(), 0 ) ); + else if ( item->name() == i18n("Italic" ) ) + item->setValue( QVariant( val.toFont().italic(), 0 ) ); + else if ( item->name() == i18n("Underline" ) ) + item->setValue( QVariant( val.toFont().underline(), 0 ) ); + else if ( item->name() == i18n("Strikeout" ) ) + item->setValue( QVariant( val.toFont().strikeOut(), 0 ) ); + } +} + +PropertyFontItem::~PropertyFontItem() +{ + delete (QHBox*)box; +} + +void PropertyFontItem::showEditor() +{ + PropertyItem::showEditor(); + placeEditor( box ); + if ( !box->isVisible() || !lined->hasFocus() ) { + box->show(); + setFocus( lined ); + } +} + +void PropertyFontItem::hideEditor() +{ + PropertyItem::hideEditor(); + box->hide(); +} + +void PropertyFontItem::setValue( const QVariant &v ) +{ + if ( value() == v ) + return; + + setText( 1, v.toFont().family() + "-" + QString::number( v.toFont().pointSize() ) ); + lined->setText( v.toFont().family() + "-" + QString::number( v.toFont().pointSize() ) ); + PropertyItem::setValue( v ); +} + +void PropertyFontItem::getFont() +{ + bool ok = false; + QFont f = QFontDialog::getFont( &ok, val.toFont(), listview ); + if ( ok && f != val.toFont() ) { + setValue( f ); + notifyValueChange(); + } +} + +bool PropertyFontItem::hasSubItems() const +{ + return true; +} + +void PropertyFontItem::childValueChanged( PropertyItem *child ) +{ + QFont f = val.toFont(); + if ( child->name() == i18n("Family" ) ) + f.setFamily( ( (PropertyListItem*)child )->currentItem() ); + else if ( child->name() == i18n("Point Size" ) ) + f.setPointSize( child->value().toInt() ); + else if ( child->name() == i18n("Bold" ) ) + f.setBold( child->value().toBool() ); + else if ( child->name() == i18n("Italic" ) ) + f.setItalic( child->value().toBool() ); + else if ( child->name() == i18n("Underline" ) ) + f.setUnderline( child->value().toBool() ); + else if ( child->name() == i18n("Strikeout" ) ) + f.setStrikeOut( child->value().toBool() ); + setValue( f ); + notifyValueChange(); +} + +// -------------------------------------------------------------- + +PropertyDatabaseItem::PropertyDatabaseItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool wField ) + : PropertyItem( l, after, prop, propName ), withField( wField ) +{ + box = new QHBox( listview->viewport() ); + box->hide(); + lined = new QLineEdit( box ); + button = new QPushButton( "...", box ); + button->setFixedWidth( 20 ); + box->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); + box->setLineWidth( 2 ); + lined->setFrame( false ); + lined->setReadOnly( true ); + box->setFocusProxy( lined ); + box->installEventFilter( listview ); + lined->installEventFilter( listview ); + button->installEventFilter( listview ); +} + +void PropertyDatabaseItem::createChildren() +{ + PropertyItem *i = this; + i = new PropertyListItem( listview, i, this, i18n("Connection" ), true ); + addChild( i ); + i = new PropertyListItem( listview, i, this, i18n("Table" ), true ); + addChild( i ); + if ( withField ) { + i = new PropertyListItem( listview, i, this, i18n("Field" ), true ); + addChild( i ); + } +} + +void PropertyDatabaseItem::initChildren() +{ +#ifndef QT_NO_SQL + PropertyItem *item = 0; + QStringList lst = value().toStringList(); + QString conn, table; + for ( int i = 0; i < childCount(); ++i ) { + item = PropertyItem::child( i ); + if ( item->name() == i18n("Connection" ) ) { + QStringList cl = listview->propertyEditor()->formWindow()->project()->databaseConnectionList(); + if ( !cl.isEmpty() ) + item->setValue( cl ); + else if ( lst.count() > 0 ) + item->setValue( QStringList( lst[ 0 ] ) ); + else if ( withField ) + item->setValue( QStringList( MetaDataBase::fakeProperty( listview->propertyEditor()->formWindow()->mainContainer(), + "database" ).toStringList()[ 0 ] ) ); + + if ( lst.count() > 0 && !lst[ 0 ].isEmpty() ) + item->setCurrentItem( lst[ 0 ] ); + else if ( !isChanged() && withField ) + item->setCurrentItem( MetaDataBase::fakeProperty( listview->propertyEditor()->formWindow()->mainContainer(), + "database" ).toStringList()[ 0 ] ); + else + item->setCurrentItem( 0 ); + conn = item->currentItem(); + } else if ( item->name() == i18n("Table" ) ) { + QStringList cl = listview->propertyEditor()->formWindow()->project()->databaseTableList( conn ); + if ( !cl.isEmpty() ) + item->setValue( cl ); + else if ( lst.count() > 1 ) + item->setValue( QStringList( lst[ 1 ] ) ); + else if ( withField ) { + QStringList fakeLst = MetaDataBase::fakeProperty( listview->propertyEditor()->formWindow()->mainContainer(), "database" ).toStringList(); + if ( fakeLst.count() > 1 ) + item->setValue( fakeLst[ 1 ] ); + } + + if ( lst.count() > 1 && !lst[ 1 ].isEmpty() ) + item->setCurrentItem( lst[ 1 ] ); + else if ( !isChanged() && withField ) { + QStringList fakeLst = MetaDataBase::fakeProperty( listview->propertyEditor()->formWindow()->mainContainer(), "database" ).toStringList(); + if ( fakeLst.count() > 1 ) + item->setCurrentItem( fakeLst[ 1 ] ); + else + item->setCurrentItem( 0 ); + } else + item->setCurrentItem( 0 ); + table = item->currentItem(); + } else if ( item->name() == i18n("Field" ) ) { + QStringList cl = listview->propertyEditor()->formWindow()->project()->databaseFieldList( conn, table ); + if ( !cl.isEmpty() ) + item->setValue( cl ); + else if ( lst.count() > 2 ) + item->setValue( QStringList( lst[ 2 ] ) ); + if ( lst.count() > 2 && !lst[ 2 ].isEmpty() ) + item->setCurrentItem( lst[ 2 ] ); + else + item->setCurrentItem( 0 ); + } + } +#endif +} + +PropertyDatabaseItem::~PropertyDatabaseItem() +{ + delete (QHBox*)box; +} + +void PropertyDatabaseItem::showEditor() +{ + PropertyItem::showEditor(); + placeEditor( box ); + if ( !box->isVisible() || !lined->hasFocus() ) { + box->show(); + setFocus( lined ); + } +} + +void PropertyDatabaseItem::hideEditor() +{ + PropertyItem::hideEditor(); + box->hide(); +} + +void PropertyDatabaseItem::setValue( const QVariant &v ) +{ + if ( value() == v ) + return; + + QStringList lst = v.toStringList(); + QString s = lst.join( "." ); + setText( 1, s ); + lined->setText( s ); + PropertyItem::setValue( v ); +} + +bool PropertyDatabaseItem::hasSubItems() const +{ + return true; +} + +void PropertyDatabaseItem::childValueChanged( PropertyItem *c ) +{ +#ifndef QT_NO_SQL + QStringList lst; + lst << ( (PropertyListItem*)PropertyItem::child( 0 ) )->currentItem() + << ( (PropertyListItem*)PropertyItem::child( 1 ) )->currentItem(); + if ( withField ) + lst << ( (PropertyListItem*)PropertyItem::child( 2 ) )->currentItem(); + if ( c == PropertyItem::child( 0 ) ) { // if the connection changed + lst[ 0 ] = ( (PropertyListItem*)c )->currentItem(); + PropertyItem::child( 1 )->setValue( listview->propertyEditor()->formWindow()->project()->databaseTableList( lst[ 0 ] ) ); + if ( withField ) + PropertyItem::child( 2 )->setValue( listview->propertyEditor()->formWindow()->project()->databaseFieldList( lst[ 0 ], lst[ 1 ] ) ); + } else if ( withField && c == PropertyItem::child( 1 ) ) { // if the table changed + lst[ 1 ] = ( (PropertyListItem*)c )->currentItem(); + if ( withField ) + PropertyItem::child( 2 )->setValue( listview->propertyEditor()->formWindow()->project()->databaseFieldList( lst[ 0 ], lst[ 1 ] ) ); + } + lst.clear(); + lst << ( (PropertyListItem*)PropertyItem::child( 0 ) )->currentItem() + << ( (PropertyListItem*)PropertyItem::child( 1 ) )->currentItem(); + if ( withField ) + lst << ( (PropertyListItem*)PropertyItem::child( 2 ) )->currentItem(); + setValue( lst ); + notifyValueChange(); +#else + Q_UNUSED( c ); +#endif +} + +// -------------------------------------------------------------- + +PropertySizePolicyItem::PropertySizePolicyItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + lin = 0; +} + +QLineEdit *PropertySizePolicyItem::lined() +{ + if ( lin ) + return lin; + lin = new QLineEdit( listview->viewport() ); + lin->hide(); + lin->setReadOnly( true ); + return lin; +} + +void PropertySizePolicyItem::createChildren() +{ + QStringList lst; + lst << "Fixed" << "Minimum" << "Maximum" << "Preferred" << "MinimumExpanding" << "Expanding" << "Ignored"; + + PropertyItem *i = this; + i = new PropertyListItem( listview, i, this, i18n("hSizeType" ), false ); + i->setValue( lst ); + addChild( i ); + i = new PropertyListItem( listview, i, this, i18n("vSizeType" ), false ); + i->setValue( lst ); + addChild( i ); + i = new PropertyIntItem( listview, i, this, i18n("horizontalStretch" ), true ); + addChild( i ); + i = new PropertyIntItem( listview, i, this, i18n("verticalStretch" ), true ); + addChild( i ); +} + +void PropertySizePolicyItem::initChildren() +{ + PropertyItem *item = 0; + QSizePolicy sp = val.toSizePolicy(); + for ( int i = 0; i < childCount(); ++i ) { + item = PropertyItem::child( i ); + if ( item->name() == i18n("hSizeType" ) ) + ( (PropertyListItem*)item )->setCurrentItem( size_type_to_int( sp.horData() ) ); + else if ( item->name() == i18n("vSizeType" ) ) + ( (PropertyListItem*)item )->setCurrentItem( size_type_to_int( sp.verData() ) ); + else if ( item->name() == i18n("horizontalStretch" ) ) + ( (PropertyIntItem*)item )->setValue( sp.horStretch() ); + else if ( item->name() == i18n("verticalStretch" ) ) + ( (PropertyIntItem*)item )->setValue( sp.verStretch() ); + } +} + +PropertySizePolicyItem::~PropertySizePolicyItem() +{ + delete (QLineEdit*)lin; +} + +void PropertySizePolicyItem::showEditor() +{ + PropertyItem::showEditor(); + placeEditor( lined() ); + if ( !lined()->isVisible() || !lined()->hasFocus() ) { + lined()->show(); + listView()->viewport()->setFocus(); + } +} + +void PropertySizePolicyItem::hideEditor() +{ + PropertyItem::hideEditor(); + lined()->hide(); +} + +void PropertySizePolicyItem::setValue( const QVariant &v ) +{ + if ( value() == v ) + return; + + QString s = QString( "%1/%2/%2/%2" ); + s = s.arg( size_type_to_string( v.toSizePolicy().horData() ) ). + arg( size_type_to_string( v.toSizePolicy().verData() ) ). + arg( v.toSizePolicy().horStretch() ). + arg( v.toSizePolicy().verStretch() ); + setText( 1, s ); + lined()->setText( s ); + PropertyItem::setValue( v ); +} + +void PropertySizePolicyItem::childValueChanged( PropertyItem *child ) +{ + QSizePolicy sp = val.toSizePolicy(); + if ( child->name() == i18n("hSizeType" ) ) + sp.setHorData( int_to_size_type( ( ( PropertyListItem*)child )->currentIntItem() ) ); + else if ( child->name() == i18n("vSizeType" ) ) + sp.setVerData( int_to_size_type( ( ( PropertyListItem*)child )->currentIntItem() ) ); + else if ( child->name() == i18n("horizontalStretch" ) ) + sp.setHorStretch( ( ( PropertyIntItem*)child )->value().toInt() ); + else if ( child->name() == i18n("verticalStretch" ) ) + sp.setVerStretch( ( ( PropertyIntItem*)child )->value().toInt() ); + setValue( sp ); + notifyValueChange(); +} + +bool PropertySizePolicyItem::hasSubItems() const +{ + return true; +} + +// -------------------------------------------------------------- + +PropertyPaletteItem::PropertyPaletteItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + box = new QHBox( listview->viewport() ); + box->hide(); + palettePrev = new QLabel( box ); + button = new QPushButton( "...", box ); + button->setFixedWidth( 20 ); + box->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken ); + box->setLineWidth( 2 ); + palettePrev->setFrameStyle( QFrame::NoFrame ); + box->installEventFilter( listview ); + connect( button, SIGNAL( clicked() ), + this, SLOT( getPalette() ) ); +} +PropertyPaletteItem::~PropertyPaletteItem() +{ + delete (QHBox*)box; +} + +void PropertyPaletteItem::showEditor() +{ + PropertyItem::showEditor(); + placeEditor( box ); + if ( !box->isVisible() ) { + box->show(); + listView()->viewport()->setFocus(); + } +} + +void PropertyPaletteItem::hideEditor() +{ + PropertyItem::hideEditor(); + box->hide(); +} + +void PropertyPaletteItem::setValue( const QVariant &v ) +{ + QString s; + palettePrev->setPalette( v.toPalette() ); + PropertyItem::setValue( v ); + repaint(); +} + +void PropertyPaletteItem::getPalette() +{ + if ( !listview->propertyEditor()->widget()->isWidgetType() ) + return; + bool ok = false; + QWidget *w = (QWidget*)listview->propertyEditor()->widget(); + if ( w->inherits( "QScrollView" ) ) + w = ( (QScrollView*)w )->viewport(); + QPalette pal = PaletteEditor::getPalette( &ok, val.toPalette(), +#if defined(QT_NON_COMMERCIAL) + w->backgroundMode(), listview->topLevelWidget(), +#else + w->backgroundMode(), listview, +#endif + "choose_palette", listview->propertyEditor()->formWindow() ); + if ( !ok ) + return; + setValue( pal ); + notifyValueChange(); +} + +bool PropertyPaletteItem::hasCustomContents() const +{ + return true; +} + +void PropertyPaletteItem::drawCustomContents( QPainter *p, const QRect &r ) +{ + QPalette pal( value().toPalette() ); + p->save(); + p->setClipRect( QRect( QPoint( (int)(p->worldMatrix().dx() + r.x()), + (int)(p->worldMatrix().dy() + r.y()) ), + r.size() ) ); + QRect r2( r ); + r2.setX( r2.x() + 2 ); + r2.setY( r2.y() + 2 ); + r2.setWidth( r2.width() - 3 ); + r2.setHeight( r2.height() - 3 ); + p->setPen( QPen( black, 1 ) ); + p->setBrush( pal.active().background() ); + p->drawRect( r2 ); + p->restore(); +} + +// -------------------------------------------------------------- + +PropertyCursorItem::PropertyCursorItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName ) + : PropertyItem( l, after, prop, propName ) +{ + comb = 0; +} + +QComboBox *PropertyCursorItem::combo() +{ + if ( comb ) + return comb; + comb = new QComboBox( false, listview->viewport() ); + comb->hide(); + QBitmap cur; + + cur = QBitmap(arrow_width, arrow_height, arrow_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Arrow"), QObject::ArrowCursor); + + cur = QBitmap(uparrow_width, uparrow_height, uparrow_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Up-Arrow"), QObject::UpArrowCursor ); + + cur = QBitmap(cross_width, cross_height, cross_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Cross"), QObject::CrossCursor ); + + cur = QBitmap(wait_width, wait_height, wait_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Waiting"), QObject::WaitCursor ); + + cur = QBitmap(ibeam_width, ibeam_height, ibeam_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("iBeam"), QObject::IbeamCursor ); + + cur = QBitmap(sizev_width, sizev_height, sizev_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Size Vertical"), QObject::SizeVerCursor ); + + cur = QBitmap(sizeh_width, sizeh_height, sizeh_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Size Horizontal"), QObject::SizeHorCursor ); + + cur = QBitmap(sizef_width, sizef_height, sizef_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Size Slash"), QObject::SizeBDiagCursor ); + + cur = QBitmap(sizeb_width, sizeb_height, sizeb_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Size Backslash"), QObject::SizeFDiagCursor ); + + cur = QBitmap(sizeall_width, sizeall_height, sizeall_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Size All"), QObject::SizeAllCursor ); + + cur = QBitmap( 25, 25, 1 ); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Blank"), QObject::BlankCursor ); + + cur = QBitmap(vsplit_width, vsplit_height, vsplit_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Split Vertical"), QObject::SplitVCursor ); + + cur = QBitmap(hsplit_width, hsplit_height, hsplit_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Split Horizontal"), QObject::SplitHCursor ); + + cur = QBitmap(hand_width, hand_height, hand_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Pointing Hand"), QObject::PointingHandCursor ); + + cur = QBitmap(no_width, no_height, no_bits, true); + cur.setMask( cur ); + comb->insertItem( cur, i18n("Forbidden"), QObject::ForbiddenCursor ); + + connect( comb, SIGNAL( activated( int ) ), + this, SLOT( setValue() ) ); + comb->installEventFilter( listview ); + return comb; +} + +PropertyCursorItem::~PropertyCursorItem() +{ + delete (QComboBox*)comb; +} + +void PropertyCursorItem::showEditor() +{ + PropertyItem::showEditor(); + if ( !comb ) { + combo()->blockSignals( true ); + combo()->setCurrentItem( (int)value().toCursor().shape() ); + combo()->blockSignals( false ); + } + placeEditor( combo() ); + if ( !combo()->isVisible() || !combo()->hasFocus() ) { + combo()->show(); + setFocus( combo() ); + } +} + +void PropertyCursorItem::hideEditor() +{ + PropertyItem::hideEditor(); + combo()->hide(); +} + +void PropertyCursorItem::setValue( const QVariant &v ) +{ + if ( ( !hasSubItems() || !isOpen() ) + && value() == v ) + return; + + combo()->blockSignals( true ); + combo()->setCurrentItem( (int)v.toCursor().shape() ); + combo()->blockSignals( false ); + setText( 1, combo()->currentText() ); + PropertyItem::setValue( v ); +} + +void PropertyCursorItem::setValue() +{ + if ( !comb ) + return; + if ( QVariant( QCursor( combo()->currentItem() ) ) == val ) + return; + setText( 1, combo()->currentText() ); + PropertyItem::setValue( QCursor( combo()->currentItem() ) ); + notifyValueChange(); +} + +// -------------------------------------------------------------- + +/*! + \class PropertyList propertyeditor.h + \brief PropertyList is a QListView derived class which is used for editing widget properties + + This class is used for widget properties. It has to be child of a + PropertyEditor. + + To initialize it for editing a widget call setupProperties() which + iterates through the properties of the current widget (see + PropertyEditor::widget()) and builds the list. + + To update the item values, refetchData() can be called. + + If the value of an item has been changed by the user, and this + change should be applied to the widget's property, valueChanged() + has to be called. + + To set the value of an item, setPropertyValue() has to be called. +*/ + +PropertyList::PropertyList( PropertyEditor *e ) + : QListView( e ), editor( e ) +{ + init_colors(); + + whatsThis = new PropertyWhatsThis( this ); + showSorted = false; + header()->setMovingEnabled( false ); + header()->setStretchEnabled( true ); + setResizePolicy( QScrollView::Manual ); + viewport()->setAcceptDrops( true ); + viewport()->installEventFilter( this ); + addColumn( i18n("Property" ) ); + addColumn( i18n("Value" ) ); + connect( header(), SIGNAL( sizeChange( int, int, int ) ), + this, SLOT( updateEditorSize() ) ); + disconnect( header(), SIGNAL( sectionClicked( int ) ), + this, SLOT( changeSortColumn( int ) ) ); + connect( header(), SIGNAL( sectionClicked( int ) ), + this, SLOT( toggleSort() ) ); + connect( this, SIGNAL( pressed( QListViewItem *, const QPoint &, int ) ), + this, SLOT( itemPressed( QListViewItem *, const QPoint &, int ) ) ); + connect( this, SIGNAL( doubleClicked( QListViewItem * ) ), + this, SLOT( toggleOpen( QListViewItem * ) ) ); + setSorting( -1 ); + setHScrollBarMode( AlwaysOff ); + setVScrollBarMode( AlwaysOn ); + setColumnWidthMode( 1, Manual ); + mousePressed = false; + pressItem = 0; + header()->installEventFilter( this ); +} + +void PropertyList::toggleSort() +{ + showSorted = !showSorted; + editor->clear(); + editor->setup(); +} + +void PropertyList::resizeEvent( QResizeEvent *e ) +{ + QListView::resizeEvent( e ); + if ( currentItem() ) + ( ( PropertyItem* )currentItem() )->showEditor(); +} + +static QVariant::Type type_to_variant( const QString &s ) +{ + if ( s == "Invalid " ) + return QVariant::Invalid; + if ( s == "Map" ) + return QVariant::Map; + if ( s == "List" ) + return QVariant::List; + if ( s == "String" ) + return QVariant::String; + if ( s == "StringList" ) + return QVariant::StringList; + if ( s == "Font" ) + return QVariant::Font; + if ( s == "Pixmap" ) + return QVariant::Pixmap; + if ( s == "Brush" ) + return QVariant::Brush; + if ( s == "Rect" ) + return QVariant::Rect; + if ( s == "Size" ) + return QVariant::Size; + if ( s == "Color" ) + return QVariant::Color; + if ( s == "Palette" ) + return QVariant::Palette; + if ( s == "ColorGroup" ) + return QVariant::ColorGroup; + if ( s == "IconSet" ) + return QVariant::IconSet; + if ( s == "Point" ) + return QVariant::Point; + if ( s == "Image" ) + return QVariant::Image; + if ( s == "Int" ) + return QVariant::Int; + if ( s == "UInt" ) + return QVariant::UInt; + if ( s == "Bool" ) + return QVariant::Bool; + if ( s == "Double" ) + return QVariant::Double; + if ( s == "CString" ) + return QVariant::CString; + if ( s == "PointArray" ) + return QVariant::PointArray; + if ( s == "Region" ) + return QVariant::Region; + if ( s == "Bitmap" ) + return QVariant::Bitmap; + if ( s == "Cursor" ) + return QVariant::Cursor; + if ( s == "SizePolicy" ) + return QVariant::SizePolicy; + if ( s == "Date" ) + return QVariant::Date; + if ( s == "Time" ) + return QVariant::Time; + if ( s == "DateTime" ) + return QVariant::DateTime; + return QVariant::Invalid; +} + +#ifndef QT_NO_SQL +static bool parent_is_data_aware( QObject *o ) +{ + if ( !o->inherits( "QWidget" ) ) + return false; + QWidget *w = (QWidget*)o; + QWidget *p = w->parentWidget(); + while ( p && !p->isTopLevel() ) { + if ( p->inherits( "QDesignerDataBrowser" ) || p->inherits( "QDesignerDataView" ) ) + return true; + p = p->parentWidget(); + } + return false; +} +#endif + +/*! Sets up the property list by adding an item for each designable +property of the widget which is just edited. +*/ + +void PropertyList::setupProperties() +{ + if ( !editor->widget() ) + return; + bool allProperties = !editor->widget()->inherits( "Spacer" ); + QStrList lst = editor->widget()->metaObject()->propertyNames( allProperties ); + PropertyItem *item = 0; + QMap<QString, bool> unique; + QObject *w = editor->widget(); + QStringList valueSet; + bool parentHasLayout = + w->isWidgetType() && + !editor->formWindow()->isMainContainer( (QWidget*)w ) && ( (QWidget*)w )->parentWidget() && + WidgetFactory::layoutType( ( (QWidget*)w )->parentWidget() ) != WidgetFactory::NoLayout; + for ( QPtrListIterator<char> it( lst ); it.current(); ++it ) { + const QMetaProperty* p = + editor->widget()->metaObject()-> + property( editor->widget()->metaObject()->findProperty( it.current(), allProperties), allProperties ); + if ( !p ) + continue; + if ( unique.contains( QString::fromLatin1( it.current() ) ) ) + continue; + if ( editor->widget()->inherits( "QDesignerToolBar" ) || editor->widget()->inherits( "QDesignerMenuBar" ) ) { + if ( qstrcmp( p->name(), "minimumHeight" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "minimumWidth" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "maximumHeight" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "maximumWidth" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "geometry" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "sizePolicy" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "minimumSize" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "maximumSize" ) == 0 ) + continue; + } + unique.insert( QString::fromLatin1( it.current() ), true ); + if ( editor->widget()->isWidgetType() && + editor->formWindow()->isMainContainer( (QWidget*)editor->widget() ) ) { + if ( qstrcmp( p->name(), "geometry" ) == 0 ) + continue; + } else { // hide some toplevel-only stuff + if ( qstrcmp( p->name(), "icon" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "iconText" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "caption" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "sizeIncrement" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "baseSize" ) == 0 ) + continue; + if ( parentHasLayout && qstrcmp( p->name(), "geometry" ) == 0 ) + continue; + if ( w->inherits( "QLayoutWidget" ) || w->inherits( "Spacer" ) ) { + if ( qstrcmp( p->name(), "sizePolicy" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "minimumHeight" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "minimumWidth" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "maximumHeight" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "maximumWidth" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "geometry" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "minimumSize" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "maximumSize" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "enabled" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "paletteForegroundColor" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "paletteBackgroundColor" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "paletteBackgroundPixmap" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "palette" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "font" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "cursor" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "mouseTracking" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "focusPolicy" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "acceptDrops" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "autoMask" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "backgroundOrigin" ) == 0 ) + continue; + } + } + if ( w->inherits( "QActionGroup" ) ) { + if ( qstrcmp( p->name(), "usesDropDown" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "toggleAction" ) == 0 ) + continue; + } + if ( qstrcmp( p->name(), "minimumHeight" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "minimumWidth" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "maximumHeight" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "maximumWidth" ) == 0 ) + continue; + if ( qstrcmp( p->name(), "buttonGroupId" ) == 0 ) { // #### remove this when designable in Q_PROPERTY can take a function (isInButtonGroup() in this case) + if ( !editor->widget()->isWidgetType() || + !editor->widget()->parent() || + !editor->widget()->parent()->inherits( "QButtonGroup" ) ) + continue; + } + + + if ( p->designable(w) ) { + if ( p->isSetType() ) { + if ( QString( p->name() ) == "alignment" ) { + QStringList lst; + lst << p->valueToKey( AlignAuto ) + << p->valueToKey( AlignLeft ) + << p->valueToKey( AlignHCenter ) + << p->valueToKey( AlignRight ) + << p->valueToKey( AlignJustify ); + item = new PropertyListItem( this, item, 0, "hAlign", false ); + item->setValue( lst ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), "hAlign" ) ) + item->setChanged( true, false ); + if ( !editor->widget()->inherits( "QMultiLineEdit" ) ) { + lst.clear(); + lst << p->valueToKey( AlignTop ) + << p->valueToKey( AlignVCenter ) + << p->valueToKey( AlignBottom ); + item = new PropertyListItem( this, item, 0, "vAlign", false ); + item->setValue( lst ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), "vAlign" ) ) + item->setChanged( true, false ); + item = new PropertyBoolItem( this, item, 0, "wordwrap" ); + if ( w->inherits( "QGroupBox" ) ) + item->setVisible( false ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), "wordwrap" ) ) + item->setChanged( true, false ); + } + } else { + qWarning( "Sets except 'alignment' not supported yet.... %s.", p->name() ); + } + } else if ( p->isEnumType() ) { + QStrList l = p->enumKeys(); + QStringList lst; + for ( uint i = 0; i < l.count(); ++i ) { + QString k = l.at( i ); + // filter out enum-masks + if ( k[0] == 'M' && k[1].category() == QChar::Letter_Uppercase ) + continue; + lst << l.at( i ); + } + item = new PropertyListItem( this, item, 0, p->name(), false ); + item->setValue( lst ); + } else { + QVariant::Type t = QVariant::nameToType( p->type() ); + if ( !addPropertyItem( item, p->name(), t ) ) + continue; + } + } + if ( item && !p->isSetType() ) { + if ( valueSet.findIndex( item->name() ) == -1 ) { + setPropertyValue( item ); + valueSet << item->name(); + } + if ( MetaDataBase::isPropertyChanged( editor->widget(), p->name() ) ) + item->setChanged( true, false ); + } + } + + if ( !w->inherits( "QSplitter" ) && !w->inherits( "QDesignerMenuBar" ) && !w->inherits( "QDesignerToolBar" ) && + w->isWidgetType() && WidgetFactory::layoutType( (QWidget*)w ) != WidgetFactory::NoLayout ) { + item = new PropertyIntItem( this, item, 0, "layoutSpacing", true ); + setPropertyValue( item ); + item->setChanged( true ); + item = new PropertyIntItem( this, item, 0, "layoutMargin", true ); + setPropertyValue( item ); + item->setChanged( true ); + } + + + if ( !w->inherits( "Spacer" ) && !w->inherits( "QLayoutWidget" ) && !w->inherits( "QAction" ) && + !w->inherits( "QDesignerMenuBar" ) && !w->inherits( "QDesignerToolBar" ) ) { + item = new PropertyTextItem( this, item, 0, "toolTip", true, false ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), "toolTip" ) ) + item->setChanged( true, false ); + item = new PropertyTextItem( this, item, 0, "whatsThis", true, true ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), "whatsThis" ) ) + item->setChanged( true, false ); + } + +#ifndef QT_NO_SQL + if ( !editor->widget()->inherits( "QDataTable" ) && !editor->widget()->inherits( "QDataBrowser" ) && + !editor->widget()->inherits( "QDataView" ) && parent_is_data_aware( editor->widget() ) ) { + item = new PropertyDatabaseItem( this, item, 0, "database", editor->formWindow()->mainContainer() != w ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), "database" ) ) + item->setChanged( true, false ); + } + + if ( editor->widget()->inherits( "QDataTable" ) || editor->widget()->inherits( "QDataBrowser" ) || editor->widget()->inherits( "QDataView" ) ) { + item = new PropertyDatabaseItem( this, item, 0, "database", false ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), "database" ) ) + item->setChanged( true, false ); + item = new PropertyBoolItem( this, item, 0, "frameworkCode" ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), "frameworkCode" ) ) + item->setChanged( true, false ); + } +#endif + + if ( w->inherits( "CustomWidget" ) ) { + MetaDataBase::CustomWidget *cw = ( (CustomWidget*)w )->customWidget(); + if ( cw ) { + for ( QValueList<MetaDataBase::Property>::Iterator it = cw->lstProperties.begin(); it != cw->lstProperties.end(); ++it ) { + if ( unique.contains( QString( (*it).property ) ) ) + continue; + unique.insert( QString( (*it).property ), true ); + addPropertyItem( item, (*it).property, type_to_variant( (*it).type ) ); + setPropertyValue( item ); + if ( MetaDataBase::isPropertyChanged( editor->widget(), (*it).property ) ) + item->setChanged( true, false ); + } + } + } + + setCurrentItem( firstChild() ); + + if ( showSorted ) { + setSorting( 0 ); + sort(); + setSorting( -1 ); + setCurrentItem( firstChild() ); + qApp->processEvents(); + } + + updateEditorSize(); + updateEditorSize(); +} + +bool PropertyList::addPropertyItem( PropertyItem *&item, const QCString &name, QVariant::Type t ) +{ + switch ( t ) { + case QVariant::String: + item = new PropertyTextItem( this, item, 0, name, true, + editor->widget()->inherits( "QLabel" ) || editor->widget()->inherits( "QTextView" ) ); + break; + case QVariant::CString: + item = new PropertyTextItem( this, item, 0, + name, name == "name" && + editor->widget() == editor->formWindow()->mainContainer(), + false, true ); + break; + case QVariant::Bool: + item = new PropertyBoolItem( this, item, 0, name ); + break; + case QVariant::Font: + item = new PropertyFontItem( this, item, 0, name ); + break; + case QVariant::Int: + if ( name == "accel" ) + item = new PropertyTextItem( this, item, 0, name, false, false, false, true ); + else + item = new PropertyIntItem( this, item, 0, name, true ); + break; + case QVariant::Double: + item = new PropertyDoubleItem( this, item, 0, name ); + break; + case QVariant::KeySequence: + item = new PropertyTextItem( this, item, 0, name, false, false, false, true ); + break; + case QVariant::UInt: + item = new PropertyIntItem( this, item, 0, name, false ); + break; + case QVariant::StringList: + item = new PropertyListItem( this, item, 0, name, true ); + break; + case QVariant::Rect: + item = new PropertyCoordItem( this, item, 0, name, PropertyCoordItem::Rect ); + break; + case QVariant::Point: + item = new PropertyCoordItem( this, item, 0, name, PropertyCoordItem::Point ); + break; + case QVariant::Size: + item = new PropertyCoordItem( this, item, 0, name, PropertyCoordItem::Size ); + break; + case QVariant::Color: + item = new PropertyColorItem( this, item, 0, name, true ); + break; + case QVariant::Pixmap: + case QVariant::IconSet: + item = new PropertyPixmapItem( this, item, 0, name, t == QVariant::IconSet ); + break; + case QVariant::SizePolicy: + item = new PropertySizePolicyItem( this, item, 0, name ); + break; + case QVariant::Palette: + item = new PropertyPaletteItem( this, item, 0, name ); + break; + case QVariant::Cursor: + item = new PropertyCursorItem( this, item, 0, name ); + break; + case QVariant::Date: + item = new PropertyDateItem( this, item, 0, name ); + break; + case QVariant::Time: + item = new PropertyTimeItem( this, item, 0, name ); + break; + case QVariant::DateTime: + item = new PropertyDateTimeItem( this, item, 0, name ); + break; + default: + return false; + } + return true; +} + +void PropertyList::paintEmptyArea( QPainter *p, const QRect &r ) +{ + p->fillRect( r, *backColor2 ); +} + +void PropertyList::setCurrentItem( QListViewItem *i ) +{ + if ( !i ) + return; + + if ( currentItem() ) + ( (PropertyItem*)currentItem() )->hideEditor(); + QListView::setCurrentItem( i ); + ( (PropertyItem*)currentItem() )->showEditor(); +} + +void PropertyList::updateEditorSize() +{ + if ( currentItem() ) + ( ( PropertyItem* )currentItem() )->showEditor(); +} + +/*! This has to be called if the value if \a i should be set as + property to the currently edited widget. +*/ + +void PropertyList::valueChanged( PropertyItem *i ) +{ + if ( !editor->widget() ) + return; + QString pn( i18n("Set '%1' of '%2'" ).arg( i->name() ).arg( editor->widget()->name() ) ); + SetPropertyCommand *cmd = new SetPropertyCommand( pn, editor->formWindow(), + editor->widget(), editor, + i->name(), WidgetFactory::property( editor->widget(), i->name() ), + i->value(), i->currentItem(), i->currentItemFromObject() ); + cmd->execute(); + editor->formWindow()->commandHistory()->addCommand( cmd, true ); +} + +void PropertyList::itemPressed( QListViewItem *i, const QPoint &p, int c ) +{ + if ( !i ) + return; + PropertyItem *pi = (PropertyItem*)i; + if ( !pi->hasSubItems() ) + return; + + if ( c == 0 && viewport()->mapFromGlobal( p ).x() < 20 ) + toggleOpen( i ); +} + +void PropertyList::toggleOpen( QListViewItem *i ) +{ + if ( !i ) + return; + PropertyItem *pi = (PropertyItem*)i; + if ( pi->hasSubItems() ) { + pi->setOpen( !pi->isOpen() ); + } else { + pi->toggle(); + } +} + +bool PropertyList::eventFilter( QObject *o, QEvent *e ) +{ + if ( !o || !e ) + return true; + + PropertyItem *i = (PropertyItem*)currentItem(); + if ( o != this &&e->type() == QEvent::KeyPress ) { + QKeyEvent *ke = (QKeyEvent*)e; + if ( ( ke->key() == Key_Up || ke->key() == Key_Down ) && + ( o != this || o != viewport() ) && + !( ke->state() & ControlButton ) ) { + QApplication::sendEvent( this, (QKeyEvent*)e ); + return true; + } else if ( ( !o->inherits( "QLineEdit" ) || + ( o->inherits( "QLineEdit" ) && ( (QLineEdit*)o )->isReadOnly() ) ) && + i && i->hasSubItems() ) { + if ( !i->isOpen() && + ( ke->key() == Key_Plus || + ke->key() == Key_Right )) + i->setOpen( true ); + else if ( i->isOpen() && + ( ke->key() == Key_Minus || + ke->key() == Key_Left ) ) + i->setOpen( false ); + } else if ( ( ke->key() == Key_Return || ke->key() == Key_Enter ) && o->inherits( "QComboBox" ) ) { + QKeyEvent ke2( QEvent::KeyPress, Key_Space, 0, 0 ); + QApplication::sendEvent( o, &ke2 ); + return true; + } + } else if ( e->type() == QEvent::FocusOut && o->inherits( "QLineEdit" ) && editor->formWindow() ) { + QTimer::singleShot( 100, editor->formWindow()->commandHistory(), SLOT( checkCompressedCommand() ) ); + } else if ( o == viewport() ) { + QMouseEvent *me; + PropertyListItem* i; + switch ( e->type() ) { + case QEvent::MouseButtonPress: + me = (QMouseEvent*)e; + i = (PropertyListItem*) itemAt( me->pos() ); + if( i && ( i->inherits("PropertyColorItem") || i->inherits("PropertyPixmapItem") ) ) { + pressItem = i; + pressPos = me->pos(); + mousePressed = true; + } + break; + case QEvent::MouseMove: + me = (QMouseEvent*)e; + if ( me && me->state() & LeftButton && mousePressed) { + + i = (PropertyListItem*) itemAt( me->pos() ); + if( i && i == pressItem ) { + + if(( pressPos - me->pos() ).manhattanLength() > QApplication::startDragDistance() ){ + if ( i->inherits("PropertyColorItem") ) { + QColor col = i->value().asColor(); + QColorDrag *drg = new QColorDrag( col, this ); + QPixmap pix( 25, 25 ); + pix.fill( col ); + QPainter p( &pix ); + p.drawRect( 0, 0, pix.width(), pix.height() ); + p.end(); + drg->setPixmap( pix ); + mousePressed = false; + drg->dragCopy(); + } + else if ( i->inherits("PropertyPixmapItem") ) { + QPixmap pix = i->value().asPixmap(); + if( !pix.isNull() ) { + QImage img = pix.convertToImage(); + QImageDrag *drg = new QImageDrag( img, this ); + drg->setPixmap( pix ); + mousePressed = false; + drg->dragCopy(); + } + } + } + } + } + break; + default: + break; + } + } else if ( o == header() ) { + if ( e->type() == QEvent::ContextMenu ) { + ((QContextMenuEvent *)e)->accept(); + QPopupMenu menu( 0 ); + menu.setCheckable( true ); + const int cat_id = 1; + const int alpha_id = 2; + menu.insertItem( i18n("Sort &Categorized" ), cat_id ); + int alpha = menu.insertItem( i18n("Sort &Alphabetically" ), alpha_id ); + if ( showSorted ) + menu.setItemChecked( alpha_id, true ); + else + menu.setItemChecked( cat_id, true ); + int res = menu.exec( ( (QContextMenuEvent*)e )->globalPos() ); + if ( res != -1 ) { + bool newShowSorted = ( res == alpha ); + if ( showSorted != newShowSorted ) { + showSorted = newShowSorted; + editor->clear(); + editor->setup(); + } + } + return true; + } + } + + return QListView::eventFilter( o, e ); +} + +/*! This method re-initializes each item of the property list. +*/ + +void PropertyList::refetchData() +{ + QListViewItemIterator it( this ); + for ( ; it.current(); ++it ) { + PropertyItem *i = (PropertyItem*)it.current(); + if ( !i->propertyParent() ) + setPropertyValue( i ); + if ( i->hasSubItems() ) + i->initChildren(); + bool changed = MetaDataBase::isPropertyChanged( editor->widget(), i->name() ); + if ( changed != i->isChanged() ) + i->setChanged( changed, false ); + } + updateEditorSize(); +} + +static void clearAlignList( QStrList &l ) +{ + if ( l.count() == 1 ) + return; + if ( l.find( "AlignAuto" ) != -1 ) + l.remove( "AlignAuto" ); + if ( l.find( "WordBreak" ) != -1 ) + l.remove( "WordBreak" ); +} + +/*! This method initializes the value of the item \a i to the value + of the corresponding property. +*/ + +void PropertyList::setPropertyValue( PropertyItem *i ) +{ + const QMetaProperty *p = + editor->widget()->metaObject()-> + property( editor->widget()->metaObject()->findProperty( i->name(), true), true ); + if ( !p ) { + if ( i->name() == "hAlign" ) { + int align = editor->widget()->property( "alignment" ).toInt(); + p = editor->widget()->metaObject()-> + property( editor->widget()->metaObject()->findProperty( "alignment", true ), true ); + align &= ~AlignVertical_Mask; + QStrList l = p->valueToKeys( align ); + clearAlignList( l ); + ( (PropertyListItem*)i )->setCurrentItem( l.last() ); + } else if ( i->name() == "vAlign" ) { + int align = editor->widget()->property( "alignment" ).toInt(); + p = editor->widget()->metaObject()-> + property( editor->widget()->metaObject()->findProperty( "alignment", true ), true ); + align &= ~AlignHorizontal_Mask; + ( (PropertyListItem*)i )->setCurrentItem( p->valueToKeys( align ).last() ); + } else if ( i->name() == "wordwrap" ) { + int align = editor->widget()->property( "alignment" ).toInt(); + if ( align & WordBreak ) + i->setValue( QVariant( true, 0 ) ); + else + i->setValue( QVariant( false, 0 ) ); + } else if ( i->name() == "layoutSpacing" ) { + ( (PropertyIntItem*)i )->setValue( MetaDataBase::spacing( WidgetFactory::containerOfWidget( (QWidget*)editor->widget() ) ) ); + } else if ( i->name() == "layoutMargin" ) { + ( (PropertyIntItem*)i )->setValue( MetaDataBase::margin( WidgetFactory::containerOfWidget( (QWidget*)editor->widget() ) ) ); + } else if ( i->name() == "toolTip" || i->name() == "whatsThis" || i->name() == "database" || i->name() == "frameworkCode" ) { + i->setValue( MetaDataBase::fakeProperty( editor->widget(), i->name() ) ); + } else if ( editor->widget()->inherits( "CustomWidget" ) ) { + MetaDataBase::CustomWidget *cw = ( (CustomWidget*)editor->widget() )->customWidget(); + if ( !cw ) + return; + i->setValue( MetaDataBase::fakeProperty( editor->widget(), i->name() ) ); + } + return; + } + if ( p->isSetType() ) + ; + else if ( p->isEnumType() ) + ( (PropertyListItem*)i )->setCurrentItem( p->valueToKey( editor->widget()->property( i->name() ).toInt() ) ); + else + i->setValue( editor->widget()->property( i->name() ) ); +} + +void PropertyList::setCurrentProperty( const QString &n ) +{ + if ( currentItem() && currentItem()->text( 0 ) == n || + currentItem() && ( (PropertyItem*)currentItem() )->propertyParent() && + ( (PropertyItem*)currentItem() )->propertyParent()->text( 0 ) == n ) + return; + + QListViewItemIterator it( this ); + for ( ; it.current(); ++it ) { + if ( it.current()->text( 0 ) == n ) { + setCurrentItem( it.current() ); + break; + } + } +} + +PropertyEditor *PropertyList::propertyEditor() const +{ + return editor; +} + +void PropertyList::resetProperty() +{ + if ( !currentItem() ) + return; + PropertyItem *i = (PropertyItem*)currentItem(); + if ( !MetaDataBase::isPropertyChanged( editor->widget(), i->PropertyItem::name() ) ) + return; + QString pn( i18n("Reset '%1' of '%2'" ).arg( i->name() ).arg( editor->widget()->name() ) ); + SetPropertyCommand *cmd = new SetPropertyCommand( pn, editor->formWindow(), + editor->widget(), editor, + i->name(), i->value(), + WidgetFactory::defaultValue( editor->widget(), i->name() ), + WidgetFactory::defaultCurrentItem( editor->widget(), i->name() ), + i->currentItem(), true ); + cmd->execute(); + editor->formWindow()->commandHistory()->addCommand( cmd, false ); + if ( i->hasSubItems() ) + i->initChildren(); +} + +void PropertyList::viewportDragEnterEvent( QDragEnterEvent *e ) +{ + PropertyListItem *i = (PropertyListItem*) itemAt( e->pos() ); + if( !i ) { + e->ignore(); + return; + } + + if ( i->inherits("PropertyColorItem") && QColorDrag::canDecode( e ) ) + e->accept(); + else if ( i->inherits("PropertyPixmapItem") && QImageDrag::canDecode( e ) ) + e->accept(); + else + e->ignore(); +} + +void PropertyList::viewportDragMoveEvent ( QDragMoveEvent *e ) +{ + PropertyListItem *i = (PropertyListItem*) itemAt( e->pos() ); + if( !i ) { + e->ignore(); + return; + } + + if ( i->inherits("PropertyColorItem") && QColorDrag::canDecode( e ) ) + e->accept(); + else if ( i->inherits("PropertyPixmapItem") && QImageDrag::canDecode( e ) ) + e->accept(); + else + e->ignore(); +} + +void PropertyList::viewportDropEvent ( QDropEvent *e ) +{ + PropertyListItem *i = (PropertyListItem*) itemAt( e->pos() ); + if( !i ) { + e->ignore(); + return; + } + + if ( i->inherits("PropertyColorItem") && QColorDrag::canDecode( e ) ) { + QColor color; + QColorDrag::decode( e, color ); + i->setValue( QVariant( color ) ); + valueChanged( i ); + e->accept(); + } + else if ( i->inherits("PropertyPixmapItem") && QImageDrag::canDecode( e ) ) { + QImage img; + QImageDrag::decode( e, img ); + QPixmap pm; + pm.convertFromImage( img ); + i->setValue( QVariant( pm ) ); + valueChanged( i ); + e->accept(); + } + else + e->ignore(); +} + +QString PropertyList::whatsThisAt( const QPoint &p ) +{ + return whatsThisText( itemAt( p ) ); +} + +void PropertyList::showCurrentWhatsThis() +{ + if ( !currentItem() ) + return; + QPoint p( 0, currentItem()->itemPos() ); + p = viewport()->mapToGlobal( contentsToViewport( p ) ); + QWhatsThis::display( whatsThisText( currentItem() ), p, viewport() ); +} + +QString PropertyList::whatsThisText( QListViewItem *i ) +{ + if ( !i || !editor->widget() ) + return QString::null; + readPropertyDocs(); + if ( ( (PropertyItem*)i )->propertyParent() ) + i = ( (PropertyItem*)i )->propertyParent(); + + const QMetaObject *mo = editor->widget()->metaObject(); + QString prop = ( (PropertyItem*)i )->name(); + while ( mo ) { + QString s; + s = QString( mo->className() ) + "::" + prop; + QMap<QString, QString>::Iterator it; + if ( ( it = propertyDocs.find( s ) ) != propertyDocs.end() ) { + return *it; + } + mo = mo->superClass(); + } + + return i18n("<p><b>QWidget::%1</b></p><p>There is no documentation available for this property.</p>" ).arg( prop ); +} + +void PropertyList::readPropertyDocs() +{ + if ( !propertyDocs.isEmpty() ) + return; + + QString docFile = MainWindow::self->documentationPath() + "/propertydocs"; + QFile f( docFile ); + if ( !f.open( IO_ReadOnly ) ) + return; + QDomDocument doc; + QString errMsg; + int errLine; + if ( !doc.setContent( &f, &errMsg, &errLine ) ) + return; + QDomElement e = doc.firstChild().toElement().firstChild().toElement(); + + for ( ; !e.isNull(); e = e.nextSibling().toElement() ) { + QDomElement n = e.firstChild().toElement(); + QString name; + QString doc; + for ( ; !n.isNull(); n = n.nextSibling().toElement() ) { + if ( n.tagName() == "name" ) + name = n.firstChild().toText().data(); + else if ( n.tagName() == "doc" ) + doc = n.firstChild().toText().data(); + } + doc.insert( 0, "<p><b>" + name + "</b></p>" ); + propertyDocs.insert( name, doc ); + } +} + +// ------------------------------------------------------------ + +#ifndef KOMMANDER +EventList::EventList( QWidget *parent, FormWindow *fw, PropertyEditor *e ) + : HierarchyList( parent, fw, true ), editor( e ) +{ + header()->hide(); + removeColumn( 1 ); + setRootIsDecorated( true ); + connect( this, SIGNAL( itemRenamed( QListViewItem *, int, const QString & ) ), + this, SLOT( renamed( QListViewItem * ) ) ); +} + +void EventList::setup() +{ + clear(); + +#ifndef KOMMANDER + if ( MetaDataBase::hasEvents( formWindow->project()->language() ) ) { +#else + if ( MetaDataBase::hasEvents( "C++" ) ) { +#endif + QValueList<MetaDataBase::EventDescription> events = +#ifndef KOMMANDER + MetaDataBase::events( editor->widget(), formWindow->project()->language() ); +#else + MetaDataBase::events( editor->widget(), "C++" ); +#endif + if ( events.isEmpty() ) + return; + for ( QValueList<MetaDataBase::EventDescription>::Iterator it = events.begin(); it != events.end(); ++it ) { + HierarchyItem *eventItem = new HierarchyItem( HierarchyItem::Event, this, (*it).name, + QString::null, QString::null ); + eventItem->setOpen( true ); + QStringList funcs = MetaDataBase::eventFunctions( editor->widget(), + (*it).name, +#ifndef KOMMANDER + formWindow->project()->language() ); +#else + "C++" ); +#endif + for ( QStringList::Iterator fit = funcs.begin(); fit != funcs.end(); ++fit ) { + HierarchyItem *item = new HierarchyItem( HierarchyItem::EventFunction, eventItem, + *fit, QString::null, QString::null ); + item->setPixmap( 0, PixmapChooser::loadPixmap( "editslots.xpm" ) ); + } +#if 0 // ### for conversation from old to new + if ( !funcs.isEmpty() ) + save( eventItem ); +#endif + } + } else { + QStrList sigs = editor->widget()->metaObject()->signalNames( true ); + sigs.remove( "destroyed()" ); + QStrListIterator it( sigs ); + while ( it.current() ) { + HierarchyItem *eventItem = new HierarchyItem( HierarchyItem::Event, this, + it.current(), QString::null, QString::null ); + eventItem->setOpen( true ); + QValueList<MetaDataBase::Connection> conns = + MetaDataBase::connections( formWindow, editor->widget(), formWindow->mainContainer() ); + for ( QValueList<MetaDataBase::Connection>::Iterator cit = conns.begin(); cit != conns.end(); ++cit ) { + if ( MetaDataBase::normalizeSlot( QString( (*cit).signal ) ) != + MetaDataBase::normalizeSlot( QString( it.current() ) ) ) + continue; + HierarchyItem *item = new HierarchyItem( HierarchyItem::EventFunction, eventItem, + (*cit).slot, QString::null, QString::null ); + item->setPixmap( 0, PixmapChooser::loadPixmap( "editslots.xpm" ) ); + } + ++it; + } + } +} + +extern QListViewItem *newItem; + +void EventList::contentsMouseDoubleClickEvent( QMouseEvent *e ) +{ + QListViewItem *i = itemAt( contentsToViewport( e->pos() ) ); + if ( !i || i->parent() ) + return; + QString s; +#ifndef KOMMANDER + if ( MetaDataBase::hasEvents( formWindow->project()->language() ) ) { +#else + if ( MetaDataBase::hasEvents( "C++" ) ) { +#endif + QString s1 = i->text( 0 ); + int pt = s1.find( "(" ); + if ( pt != -1 ) + s1 = s1.left( pt ); + s = QString( editor->widget()->name() ) + "_" + s1; + } else { + s = QString( editor->widget()->name() ) + "_" + i->text( 0 ); + } + + insertEntry( i, PixmapChooser::loadPixmap( "editslots.xpm" ), s ); +} + +void EventList::setCurrent( QWidget * ) +{ +} + +void EventList::objectClicked( QListViewItem *i ) +{ + if ( !i || !i->parent() ) + return; + formWindow->mainWindow()->editFunction( i->text( 0 ) ); +} + +void EventList::showRMBMenu( QListViewItem *i, const QPoint &pos ) +{ + if ( !i ) + return; + QPopupMenu menu; + const int NEW_ITEM = 1; + const int DEL_ITEM = 2; + menu.insertItem( PixmapChooser::loadPixmap( "filenew" ), i18n("New Signal Handler" ), NEW_ITEM ); + menu.insertItem( PixmapChooser::loadPixmap( "editcut" ), i18n("Delete Signal Handler" ), DEL_ITEM ); + int res = menu.exec( pos ); + if ( res == NEW_ITEM ) { + QString s; +#ifndef KOMMANDER + if ( MetaDataBase::hasEvents( formWindow->project()->language() ) ) { +#else + if ( MetaDataBase::hasEvents( "C++" ) ) { +#endif + QString s1 = ( i->parent() ? i->parent() : i )->text( 0 ); + int pt = s1.find( "(" ); + if ( pt != -1 ) + s1 = s1.left( pt ); + s = QString( editor->widget()->name() ) + "_" + s1; + } else { + s = QString( editor->widget()->name() ) + "_" + ( i->parent() ? i->parent() : i )->text( 0 ); + } + insertEntry( i->parent() ? i->parent() : i, PixmapChooser::loadPixmap( "editslots.xpm" ), s ); + } else if ( res == DEL_ITEM && i->parent() ) { +#ifndef KOMMANDER + if ( MetaDataBase::hasEvents( formWindow->project()->language() ) ) { +#else + if ( MetaDataBase::hasEvents( "C++" ) ) { +#endif + QListViewItem *p = i->parent(); + delete i; + save( p ); + } else { + MetaDataBase::Connection conn; + conn.sender = editor->widget(); + conn.receiver = formWindow->mainContainer(); + conn.signal = i->parent()->text( 0 ); + conn.slot = i->text( 0 ); + delete i; + RemoveConnectionCommand *cmd = new RemoveConnectionCommand( i18n("Remove Connection" ), + formWindow, + conn ); + formWindow->commandHistory()->addCommand( cmd ); + cmd->execute(); +#ifndef KOMMANDER + editor->formWindow()->mainWindow()->objectHierarchy()->updateFormDefinitionView(); +#endif + } + } +} + +void EventList::renamed( QListViewItem *i ) +{ + if ( newItem == i ) + newItem = 0; + if ( !i->parent() ) + return; + QListViewItem *itm = i->parent()->firstChild(); + bool del = false; + while ( itm ) { + if ( itm != i && itm->text( 0 ) == i->text( 0 ) ) { + del = true; + break; + } + itm = itm->nextSibling(); + } + i->setRenameEnabled( 0, false ); + if ( del ) { + delete i; + } else { +#ifndef KOMMANDER + if ( MetaDataBase::hasEvents( formWindow->project()->language() ) ) { +#else + if ( MetaDataBase::hasEvents( "C++" ) ) { +#endif + + save( i->parent() ); + editor->formWindow()->mainWindow()-> +#ifndef KOMMANDER + editFunction( i->text( 0 ), editor->formWindow()->project()->language(), true ); +#else + editFunction( i->text( 0 ), "C++", true ); +#endif + } else { + MetaDataBase::Connection conn; + conn.sender = editor->widget(); + conn.receiver = formWindow->mainContainer(); + conn.signal = i->parent()->text( 0 ); + conn.slot = i->text( 0 ); + AddConnectionCommand *cmd = new AddConnectionCommand( i18n("Add Connection" ), + formWindow, + conn ); + formWindow->commandHistory()->addCommand( cmd ); + // #### we should look if the specified slot already + // exists and if we can connect to this one +#ifndef KOMMANDER + MetaDataBase::addSlot( formWindow, i->text( 0 ).latin1(), "virtual", "public", + formWindow->project()->language(), "void" ); +#else + MetaDataBase::addSlot( formWindow, i->text( 0 ).latin1(), "virtual", "public", + "C++", "void" ); +#endif + editor->formWindow()->mainWindow()-> + editFunction( i->text( 0 ).left( i->text( 0 ).find( "(" ) ), +#ifndef KOMMANDER + editor->formWindow()->project()->language(), true ); +#else + "C++", true ); +#endif + + cmd->execute(); +#ifndef KOMMANDER + editor->formWindow()->mainWindow()->objectHierarchy()->updateFormDefinitionView(); +#endif + } + } +} + +void EventList::save( QListViewItem *p ) +{ + QStringList lst; + QListViewItem *i = p->firstChild(); + while ( i ) { + lst << i->text( 0 ); + i = i->nextSibling(); + } + +#ifndef KOMMANDER + if ( MetaDataBase::hasEvents( formWindow->project()->language() ) ) { + if ( MetaDataBase::setEventFunctions( editor->widget(), formWindow, + formWindow->project()->language(), p->text( 0 ), lst ) ) + editor->formWindow()->mainWindow()->objectHierarchy()->updateFormDefinitionView(); + } +#endif +} +#endif + +// -------------------------------------------------------------- + +/*! + \class PropertyEditor propertyeditor.h + \brief PropertyEdior toplevel window + + This is the toplevel window of the property editor which contains a + listview for editing properties. +*/ + +PropertyEditor::PropertyEditor( QWidget *parent ) + : QTabWidget( parent, 0, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | + WStyle_StaysOnTop | WStyle_Tool |WStyle_MinMax | WStyle_SysMenu ) +{ + setCaption( i18n("Property Editor" ) ); + setIcon( PixmapChooser::loadPixmap( "logo" ) ); + wid = 0; + formwindow = 0; + listview = new PropertyList( this ); + addTab( listview, i18n("P&roperties" ) ); +#ifndef KOMMANDER + eList = new EventList( this, formWindow(), this ); + addTab( eList, i18n("S&ignal Handlers" ) ); +#endif +} + +QObject *PropertyEditor::widget() const +{ + return wid; +} + +void PropertyEditor::setWidget( QObject *w, FormWindow *fw ) +{ +#ifndef KOMMANDER + eList->setFormWindow( fw ); +#endif + if ( w && w == wid ) { + bool ret = true; + if ( wid->isWidgetType() && WidgetFactory::layoutType( (QWidget*)wid ) != WidgetFactory::NoLayout ) { + QListViewItemIterator it( listview ); + ret = false; + while ( it.current() ) { + if ( it.current()->text( 0 ) == "layoutSpacing" || it.current()->text( 0 ) == "layoutMargin" ) { + ret = true; + break; + } + ++it; + } + } + if ( ret ) + return; + } + + if ( !w || !fw ) { + setCaption( i18n("Property Editor" ) ); + clear(); + wid = 0; + formwindow = 0; + return; + } + + wid = w; + formwindow = fw; + setCaption( i18n("Property Editor (%1)" ).arg( formwindow->name() ) ); + listview->viewport()->setUpdatesEnabled( false ); + listview->setUpdatesEnabled( false ); + clear(); + listview->viewport()->setUpdatesEnabled( true ); + listview->setUpdatesEnabled( true ); + setup(); +} + +void PropertyEditor::clear() +{ + listview->setContentsPos( 0, 0 ); + listview->clear(); +#ifndef KOMMANDER + eList->setContentsPos( 0, 0 ); + eList->clear(); +#endif +} + +void PropertyEditor::setup() +{ + if ( !formwindow || !wid ) + return; + listview->viewport()->setUpdatesEnabled( false ); + listview->setupProperties(); + listview->viewport()->setUpdatesEnabled( true ); + listview->updateEditorSize(); + +#ifndef KOMMANDER + eList->viewport()->setUpdatesEnabled( false ); + eList->setup(); + eList->viewport()->setUpdatesEnabled( true ); +#endif +} + +void PropertyEditor::refetchData() +{ + listview->refetchData(); +} + +void PropertyEditor::emitWidgetChanged() +{ + if ( formwindow && wid ) + formwindow->widgetChanged( wid ); +} + +void PropertyEditor::closed( FormWindow *w ) +{ + if ( w == formwindow ) { + formwindow = 0; + wid = 0; + clear(); + } +} + +void PropertyEditor::closeEvent( QCloseEvent *e ) +{ + emit hidden(); + e->accept(); +} + +PropertyList *PropertyEditor::propertyList() const +{ + return listview; +} + +FormWindow *PropertyEditor::formWindow() const +{ + return formwindow; +} + +QString PropertyEditor::currentProperty() const +{ + if ( !wid ) + return QString::null; + if ( ( (PropertyItem*)listview->currentItem() )->propertyParent() ) + return ( (PropertyItem*)listview->currentItem() )->propertyParent()->name(); + return ( (PropertyItem*)listview->currentItem() )->name(); +} + +QString PropertyEditor::classOfCurrentProperty() const +{ + if ( !wid ) + return QString::null; + QObject *o = wid; + QString curr = currentProperty(); + QMetaObject *mo = o->metaObject(); + while ( mo ) { + QStrList props = mo->propertyNames( false ); + if ( props.find( curr.latin1() ) != -1 ) + return mo->className(); + mo = mo->superClass(); + } + return QString::null; +} + +QMetaObject* PropertyEditor::metaObjectOfCurrentProperty() const +{ + if ( !wid ) + return 0; + return wid->metaObject(); +} + +void PropertyEditor::resetFocus() +{ + if ( listview->currentItem() ) + ( (PropertyItem*)listview->currentItem() )->showEditor(); +} + +#ifndef KOMMANDER +EventList *PropertyEditor::eventList() const +{ + return eList; +} +#endif +#include "propertyeditor.moc" diff --git a/kommander/editor/propertyeditor.h b/kommander/editor/propertyeditor.h new file mode 100644 index 00000000..57911b7b --- /dev/null +++ b/kommander/editor/propertyeditor.h @@ -0,0 +1,670 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef PROPERTYEDITOR_H +#define PROPERTYEDITOR_H + +#include <qfeatures.h> +#include <qvariant.h> +#include <qlistview.h> +#include <qptrlist.h> +#include <qguardedptr.h> +#include <qtabwidget.h> +#include <qmodules.h> +#include "hierarchyview.h" + +class PropertyList; +class PropertyEditor; +class QPainter; +class QColorGroup; +class QComboBox; +class QLineEdit; +class QPushButton; +class QHBox; +class QSpinBox; +class QLabel; +class FormWindow; +class QCloseEvent; +class QResizeEvent; +class PropertyWhatsThis; +class QDateEdit; +class QTimeEdit; +class QDateTimeEdit; + +class PropertyItem : public QListViewItem +{ +public: + PropertyItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ); + ~PropertyItem(); + + void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align ); + void paintBranches( QPainter * p, const QColorGroup & cg, + int w, int y, int h ); + void paintFocus( QPainter *p, const QColorGroup &cg, const QRect &r ); + + virtual bool hasSubItems() const; + virtual void createChildren(); + virtual void initChildren(); + + bool isOpen() const; + void setOpen( bool b ); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + QVariant value() const; + QString name() const; + virtual void notifyValueChange(); + + virtual void setChanged( bool b, bool updateDb = TRUE ); + bool isChanged() const; + + virtual void placeEditor( QWidget *w ); + + virtual PropertyItem *propertyParent() const; + virtual void childValueChanged( PropertyItem *child ); + + void addChild( PropertyItem *i ); + int childCount() const; + PropertyItem *child( int i ) const; + + virtual bool hasCustomContents() const; + virtual void drawCustomContents( QPainter *p, const QRect &r ); + + void updateBackColor(); + + void setup() { QListViewItem::setup(); setHeight( QListViewItem::height() + 2 ); } + + virtual QString currentItem() const; + virtual int currentIntItem() const; + virtual void setCurrentItem( const QString &s ); + virtual void setCurrentItem( int i ); + virtual int currentIntItemFromObject() const; + virtual QString currentItemFromObject() const; + + void setFocus( QWidget *w ); + + virtual void toggle(); + void setText( int col, const QString &txt ); + +protected: + PropertyList *listview; + QVariant val; + +private: + QColor backgroundColor(); + void createResetButton(); + void updateResetButtonState(); + +private: + bool open, changed; + PropertyItem *property; + QString propertyName; + QPtrList<PropertyItem> children; + QColor backColor; + QPushButton *resetButton; + +}; + +class PropertyTextItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyTextItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool comment, bool multiLine, bool ascii = FALSE, bool a = FALSE ); + ~PropertyTextItem(); + + virtual void createChildren(); + virtual void initChildren(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + virtual bool hasSubItems() const; + virtual void childValueChanged( PropertyItem *child ); + + virtual void setChanged( bool b, bool updateDb = TRUE ); + +private slots: + void setValue(); + void getText(); + +private: + QLineEdit *lined(); + QGuardedPtr<QLineEdit> lin; + QGuardedPtr<QHBox> box; + QPushButton *button; + bool withComment, hasMultiLines, asciiOnly, accel; + +}; + + +class PropertyBoolItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyBoolItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ); + ~PropertyBoolItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + virtual void toggle(); + +private slots: + void setValue(); + +private: + QComboBox *combo(); + QGuardedPtr<QComboBox> comb; + +}; + +class PropertyIntItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyIntItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool s ); + ~PropertyIntItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + +private slots: + void setValue(); + +private: + QSpinBox *spinBox(); + QGuardedPtr<QSpinBox> spinBx; + bool signedValue; + +}; + +class PropertyDoubleItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyDoubleItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName ); + ~PropertyDoubleItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + +private slots: + void setValue(); + +private: + QLineEdit *lined(); + QGuardedPtr<QLineEdit> lin; +}; + +class PropertyListItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyListItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool editable ); + ~PropertyListItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + + QString currentItem() const; + int currentIntItem() const; + void setCurrentItem( const QString &s ); + void setCurrentItem( int i ); + int currentIntItemFromObject() const; + QString currentItemFromObject() const; + void addItem( const QString &s ); + +private slots: + void setValue(); + +private: + QComboBox *combo(); + QGuardedPtr<QComboBox> comb; + int oldInt; + bool editable; + QString oldString; + +}; + +class PropertyFontItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyFontItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ); + ~PropertyFontItem(); + + virtual void createChildren(); + virtual void initChildren(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + virtual bool hasSubItems() const; + virtual void childValueChanged( PropertyItem *child ); + +private slots: + void getFont(); + +private: + QGuardedPtr<QLineEdit> lined; + QGuardedPtr<QPushButton> button; + QGuardedPtr<QHBox> box; + +}; + +class PropertyCoordItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + enum Type { Rect, Size, Point }; + + PropertyCoordItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, Type t ); + ~PropertyCoordItem(); + + virtual void createChildren(); + virtual void initChildren(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + virtual bool hasSubItems() const; + virtual void childValueChanged( PropertyItem *child ); + +private: + QLineEdit *lined(); + QGuardedPtr<QLineEdit> lin; + Type typ; + +}; + +class PropertyColorItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyColorItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool children ); + ~PropertyColorItem(); + + virtual void createChildren(); + virtual void initChildren(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + virtual bool hasSubItems() const; + virtual void childValueChanged( PropertyItem *child ); + + virtual bool hasCustomContents() const; + virtual void drawCustomContents( QPainter *p, const QRect &r ); + +private slots: + void getColor(); + +private: + QGuardedPtr<QHBox> box; + QGuardedPtr<QFrame> colorPrev; + QGuardedPtr<QPushButton> button; + bool withChildren; + +}; + +class PropertyPixmapItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyPixmapItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName, bool isIconSet = FALSE ); + ~PropertyPixmapItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + + virtual bool hasCustomContents() const; + virtual void drawCustomContents( QPainter *p, const QRect &r ); + +private slots: + void getPixmap(); + +private: + QGuardedPtr<QHBox> box; + QGuardedPtr<QLabel> pixPrev; + QPushButton *button; + bool iconSet; + +}; + + +class PropertySizePolicyItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertySizePolicyItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName ); + ~PropertySizePolicyItem(); + + virtual void createChildren(); + virtual void initChildren(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + virtual bool hasSubItems() const; + virtual void childValueChanged( PropertyItem *child ); + +private: + QLineEdit *lined(); + QGuardedPtr<QLineEdit> lin; + +}; + +class PropertyPaletteItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyPaletteItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName ); + ~PropertyPaletteItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + + virtual bool hasCustomContents() const; + virtual void drawCustomContents( QPainter *p, const QRect &r ); + +private slots: + void getPalette(); + +private: + QGuardedPtr<QHBox> box; + QGuardedPtr<QLabel> palettePrev; + QGuardedPtr<QPushButton> button; + +}; + +class PropertyCursorItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyCursorItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, + const QString &propName ); + ~PropertyCursorItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + +private slots: + void setValue(); + +private: + QComboBox *combo(); + QGuardedPtr<QComboBox> comb; + +}; + + +class PropertyDatabaseItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyDatabaseItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName, bool wField ); + ~PropertyDatabaseItem(); + + virtual void createChildren(); + virtual void initChildren(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + virtual bool hasSubItems() const; + virtual void childValueChanged( PropertyItem *child ); + +private: + QGuardedPtr<QLineEdit> lined; + QGuardedPtr<QPushButton> button; + QGuardedPtr<QHBox> box; + bool withField; + +}; + +class PropertyList : public QListView +{ + Q_OBJECT + +public: + PropertyList( PropertyEditor *e ); + + virtual void setupProperties(); + + virtual void setCurrentItem( QListViewItem *i ); + virtual void valueChanged( PropertyItem *i ); + virtual void refetchData(); + virtual void setPropertyValue( PropertyItem *i ); + virtual void setCurrentProperty( const QString &n ); + + PropertyEditor *propertyEditor() const; + QString whatsThisAt( const QPoint &p ); + void showCurrentWhatsThis(); + +public slots: + void updateEditorSize(); + void resetProperty(); + void toggleSort(); + +private slots: + void itemPressed( QListViewItem *i, const QPoint &p, int c ); + void toggleOpen( QListViewItem *i ); + bool eventFilter( QObject *o, QEvent *e ); + +protected: + void resizeEvent( QResizeEvent *e ); + void paintEmptyArea( QPainter *p, const QRect &r ); + bool addPropertyItem( PropertyItem *&item, const QCString &name, QVariant::Type t ); + + void viewportDragEnterEvent( QDragEnterEvent * ); + void viewportDragMoveEvent ( QDragMoveEvent * ); + void viewportDropEvent ( QDropEvent * ); + +protected: + PropertyEditor *editor; + +private: + void readPropertyDocs(); + QString whatsThisText( QListViewItem *i ); + +private: + PropertyListItem* pressItem; + QPoint pressPos; + bool mousePressed; + bool showSorted; + QMap<QString, QString> propertyDocs; + PropertyWhatsThis *whatsThis; + +}; + +class PropertyEditor : public QTabWidget +{ + Q_OBJECT + +public: + PropertyEditor( QWidget *parent ); + + QObject *widget() const; + + void clear(); + void setup(); + + void emitWidgetChanged(); + void refetchData(); + + void closed( FormWindow *w ); + + PropertyList *propertyList() const; + FormWindow *formWindow() const; +#ifndef KOMMANDER +// EventList *eventList() const; +#endif + + QString currentProperty() const; + QString classOfCurrentProperty() const; + QMetaObject* metaObjectOfCurrentProperty() const; + + void resetFocus(); + +signals: + void hidden(); + +public slots: + void setWidget( QObject *w, FormWindow *fw ); + +protected: + void closeEvent( QCloseEvent *e ); + +private: + QObject *wid; + PropertyList *listview; +#ifndef KOMMANDER + EventList *eList; +#endif + FormWindow *formwindow; + +}; + +class PropertyDateItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyDateItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ); + ~PropertyDateItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + +private slots: + void setValue(); + +private: + QDateEdit *lined(); + QGuardedPtr<QDateEdit> lin; + +}; + +class PropertyTimeItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyTimeItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ); + ~PropertyTimeItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + +private slots: + void setValue(); + +private: + QTimeEdit *lined(); + QGuardedPtr<QTimeEdit> lin; + +}; + +class PropertyDateTimeItem : public QObject, + public PropertyItem +{ + Q_OBJECT + +public: + PropertyDateTimeItem( PropertyList *l, PropertyItem *after, PropertyItem *prop, const QString &propName ); + ~PropertyDateTimeItem(); + + virtual void showEditor(); + virtual void hideEditor(); + + virtual void setValue( const QVariant &v ); + +private slots: + void setValue(); + +private: + QDateTimeEdit *lined(); + QGuardedPtr<QDateTimeEdit> lin; + +}; + +#endif diff --git a/kommander/editor/qcompletionedit.cpp b/kommander/editor/qcompletionedit.cpp new file mode 100644 index 00000000..bd4b876a --- /dev/null +++ b/kommander/editor/qcompletionedit.cpp @@ -0,0 +1,185 @@ +#include "qcompletionedit.h" +#include <qlistbox.h> +#include <qsizegrip.h> +#include <qapplication.h> +#include <qvbox.h> + +QCompletionEdit::QCompletionEdit( QWidget *parent, const char *name ) + : QLineEdit( parent, name ), aAdd( false ), caseSensitive( false ) +{ + popup = new QVBox( 0, 0, WType_Popup ); + popup->setFrameStyle( QFrame::Box | QFrame::Plain ); + popup->setLineWidth( 1 ); + popup->hide(); + + listbox = new QListBox( popup ); + listbox->setFrameStyle( QFrame::NoFrame ); + listbox->setLineWidth( 1 ); + listbox->installEventFilter( this ); + listbox->setHScrollBarMode( QScrollView::AlwaysOn ); + listbox->setVScrollBarMode( QScrollView::AlwaysOn ); + listbox->setCornerWidget( new QSizeGrip( listbox, "completion sizegrip" ) ); + connect( this, SIGNAL( textChanged( const QString & ) ), + this, SLOT( textDidChange( const QString & ) ) ); + popup->setFocusProxy( listbox ); + installEventFilter( this ); +} + +bool QCompletionEdit::autoAdd() const +{ + return aAdd; +} + +QStringList QCompletionEdit::completionList() const +{ + return compList; +} + +void QCompletionEdit::setCompletionList( const QStringList &l ) +{ + compList = l; +} + +void QCompletionEdit::setAutoAdd( bool add ) +{ + aAdd = add; +} + +void QCompletionEdit::textDidChange( const QString &text ) +{ + if ( text.isEmpty() ) { + popup->close(); + return; + } + updateListBox(); + placeListBox(); +} + +void QCompletionEdit::placeListBox() +{ + if ( listbox->count() == 0 ) { + popup->close(); + return; + } + + popup->resize( QMAX( listbox->sizeHint().width() + listbox->verticalScrollBar()->width() + 4, width() ), + listbox->sizeHint().height() + listbox->horizontalScrollBar()->height() + 4 ); + + QPoint p( mapToGlobal( QPoint( 0, 0 ) ) ); + if ( p.y() + height() + popup->height() <= QApplication::desktop()->height() ) + popup->move( p.x(), p.y() + height() ); + else + popup->move( p.x(), p.y() - listbox->height() ); + popup->show(); + listbox->setCurrentItem( 0 ); + listbox->setSelected( 0, true ); + setFocus(); +} + +void QCompletionEdit::updateListBox() +{ + listbox->clear(); + if ( compList.isEmpty() ) + return; + for ( QStringList::Iterator it = compList.begin(); it != compList.end(); ++it ) { + if ( caseSensitive && (*it).left( text().length() ) == text() || + !caseSensitive && (*it).left( text().length() ).lower() == text().lower() ) + listbox->insertItem( *it ); + } +} + +bool QCompletionEdit::eventFilter( QObject *o, QEvent *e ) +{ + if ( o == popup || o == listbox || o == listbox->viewport() ) { + if ( e->type() == QEvent::KeyPress ) { + QKeyEvent *ke = (QKeyEvent*)e; + if ( ke->key() == Key_Enter || ke->key() == Key_Return || ke->key() == Key_Tab ) { + if ( ke->key() == Key_Tab && listbox->count() > 1 && + listbox->currentItem() < (int)listbox->count() - 1 ) { + listbox->setCurrentItem( listbox->currentItem() + 1 ); + return true; + } + popup->close(); + setFocus(); + blockSignals( true ); + setText( listbox->currentText() ); + blockSignals( false ); + emit chosen( text() ); + return true; + } else if ( ke->key() == Key_Left || ke->key() == Key_Right || + ke->key() == Key_Up || ke->key() == Key_Down || + ke->key() == Key_Home || ke->key() == Key_End || + ke->key() == Key_Prior || ke->key() == Key_Next ) { + return false; + } else if ( ke->key() == Key_Escape ) { + popup->close(); + setFocus(); + } else if ( ke->key() != Key_Shift && ke->key() != Key_Control && + ke->key() != Key_Alt ) { + updateListBox(); + if ( listbox->count() == 0 || text().length() == 0 ) { + popup->close(); + setFocus(); + } + QApplication::sendEvent( this, e ); + return true; + } + } else if ( e->type() == QEvent::MouseButtonDblClick ) { + popup->close(); + setFocus(); + blockSignals( true ); + setText( listbox->currentText() ); + blockSignals( false ); + emit chosen( text() ); + return true; + } + } else if ( o == this ) { + if ( e->type() == QEvent::KeyPress ) { + QKeyEvent *ke = (QKeyEvent*)e; + if ( ke->key() == Key_Up || + ke->key() == Key_Down || + ke->key() == Key_Prior || + ke->key() == Key_Next || + ke->key() == Key_Return || + ke->key() == Key_Enter || + ke->key() == Key_Tab || + ke->key() == Key_Escape ) { + QApplication::sendEvent( listbox, e ); + return true; + } + } + } + return QLineEdit::eventFilter( o, e ); +} + +void QCompletionEdit::addCompletionEntry( const QString &entry ) +{ + if ( compList.find( entry ) == compList.end() ) { + compList << entry; + compList.sort(); + } +} + +void QCompletionEdit::removeCompletionEntry( const QString &entry ) +{ + QStringList::Iterator it = compList.find( entry ); + if ( it != compList.end() ) + compList.remove( it ); +} + +void QCompletionEdit::setCaseSensitive( bool b ) +{ + caseSensitive = b; +} + +bool QCompletionEdit::isCaseSensitive() const +{ + return caseSensitive; +} + +void QCompletionEdit::clear() +{ + QLineEdit::clear(); + compList.clear(); +} +#include "qcompletionedit.moc" diff --git a/kommander/editor/qcompletionedit.h b/kommander/editor/qcompletionedit.h new file mode 100644 index 00000000..fa7e8b23 --- /dev/null +++ b/kommander/editor/qcompletionedit.h @@ -0,0 +1,53 @@ +#ifndef QCOMPLETIONEDIT_H +#define QCOMPLETIONEDIT_H + +#include <qlineedit.h> +#include <qstringlist.h> + +class QListBox; +class QVBox; + +class QCompletionEdit : public QLineEdit +{ + Q_OBJECT + Q_PROPERTY( bool autoAdd READ autoAdd WRITE setAutoAdd ) + Q_PROPERTY( bool caseSensitive READ isCaseSensitive WRITE setCaseSensitive ) + +public: + QCompletionEdit( QWidget *parent = 0, const char *name = 0 ); + + bool autoAdd() const; + QStringList completionList() const; + bool eventFilter( QObject *o, QEvent *e ); + bool isCaseSensitive() const; + +public slots: + void setCompletionList( const QStringList &l ); + void setAutoAdd( bool add ); + void clear(); + void addCompletionEntry( const QString &entry ); + void removeCompletionEntry( const QString &entry ); + void setCaseSensitive( bool b ); + +signals: + void chosen( const QString &text ); + +private slots: + void textDidChange( const QString &text ); + +private: + void placeListBox(); + void updateListBox(); + +private: + bool aAdd; + QStringList compList; + QListBox *listbox; + QVBox *popup; + bool caseSensitive; + +}; + + + +#endif diff --git a/kommander/editor/resource.cpp b/kommander/editor/resource.cpp new file mode 100644 index 00000000..99fab90a --- /dev/null +++ b/kommander/editor/resource.cpp @@ -0,0 +1,2858 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qmenudata.h> +#include "resource.h" +#include "defs.h" +#include "metadatabase.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "qdom.h" +#include "widgetdatabase.h" +#include "widgetfactory.h" +#include "layout.h" +#include "domtool.h" +#include "command.h" +#include "pixmapchooser.h" +#ifndef QT_NO_SQL +#include "database.h" +#endif +#include "actiondnd.h" +#ifndef KOMMANDER +#include "project.h" +#include "pixmapcollection.h" +#endif +#include "formfile.h" + +#include <qfeatures.h> +#include <qfile.h> +#include <qtextstream.h> +#include <qobject.h> +#include <qwidget.h> +#include <qobjectlist.h> +#include <qmetaobject.h> +#include <qworkspace.h> +#include <qtabwidget.h> +#include <qapplication.h> +#include <qbuffer.h> +#include <qlayout.h> +#include <qtooltip.h> +#include <qwhatsthis.h> +#include <qlistbox.h> +#include <qcombobox.h> +#include <qwidgetstack.h> +#include <qtabbar.h> +#include <qheader.h> +#include <qlistview.h> +#include <qiconview.h> +#include <qlabel.h> +#include <qwizard.h> +#include <qtextcodec.h> +#include <qregexp.h> +#include <zlib.h> +#include <qdatetime.h> +#ifndef QT_NO_TABLE +#include <qtable.h> +#endif + +#include <klocale.h> + +static QString makeIndent( int indent ) +{ + QString s; + s.fill( ' ', indent * 4 ); + return s; +} + +static QString entitize( const QString &s, bool attribute = false ) +{ + QString s2 = s; + s2 = s2.replace( QRegExp( "&" ), "&" ); + s2 = s2.replace( QRegExp( ">" ), ">" ); + s2 = s2.replace( QRegExp( "<" ), "<" ); + if ( attribute ) { + s2 = s2.replace( QRegExp( "\"" ), """ ); + s2 = s2.replace( QRegExp( "'" ), "'" ); + } + return s2; +} + +static QString mkBool( bool b ) +{ + return b? "true" : "false"; +} + +/*! + \class Resource resource.h + \brief Class for saving/loading, etc. forms + + This class is used for saving and loading forms, code generation, + transferring data of widgets over the clipboard, etc.. + +*/ + + +Resource::Resource() +{ + mainwindow = 0; + formwindow = 0; + toplevel = 0; + copying = false; + pasting = false; + hadGeometry = false; +#ifndef KOMMANDER + langIface = 0; +#endif + hasFunctions = false; +} + +Resource::Resource( MainWindow* mw ) + : mainwindow( mw ) +{ + formwindow = 0; + toplevel = 0; + copying = false; + pasting = false; + hadGeometry = false; +#ifndef KOMMANDER + langIface = 0; +#endif + hasFunctions = false; +} + +Resource::~Resource() +{ +#ifndef KOMMANDER + if ( langIface ) + langIface->release(); +#endif +} + +void Resource::setWidget( FormWindow *w ) +{ + formwindow = w; + toplevel = w; +} + +QWidget *Resource::widget() const +{ + return toplevel; +} + +bool Resource::load( FormFile *ff ) +{ + if ( !ff || ff->absFileName().isEmpty() ) + return false; + currFileName = ff->absFileName(); + mainContainerSet = false; + + QFile f( ff->absFileName() ); + f.open( IO_ReadOnly ); + + bool b = load( ff, &f ); + f.close(); + + return b; +} + +bool Resource::load( FormFile *ff, QIODevice* dev ) +{ + QDomDocument doc; + QString errMsg; + int errLine; + QTextStream stream(dev); + QString content = stream.read(); + if (content.startsWith("#!")) + { + content = content.mid(content.find('\n')); + } + if ( !doc.setContent( content) ) { + // qDebug( QString("Parse error: ") + errMsg + QString(" in line %d"), errLine ); + return false; + } + + DomTool::fixDocument( doc ); + + toplevel = formwindow = new FormWindow( ff, mainwindow->qWorkspace(), 0 ); +#ifndef KOMMANDER + formwindow->setProject( MainWindow::self->currProject() ); +#endif + formwindow->setMainWindow( mainwindow ); + MetaDataBase::addEntry( formwindow ); + +#ifndef KOMMANDER + if (!langIface) { + langIface = MetaDataBase::languageInterface( mainwindow->currProject()->language() ); + if ( langIface ) + langIface->addRef(); + } +#endif + + QDomElement e = doc.firstChild().toElement().firstChild().toElement(); + + QDomElement forwards = e; + while ( forwards.tagName() != "forwards" && !forwards.isNull() ) + forwards = forwards.nextSibling().toElement(); + + QDomElement includes = e; + while ( includes.tagName() != "includes" && !includes.isNull() ) + includes = includes.nextSibling().toElement(); + + QDomElement variables = e; + while ( variables.tagName() != "variables" && !variables.isNull() ) + variables = variables.nextSibling().toElement(); + + QDomElement eltSignals = e; + while ( eltSignals.tagName() != "signals" && !eltSignals.isNull() ) + eltSignals = eltSignals.nextSibling().toElement(); + + QDomElement eltSlots = e; + while ( eltSlots.tagName() != "slots" && !eltSlots.isNull() ) + eltSlots = eltSlots.nextSibling().toElement(); + + QDomElement connections = e; + while ( connections.tagName() != "connections" && !connections.isNull() ) + connections = connections.nextSibling().toElement(); + + QDomElement imageCollection = e; + images.clear(); + while ( imageCollection.tagName() != "images" && !imageCollection.isNull() ) + imageCollection = imageCollection.nextSibling().toElement(); + + QDomElement customWidgets = e; + while ( customWidgets.tagName() != "customwidgets" && !customWidgets.isNull() ) + customWidgets = customWidgets.nextSibling().toElement(); + + QDomElement tabOrder = e; + while ( tabOrder.tagName() != "tabstops" && !tabOrder.isNull() ) + tabOrder = tabOrder.nextSibling().toElement(); + + QDomElement actions = e; + while ( actions.tagName() != "actions" && !actions.isNull() ) + actions = actions.nextSibling().toElement(); + + QDomElement toolbars = e; + while ( toolbars.tagName() != "toolbars" && !toolbars.isNull() ) + toolbars = toolbars.nextSibling().toElement(); + + QDomElement menubar = e; + while ( menubar.tagName() != "menubar" && !menubar.isNull() ) + menubar = menubar.nextSibling().toElement(); + + QDomElement functions = e; + while ( functions.tagName() != "functions" && !functions.isNull() ) + functions = functions.nextSibling().toElement(); + + + QDomElement widget; + while ( !e.isNull() ) { + if ( e.tagName() == "widget" ) { + widget = e; + } else if ( e.tagName() == "include" ) { // compatibility with 2.x + MetaDataBase::Include inc; + inc.location = "global"; + if ( e.attribute( "location" ) == "local" ) + inc.location = "local"; + inc.implDecl = "in declaration"; + if ( e.attribute( "impldecl" ) == "in implementation" ) + inc.implDecl = "in implementation"; + inc.header = e.firstChild().toText().data(); + if ( inc.header.right( 5 ) != ".ui.h" ) + metaIncludes.append( inc ); + } else if ( e.tagName() == "comment" ) { + metaInfo.comment = e.firstChild().toText().data(); + } else if ( e.tagName() == "forward" ) { // compatibility with old betas + metaForwards << e.firstChild().toText().data(); + } else if ( e.tagName() == "variable" ) { // compatibility with old betas + metaVariables << e.firstChild().toText().data(); + } else if ( e.tagName() == "author" ) { + metaInfo.author = e.firstChild().toText().data(); + } else if ( e.tagName() == "version" ) { + metaInfo.version = e.firstChild().toText().data(); + } else if ( e.tagName() == "license" ) { + metaInfo.license = e.firstChild().toText().data(); + } else if ( e.tagName() == "exportmacro" ) { + exportMacro = e.firstChild().toText().data(); + } else if ( e.tagName() == "layoutdefaults" ) { + formwindow->setLayoutDefaultSpacing( e.attribute( "spacing", QString::number( formwindow->layoutDefaultSpacing() ) ).toInt() ); + formwindow->setLayoutDefaultMargin( e.attribute( "margin", QString::number( formwindow->layoutDefaultMargin() ) ).toInt() ); + } + + e = e.nextSibling().toElement(); + } + + if ( !imageCollection.isNull() ) + loadImageCollection( imageCollection ); + if ( !customWidgets.isNull() ) + loadCustomWidgets( customWidgets, this ); + +#if defined (QT_NON_COMMERCIAL) + bool previewMode = MainWindow::self->isPreviewing(); + QWidget *w = (QWidget*)createObject( widget, !previewMode ? (QWidget*)formwindow : MainWindow::self); + if ( !w ) + return false; + if ( previewMode ) + w->reparent( MainWindow::self, Qt::WType_TopLevel, w->pos(), true ); +#else + if ( !createObject( widget, formwindow) ) + return false; +#endif + + if ( !forwards.isNull() ) { + for ( QDomElement n = forwards.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) + if ( n.tagName() == "forward" ) + metaForwards << n.firstChild().toText().data(); + } + + if ( !includes.isNull() ) { + for ( QDomElement n = includes.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) + if ( n.tagName() == "include" ) { + if ( n.tagName() == "include" ) { + MetaDataBase::Include inc; + inc.location = "global"; + if ( n.attribute( "location" ) == "local" ) + inc.location = "local"; + inc.implDecl = "in declaration"; + if ( n.attribute( "impldecl" ) == "in implementation" ) + inc.implDecl = "in implementation"; + inc.header = n.firstChild().toText().data(); + if ( inc.header.right( 5 ) != ".ui.h" ) + metaIncludes.append( inc ); + } + } + } + + if ( !variables.isNull() ) { + for ( QDomElement n = variables.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) + if ( n.tagName() == "variable" ) + metaVariables << n.firstChild().toText().data(); + } + if ( !eltSignals.isNull() ) { + for ( QDomElement n = eltSignals.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) + if ( n.tagName() == "signal" ) + metaSignals << n.firstChild().toText().data(); + } + if ( !eltSlots.isNull() ) { + for ( QDomElement n = eltSlots.firstChild().toElement(); !n.isNull(); n = n.nextSibling().toElement() ) + if ( n.tagName() == "slot" ) { + MetaDataBase::Slot slot; + slot.specifier = n.attribute( "specifier", "virtual" ); + if ( slot.specifier.isEmpty() ) + slot.specifier = "virtual"; + slot.access = n.attribute( "access", "public" ); + if ( slot.access.isEmpty() ) + slot.access = "public"; + slot.language = n.attribute( "language", "C++" ); + slot.returnType = n.attribute( "returnType", "void" ); + if ( slot.returnType.isEmpty() ) + slot.returnType = "void"; + slot.slot = n.firstChild().toText().data(); + if ( !MetaDataBase::hasSlot( formwindow, slot.slot, true ) ) + MetaDataBase::addSlot( formwindow, slot.slot, slot.specifier, + slot.access, slot.language, slot.returnType ); + else + MetaDataBase::changeSlotAttributes( formwindow, slot.slot, + slot.specifier, slot.access, + slot.language, slot.returnType ); + } + } + if ( !actions.isNull() ) + loadActions( actions ); + if ( !toolbars.isNull() ) + loadToolBars( toolbars ); + if ( !menubar.isNull() ) + loadMenuBar( menubar ); + + if ( !connections.isNull() ) + loadConnections( connections ); + if ( !tabOrder.isNull() ) + loadTabOrder( tabOrder ); + + if ( formwindow ) { + MetaDataBase::setIncludes( formwindow, metaIncludes ); + MetaDataBase::setForwards( formwindow, metaForwards ); + MetaDataBase::setSignalList( formwindow, metaSignals ); + MetaDataBase::setMetaInfo( formwindow, metaInfo ); + MetaDataBase::setExportMacro( formwindow->mainContainer(), exportMacro ); + } + + + if ( mainwindow && formwindow ) + { + mainwindow->insertFormWindow( formwindow ); + } + + if ( formwindow ) { + formwindow->killAccels( formwindow ); + if ( formwindow->layout() ) + formwindow->layout()->activate(); + if ( hadGeometry ) + formwindow->resize( formwindow->size().expandedTo( formwindow->minimumSize(). + expandedTo( formwindow->minimumSizeHint() ) ) ); + else + formwindow->resize( formwindow->size().expandedTo( formwindow->sizeHint() ) ); + } + + return true; +} + +bool Resource::save( const QString& filename, bool formCodeOnly ) +{ + if ( !formwindow || filename.isEmpty() ) + return false; + currFileName = filename; + + QFile f( filename ); + if ( !f.open( IO_WriteOnly | IO_Translate ) ) + return false; + bool b = save( &f ); + f.close(); + return b; +} + +bool Resource::save( QIODevice* dev ) +{ + if ( !formwindow ) + return false; + + + QTextStream ts( dev ); + ts.setCodec( QTextCodec::codecForName( "UTF-8" ) ); + if ( formwindow->mainContainer()->property("useShebang").toBool() ) + ts << formwindow->mainContainer()->property("shebang").toString() << endl; + ts << "<!DOCTYPE UI><UI version=\"3.0\" stdsetdef=\"1\">" << endl; + saveMetaInfoBefore( ts, 0 ); + saveObject( formwindow->mainContainer(), 0, ts, 0 ); + if ( formwindow->mainContainer()->inherits( "QMainWindow" ) ) { + saveMenuBar( (QMainWindow*)formwindow->mainContainer(), ts, 0 ); + saveToolBars( (QMainWindow*)formwindow->mainContainer(), ts, 0 ); + } + if ( !MetaDataBase::customWidgets()->isEmpty() && !usedCustomWidgets.isEmpty() ) + saveCustomWidgets( ts, 0 ); + if ( formwindow->mainContainer()->inherits( "QMainWindow" ) ) + saveActions( formwindow->actionList(), ts, 0 ); + if ( !images.isEmpty() ) + saveImageCollection( ts, 0 ); + if ( !MetaDataBase::connections( formwindow ).isEmpty() || !MetaDataBase::slotList( formwindow ).isEmpty() ) + saveConnections( ts, 0 ); + saveTabOrder( ts, 0 ); + saveMetaInfoAfter( ts, 0 ); + ts << "</UI>" << endl; + images.clear(); + + return true; +} + +QString Resource::copy() +{ + if ( !formwindow ) + return QString::null; + + copying = true; + QString s; + QTextOStream ts( &s ); + + ts << "<!DOCTYPE UI-SELECTION><UI-SELECTION>" << endl; + QWidgetList widgets = formwindow->selectedWidgets(); + QWidgetList tmp( widgets ); + for ( QWidget *w = widgets.first(); w; w = widgets.next() ) { + QWidget *p = w->parentWidget(); + bool save = true; + while ( p ) { + if ( tmp.findRef( p ) != -1 ) { + save = false; + break; + } + p = p->parentWidget(); + } + if ( save ) + saveObject( w, 0, ts, 0 ); + } + if ( !MetaDataBase::customWidgets()->isEmpty() && !usedCustomWidgets.isEmpty() ) + saveCustomWidgets( ts, 0 ); + if ( !images.isEmpty() ) + saveImageCollection( ts, 0 ); + ts << "</UI-SELECTION>" << endl; + + return s; +} + + +void Resource::paste( const QString &cb, QWidget *parent ) +{ + if ( !formwindow ) + return; + mainContainerSet = true; + + pasting = true; + QBuffer buf( QCString( cb.utf8() ) ); + buf.open( IO_ReadOnly ); + QDomDocument doc; + QString errMsg; + int errLine; + if ( !doc.setContent( &buf, &errMsg, &errLine ) ) { + // qDebug( QString("Parse error: ") + errMsg + QString(" in line %d"), errLine ); + } + + QDomElement firstWidget = doc.firstChild().toElement().firstChild().toElement(); + + QDomElement imageCollection = firstWidget; + images.clear(); + while ( imageCollection.tagName() != "images" && !imageCollection.isNull() ) + imageCollection = imageCollection.nextSibling().toElement(); + + QDomElement customWidgets = firstWidget; + while ( customWidgets.tagName() != "customwidgets" && !customWidgets.isNull() ) + customWidgets = customWidgets.nextSibling().toElement(); + + if ( !imageCollection.isNull() ) + loadImageCollection( imageCollection ); + if ( !customWidgets.isNull() ) + loadCustomWidgets( customWidgets, this ); + + QWidgetList widgets; + formwindow->clearSelection( false ); + formwindow->setPropertyShowingBlocked( true ); + formwindow->clearSelection( false ); + while ( !firstWidget.isNull() ) { + if ( firstWidget.tagName() == "widget" ) { + QWidget *w = (QWidget*)createObject( firstWidget, parent, 0 ); + if ( !w ) + continue; + widgets.append( w ); + int x = w->x() + formwindow->grid().x(); + int y = w->y() + formwindow->grid().y(); + if ( w->x() + w->width() > parent->width() ) + x = QMAX( 0, parent->width() - w->width() ); + if ( w->y() + w->height() > parent->height() ) + y = QMAX( 0, parent->height() - w->height() ); + if ( x != w->x() || y != w->y() ) + w->move( x, y ); + formwindow->selectWidget( w ); + } else if ( firstWidget.tagName() == "spacer" ) { + QWidget *w = createSpacer( firstWidget, parent, 0, firstWidget.tagName() == "vspacer" ? Qt::Vertical : Qt::Horizontal ); + if ( !w ) + continue; + widgets.append( w ); + int x = w->x() + formwindow->grid().x(); + int y = w->y() + formwindow->grid().y(); + if ( w->x() + w->width() > parent->width() ) + x = QMAX( 0, parent->width() - w->width() ); + if ( w->y() + w->height() > parent->height() ) + y = QMAX( 0, parent->height() - w->height() ); + if ( x != w->x() || y != w->y() ) + w->move( x, y ); + formwindow->selectWidget( w ); + } + firstWidget = firstWidget.nextSibling().toElement(); + } + formwindow->setPropertyShowingBlocked( false ); + formwindow->emitShowProperties(); + buf.close(); + + PasteCommand *cmd = new PasteCommand( i18n("Paste" ), formwindow, widgets ); + formwindow->commandHistory()->addCommand( cmd ); +} + +void Resource::saveObject( QObject *obj, QDesignerGridLayout* grid, QTextStream &ts, int indent ) +{ + if ( obj && obj->isWidgetType() && ( (QWidget*)obj )->isHidden() && !(obj->isA("ScriptObject")) ) + return; + QString closeTag; + if ( obj->isWidgetType() ) { + const char* className = WidgetFactory::classNameOf( obj ); + if ( obj->isA( "CustomWidget" ) ) + usedCustomWidgets << QString( className ); + if ( obj != formwindow && !formwindow->widgets()->find( (QWidget*)obj ) ) + return; // we don't know anything about this thing + + QString attributes; + if ( grid ) { + QDesignerGridLayout::Item item = grid->items[ (QWidget*)obj ]; + attributes += QString(" row=\"") + QString::number(item.row) + "\""; + attributes += QString(" column=\"") + QString::number(item.column) + "\""; + if ( item.rowspan * item.colspan != 1 ) { + attributes += QString(" rowspan=\"") + QString::number(item.rowspan) + "\""; + attributes += QString(" colspan=\"") + QString::number(item.colspan) + "\""; + } + } + + if ( qstrcmp( className, "Spacer" ) == 0 ) { + closeTag = makeIndent( indent ) + "</spacer>\n"; + ts << makeIndent( indent ) << "<spacer" << attributes << ">" << endl; + ++indent; + } else { + closeTag = makeIndent( indent ) + "</widget>\n"; + if ( qstrcmp( className, "KmdrMainWindow" ) == 0 ) { + ts << makeIndent( indent ) << "<widget class=\"QMainWindow\"" << attributes << ">" << endl; + } else { + ts << makeIndent( indent ) << "<widget class=\"" << className << "\"" << attributes << ">" << endl; + } + ++indent; + } + if ( WidgetFactory::hasItems( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( obj ) ) ) ) + saveItems( obj, ts, indent ); + saveObjectProperties( obj, ts, indent ); + } else { + // test for other objects we created. Nothing so far. + return; + } + + if ( obj->inherits( "QTabWidget" ) ) { + QTabWidget* tw = (QTabWidget*) obj; + QObjectList* tmpl = tw->queryList( "QWidgetStack" ); + QWidgetStack *ws = (QWidgetStack*)tmpl->first(); + QTabBar *tb = ( (QDesignerTabWidget*)obj )->tabBar(); + for ( int i = 0; i < tb->count(); ++i ) { + QTab *t = tb->tabAt( i ); + if ( !t ) + continue; + QWidget *w = ws->widget( t->identifier() ); + if ( !w ) + continue; + if ( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( w ) ) == -1 ) + continue; // we don't know this widget + ts << makeIndent( indent ) << "<widget class=\"QWidget\">" << endl; + ++indent; + ts << makeIndent( indent ) << "<property name=\"name\">" << endl; + indent++; + ts << makeIndent( indent ) << "<cstring>" << entitize( w->name() ) << "</cstring>" << endl; + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + + ts << makeIndent( indent ) << "<attribute name=\"title\">" << endl; + indent++; + ts << makeIndent( indent ) << "<string>" << entitize( t->text() ) << "</string>" << endl; + indent--; + ts << makeIndent( indent ) << "</attribute>" << endl; + saveChildrenOf( w, ts, indent ); + --indent; + ts << makeIndent( indent ) << "</widget>" << endl; + } + delete tmpl; + } else + if ( ::qt_cast<QToolBox*>(obj) ) { + QToolBox* tb = (QToolBox*)obj; + for ( int i = 0; i < tb->count(); ++i ) { + QWidget *w = tb->item( i ); + if ( !w ) + continue; + if ( WidgetDatabase::idFromClassName(WidgetFactory::classNameOf(w)) == -1 ) + continue; // we don't know this widget + ts << makeIndent( indent ) << "<widget class=\"QWidget\">" << endl; + ++indent; + ts << makeIndent( indent ) << "<property name=\"name\">" << endl; + indent++; + ts << makeIndent( indent ) << "<cstring>" << entitize( w->name() ) << "</cstring>" << endl; + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + ts << makeIndent( indent ) << "<property name=\"backgroundMode\">" << endl; + indent++; + saveEnumProperty( w, "backgroundMode", QVariant::Invalid, ts, indent ); + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + ts << makeIndent( indent ) << "<attribute name=\"label\">" << endl; + indent++; + ts << makeIndent( indent ) << "<string>" << entitize( tb->itemLabel( tb->indexOf(w) ) ) << "</string>" << endl; + indent--; + ts << makeIndent( indent ) << "</attribute>" << endl; + saveChildrenOf( w, ts, indent ); + --indent; + ts << makeIndent( indent ) << "</widget>" << endl; + } + } + else if ( obj->inherits( "QWizard" ) ) { + QWizard* wiz = (QWizard*)obj; for ( int i = 0; i < wiz->pageCount(); ++i ) { + QWidget *w = wiz->page( i ); + if ( !w ) + continue; + if ( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( w ) ) == -1 ) + continue; // we don't know this widget + ts << makeIndent( indent ) << "<widget class=\"QWidget\">" << endl; + ++indent; + ts << makeIndent( indent ) << "<property name=\"name\">" << endl; + indent++; + ts << makeIndent( indent ) << "<cstring>" << entitize( w->name() ) << "</cstring>" << endl; + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + + ts << makeIndent( indent ) << "<attribute name=\"title\">" << endl; + indent++; + ts << makeIndent( indent ) << "<string>" << entitize( wiz->title( w ) ) << "</string>" << endl; + indent--; + ts << makeIndent( indent ) << "</attribute>" << endl; + saveChildrenOf( w, ts, indent ); + --indent; + ts << makeIndent( indent ) << "</widget>" << endl; + } + } else if ( obj->inherits( "QMainWindow" ) ) { + saveChildrenOf( ( (QMainWindow*)obj )->centralWidget(), ts, indent ); + } else { + saveChildrenOf( obj, ts, indent ); + } + + indent--; + ts << closeTag; +} + +void Resource::saveItems( QObject *obj, QTextStream &ts, int indent ) +{ + if ( obj->inherits( "QListBox" ) || obj->inherits( "QComboBox" ) ) { + QListBox *lb = 0; + if ( obj->inherits( "QListBox" ) ) + lb = (QListBox*)obj; + else + lb = ( (QComboBox*)obj )->listBox(); + + QListBoxItem *i = lb->firstItem(); + for ( ; i; i = i->next() ) { + ts << makeIndent( indent ) << "<item>" << endl; + indent++; + QStringList text; + text << i->text(); + QPtrList<QPixmap> pixmaps; + if ( i->pixmap() ) + pixmaps.append( i->pixmap() ); + saveItem( text, pixmaps, ts, indent ); + indent--; + ts << makeIndent( indent ) << "</item>" << endl; + } + } else if ( obj->inherits( "QIconView" ) ) { + QIconView *iv = (QIconView*)obj; + + QIconViewItem *i = iv->firstItem(); + for ( ; i; i = i->nextItem() ) { + ts << makeIndent( indent ) << "<item>" << endl; + indent++; + QStringList text; + text << i->text(); + QPtrList<QPixmap> pixmaps; + if ( i->pixmap() ) + pixmaps.append( i->pixmap() ); + saveItem( text, pixmaps, ts, indent ); + indent--; + ts << makeIndent( indent ) << "</item>" << endl; + } + } else if ( obj->inherits( "QListView" ) ) { + QListView *lv = (QListView*)obj; + int i; + for ( i = 0; i < lv->header()->count(); ++i ) { + ts << makeIndent( indent ) << "<column>" << endl; + indent++; + QStringList l; + l << lv->header()->label( i ); + QPtrList<QPixmap> pix; + pix.setAutoDelete( true ); + if ( lv->header()->iconSet( i ) ) + pix.append( new QPixmap( lv->header()->iconSet( i )->pixmap() ) ); + saveItem( l, pix, ts, indent ); + ts << makeIndent( indent ) << "<property name=\"clickable\">" << endl; + indent++; + ts << makeIndent( indent ) << "<bool>" << mkBool( lv->header()->isClickEnabled( i ) )<< "</bool>" << endl; + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + ts << makeIndent( indent ) << "<property name=\"resizeable\">" << endl; + indent++; + ts << makeIndent( indent ) << "<bool>" << mkBool( lv->header()->isResizeEnabled( i ) ) << "</bool>" << endl; + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + indent--; + ts << makeIndent( indent ) << "</column>" << endl; + } + saveItem( lv->firstChild(), ts, indent - 1 ); + } +#ifndef QT_NO_TABLE + else if ( obj->inherits( "QTable" ) ) { + QTable *table = (QTable*)obj; + int i; + QMap<QString, QString> columnFields = MetaDataBase::columnFields( table ); + bool isDataTable = table->inherits( "QDataTable" ); + for ( i = 0; i < table->horizontalHeader()->count(); ++i ) { + if ( !table->horizontalHeader()->label( i ).isNull() && + table->horizontalHeader()->label( i ).toInt() != i + 1 || + table->horizontalHeader()->iconSet( i ) || + isDataTable ) { + ts << makeIndent( indent ) << "<column>" << endl; + indent++; + QStringList l; + l << table->horizontalHeader()->label( i ); + QPtrList<QPixmap> pix; + pix.setAutoDelete( true ); + if ( table->horizontalHeader()->iconSet( i ) ) + pix.append( new QPixmap( table->horizontalHeader()->iconSet( i )->pixmap() ) ); + saveItem( l, pix, ts, indent ); + if ( table->inherits( "QDataTable" ) && !columnFields.isEmpty() ) { + ts << makeIndent( indent ) << "<property name=\"field\">" << endl; + indent++; + ts << makeIndent( indent ) << "<string>" << entitize( *columnFields.find( l[ 0 ] ) ) << "</string>" << endl; + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + } + indent--; + ts << makeIndent( indent ) << "</column>" << endl; + } + } + for ( i = 0; i < table->verticalHeader()->count(); ++i ) { + if ( !table->verticalHeader()->label( i ).isNull() && + table->verticalHeader()->label( i ).toInt() != i + 1 || + table->verticalHeader()->iconSet( i ) ) { + ts << makeIndent( indent ) << "<row>" << endl; + indent++; + QStringList l; + l << table->verticalHeader()->label( i ); + QPtrList<QPixmap> pix; + pix.setAutoDelete( true ); + if ( table->verticalHeader()->iconSet( i ) ) + pix.append( new QPixmap( table->verticalHeader()->iconSet( i )->pixmap() ) ); + saveItem( l, pix, ts, indent ); + indent--; + ts << makeIndent( indent ) << "</row>" << endl; + } + } + } +#endif +} + +void Resource::saveItem( QListViewItem *i, QTextStream &ts, int indent ) +{ + QListView *lv = i->listView(); + while ( i ) { + ts << makeIndent( indent ) << "<item>" << endl; + indent++; + + QPtrList<QPixmap> pixmaps; + QStringList textes; + for ( int c = 0; c < lv->columns(); ++c ) { + pixmaps.append( i->pixmap( c ) ); + textes << i->text( c ); + } + saveItem( textes, pixmaps, ts, indent ); + + if ( i->firstChild() ) + saveItem( i->firstChild(), ts, indent ); + + indent--; + ts << makeIndent( indent ) << "</item>" << endl; + i = i->nextSibling(); + } +} + +void Resource::savePixmap( const QPixmap &p, QTextStream &ts, int indent, const QString &tagname ) +{ + if ( p.isNull() ) { + ts << makeIndent( indent ) << "<" + tagname + "></" + tagname + ">" << endl; + return; + } + + if ( formwindow && formwindow->savePixmapInline() ) + ts << makeIndent( indent ) << "<" + tagname + ">" << saveInCollection( p ) << "</" + tagname + ">" << endl; +#ifndef KOMMANDER + else if ( formwindow && formwindow->savePixmapInProject() ) + ts << makeIndent( indent ) << "<" + tagname + ">" << MetaDataBase::pixmapKey( formwindow, p.serialNumber() ) + << "</" + tagname + ">" << endl; +#endif + else + ts << makeIndent( indent ) << "<" + tagname + ">" << MetaDataBase::pixmapArgument( formwindow, p.serialNumber() ) + << "</" + tagname + ">" << endl; +} + +QPixmap Resource::loadPixmap( const QDomElement &e, const QString &/*tagname*/ ) +{ + QString arg = e.firstChild().toText().data(); + + if ( formwindow && formwindow->savePixmapInline() ) { + QImage img = loadFromCollection( arg ); + QPixmap pix; + pix.convertFromImage( img ); + MetaDataBase::setPixmapArgument( formwindow, pix.serialNumber(), arg ); + return pix; + } +#ifndef KOMMANDER + else if ( formwindow && formwindow->savePixmapInProject() ) { + QPixmap pix; + if ( mainwindow && mainwindow->currProject() ) + pix = mainwindow->currProject()->pixmapCollection()->pixmap( arg ); + } +#endif + else + { + QPixmap pix; + pix = PixmapChooser::loadPixmap( "image.xpm" ); + MetaDataBase::setPixmapKey( formwindow, pix.serialNumber(), arg ); + return pix; + } + QPixmap pix = PixmapChooser::loadPixmap( "image.xpm" ); + MetaDataBase::setPixmapArgument( formwindow, pix.serialNumber(), arg ); + return pix; +} + +void Resource::saveItem( const QStringList &text, const QPtrList<QPixmap> &pixmaps, QTextStream &ts, int indent ) +{ + QStringList::ConstIterator it = text.begin(); + for ( ; it != text.end(); ++it ) { + ts << makeIndent( indent ) << "<property name=\"text\">" << endl; + indent++; + ts << makeIndent( indent ) << "<string>" << entitize( *it ) << "</string>" << endl; + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + } + + for ( int i = 0; i < (int)pixmaps.count(); ++i ) { + QPixmap *p = ( (QPtrList<QPixmap>)pixmaps ).at( i ); + ts << makeIndent( indent ) << "<property name=\"pixmap\">" << endl; + indent++; + if ( p ) + savePixmap( *p, ts, indent ); + else + savePixmap( QPixmap(), ts, indent ); + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + } +} + +void Resource::saveChildrenOf( QObject* obj, QTextStream &ts, int indent ) +{ + const QObjectList *l = obj->children(); + if ( !l ) + return; // no children to save + + QString closeTag; + // if the widget has a layout we pretend that all widget's childs are childs of the layout - makes the structure nicer + QLayout *layout = 0; + QDesignerGridLayout* grid = 0; + if ( !obj->inherits( "QSplitter" ) && + WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( obj ) ) ) && + obj->isWidgetType() && + WidgetFactory::layoutType( (QWidget*)obj, layout ) != WidgetFactory::NoLayout ) { + WidgetFactory::LayoutType lay = WidgetFactory::layoutType( (QWidget*)obj, layout ); + switch ( lay ) { + case WidgetFactory::HBox: + closeTag = makeIndent( indent ) + "</hbox>"; + ts << makeIndent( indent ) << "<hbox>" << endl; + ++indent; + break; + case WidgetFactory::VBox: + closeTag = makeIndent( indent ) + "</vbox>"; + ts << makeIndent( indent ) << "<vbox>" << endl; + ++indent; + break; + case WidgetFactory::Grid: + closeTag = makeIndent( indent ) + "</grid>"; + ts << makeIndent( indent ) << "<grid>" << endl; + ++indent; + grid = (QDesignerGridLayout*) layout; + break; + default: + break; + } + + // save properties of layout + if ( lay != WidgetFactory::NoLayout ) + saveObjectProperties( layout, ts, indent ); + + } + + for ( QPtrListIterator<QObject> it ( *l ); it.current(); ++it ) + saveObject( it.current(), grid, ts, indent ); + if ( !closeTag.isEmpty() ) { + indent--; + ts << closeTag << endl; + } +} + +void Resource::saveObjectProperties( QObject *w, QTextStream &ts, int indent ) +{ + QStringList saved; + QStringList changed; + changed = MetaDataBase::changedProperties( w ); + if ( w->isWidgetType() ) { + if ( w->inherits( "Spacer" ) ) { + if ( !changed.contains( "sizeHint" ) ) + changed << "sizeHint"; + if ( !changed.contains( "geometry" ) ) + changed << "geometry"; + } + } else if ( w->inherits( "QLayout" ) ) { // #### should be cleaner (RS) + changed << "margin" << "spacing"; + } + + if ( w == formwindow->mainContainer() ) { + if ( changed.findIndex( "geometry" ) == -1 ) + changed << "geometry"; + if ( changed.findIndex( "caption" ) == -1 ) + changed << "caption"; + } + + if ( changed.isEmpty() ) + return; + + bool inLayout = w != formwindow->mainContainer() && !copying && w->isWidgetType() && ( (QWidget*)w )->parentWidget() && + WidgetFactory::layoutType( ( (QWidget*)w )->parentWidget() ) != WidgetFactory::NoLayout; + + QStrList lst = w->metaObject()->propertyNames( !w->inherits( "Spacer" ) ); + for ( QPtrListIterator<char> it( lst ); it.current(); ++it ) { + if ( changed.find( QString::fromLatin1( it.current() ) ) == changed.end() ) + continue; + if ( saved.find( QString::fromLatin1( it.current() ) ) != saved.end() ) + continue; + saved << QString::fromLatin1( it.current() ); + const QMetaProperty* p = w->metaObject()-> + property( w->metaObject()->findProperty( it.current(), true ), true ); + if ( !p || !p->stored( w ) || ( inLayout && qstrcmp( p->name(), "geometry" ) == 0 ) ) + continue; + if ( w->inherits( "QLabel" ) && qstrcmp( p->name(), "pixmap" ) == 0 && + ( !( (QLabel*)w )->pixmap() || ( (QLabel*)w )->pixmap()->isNull() ) ) + continue; + if ( w->inherits( "QDesignerMenuBar" ) && + ( qstrcmp( p->name(), "itemName" ) == 0 || qstrcmp( p->name(), "itemNumber" ) == 0 || + qstrcmp( p->name(), "itemText" ) == 0 ) ) + continue; + if ( qstrcmp( p->name(), "name" ) == 0 ) + knownNames << w->property( "name" ).toString(); + ts << makeIndent( indent ) << "<property"; + ts << " name=\"" << it.current() << "\""; + if ( !p->stdSet() ) + ts << " stdset=\"0\""; + ts << ">" << endl; + indent++; + if ( p->isSetType() ) { + saveSetProperty( w, it.current(), QVariant::nameToType( p->type() ), ts, indent ); + } else if ( p->isEnumType() ) { + saveEnumProperty( w, it.current(), QVariant::nameToType( p->type() ), ts, indent ); + } else { + saveProperty( w, it.current(), w->property( p->name() ), QVariant::nameToType( p->type() ), ts, indent ); + } + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + } + + if ( w->isWidgetType() && MetaDataBase::fakeProperties( w ) ) { + QMap<QString, QVariant>* fakeProperties = MetaDataBase::fakeProperties( w ); + for ( QMap<QString, QVariant>::Iterator fake = fakeProperties->begin(); + fake != fakeProperties->end(); ++fake ) { + if ( MetaDataBase::isPropertyChanged( w, fake.key() ) ) { + if ( w->inherits( "CustomWidget" ) ) { + MetaDataBase::CustomWidget *cw = ( (CustomWidget*)w )->customWidget(); + if ( cw && !cw->hasProperty( fake.key().latin1() ) && fake.key() != "toolTip" && fake.key() != "whatsThis" ) + continue; + } + + ts << makeIndent( indent ) << "<property name=\"" << fake.key() << "\" stdset=\"0\">" << endl; + indent++; + saveProperty( w, fake.key(), *fake, (*fake).type(), ts, indent ); + indent--; + ts << makeIndent( indent ) << "</property>" << endl; + } + } + } +} + +void Resource::saveSetProperty( QObject *w, const QString &name, QVariant::Type, QTextStream &ts, int indent ) +{ + const QMetaProperty *p = w->metaObject()->property( w->metaObject()->findProperty( name, true ), true ); + QStrList l( p->valueToKeys( w->property( name ).toInt() ) ); + QString v; + for ( uint i = 0; i < l.count(); ++i ) { + v += l.at( i ); + if ( i < l.count() - 1 ) + v += "|"; + } + ts << makeIndent( indent ) << "<set>" << v << "</set>" << endl; +} + +void Resource::saveEnumProperty( QObject *w, const QString &name, QVariant::Type, QTextStream &ts, int indent ) +{ + const QMetaProperty *p = w->metaObject()->property( w->metaObject()->findProperty( name, true ), true ); + ts << makeIndent( indent ) << "<enum>" << p->valueToKey( w->property( name ).toInt() ) << "</enum>" << endl; +} + +void Resource::saveProperty( QObject *w, const QString &name, const QVariant &value, QVariant::Type t, QTextStream &ts, int indent ) +{ + if ( name == "hAlign" || name =="vAlign" || name == "wordwrap" || name == "layoutMargin" || name =="layoutSpacing" ) + return; + int num, unum; + double dob; + QString comment; + if ( w && formwindow->widgets()->find( (QWidget*)w ) ) + comment = MetaDataBase::propertyComment( w, name ); + switch ( t ) { + case QVariant::String: + ts << makeIndent( indent ) << "<string>" << entitize( value.toString() ) << "</string>" << endl; + if ( !comment.isEmpty() ) + ts << makeIndent( indent ) << "<comment>" << entitize( comment ) << "</comment>" << endl; + break; + case QVariant::CString: + ts << makeIndent( indent ) << "<cstring>" << entitize( value.toCString() ).latin1() << "</cstring>" << endl; + break; + case QVariant::Bool: + ts << makeIndent( indent ) << "<bool>" << mkBool( value.toBool() ) << "</bool>" << endl; + break; + case QVariant::Int: + num = value.toInt(); + if ( w && w->inherits( "QLayout" ) ) { + if ( name == "spacing" ) + num = MetaDataBase::spacing( WidgetFactory::containerOfWidget( WidgetFactory::layoutParent( (QLayout*)w ) ) ); + else if ( name == "margin" ) + num = MetaDataBase::margin( WidgetFactory::containerOfWidget( WidgetFactory::layoutParent( (QLayout*)w ) ) ); + } + ts << makeIndent( indent ) << "<number>" << QString::number( num ) << "</number>" << endl; + break; + case QVariant::Double: + dob = value.toDouble(); + ts << makeIndent( indent ) << "<number>" << QString::number( dob ) << "</number>" << endl; + break; + case QVariant::KeySequence: + num = value.toInt(); + ts << makeIndent( indent ) << "<number>" << QString::number( num ) << "</number>" << endl; + break; + case QVariant::UInt: + unum = value.toUInt(); + if ( w && w->inherits( "QLayout" ) ) { + if ( name == "spacing" ) + num = MetaDataBase::spacing( WidgetFactory::layoutParent( (QLayout*)w ) ); + else if ( name == "margin" ) + num = MetaDataBase::margin( WidgetFactory::layoutParent( (QLayout*)w ) ); + } + ts << makeIndent( indent ) << "<number>" << QString::number( unum ) << "</number>" << endl; + break; + case QVariant::Rect: { + QVariant v( value ); + ts << makeIndent( indent ) << "<rect>" << endl; + indent++; + ts << makeIndent( indent ) << "<x>" << QString::number( v.toRect().x() ) << "</x>" << endl; + ts << makeIndent( indent ) << "<y>" << QString::number( v.toRect().y() ) << "</y>" << endl; + ts << makeIndent( indent ) << "<width>" << QString::number( v.toRect().width() ) << "</width>" << endl; + ts << makeIndent( indent ) << "<height>" << QString::number( v.toRect().height() ) << "</height>" << endl; + indent--; + ts << makeIndent( indent ) << "</rect>" << endl; + } break; + case QVariant::Point: { + QVariant v( value ); + ts << makeIndent( indent ) << "<point>" << endl; + indent++; + ts << makeIndent( indent ) << "<x>" << QString::number( v.toPoint().x() ) << "</x>" << endl; + ts << makeIndent( indent ) << "<y>" << QString::number( v.toPoint().y() ) << "</y>" << endl; + indent--; + ts << makeIndent( indent ) << "</point>" << endl; + } break; + case QVariant::Size: { + QVariant v( value ); + ts << makeIndent( indent ) << "<size>" << endl; + indent++; + ts << makeIndent( indent ) << "<width>" << QString::number( v.toSize().width() ) << "</width>" << endl; + ts << makeIndent( indent ) << "<height>" << QString::number( v.toSize().height() ) << "</height>" << endl; + indent--; + ts << makeIndent( indent ) << "</size>" << endl; + } break; + case QVariant::Color: { + QVariant v( value ); + ts << makeIndent( indent ) << "<color>" << endl; + indent++; + saveColor( ts, indent, v.toColor() ); + indent--; + ts << makeIndent( indent ) << "</color>" << endl; + } break; + case QVariant::Font: { + QVariant v( value ); + ts << makeIndent( indent ) << "<font>" << endl; + QFont f( qApp->font() ); + if ( w && w->isWidgetType() && ((QWidget*)w)->parentWidget() ) + f = ((QWidget*)w)->parentWidget()->font(); + QFont f2( v.toFont() ); + indent++; + if ( f.family() != f2.family() ) + ts << makeIndent( indent ) << "<family>" << f2.family() << "</family>" << endl; + if ( f.pointSize() != f2.pointSize() ) + ts << makeIndent( indent ) << "<pointsize>" << QString::number( f2.pointSize() ) << "</pointsize>" << endl; + if ( f.bold() != f2.bold() ) + ts << makeIndent( indent ) << "<bold>" << QString::number( (int)f2.bold() ) << "</bold>" << endl; + if ( f.italic() != f2.italic() ) + ts << makeIndent( indent ) << "<italic>" << QString::number( (int)f2.italic() ) << "</italic>" << endl; + if ( f.underline() != f2.underline() ) + ts << makeIndent( indent ) << "<underline>" << QString::number( (int)f2.underline() ) << "</underline>" << endl; + if ( f.strikeOut() != f2.strikeOut() ) + ts << makeIndent( indent ) << "<strikeout>" << QString::number( (int)f2.strikeOut() ) << "</strikeout>" << endl; + indent--; + ts << makeIndent( indent ) << "</font>" << endl; + } break; + case QVariant::SizePolicy: { + QSizePolicy sp( value.toSizePolicy() ); + ts << makeIndent( indent ) << "<sizepolicy>" << endl; + indent++; + ts << makeIndent( indent ) << "<hsizetype>" << (int)sp.horData() << "</hsizetype>" << endl; + ts << makeIndent( indent ) << "<vsizetype>" << (int)sp.verData() << "</vsizetype>" << endl; + ts << makeIndent( indent ) << "<horstretch>" << (int)sp.horStretch() << "</horstretch>" << endl; + ts << makeIndent( indent ) << "<verstretch>" << (int)sp.verStretch() << "</verstretch>" << endl; + indent--; + ts << makeIndent( indent ) << "</sizepolicy>" << endl; + break; + } + case QVariant::Pixmap: + savePixmap( value.toPixmap(), ts, indent ); + break; + case QVariant::IconSet: + savePixmap( value.toIconSet().pixmap(), ts, indent, "iconset" ); + break; + case QVariant::Image: + ts << makeIndent( indent ) << "<image>" << saveInCollection( value.toImage() ) << "</image>" << endl; + break; + case QVariant::Palette: { + QPalette p( value.toPalette() ); + ts << makeIndent( indent ) << "<palette>" << endl; + indent++; + + ts << makeIndent( indent ) << "<active>" << endl; + indent++; + saveColorGroup( ts, indent, p.active() ); + indent--; + ts << makeIndent( indent ) << "</active>" << endl; + + ts << makeIndent( indent ) << "<disabled>" << endl; + indent++; + saveColorGroup( ts, indent, p.disabled() ); + indent--; + ts << makeIndent( indent ) << "</disabled>" << endl; + + ts << makeIndent( indent ) << "<inactive>" << endl; + indent++; + saveColorGroup( ts, indent, p.inactive() ); + indent--; + ts << makeIndent( indent ) << "</inactive>" << endl; + + indent--; + ts << makeIndent( indent ) << "</palette>" << endl; + } break; + case QVariant::Cursor: + ts << makeIndent( indent ) << "<cursor>" << value.toCursor().shape() << "</cursor>" << endl; + break; + case QVariant::StringList: { + QStringList lst = value.toStringList(); + uint i = 0; + ts << makeIndent( indent ) << "<stringlist>" << endl; + indent++; + if ( !lst.isEmpty() ) { + for ( i = 0; i < lst.count(); ++i ) + ts << makeIndent( indent ) << "<string>" << entitize( lst[ i ] ) << "</string>" << endl; + } + indent--; + ts << makeIndent( indent ) << "</stringlist>" << endl; + } break; + case QVariant::Date: { + QDate d = value.toDate(); + ts << makeIndent( indent ) << "<date>" << endl; + indent++; + ts << makeIndent( indent ) << "<year>" << d.year() << "</year>" << endl; + ts << makeIndent( indent ) << "<month>" << d.month() << "</month>" << endl; + ts << makeIndent( indent ) << "<day>" << d.day() << "</day>" << endl; + indent--; + ts << makeIndent( indent ) << "</date>" << endl; + break; + } + case QVariant::Time: { + QTime t = value.toTime(); + ts << makeIndent( indent ) << "<time>" << endl; + indent++; + ts << makeIndent( indent ) << "<hour>" << t.hour() << "</hour>" << endl; + ts << makeIndent( indent ) << "<minute>" << t.minute() << "</minute>" << endl; + ts << makeIndent( indent ) << "<second>" << t.second() << "</second>" << endl; + indent--; + ts << makeIndent( indent ) << "</time>" << endl; + break; + } + case QVariant::DateTime: { + QDateTime dt = value.toDateTime(); + ts << makeIndent( indent ) << "<datetime>" << endl; + indent++; + ts << makeIndent( indent ) << "<year>" << dt.date().year() << "</year>" << endl; + ts << makeIndent( indent ) << "<month>" << dt.date().month() << "</month>" << endl; + ts << makeIndent( indent ) << "<day>" << dt.date().day() << "</day>" << endl; + ts << makeIndent( indent ) << "<hour>" << dt.time().hour() << "</hour>" << endl; + ts << makeIndent( indent ) << "<minute>" << dt.time().minute() << "</minute>" << endl; + ts << makeIndent( indent ) << "<second>" << dt.time().second() << "</second>" << endl; + indent--; + ts << makeIndent( indent ) << "</datetime>" << endl; + break; + } + default: + qWarning( "saving the property %s of type %d not supported yet", name.latin1(), (int)t ); + } +} + +void Resource::saveColorGroup( QTextStream &ts, int indent, const QColorGroup &cg ) +{ + for( int r = 0 ; r < QColorGroup::NColorRoles ; r++ ) { + ts << makeIndent( indent ) << "<color>" << endl; + indent++; + saveColor( ts, indent, cg.color( (QColorGroup::ColorRole)r ) ); + indent--; + ts << makeIndent( indent ) << "</color>" << endl; + QPixmap* pm = cg.brush( (QColorGroup::ColorRole)r ).pixmap(); + if ( pm && !pm->isNull() ) + savePixmap( *pm, ts, indent ); + } +} + +void Resource::saveColor( QTextStream &ts, int indent, const QColor &c ) +{ + ts << makeIndent( indent ) << "<red>" << QString::number( c.red() ) << "</red>" << endl; + ts << makeIndent( indent ) << "<green>" << QString::number( c.green() ) << "</green>" << endl; + ts << makeIndent( indent ) << "<blue>" << QString::number( c.blue() ) << "</blue>" << endl; +} + +QObject *Resource::createObject( const QDomElement &e, QWidget *parent, QLayout* layout ) +{ + lastItem = 0; + QDomElement n = e.firstChild().toElement(); + QWidget *w = 0; // the widget that got created + QObject *obj = 0; // gets the properties + + int row = e.attribute( "row" ).toInt(); + int col = e.attribute( "column" ).toInt(); + int rowspan = e.attribute( "rowspan" ).toInt(); + int colspan = e.attribute( "colspan" ).toInt(); + if ( rowspan < 1 ) + rowspan = 1; + if ( colspan < 1 ) + colspan = 1; + + QString className = e.attribute( "class", "QWidget" ); + + if ( !className.isNull() ) { + obj = WidgetFactory::create( WidgetDatabase::idFromClassName( className ), parent, 0, false ); + if ( !obj ) + return 0; + if ( !mainContainerSet ) { + if ( formwindow ) + formwindow->setMainContainer( (QWidget*)obj ); + mainContainerSet = true; + } + w = (QWidget*)obj; + if ( w->inherits( "QMainWindow" ) ) + w = ( (QMainWindow*)w )->centralWidget(); + if ( layout ) { + switch ( WidgetFactory::layoutType( layout ) ) { + case WidgetFactory::HBox: + ( (QHBoxLayout*)layout )->addWidget( w ); + break; + case WidgetFactory::VBox: + ( (QVBoxLayout*)layout )->addWidget( w ); + break; + case WidgetFactory::Grid: + ( (QDesignerGridLayout*)layout )->addMultiCellWidget( w, row, row + rowspan - 1, + col, col + colspan - 1 ); + break; + default: + break; + } + } + + if ( !toplevel ) + toplevel = w; + layout = 0; + + if ( w && formwindow ) { + if ( !parent || ( !parent->inherits( "QToolBox" ) && !parent->inherits( "QTabWidget" ) && !parent->inherits( "QWizard" ) ) ) + formwindow->insertWidget( w, pasting ); + else if ( parent && ( parent->inherits( "QToolBox" ) || parent->inherits( "QTabWidget" ) || parent->inherits( "QWizard" ) ) ) + MetaDataBase::addEntry( w ); + if (w->inherits("Dialog")) + dynamic_cast<Dialog*>(w)->setUseInternalParser(false); + } + } + + while ( !n.isNull() ) { + if ( n.tagName() == "spacer" ) { + createSpacer( n, w, layout, Qt::Horizontal ); + } else if ( n.tagName() == "widget" ) { + createObject( n, w, layout ); + } else if ( n.tagName() == "hbox" ) { + layout = WidgetFactory::createLayout( w, layout, WidgetFactory::HBox ); + obj = layout; + n = n.firstChild().toElement(); + continue; + } else if ( n.tagName() == "grid" ) { + layout = WidgetFactory::createLayout( w, layout, WidgetFactory::Grid ); + obj = layout; + n = n.firstChild().toElement(); + continue; + } else if ( n.tagName() == "vbox" ) { + layout = WidgetFactory::createLayout( w, layout, WidgetFactory::VBox ); + obj = layout; + n = n.firstChild().toElement(); + continue; + } else if ( n.tagName() == "property" && obj ) { + setObjectProperty( obj, n.attribute( "name" ), n.firstChild().toElement() ); + } else if ( n.tagName() == "attribute" && w ) { + QString attrib = n.attribute( "name" ); + QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() ); + if ( parent->inherits( "QTabWidget" ) ) { + if ( attrib == "title" ) + ( (QTabWidget*)parent )->insertTab( w, v.toString() ); + } else + if ( parent->inherits( "QToolBox" ) ) { + if ( attrib == "label" ) + ( (QToolBox*)parent )->addItem( w, v.toString() ); + } else if ( parent->inherits( "QWizard" ) ) { + if ( attrib == "title" ) + ( (QWizard*)parent )->addPage( w, v.toString() ); + } + } else if ( n.tagName() == "item" ) { + createItem( n, w ); + } else if ( n.tagName() == "column" || n.tagName() =="row" ) { + createColumn( n, w ); + } else if ( n.tagName() == "event" ) { + // qDebug("Resource : Tag == event"); +#ifndef KOMMANDER + MetaDataBase::setEventFunctions( obj, formwindow, MainWindow::self->currProject()->language(), + n.attribute( "name" ), QStringList::split( ',', n.attribute( "functions" ) ), false ); +#endif + } + + n = n.nextSibling().toElement(); + } + + return w; +} + +void Resource::createColumn( const QDomElement &e, QWidget *widget ) +{ + if ( !widget ) + return; + + if ( widget->inherits( "QListView" ) && e.tagName() == "column" ) { + QListView *lv = (QListView*)widget; + QDomElement n = e.firstChild().toElement(); + QPixmap pix; + bool hasPixmap = false; + QString txt; + bool clickable = true, resizeable = true; + while ( !n.isNull() ) { + if ( n.tagName() == "property" ) { + QString attrib = n.attribute( "name" ); + QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() ); + if ( attrib == "text" ) + txt = v.toString(); + else if ( attrib == "pixmap" ) { + pix = loadPixmap( n.firstChild().toElement().toElement() ); + hasPixmap = !pix.isNull(); + } else if ( attrib == "clickable" ) + clickable = v.toBool(); + else if ( attrib == "resizeable" ) + resizeable = v.toBool(); + } + n = n.nextSibling().toElement(); + } + lv->addColumn( txt ); + int i = lv->header()->count() - 1; + if ( hasPixmap ) { + lv->header()->setLabel( i, pix, txt ); + } + if ( !clickable ) + lv->header()->setClickEnabled( clickable, i ); + if ( !resizeable ) + lv->header()->setResizeEnabled( resizeable, i ); + } +#ifndef QT_NO_TABLE + else if ( widget->inherits( "QTable" ) ) { + QTable *table = (QTable*)widget; + bool isRow; + if ( ( isRow = e.tagName() == "row" ) ) + table->setNumRows( table->numRows() + 1 ); + else + table->setNumCols( table->numCols() + 1 ); + + QDomElement n = e.firstChild().toElement(); + QPixmap pix; + bool hasPixmap = false; + QString txt; + QString field; + QMap<QString, QString> fieldMap = MetaDataBase::columnFields( table ); + while ( !n.isNull() ) { + if ( n.tagName() == "property" ) { + QString attrib = n.attribute( "name" ); + QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() ); + if ( attrib == "text" ) + txt = v.toString(); + else if ( attrib == "pixmap" ) { + hasPixmap = !n.firstChild().firstChild().toText().data().isEmpty(); + if ( hasPixmap ) + pix = loadPixmap( n.firstChild().toElement() ); + } else if ( attrib == "field" ) + field = v.toString(); + } + n = n.nextSibling().toElement(); + } + + int i = isRow ? table->numRows() - 1 : table->numCols() - 1; + QHeader *h = !isRow ? table->horizontalHeader() : table->verticalHeader(); + if ( hasPixmap ) + h->setLabel( i, pix, txt ); + else + h->setLabel( i, txt ); + if ( !isRow && !field.isEmpty() ) + fieldMap.insert( txt, field ); + MetaDataBase::setColumnFields( table, fieldMap ); + } +#endif +} + +void Resource::loadItem( const QDomElement &e, QPixmap &pix, QString &txt, bool &hasPixmap ) +{ + QDomElement n = e; + hasPixmap = false; + while ( !n.isNull() ) { + if ( n.tagName() == "property" ) { + QString attrib = n.attribute( "name" ); + QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() ); + if ( attrib == "text" ) + txt = v.toString(); + else if ( attrib == "pixmap" ) { + pix = loadPixmap( n.firstChild().toElement() ); + hasPixmap = !pix.isNull(); + } + } + n = n.nextSibling().toElement(); + } +} + +void Resource::createItem( const QDomElement &e, QWidget *widget, QListViewItem *i ) +{ + if ( !widget || !WidgetFactory::hasItems( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( widget ) ) ) ) + return; + + if ( widget->inherits( "QListBox" ) || widget->inherits( "QComboBox" ) ) { + QDomElement n = e.firstChild().toElement(); + QPixmap pix; + bool hasPixmap = false; + QString txt; + loadItem( n, pix, txt, hasPixmap ); + QListBox *lb = 0; + if ( widget->inherits( "QListBox" ) ) + lb = (QListBox*)widget; + else + lb = ( (QComboBox*)widget)->listBox(); + if ( hasPixmap ) { + new QListBoxPixmap( lb, pix, txt ); + } else { + new QListBoxText( lb, txt ); + } + } else if ( widget->inherits( "QIconView" ) ) { + QDomElement n = e.firstChild().toElement(); + QPixmap pix; + bool hasPixmap = false; + QString txt; + loadItem( n, pix, txt, hasPixmap ); + + QIconView *iv = (QIconView*)widget; + new QIconViewItem( iv, txt, pix ); + } else if ( widget->inherits( "QListView" ) ) { + QDomElement n = e.firstChild().toElement(); + QPixmap pix; + QValueList<QPixmap> pixmaps; + QStringList textes; + QListViewItem *item = 0; + QListView *lv = (QListView*)widget; + if ( i ) + item = new QListViewItem( i, lastItem ); + else + item = new QListViewItem( lv, lastItem ); + while ( !n.isNull() ) { + if ( n.tagName() == "property" ) { + QString attrib = n.attribute( "name" ); + QVariant v = DomTool::elementToVariant( n.firstChild().toElement(), QVariant() ); + if ( attrib == "text" ) + textes << v.toString(); + else if ( attrib == "pixmap" ) { + QString s = v.toString(); + if ( s.isEmpty() ) { + pixmaps << QPixmap(); + } else { + pix = loadPixmap( n.firstChild().toElement() ); + pixmaps << pix; + } + } + + } else if ( n.tagName() == "item" ) { + item->setOpen( true ); + createItem( n, widget, item ); + } + + n = n.nextSibling().toElement(); + } + + for ( int i = 0; i < lv->columns(); ++i ) { + item->setText( i, textes[ i ] ); + item->setPixmap( i, pixmaps[ i ] ); + } + lastItem = item; + } +} + +QWidget *Resource::createSpacer( const QDomElement &e, QWidget *parent, QLayout *layout, Qt::Orientation o ) +{ + QDomElement n = e.firstChild().toElement(); + int row = e.attribute( "row" ).toInt(); + int col = e.attribute( "column" ).toInt(); + int rowspan = e.attribute( "rowspan" ).toInt(); + int colspan = e.attribute( "colspan" ).toInt(); + if ( rowspan < 1 ) + rowspan = 1; + if ( colspan < 1 ) + colspan = 1; + + Spacer *spacer = (Spacer*) WidgetFactory::create( WidgetDatabase::idFromClassName("Spacer"), + parent, "spacer", false); + spacer->setOrientation( o ); + spacer->setInteraciveMode( false ); + while ( !n.isNull() ) { + if ( n.tagName() == "property" ) + setObjectProperty( spacer, n.attribute( "name" ), n.firstChild().toElement() ); + n = n.nextSibling().toElement(); + } + spacer->setInteraciveMode( true ); + if ( formwindow ) + formwindow->insertWidget( spacer, pasting ); + if ( layout ) { + if ( layout->inherits( "QBoxLayout" ) ) + ( (QBoxLayout*)layout )->addWidget( spacer, 0, spacer->alignment() ); + else + ( (QDesignerGridLayout*)layout )->addMultiCellWidget( spacer, row, row + rowspan - 1, col, col + colspan - 1, + spacer->alignment() ); + } + return spacer; +} + +/*! + Attention: this function has to be in sync with Uic::setObjectProperty(). If you change one, change both. +*/ +void Resource::setObjectProperty( QObject* obj, const QString &prop, const QDomElement &e ) +{ + const QMetaProperty *p = obj->metaObject()->property( obj->metaObject()->findProperty( prop, true ), true ); + + if ( !obj->inherits( "QLayout" ) ) {// no layouts in metadatabase... (RS) + if ( obj->inherits( "CustomWidget" ) ) { + MetaDataBase::CustomWidget *cw = ( (CustomWidget*)obj )->customWidget(); + if ( cw && !cw->hasProperty( prop.latin1() ) && !p && prop != "toolTip" && prop != "whatsThis" ) + return; + } + MetaDataBase::setPropertyChanged( obj, prop, true ); + } + + QVariant defVarient; + if ( e.tagName() == "font" ) { + QFont f( qApp->font() ); + if ( obj->isWidgetType() && ( (QWidget*)obj )->parentWidget() ) + f = ( (QWidget*)obj )->parentWidget()->font(); + defVarient = QVariant( f ); + } + + QString comment; + QVariant v( DomTool::elementToVariant( e, defVarient, comment ) ); + + if ( !comment.isEmpty() ) { + MetaDataBase::addEntry( obj ); + MetaDataBase::setPropertyComment( obj, prop, comment ); + } + + if ( e.tagName() == "pixmap" ) { + QPixmap pix = loadPixmap( e ); + if ( pix.isNull() ) + return; + v = QVariant( pix ); + } else if ( e.tagName() == "iconset" ) { + QPixmap pix = loadPixmap( e, "iconset" ); + if ( pix.isNull() ) + return; + v = QVariant( QIconSet( pix ) ); + } else if ( e.tagName() == "image" ) { + v = QVariant( loadFromCollection( v.toString() ) ); + } + + if ( !p ) { + MetaDataBase::setFakeProperty( obj, prop, v ); + if ( obj->isWidgetType() ) { + if ( prop == "database" && obj != toplevel ) { + QStringList lst = MetaDataBase::fakeProperty( obj, "database" ).toStringList(); + if ( lst.count() > 2 ) + dbControls.insert( obj->name(), lst[ 2 ] ); + else if ( lst.count() == 2 ) + dbTables.insert( obj->name(), lst ); + } + return; + } + } + + + if ( e.tagName() == "palette" ) { + QDomElement n = e.firstChild().toElement(); + QPalette p; + while ( !n.isNull() ) { + QColorGroup cg; + if ( n.tagName() == "active" ) { + cg = loadColorGroup( n ); + p.setActive( cg ); + } else if ( n.tagName() == "inactive" ) { + cg = loadColorGroup( n ); + p.setInactive( cg ); + } else if ( n.tagName() == "disabled" ) { + cg = loadColorGroup( n ); + p.setDisabled( cg ); + } + n = n.nextSibling().toElement(); + } + v = QPalette( p ); + } else if ( e.tagName() == "enum" && p && p->isEnumType() ) { + QString key( v.toString() ); + v = QVariant( p->keyToValue( key ) ); + } else if ( e.tagName() == "set" && p && p->isSetType() ) { + QString keys( v.toString() ); + QStringList lst = QStringList::split( '|', keys ); + QStrList l; + for ( QStringList::Iterator it = lst.begin(); it != lst.end(); ++it ) + l.append( *it ); + v = QVariant( p->keysToValue( l ) ); + } + + if ( prop == "caption" ) { + QCString s1 = v.toCString(); + QString s2 = v.toString(); + if ( !s1.isEmpty() ) + formwindow->setCaption( s1 ); + else if ( !s2.isEmpty() ) + formwindow->setCaption( s2 ); + } + if ( prop == "icon" ) { + formwindow->setIcon( v.toPixmap() ); + } + + if ( prop == "geometry" ) { + if ( obj == toplevel ) { + hadGeometry = true; + toplevel->resize( v.toRect().size() ); + return; + } else if ( obj == formwindow->mainContainer() ) { + hadGeometry = true; + formwindow->resize( v.toRect().size() ); + return; + } + } + + if ( obj->inherits( "QLayout" ) ) { + if ( prop == "spacing" ) { + MetaDataBase::setSpacing( WidgetFactory::containerOfWidget( WidgetFactory::layoutParent( (QLayout*)obj ) ), v.toInt() ); + return; + } + if ( prop == "margin" ) { + MetaDataBase::setMargin( WidgetFactory::containerOfWidget( WidgetFactory::layoutParent( (QLayout*)obj ) ), v.toInt() ); + return; + } + } + + if ( prop == "name" ) { + if ( pasting ) { + QString s = v.toString(); + formwindow->unify( (QWidget*)obj, s, true ); + obj->setName( s ); + return; + } else if ( formwindow && obj == formwindow->mainContainer() ) { + formwindow->setName( v.toCString() ); + } + } + + if ( prop == "sizePolicy" ) { + QSizePolicy sp = v.toSizePolicy(); + sp.setHeightForWidth( ( (QWidget*)obj )->sizePolicy().hasHeightForWidth() ); + } + + obj->setProperty( prop, v ); +} + + +QString Resource::saveInCollection( const QImage &img ) +{ + QString imgName = "none"; + QValueList<Image>::Iterator it = images.begin(); + for ( ; it != images.end(); ++it ) { + if ( img == ( *it ).img ) { + imgName = ( *it ).name; + break; + } + } + + if ( imgName == "none" ) { + Image i; + imgName = "image" + QString::number( images.count() ); + i.name = imgName; + i.img = img; + images.append( i ); + } + return imgName; +} + +void Resource::saveImageData( const QImage &img, QTextStream &ts, int indent ) +{ + QByteArray ba; + QBuffer buf( ba ); + buf.open( IO_WriteOnly | IO_Translate ); + QImageIO iio( &buf, "XPM" ); + iio.setImage( img ); + iio.write(); + buf.close(); + ulong len = ba.size() * 2; + QByteArray bazip( len ); + ::compress( (uchar*) bazip.data(), &len, (uchar*) ba.data(), ba.size() ); + QString res; + ts << makeIndent( indent ) << "<data format=\"XPM.GZ\" length=\"" << ba.size() << "\">"; + static const char hexchars[] = "0123456789abcdef"; + for ( int i = 0; i < (int)len; ++i ) { + uchar s = (uchar) bazip[i]; + ts << hexchars[s >> 4]; + ts << hexchars[s & 0x0f]; + } + ts << "</data>" << endl; +} + +void Resource::saveImageCollection( QTextStream &ts, int indent ) +{ + ts << makeIndent( indent ) << "<images>" << endl; + indent++; + + QValueList<Image>::Iterator it = images.begin(); + for ( ; it != images.end(); ++it ) { + ts << makeIndent( indent ) << "<image name=\"" << (*it).name << "\">" << endl; + indent++; + saveImageData( (*it).img, ts, indent ); + indent--; + ts << makeIndent( indent ) << "</image>" << endl; + } + + indent--; + ts << makeIndent( indent ) << "</images>" << endl; +} + +static QImage loadImageData( QDomElement &n2 ) +{ + QImage img; + QString data = n2.firstChild().toText().data(); + char *ba = new char[ data.length() / 2 ]; + for ( int i = 0; i < (int)data.length() / 2; ++i ) { + char h = data[ 2 * i ].latin1(); + char l = data[ 2 * i + 1 ].latin1(); + uchar r = 0; + if ( h <= '9' ) + r += h - '0'; + else + r += h - 'a' + 10; + r = r << 4; + if ( l <= '9' ) + r += l - '0'; + else + r += l - 'a' + 10; + ba[ i ] = r; + } + QString format = n2.attribute( "format", "PNG" ); + if ( format == "XPM.GZ" ) { + ulong len = n2.attribute( "length" ).toULong(); + if ( len < data.length() * 5 ) + len = data.length() * 5; + QByteArray baunzip( len ); + ::uncompress( (uchar*) baunzip.data(), &len, (uchar*) ba, data.length()/2 ); + img.loadFromData( (const uchar*)baunzip.data(), len, "XPM" ); + } else { + img.loadFromData( (const uchar*)ba, data.length() / 2, format ); + } + delete [] ba; + + return img; +} + +void Resource::loadImageCollection( const QDomElement &e ) +{ + QDomElement n = e.firstChild().toElement(); + while ( !n.isNull() ) { + if ( n.tagName() == "image" ) { + Image img; + img.name = n.attribute( "name" ); + QDomElement n2 = n.firstChild().toElement(); + while ( !n2.isNull() ) { + if ( n2.tagName() == "data" ) + img.img = loadImageData( n2 ); + n2 = n2.nextSibling().toElement(); + } + images.append( img ); + n = n.nextSibling().toElement(); + } + } +} + +QImage Resource::loadFromCollection( const QString &name ) +{ + QValueList<Image>::Iterator it = images.begin(); + for ( ; it != images.end(); ++it ) { + if ( ( *it ).name == name ) + return ( *it ).img; + } + return QImage(); +} + +void Resource::saveConnections( QTextStream &ts, int indent ) +{ + ts << makeIndent( indent ) << "<connections>" << endl; + indent++; + QValueList<MetaDataBase::Connection> connections = MetaDataBase::connections( formwindow ); + QValueList<MetaDataBase::Connection>::Iterator it = connections.begin(); + for ( ; it != connections.end(); ++it ) { + MetaDataBase::Connection conn = *it; + if ( ( knownNames.findIndex( QString( conn.sender->name() ) ) == -1 && + qstrcmp( conn.sender->name(), "this" ) != 0 ) || + ( knownNames.findIndex( QString( conn.receiver->name() ) ) == -1 && + qstrcmp( conn.receiver->name(), "this" ) != 0 ) ) + continue; + if ( formwindow->isMainContainer( (QWidget*)(*it).receiver ) && + !MetaDataBase::hasSlot( formwindow, MetaDataBase::normalizeSlot( (*it).slot ).latin1() ) ) + continue; + + if ( conn.sender->inherits( "CustomWidget" ) ) { + MetaDataBase::CustomWidget *cw = ( (CustomWidget*)conn.sender )->customWidget(); + if ( cw && !cw->hasSignal( conn.signal ) ) + continue; + } + + if ( conn.receiver->inherits( "CustomWidget" ) && !formwindow->isMainContainer( conn.receiver ) ) { + MetaDataBase::CustomWidget *cw = ( (CustomWidget*)conn.receiver )->customWidget(); + if ( cw && !cw->hasSlot( MetaDataBase::normalizeSlot( conn.slot ).latin1() ) ) + continue; + } + + ts << makeIndent( indent ) << "<connection>" << endl; + indent++; + ts << makeIndent( indent ) << "<sender>" << entitize( conn.sender->name() ) << "</sender>" << endl; + ts << makeIndent( indent ) << "<signal>" << entitize( conn.signal ) << "</signal>" << endl; + ts << makeIndent( indent ) << "<receiver>" << entitize( conn.receiver->name() ) << "</receiver>" << endl; + ts << makeIndent( indent ) << "<slot>" << entitize( MetaDataBase::normalizeSlot( conn.slot ) ) << "</slot>" << endl; + indent--; + ts << makeIndent( indent ) << "</connection>" << endl; + } + +#ifndef KOMMANDER + QString lang = formwindow->project()->language(); + LanguageInterface *iface = langIface; + if ( iface && MetaDataBase::hasEvents( lang ) ) { + QObjectList *l = formwindow->queryList( "QWidget" ); + l->append( formwindow ); + QPtrList<QAction> lst = formwindow->actionList(); + for ( QAction *a = lst.first(); a; a = lst.next() ) + l->append( a ); + for ( QObject *o = l->first(); o; o = l->next() ) { + if ( !MetaDataBase::hasObject( o ) ) + continue; + QMap<QString, QStringList> eventFunctions = MetaDataBase::eventFunctions( o ); + QMap<QString, QStringList>::ConstIterator it = eventFunctions.begin(); + for ( ; it != eventFunctions.end(); ++it ) { + QString sls = (*it).join( "," ); + MetaDataBase::Connection conn; + conn.sender = o; + conn.signal = it.key(); + conn.slot = sls; + langConnections[ lang ].append( conn ); + } + } + delete l; + } +#endif + + indent--; + ts << makeIndent( indent ) << "</connections>" << endl; +} + +void Resource::loadConnections( const QDomElement &e ) +{ + QDomElement n = e.firstChild().toElement(); + while ( !n.isNull() ) { + if ( n.tagName() == "connection" ) { + QString lang = n.attribute( "language", "C++" ); + QDomElement n2 = n.firstChild().toElement(); + MetaDataBase::Connection conn; + while ( !n2.isNull() ) { + if ( n2.tagName() == "sender" ) { + conn.sender = 0; + QString name = n2.firstChild().toText().data(); + if ( name == "this" || qstrcmp( toplevel->name(), name ) == 0 ) { + conn.sender = toplevel; + } else { + if ( name == "this" ) + name = toplevel->name(); + QObjectList *l = toplevel->queryList( 0, name, false ); + if ( l ) { + if ( l->first() ) + conn.sender = l->first(); + delete l; + } + if ( !conn.sender ) + conn.sender = formwindow->findAction( name ); + } + } else if ( n2.tagName() == "signal" ) { + conn.signal = n2.firstChild().toText().data(); + } else if ( n2.tagName() == "receiver" ) { + QString name = n2.firstChild().toText().data(); + if ( name == "this" || qstrcmp( toplevel->name(), name ) == 0 ) { + conn.receiver = toplevel; + } else { + QObjectList *l = toplevel->queryList( 0, name, false ); + if ( l ) { + if ( l->first() ) + conn.receiver = l->first(); + delete l; + } + } + } else if ( n2.tagName() == "slot" ) { + conn.slot = n2.firstChild().toText().data(); + } + n2 = n2.nextSibling().toElement(); + } + if ( formwindow ) { + if ( conn.sender == formwindow ) + conn.sender = formwindow->mainContainer(); + if ( conn.receiver == formwindow ) + conn.receiver = formwindow->mainContainer(); + } + if ( conn.sender && conn.receiver ) { +#ifndef KOMMANDER + if ( lang == "C++" ) { + MetaDataBase::addConnection( formwindow ? formwindow : toplevel, + conn.sender, conn.signal, conn.receiver, conn.slot ); + } + else if ( MetaDataBase::hasEvents( lang ) ) { + MetaDataBase::setEventFunctions( conn.sender, formwindow, lang, conn.signal, + QStringList::split( ',', conn.slot ), false ); + } +#else + MetaDataBase::addConnection( formwindow ? formwindow : toplevel, + conn.sender, conn.signal, conn.receiver, conn.slot ); +#endif + } + } else if ( n.tagName() == "slot" ) { // compatibility with 2.x + MetaDataBase::Slot slot; + slot.specifier = n.attribute( "specifier", "virtual" ); + if ( slot.specifier.isEmpty() ) + slot.specifier = "virtual"; + slot.access = n.attribute( "access", "public" ); + if ( slot.access.isEmpty() ) + slot.access = "public"; + slot.language = n.attribute( "language", "C++" ); + slot.returnType = n.attribute( "returnType", "void" ); + if ( slot.returnType.isEmpty() ) + slot.returnType = "void"; + slot.slot = n.firstChild().toText().data(); + if ( !MetaDataBase::hasSlot( formwindow, slot.slot, true ) ) + MetaDataBase::addSlot( formwindow, slot.slot, slot.specifier, + slot.access, slot.language, slot.returnType ); + else + MetaDataBase::changeSlotAttributes( formwindow, slot.slot, + slot.specifier, slot.access, + slot.language, slot.returnType ); + } + n = n.nextSibling().toElement(); + } +} + +void Resource::saveCustomWidgets( QTextStream &ts, int indent ) +{ + ts << makeIndent( indent ) << "<customwidgets>" << endl; + indent++; + + QPtrList<MetaDataBase::CustomWidget> *lst = MetaDataBase::customWidgets(); + for ( MetaDataBase::CustomWidget *w = lst->first(); w; w = lst->next() ) { + if ( usedCustomWidgets.findIndex( w->className ) == -1 ) + continue; + ts << makeIndent( indent ) << "<customwidget>" << endl; + indent++; + ts << makeIndent( indent ) << "<class>" << w->className << "</class>" << endl; + ts << makeIndent( indent ) << "<header location=\"" + << ( w->includePolicy == MetaDataBase::CustomWidget::Local ? "local" : "global" ) + << "\">" << w->includeFile << "</header>" << endl; + ts << makeIndent( indent ) << "<sizehint>" << endl; + indent++; + ts << makeIndent( indent ) << "<width>" << w->sizeHint.width() << "</width>" << endl; + ts << makeIndent( indent ) << "<height>" << w->sizeHint.height() << "</height>" << endl; + indent--; + ts << makeIndent( indent ) << "</sizehint>" << endl; + ts << makeIndent( indent ) << "<container>" << (int)w->isContainer << "</container>" << endl; + ts << makeIndent( indent ) << "<sizepolicy>" << endl; + indent++; + ts << makeIndent( indent ) << "<hordata>" << (int)w->sizePolicy.horData() << "</hordata>" << endl; + ts << makeIndent( indent ) << "<verdata>" << (int)w->sizePolicy.verData() << "</verdata>" << endl; + ts << makeIndent( indent ) << "<horstretch>" << (int)w->sizePolicy.horStretch() << "</horstretch>" << endl; + ts << makeIndent( indent ) << "<verstretch>" << (int)w->sizePolicy.verStretch() << "</verstretch>" << endl; + indent--; + ts << makeIndent( indent ) << "</sizepolicy>" << endl; + ts << makeIndent( indent ) << "<pixmap>" << saveInCollection( w->pixmap->convertToImage() ) << "</pixmap>" << endl; + if ( !w->lstSignals.isEmpty() ) { + for ( QValueList<QCString>::Iterator it = w->lstSignals.begin(); it != w->lstSignals.end(); ++it ) + ts << makeIndent( indent ) << "<signal>" << entitize( *it ) << "</signal>" << endl; + } + if ( !w->lstSlots.isEmpty() ) { + for ( QValueList<MetaDataBase::Slot>::Iterator it = w->lstSlots.begin(); it != w->lstSlots.end(); ++it ) + ts << makeIndent( indent ) << "<slot access=\"" << (*it).access << "\" specifier=\"" + << (*it).specifier << "\">" << entitize( (*it).slot ) << "</slot>" << endl; + } + if ( !w->lstProperties.isEmpty() ) { + for ( QValueList<MetaDataBase::Property>::Iterator it = w->lstProperties.begin(); it != w->lstProperties.end(); ++it ) + ts << makeIndent( indent ) << "<property type=\"" << (*it).type << "\">" << entitize( (*it).property ) << "</property>" << endl; + } + indent--; + ts << makeIndent( indent ) << "</customwidget>" << endl; + } + + + indent--; + ts << makeIndent( indent ) << "</customwidgets>" << endl; +} + +void Resource::loadCustomWidgets( const QDomElement &e, Resource *r ) +{ + QDomElement n = e.firstChild().toElement(); + while ( !n.isNull() ) { + if ( n.tagName() == "customwidget" ) { + QDomElement n2 = n.firstChild().toElement(); + MetaDataBase::CustomWidget *w = new MetaDataBase::CustomWidget; + while ( !n2.isNull() ) { + if ( n2.tagName() == "class" ) { + w->className = n2.firstChild().toText().data(); + } else if ( n2.tagName() == "header" ) { + w->includeFile = n2.firstChild().toText().data(); + QString s = n2.attribute( "location" ); + if ( s != "local" ) + w->includePolicy = MetaDataBase::CustomWidget::Global; + else + w->includePolicy = MetaDataBase::CustomWidget::Local; + } else if ( n2.tagName() == "sizehint" ) { + QDomElement n3 = n2.firstChild().toElement(); + while ( !n3.isNull() ) { + if ( n3.tagName() == "width" ) + w->sizeHint.setWidth( n3.firstChild().toText().data().toInt() ); + else if ( n3.tagName() == "height" ) + w->sizeHint.setHeight( n3.firstChild().toText().data().toInt() ); + n3 = n3.nextSibling().toElement(); + } + } else if ( n2.tagName() == "sizepolicy" ) { + QDomElement n3 = n2.firstChild().toElement(); + while ( !n3.isNull() ) { + if ( n3.tagName() == "hordata" ) + w->sizePolicy.setHorData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() ); + else if ( n3.tagName() == "verdata" ) + w->sizePolicy.setVerData( (QSizePolicy::SizeType)n3.firstChild().toText().data().toInt() ); + else if ( n3.tagName() == "horstretch" ) + w->sizePolicy.setHorStretch( n3.firstChild().toText().data().toInt() ); + else if ( n3.tagName() == "verstretch" ) + w->sizePolicy.setVerStretch( n3.firstChild().toText().data().toInt() ); + n3 = n3.nextSibling().toElement(); + } + } else if ( n2.tagName() == "pixmap" ) { + QPixmap pix; + if ( r ) { + pix = r->loadPixmap( n2 ); + } else { + QDomElement n3 = n2.firstChild().toElement(); + QImage img; + while ( !n3.isNull() ) { + if ( n3.tagName() == "data" ) { + img = loadImageData( n3 ); + } + n3 = n3.nextSibling().toElement(); + } + pix.convertFromImage( img ); + } + w->pixmap = new QPixmap( pix ); + } else if ( n2.tagName() == "signal" ) { + w->lstSignals.append( n2.firstChild().toText().data().latin1() ); + } else if ( n2.tagName() == "container" ) { + w->isContainer = (bool)n2.firstChild().toText().data().toInt(); + } else if ( n2.tagName() == "slot" ) { + MetaDataBase::Slot slot; + slot.slot = n2.firstChild().toText().data().latin1(); + slot.access = n2.attribute( "access" ); + w->lstSlots.append( slot ); + } else if ( n2.tagName() == "property" ) { + MetaDataBase::Property property; + property.property = n2.firstChild().toText().data().latin1(); + property.type = n2.attribute( "type" ); + w->lstProperties.append( property ); + } + n2 = n2.nextSibling().toElement(); + } + MetaDataBase::addCustomWidget( w ); + } + n = n.nextSibling().toElement(); + } +} + +void Resource::saveTabOrder( QTextStream &ts, int indent ) +{ + QWidgetList l = MetaDataBase::tabOrder( toplevel ); + if ( l.isEmpty() ) + return; + + ts << makeIndent( indent ) << "<tabstops>" << endl; + indent++; + + for ( QWidget *w = l.first(); w; w = l.next() ) { + if ( w->testWState( Qt::WState_ForceHide ) || knownNames.findIndex( w->name() ) == -1 ) + continue; + ts << makeIndent( indent ) << "<tabstop>" << w->name() << "</tabstop>" << endl; + } + + indent--; + ts << makeIndent( indent ) << "</tabstops>" << endl; +} + +void Resource::loadTabOrder( const QDomElement &e ) +{ + QWidget *last = 0; + QDomElement n = e.firstChild().toElement(); + QWidgetList widgets; + while ( !n.isNull() ) { + if ( n.tagName() == "tabstop" ) { + QString name = n.firstChild().toText().data(); + if ( name.isEmpty() ) + continue; + QObjectList *l = toplevel->queryList( 0, name, false ); + if ( l ) { + if ( l->first() ) { + QWidget *w = (QWidget*)l->first(); + widgets.append( w ); + if ( last ) + toplevel->setTabOrder( last, w ); + last = w; + } + delete l; + } + } + n = n.nextSibling().toElement(); + } + + if ( !widgets.isEmpty() ) + MetaDataBase::setTabOrder( toplevel, widgets ); +} + +void Resource::saveMetaInfoBefore( QTextStream &ts, int indent ) +{ + MetaDataBase::MetaInfo info = MetaDataBase::metaInfo(formwindow); + QString cn = formwindow->name(); + ts << makeIndent(indent) << "<class>" << entitize(cn) << "</class>" << endl; + if (!info.comment.isEmpty()) + ts << makeIndent(indent) << "<comment>" << entitize(info.comment) << "</comment>" << endl; + if (!info.author.isEmpty()) + ts << makeIndent(indent) << "<author>" << entitize(info.author) << "</author>" << endl; + if (!info.license.isEmpty()) + ts << makeIndent(indent) << "<license>" << entitize(info.license) << "</license>" << endl; + if (!info.version.isEmpty()) + ts << makeIndent(indent) << "<version>" << entitize(info.version) << "</version>" << endl; +} + +void Resource::saveMetaInfoAfter( QTextStream &ts, int indent ) +{ + MetaDataBase::MetaInfo info = MetaDataBase::metaInfo( formwindow ); + QValueList<MetaDataBase::Include> includes = MetaDataBase::includes( formwindow ); + QString extensionInclude; + bool needExtensionInclude = false; + if ( !includes.isEmpty() || needExtensionInclude ) { + ts << makeIndent( indent ) << "<includes>" << endl; + indent++; + + for ( QValueList<MetaDataBase::Include>::Iterator it = includes.begin(); it != includes.end(); ++it ) { + ts << makeIndent( indent ) << "<include location=\"" << (*it).location + << "\" impldecl=\"" << (*it).implDecl << "\">" << (*it).header << "</include>" << endl; + if ( needExtensionInclude ) + needExtensionInclude = (*it).header != extensionInclude; + } + + if ( needExtensionInclude ) + ts << makeIndent( indent ) << "<include location=\"local\" impldecl=\"in implementation\">" + << extensionInclude << "</include>" << endl; + indent--; + ts << makeIndent( indent ) << "</includes>" << endl; + } + + QStringList forwards = MetaDataBase::forwards( formwindow ); + if ( !forwards.isEmpty() ) { + ts << makeIndent( indent ) << "<forwards>" << endl; + indent++; + for ( QStringList::Iterator it2 = forwards.begin(); it2 != forwards.end(); ++it2 ) + ts << makeIndent( indent ) << "<forward>" << entitize( *it2 ) << "</forward>" << endl; + indent--; + ts << makeIndent( indent ) << "</forwards>" << endl; + } + QStringList sigs = MetaDataBase::signalList( formwindow ); + if ( !sigs.isEmpty() ) { + ts << makeIndent( indent ) << "<signals>" << endl; + indent++; + for ( QStringList::Iterator it3 = sigs.begin(); it3 != sigs.end(); ++it3 ) + ts << makeIndent( indent ) << "<signal>" << entitize( *it3 ) << "</signal>" << endl; + indent--; + ts << makeIndent( indent ) << "</signals>" << endl; + + QValueList<MetaDataBase::Slot> slotList = MetaDataBase::slotList( formwindow ); + if ( !slotList.isEmpty() ) { + ts << makeIndent( indent ) << "<slots>" << endl; + indent++; +#ifndef KOMMANDER + QString lang = formwindow->project()->language(); +#endif + QValueList<MetaDataBase::Slot>::Iterator it = slotList.begin(); + for ( ; it != slotList.end(); ++it ) { + MetaDataBase::Slot slot = *it; + ts << makeIndent( indent ) << "<slot"; + if ( slot.access != "public" ) + ts << " access=\"" << slot.access << "\""; + if ( slot.specifier != "virtual" ) + ts << " specifier=\"" << slot.specifier << "\""; + if ( slot.language != "C++" ) + ts << " language=\"" << slot.language<< "\""; + if ( slot.returnType != "void" ) + ts << " returnType=\"" << entitize( slot.returnType ) << "\""; + ts << ">" << entitize( slot.slot ) << "</slot>" << endl; + } + indent--; + ts << makeIndent( indent ) << "</slots>" << endl; + } + } + + if ( formwindow && formwindow->savePixmapInline() ) + ; + else + ts << makeIndent( indent ) << "<pixmapfunction>" << formwindow->pixmapLoaderFunction() << "</pixmapfunction>" << endl; + if ( !( exportMacro = MetaDataBase::exportMacro( formwindow->mainContainer() ) ).isEmpty() ) + ts << makeIndent( indent ) << "<exportmacro>" << exportMacro << "</exportmacro>" << endl; + if ( formwindow ) + ts << makeIndent( indent ) << "<layoutdefaults spacing=\"" << formwindow->layoutDefaultSpacing() + << "\" margin=\"" << formwindow->layoutDefaultMargin() << "\"/>" << endl; +} + +QColorGroup Resource::loadColorGroup( const QDomElement &e ) +{ + QColorGroup cg; + int r = -1; + QDomElement n = e.firstChild().toElement(); + QColor col; + while ( !n.isNull() ) { + if ( n.tagName() == "color" ) { + r++; + cg.setColor( (QColorGroup::ColorRole)r, (col = DomTool::readColor( n ) ) ); + } else if ( n.tagName() == "pixmap" ) { + QPixmap pix = loadPixmap( n ); + cg.setBrush( (QColorGroup::ColorRole)r, QBrush( col, pix ) ); + } + n = n.nextSibling().toElement(); + } + return cg; +} + +void Resource::saveChildActions( QAction *a, QTextStream &ts, int indent ) +{ + if ( !a->children() ) + return; + QObjectListIt it( *a->children() ); + while ( it.current() ) { + QObject *o = it.current(); + ++it; + if ( !o->inherits( "QAction" ) ) + continue; + QAction *ac = (QAction*)o; + bool isGroup = ac->inherits( "QActionGroup" ); + if ( isGroup ) + ts << makeIndent( indent ) << "<actiongroup>" << endl; + else + ts << makeIndent( indent ) << "<action>" << endl; + indent++; + saveObjectProperties( ac, ts, indent ); + indent--; + if ( isGroup ) { + indent++; + saveChildActions( ac, ts, indent ); + indent--; + } + if ( isGroup ) + ts << makeIndent( indent ) << "</actiongroup>" << endl; + else + ts << makeIndent( indent ) << "</action>" << endl; + } +} + +void Resource::saveActions( const QPtrList<QAction> &actions, QTextStream &ts, int indent ) +{ + if ( actions.isEmpty() ) + return; + ts << makeIndent( indent ) << "<actions>" << endl; + indent++; + QPtrListIterator<QAction> it( actions ); + while ( it.current() ) { + QAction *a = it.current(); + bool isGroup = a->inherits( "QActionGroup" ); + if ( isGroup ) + ts << makeIndent( indent ) << "<actiongroup>" << endl; + else + ts << makeIndent( indent ) << "<action>" << endl; + indent++; + saveObjectProperties( a, ts, indent ); + indent--; + if ( isGroup ) { + indent++; + saveChildActions( a, ts, indent ); + indent--; + } + if ( isGroup ) + ts << makeIndent( indent ) << "</actiongroup>" << endl; + else + ts << makeIndent( indent ) << "</action>" << endl; + ++it; + } + indent--; + ts << makeIndent( indent ) << "</actions>" << endl; +} + +void Resource::loadChildAction( QObject *parent, const QDomElement &e ) +{ + QDomElement n = e; + QAction *a = 0; + if ( n.tagName() == "action" ) { + a = new QDesignerAction( parent ); + MetaDataBase::addEntry( a ); + QDomElement n2 = n.firstChild().toElement(); + while ( !n2.isNull() ) { + if ( n2.tagName() == "property" ) { + setObjectProperty( a, n2.attribute( "name" ), n2.firstChild().toElement() ); + } else if ( n2.tagName() == "event" ) { + // qDebug("Resource::loadChildAction : Tag == Event"); +#ifndef KOMMANDER + MetaDataBase::setEventFunctions( a, formwindow, MainWindow::self->currProject()->language(), + n2.attribute( "name" ), + QStringList::split( ',', n2.attribute( "functions" ) ), false ); +#endif + } + n2 = n2.nextSibling().toElement(); + } + if ( !parent->inherits( "QAction" ) ) + formwindow->actionList().append( a ); + } else if ( n.tagName() == "actiongroup" ) { + a = new QDesignerActionGroup( parent ); + MetaDataBase::addEntry( a ); + QDomElement n2 = n.firstChild().toElement(); + while ( !n2.isNull() ) { + if ( n2.tagName() == "property" ) { + setObjectProperty( a, n2.attribute( "name" ), n2.firstChild().toElement() ); + } else if ( n2.tagName() == "action" || + n2.tagName() == "actiongroup" ) { + loadChildAction( a, n2 ); + } else if ( n2.tagName() == "event" ) { + // qDebug("Resource::loadChildAction : Tag == Event"); +#ifndef KOMMANDER + MetaDataBase::setEventFunctions( a, formwindow, MainWindow::self->currProject()->language(), + n2.attribute( "name" ), + QStringList::split( ',', n2.attribute( "functions" ) ), false ); +#endif + } + n2 = n2.nextSibling().toElement(); + } + if ( !parent->inherits( "QAction" ) ) + formwindow->actionList().append( a ); + } +} + +void Resource::loadActions( const QDomElement &e ) +{ + QDomElement n = e.firstChild().toElement(); + while ( !n.isNull() ) { + if ( n.tagName() == "action" ) { + loadChildAction( formwindow, n ); + } else if ( n.tagName() == "actiongroup" ) { + loadChildAction( formwindow, n ); + } + n = n.nextSibling().toElement(); + } +} + +void Resource::saveToolBars( QMainWindow *mw, QTextStream &ts, int indent ) +{ + ts << makeIndent( indent ) << "<toolbars>" << endl; + indent++; + + QPtrList<QToolBar> tbList; + for ( int i = 0; i <= (int)Qt::DockMinimized; ++i ) { + tbList = mw->toolBars( (Qt::Dock)i ); + if ( tbList.isEmpty() ) + continue; + for ( QToolBar *tb = tbList.first(); tb; tb = tbList.next() ) { + if ( tb->isHidden() ) + continue; + ts << makeIndent( indent ) << "<toolbar dock=\"" << i << "\">" << endl; + indent++; + saveObjectProperties( tb, ts, indent ); + QPtrList<QAction> actionList = ( (QDesignerToolBar*)tb )->insertedActions(); + for ( QAction *a = actionList.first(); a; a = actionList.next() ) { + if ( a->inherits( "QSeparatorAction" ) ) { + ts << makeIndent( indent ) << "<separator/>" << endl; + } else { + if ( a->inherits( "QDesignerAction" ) && !( (QDesignerAction*)a )->supportsMenu() ) { + QWidget *w = ( (QDesignerAction*)a )->widget(); + ts << makeIndent( indent ) << "<widget class=\"" + << WidgetFactory::classNameOf( w ) << "\">" << endl; + indent++; + saveObjectProperties( w, ts, indent ); + const char *className = WidgetFactory::classNameOf( w ); + if ( w->isA( "CustomWidget" ) ) + usedCustomWidgets << QString( className ); + if ( WidgetFactory::hasItems( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( w ) ) ) ) + saveItems( w, ts, indent ); + indent--; + ts << makeIndent( indent ) << "</widget>" << endl; + } else { + ts << makeIndent( indent ) << "<action name=\"" << a->name() << "\"/>" << endl; + } + } + } + indent--; + ts << makeIndent( indent ) << "</toolbar>" << endl; + } + } + indent--; + ts << makeIndent( indent ) << "</toolbars>" << endl; +} + +void Resource::saveMenuBar( QMainWindow *mw, QTextStream &ts, int indent ) +{ + if ( !mw->child( 0, "QMenuBar" ) ) + return; + ts << makeIndent( indent ) << "<menubar>" << endl; + indent++; + saveObjectProperties( mw->menuBar(), ts, indent ); + + for ( int i = 0; i < (int)mw->menuBar()->count(); ++i ) { + ts << makeIndent( indent ) << "<item text=\"" << entitize( mw->menuBar()->text( mw->menuBar()->idAt( i ) ) ) + << "\" name=\"" << entitize( mw->menuBar()->findItem( mw->menuBar()->idAt( i ) )->popup()->name() ) << "\">" << endl; + indent++; + QMenuItem *m = mw->menuBar()->findItem( mw->menuBar()->idAt( i ) ); + if ( !m ) + continue; + QPtrList<QAction> actionList = ( (QDesignerPopupMenu*)m->popup() )->insertedActions(); + for ( QAction *a = actionList.first(); a; a = actionList.next() ) { + if ( a->inherits( "QSeparatorAction" ) ) + ts << makeIndent( indent ) << "<separator/>" << endl; + else + ts << makeIndent( indent ) << "<action name=\"" << a->name() << "\"/>" << endl; + } + indent--; + ts << makeIndent( indent ) << "</item>" << endl; + } + indent--; + ts << makeIndent( indent ) << "</menubar>" << endl; +} + +void Resource::loadToolBars( const QDomElement &e ) +{ + QDomElement n = e.firstChild().toElement(); + QMainWindow *mw = ( (QMainWindow*)formwindow->mainContainer() ); + QDesignerToolBar *tb = 0; + while ( !n.isNull() ) { + if ( n.tagName() == "toolbar" ) { + Qt::Dock dock = (Qt::Dock)n.attribute( "dock" ).toInt(); + tb = new QDesignerToolBar( mw, dock ); + QDomElement n2 = n.firstChild().toElement(); + while ( !n2.isNull() ) { + if ( n2.tagName() == "action" ) { + QAction *a = formwindow->findAction( n2.attribute( "name" ) ); + if ( a ) { + a->addTo( tb ); + tb->addAction( a ); + } + } else if ( n2.tagName() == "separator" ) { + QAction *a = new QSeparatorAction( 0 ); + a->addTo( tb ); + tb->addAction( a ); + } else if ( n2.tagName() == "widget" ) { + QWidget *w = (QWidget*)createObject( n2, tb ); + QDesignerAction *a = new QDesignerAction( w, tb ); + a->addTo( tb ); + tb->addAction( a ); + tb->installEventFilters( w ); + } else if ( n2.tagName() == "property" ) { + setObjectProperty( tb, n2.attribute( "name" ), n2.firstChild().toElement() ); + } + n2 = n2.nextSibling().toElement(); + } + } + n = n.nextSibling().toElement(); + } +} + +void Resource::loadMenuBar( const QDomElement &e ) +{ + QDomElement n = e.firstChild().toElement(); + QMainWindow *mw = ( (QMainWindow*)formwindow->mainContainer() ); + QDesignerMenuBar *mb = new QDesignerMenuBar( mw ); + while ( !n.isNull() ) { + if ( n.tagName() == "item" ) { + QDesignerPopupMenu *popup = new QDesignerPopupMenu( mw ); + popup->setName( n.attribute( "name" ) ); + QDomElement n2 = n.firstChild().toElement(); + while ( !n2.isNull() ) { + if ( n2.tagName() == "action" ) { + QAction *a = formwindow->findAction( n2.attribute( "name" ) ); + if ( a ) { + a->addTo( popup ); + popup->addAction( a ); + } + } else if ( n2.tagName() == "separator" ) { + QAction *a = new QSeparatorAction( 0 ); + a->addTo( popup ); + popup->addAction( a ); + } + n2 = n2.nextSibling().toElement(); + } + mb->insertItem( n.attribute( "text" ), popup ); + } else if ( n.tagName() == "property" ) { + setObjectProperty( mb, n.attribute( "name" ), n.firstChild().toElement() ); + } + n = n.nextSibling().toElement(); + } +} + +#ifndef KOMMANDER +void Resource::saveFormCode() +{ +#ifndef KOMMANDER + QString lang = formwindow->project()->language(); +#else + QString lang = "C++"; +#endif + LanguageInterface *iface = langIface; + if ( !iface ) + return; + QMap<QString, QString> functionBodies = MetaDataBase::functionBodies( formwindow ); + if ( langIface->supports( LanguageInterface::StoreFormCodeSeperate ) ) { + if ( formwindow->formFile()->hasTempFileName() || + formwindow->formFile()->code().isEmpty() || + !formwindow->formFile()->hasFormCode() ) + return; +#ifndef KOMMANDER + QFile f( formwindow->project()->makeAbsolute( formwindow->formFile()->codeFile() ) ); +#else + QFile f( formwindow->formFile()->codeFile() ); +#endif + if ( f.open( IO_WriteOnly | IO_Translate ) ) { + QTextStream ts( &f ); + ts << formwindow->formFile()->code(); + } + } else { + QValueList<LanguageInterface::Function> funcs; + QValueList<MetaDataBase::Slot> slotList = MetaDataBase::slotList( formwindow ); + QValueList<MetaDataBase::Slot>::Iterator sit = slotList.begin(); + for ( ; sit != slotList.end(); ++sit ) { + MetaDataBase::Slot slot = *sit; + QMap<QString, QString>::Iterator it = + functionBodies.find( MetaDataBase::normalizeSlot( (*sit).slot ) ); + LanguageInterface::Function func; + func.name = slot.slot; + func.body = *it; + func.comments = MetaDataBase::functionComments( formwindow, func.name ); + func.returnType = slot.returnType; + funcs.append( func ); + } + + QValueList<LanguageInterface::Connection> conns; + QValueList<MetaDataBase::Connection> mconns = langConnections[ lang ]; + for ( QValueList<MetaDataBase::Connection>::Iterator it = mconns.begin(); + it != mconns.end(); ++it ) { + LanguageInterface::Connection conn; + conn.sender = (*it).sender->name(); + conn.signal = (*it).signal; + conn.slot = (*it).slot; + conns.append( conn ); + } + + iface->saveFormCode( formwindow->name(), currFileName + iface->formCodeExtension(), + funcs, QStringList(), QStringList(), QStringList(), + MetaDataBase::variables( formwindow ), conns ); + } +} +#endif + + // compatibility with early 3.0 betas + +static QString make_function_pretty( const QString &s ) +{ + QString res = s; + if ( res.find( ")" ) - res.find( "(" ) == 1 ) + return res; + res.replace( QRegExp( "[(]" ), "( " ); + res.replace( QRegExp( "[)]" ), " )" ); + res.replace( QRegExp( "&" ), " &" ); + res.replace( QRegExp( "[*]" ), " *" ); + res.replace( QRegExp( "," ), ", " ); + res.replace( QRegExp( ":" ), " : " ); + res = res.simplifyWhiteSpace(); + return res; +} + +#ifndef KOMMANDER +void Resource::loadFunctions( const QDomElement &e ) +{ + QDomElement n = e.firstChild().toElement(); + QMap<QString, QString> bodies; + while ( !n.isNull() ) { + if ( n.tagName() == "function" ) { + QString name = n.attribute( "name" ); + QString body = n.firstChild().toText().data(); + bodies.insert( name, body ); + } + n = n.nextSibling().toElement(); + } + MetaDataBase::setFunctionBodies( formwindow, bodies, QString::null, QString::null ); + if ( !bodies.isEmpty() ) { + LanguageInterface *iface = langIface; + if ( !iface ) + return; + QString code; + QValueList<MetaDataBase::Slot> slotList = MetaDataBase::slotList( formwindow ); + for ( QValueList<MetaDataBase::Slot>::Iterator it = slotList.begin(); it != slotList.end(); ++it ) { +#ifndef KOMMANDER + if ( (*it).language != formwindow->project()->language() ) +#else + if ( (*it).language != "C++" ) +#endif + continue; + QString sl( (*it).slot ); + QString comments = MetaDataBase::functionComments( formwindow, sl ); + if ( !comments.isEmpty() ) + code += comments + "\n"; + code += iface->createFunctionStart( formwindow->name(), make_function_pretty( sl ), + ( (*it).returnType.isEmpty() ? + QString( "void" ) : + (*it).returnType ) ); + QMap<QString, QString>::Iterator bit = bodies.find( MetaDataBase::normalizeSlot( (*it).slot ) ); + if ( bit != bodies.end() ) + code += "\n" + *bit + "\n\n"; + else + code += "\n" + iface->createEmptyFunction() + "\n\n"; + } + if ( !code.isEmpty() ) { + formwindow->formFile()->setCode( code ); + hasFunctions = true; + } + } + +} + +void Resource::loadExtraSource() +{ +#ifndef KOMMANDER + QString lang = MainWindow::self->currProject()->language(); +#else + QString lang = "C++"; +#endif + LanguageInterface *iface = langIface; + if ( hasFunctions || !iface ) + return; + QValueList<LanguageInterface::Function> functions; + QStringList forwards; + QStringList includesImpl; + QStringList includesDecl; + QStringList vars; + QValueList<LanguageInterface::Connection> connections; + + iface->loadFormCode( formwindow->name(), currFileName + iface->formCodeExtension(), + functions, forwards, includesImpl, includesDecl, vars, connections ); + + if ( iface->supports( LanguageInterface::StoreFormCodeSeperate ) ) { +#ifndef KOMMANDER + QFile f( formwindow->project()->makeAbsolute( formwindow->formFile()->codeFile() ) ); +#else + QFile f( formwindow->formFile()->codeFile() ); +#endif + QString code; + if ( f.open( IO_ReadOnly ) ) { + QTextStream ts( &f ); + code = ts.read(); + } + formwindow->formFile()->setCode( code ); + } + + for ( QValueList<LanguageInterface::Connection>::Iterator cit = connections.begin(); + cit != connections.end(); ++cit ) { + QObject *sender = 0; + QString name = (*cit).sender; + if ( name == "this" || qstrcmp( toplevel->name(), name ) == 0 ) { + sender = ( (FormWindow*)toplevel )->mainContainer(); + } else { + if ( name == "this" ) + name = toplevel->name(); + QObjectList *l = toplevel->queryList( 0, name, false ); + if ( l ) { + if ( l->first() ) + sender = l->first(); + delete l; + } + if ( !sender ) + sender = formwindow->findAction( name ); + } + MetaDataBase::setEventFunctions( sender, formwindow, lang, (*cit).signal, + QStringList::split( ',', (*cit).slot ), false ); + } + + QMap<QString, QString> bodies = MetaDataBase::functionBodies( formwindow ); + + for ( QValueList<LanguageInterface::Function>::Iterator fit = functions.begin(); + fit != functions.end(); ++fit ) { + if ( MetaDataBase::hasSlot( formwindow, (*fit).name.latin1() ) ) + MetaDataBase::changeSlot( formwindow, (*fit).name.latin1(), (*fit).name.latin1() ); + else + MetaDataBase::addSlot( formwindow, (*fit).name.latin1(), "virtual", "public", lang, (*fit).returnType ); + MetaDataBase::setFunctionComments( formwindow, (*fit).name, (*fit).comments ); + bodies.insert( MetaDataBase::normalizeSlot( (*fit).name ), (*fit).body ); + } + MetaDataBase::setFunctionBodies( formwindow, bodies, QString::null, QString::null ); + + QStringList v = MetaDataBase::variables( formwindow ); + QStringList::Iterator vit; + for ( vit = vars.begin(); vit != vars.end(); ++vit ) + v << *vit; + MetaDataBase::setVariables( formwindow, v ); + + QStringList f = MetaDataBase::forwards( formwindow ); + for ( vit = forwards.begin(); vit != forwards.end(); ++vit ) + f << *vit; + MetaDataBase::setForwards( formwindow, f ); + + QValueList<MetaDataBase::Include> incls = MetaDataBase::includes( formwindow ); + for ( vit = includesImpl.begin(); vit != includesImpl.end(); ++vit ) { + MetaDataBase::Include inc; + inc.header = *vit; + inc.location = "in implementation"; + incls << inc; + } + for ( vit = includesDecl.begin(); vit != includesDecl.end(); ++vit ) { + MetaDataBase::Include inc; + inc.header = *vit; + inc.location = "in declaration"; + incls << inc; + } + MetaDataBase::setIncludes( formwindow, incls ); +} +#endif diff --git a/kommander/editor/resource.h b/kommander/editor/resource.h new file mode 100644 index 00000000..710bd34b --- /dev/null +++ b/kommander/editor/resource.h @@ -0,0 +1,159 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef RESOURCE_H +#define RESOURCE_H + +#include <qstring.h> +#include <qtextstream.h> +#include <qvariant.h> +#include <qvaluelist.h> +#include <qimage.h> +#include "actiondnd.h" + +#include "metadatabase.h" + +class QWidget; +class QObject; +class QLayout; +class QStyle; +class QPalette; +class FormWindow; +class MainWindow; +class QDomElement; +class QDesignerGridLayout; +class QListViewItem; +class QMainWindow; +#ifndef KOMMANDER +struct LanguageInterface; +#endif +class FormFile; + +class Resource +{ +public: + struct Image { + QImage img; + QString name; + bool operator==( const Image &i ) const { + return ( i.name == name && + i.img == img ); + } + }; + + Resource(); + Resource( MainWindow* mw ); + ~Resource(); + + void setWidget( FormWindow *w ); + QWidget *widget() const; + + bool load( FormFile *ff ); + bool load( FormFile *ff, QIODevice* ); + QString copy(); + + bool save( const QString& filename, bool formCodeOnly = FALSE); + bool save( QIODevice* ); + void paste( const QString &cb, QWidget *parent ); + + static void saveImageData( const QImage &img, QTextStream &ts, int indent ); + static void loadCustomWidgets( const QDomElement &e, Resource *r ); + +private: + void saveObject( QObject *obj, QDesignerGridLayout* grid, QTextStream &ts, int indent ); + void saveChildrenOf( QObject* obj, QTextStream &ts, int indent ); + void saveObjectProperties( QObject *w, QTextStream &ts, int indent ); + void saveSetProperty( QObject *w, const QString &name, QVariant::Type t, QTextStream &ts, int indent ); + void saveEnumProperty( QObject *w, const QString &name, QVariant::Type t, QTextStream &ts, int indent ); + void saveProperty( QObject *w, const QString &name, const QVariant &value, QVariant::Type t, QTextStream &ts, int indent ); + void saveProperty( const QVariant &value, QTextStream &ts, int indent ); + void saveItems( QObject *obj, QTextStream &ts, int indent ); + void saveItem( const QStringList &text, const QPtrList<QPixmap> &pixmaps, QTextStream &ts, int indent ); + void saveItem( QListViewItem *i, QTextStream &ts, int indent ); + void saveConnections( QTextStream &ts, int indent ); + void saveCustomWidgets( QTextStream &ts, int indent ); + void saveTabOrder( QTextStream &ts, int indent ); + void saveColorGroup( QTextStream &ts, int indent, const QColorGroup &cg ); + void saveColor( QTextStream &ts, int indent, const QColor &c ); + void saveMetaInfoBefore( QTextStream &ts, int indent ); + void saveMetaInfoAfter( QTextStream &ts, int indent ); + void savePixmap( const QPixmap &p, QTextStream &ts, int indent, const QString &tagname = "pixmap" ); + void saveActions( const QPtrList<QAction> &actions, QTextStream &ts, int indent ); + void saveChildActions( QAction *a, QTextStream &ts, int indent ); + void saveToolBars( QMainWindow *mw, QTextStream &ts, int indent ); + void saveMenuBar( QMainWindow *mw, QTextStream &ts, int indent ); +#ifndef KOMMANDER +// void saveFormCode(); +#endif + + QObject *createObject( const QDomElement &e, QWidget *parent, QLayout* layout = 0 ); + QWidget *createSpacer( const QDomElement &e, QWidget *parent, QLayout *layout, Qt::Orientation o ); + void createItem( const QDomElement &e, QWidget *widget, QListViewItem *i = 0 ); + void createColumn( const QDomElement &e, QWidget *widget ); + void setObjectProperty( QObject* widget, const QString &prop, const QDomElement &e); + QString saveInCollection( const QImage &img ); + QString saveInCollection( const QPixmap &pix ) { return saveInCollection( pix.convertToImage() ); } + QImage loadFromCollection( const QString &name ); + void saveImageCollection( QTextStream &ts, int indent ); + void loadImageCollection( const QDomElement &e ); + void loadConnections( const QDomElement &e ); + void loadTabOrder( const QDomElement &e ); + void loadItem( const QDomElement &n, QPixmap &pix, QString &txt, bool &hasPixmap ); + void loadActions( const QDomElement &n ); + void loadChildAction( QObject *parent, const QDomElement &e ); + void loadToolBars( const QDomElement &n ); + void loadMenuBar( const QDomElement &n ); + QColorGroup loadColorGroup( const QDomElement &e ); + QPixmap loadPixmap( const QDomElement &e, const QString &tagname = "pixmap" ); +#ifndef KOMMANDER +// void loadFunctions( const QDomElement &e ); // compatibility with early 3.0 betas +// void loadExtraSource(); +#endif + +private: + MainWindow *mainwindow; + FormWindow *formwindow; + QWidget* toplevel; + QValueList<Image> images; + bool copying, pasting; + bool mainContainerSet; + QStringList knownNames; + QStringList usedCustomWidgets; + QListViewItem *lastItem; + + QValueList<MetaDataBase::Include> metaIncludes; + QStringList metaForwards; + QStringList metaVariables; + QStringList metaSignals; + MetaDataBase::MetaInfo metaInfo; + QMap<QString, QString> dbControls; + QMap<QString, QStringList> dbTables; + QString exportMacro; + bool hadGeometry; + QMap<QString, QValueList<MetaDataBase::Connection> > langConnections; + QString currFileName; +#ifndef KOMMANDER + LanguageInterface *langIface; +#endif + bool hasFunctions; + +}; + +#endif diff --git a/kommander/editor/sizehandle.cpp b/kommander/editor/sizehandle.cpp new file mode 100644 index 00000000..937d33bc --- /dev/null +++ b/kommander/editor/sizehandle.cpp @@ -0,0 +1,384 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qvariant.h> // HP-UX compiler needs this here + +#include "sizehandle.h" +#include "formwindow.h" +#include "widgetfactory.h" + +#include <qwidget.h> +#include <qapplication.h> +#include <qlabel.h> + +#include <klocale.h> + +SizeHandle::SizeHandle( FormWindow *parent, Direction d, WidgetSelection *s ) + : QWidget( parent ) +{ + active = true; + setBackgroundMode( active ? PaletteText : PaletteDark ); + setFixedSize( 6, 6 ); + widget = 0; + dir =d ; + setMouseTracking( false ); + formWindow = parent; + sel = s; + updateCursor(); +} + +void SizeHandle::updateCursor() +{ + if ( !active ) { + setCursor( arrowCursor ); + return; + } + + switch ( dir ) { + case LeftTop: + setCursor( sizeFDiagCursor ); + break; + case Top: + setCursor( sizeVerCursor ); + break; + case RightTop: + setCursor( sizeBDiagCursor ); + break; + case Right: + setCursor( sizeHorCursor ); + break; + case RightBottom: + setCursor( sizeFDiagCursor ); + break; + case Bottom: + setCursor( sizeVerCursor ); + break; + case LeftBottom: + setCursor( sizeBDiagCursor ); + break; + case Left: + setCursor( sizeHorCursor ); + break; + } +} + +void SizeHandle::setActive( bool a ) +{ + active = a; + setBackgroundMode( active ? PaletteText : PaletteDark ); + updateCursor(); +} + +void SizeHandle::setWidget( QWidget *w ) +{ + widget = w; +} + +void SizeHandle::paintEvent( QPaintEvent * ) +{ + if ( ( (FormWindow*)parentWidget() )->currentWidget() != widget ) + return; + QPainter p( this ); + p.setPen( blue ); + p.drawRect( 0, 0, width(), height() ); +} + +void SizeHandle::mousePressEvent( QMouseEvent *e ) +{ + if ( !widget || e->button() != LeftButton || !active ) + return; + oldPressPos = e->pos(); + geom = origGeom = QRect( widget->pos(), widget->size() ); +} + +void SizeHandle::mouseMoveEvent( QMouseEvent *e ) +{ + if ( !widget || ( e->state() & LeftButton ) != LeftButton || !active ) + return; + QPoint rp = mapFromGlobal( e->globalPos() ); + QPoint d = oldPressPos - rp; + oldPressPos = rp; + QPoint checkPos = widget->parentWidget()->mapFromGlobal( e->globalPos() ); + QRect pr = widget->parentWidget()->rect(); + + // ##### move code around a bit to reduce duplicated code here + switch ( dir ) { + case LeftTop: { + if ( checkPos.x() > pr.width() - 2 * width() || checkPos.y() > pr.height() - 2 * height() ) + return; + int w = geom.width() + d.x(); + geom.setWidth( w ); + w = ( w / formWindow->grid().x() ) * formWindow->grid().x(); + int h = geom.height() + d.y(); + geom.setHeight( h ); + h = ( h / formWindow->grid().y() ) * formWindow->grid().y(); + int dx = widget->width() - w; + int dy = widget->height() - h; + trySetGeometry( widget, widget->x() + dx, widget->y() + dy, w, h ); + } break; + case Top: { + if ( checkPos.y() > pr.height() - 2 * height() ) + return; + int h = geom.height() + d.y(); + geom.setHeight( h ); + h = ( h / formWindow->grid().y() ) * formWindow->grid().y(); + int dy = widget->height() - h; + trySetGeometry( widget, widget->x(), widget->y() + dy, widget->width(), h ); + } break; + case RightTop: { + if ( checkPos.x() < 2 * width() || checkPos.y() > pr.height() - 2 * height() ) + return; + int h = geom.height() + d.y(); + geom.setHeight( h ); + h = ( h / formWindow->grid().y() ) * formWindow->grid().y(); + int dy = widget->height() - h; + int w = geom.width() - d.x(); + geom.setWidth( w ); + w = ( w / formWindow->grid().x() ) * formWindow->grid().x(); + trySetGeometry( widget, widget->x(), widget->y() + dy, w, h ); + } break; + case Right: { + if ( checkPos.x() < 2 * width() ) + return; + int w = geom.width() - d.x(); + geom.setWidth( w ); + w = ( w / formWindow->grid().x() ) * formWindow->grid().x(); + tryResize( widget, w, widget->height() ); + } break; + case RightBottom: { + if ( checkPos.x() < 2 * width() || checkPos.y() < 2 * height() ) + return; + int w = geom.width() - d.x(); + geom.setWidth( w ); + w = ( w / formWindow->grid().x() ) * formWindow->grid().x(); + int h = geom.height() - d.y(); + geom.setHeight( h ); + h = ( h / formWindow->grid().y() ) * formWindow->grid().y(); + tryResize( widget, w, h ); + } break; + case Bottom: { + if ( checkPos.y() < 2 * height() ) + return; + int h = geom.height() - d.y(); + geom.setHeight( h ); + h = ( h / formWindow->grid().y() ) * formWindow->grid().y(); + tryResize( widget, widget->width(), h ); + } break; + case LeftBottom: { + if ( checkPos.x() > pr.width() - 2 * width() || checkPos.y() < 2 * height() ) + return; + int w = geom.width() + d.x(); + geom.setWidth( w ); + w = ( w / formWindow->grid().x() ) * formWindow->grid().x(); + int dx = widget->width() - w; + int h = geom.height() - d.y(); + geom.setHeight( h ); + h = ( h / formWindow->grid().y() ) * formWindow->grid().y(); + trySetGeometry( widget, widget->x() + dx, widget->y(), w, h ); + } break; + case Left: { + if ( checkPos.x() > pr.width() - 2 * width() ) + return; + int w = geom.width() + d.x(); + geom.setWidth( w ); + w = ( w / formWindow->grid().x() ) * formWindow->grid().x(); + int dx = widget->width() - w; + trySetGeometry( widget, widget->x() + dx, widget->y(), w, widget->height() ); + } break; + } + + QPoint p = pos(); + sel->updateGeometry(); + oldPressPos += ( p - pos() ); + + formWindow->sizePreview()->setText( QString( "%1/%2" ).arg( widget->width() ).arg( widget->height() ) ); + formWindow->sizePreview()->adjustSize(); + QRect lg( formWindow->mapFromGlobal( e->globalPos() ) + QPoint( 16, 16 ), + formWindow->sizePreview()->size() ); + formWindow->checkPreviewGeometry( lg ); + formWindow->sizePreview()->setGeometry( lg ); + formWindow->sizePreview()->show(); + formWindow->sizePreview()->raise(); + if ( WidgetFactory::layoutType( widget ) != WidgetFactory::NoLayout ) + formWindow->updateChildSelections( widget ); +} + +void SizeHandle::mouseReleaseEvent( QMouseEvent *e ) +{ + if ( e->button() != LeftButton || !active ) + return; + + formWindow->sizePreview()->hide(); + if ( geom != widget->geometry() ) + formWindow->commandHistory()->addCommand( new ResizeCommand( i18n("Resize" ), + formWindow, + widget, origGeom, + widget->geometry() ) ); + formWindow->emitUpdateProperties( widget ); +} + +void SizeHandle::trySetGeometry( QWidget *w, int x, int y, int width, int height ) +{ + int minw = QMAX( w->minimumSizeHint().width(), w->minimumSize().width() ); + minw = QMAX( minw, 2 * formWindow->grid().x() ); + int minh = QMAX( w->minimumSizeHint().height(), w->minimumSize().height() ); + minh = QMAX( minh, 2 * formWindow->grid().y() ); + if ( QMAX( minw, width ) > w->maximumWidth() || + QMAX( minh, height ) > w->maximumHeight() ) + return; + if ( width < minw && x != w->x() ) + x -= minw - width; + if ( height < minh && y != w->y() ) + y -= minh - height; + w->setGeometry( x, y, QMAX( minw, width ), QMAX( minh, height ) ); +} + +void SizeHandle::tryResize( QWidget *w, int width, int height ) +{ + int minw = QMAX( w->minimumSizeHint().width(), w->minimumSize().width() ); + minw = QMAX( minw, 16 ); + int minh = QMAX( w->minimumSizeHint().height(), w->minimumSize().height() ); + minh = QMAX( minh, 16 ); + w->resize( QMAX( minw, width ), QMAX( minh, height ) ); +} + +// ------------------------------------------------------------------------ + +WidgetSelection::WidgetSelection( FormWindow *parent, QPtrDict<WidgetSelection> *selDict ) + : selectionDict( selDict ) +{ + formWindow = parent; + for ( int i = SizeHandle::LeftTop; i <= SizeHandle::Left; ++i ) { + handles.insert( i, new SizeHandle( formWindow, (SizeHandle::Direction)i, this ) ); + } + hide(); +} + +void WidgetSelection::setWidget( QWidget *w, bool updateDict ) +{ + if ( !w ) { + hide(); + if ( updateDict ) + selectionDict->remove( wid ); + wid = 0; + return; + } + + wid = w; + bool active = !wid->parentWidget() || WidgetFactory::layoutType( wid->parentWidget() ) == WidgetFactory::NoLayout; + for ( int i = SizeHandle::LeftTop; i <= SizeHandle::Left; ++i ) { + SizeHandle *h = handles[ i ]; + if ( h ) { + h->setWidget( wid ); + h->setActive( active ); + } + } + updateGeometry(); + show(); + if ( updateDict ) + selectionDict->insert( w, this ); +} + +bool WidgetSelection::isUsed() const +{ + return wid != 0; +} + +void WidgetSelection::updateGeometry() +{ + if ( !wid ) + return; + + QPoint p = wid->parentWidget()->mapToGlobal( wid->pos() ); + p = formWindow->mapFromGlobal( p ); + QRect r( p, wid->size() ); + + int w = 6; + int h = 6; + + for ( int i = SizeHandle::LeftTop; i <= SizeHandle::Left; ++i ) { + SizeHandle *hndl = handles[ i ]; + if ( !hndl ) + continue; + switch ( i ) { + case SizeHandle::LeftTop: + hndl->move( r.x() - w / 2, r.y() - h / 2 ); + break; + case SizeHandle::Top: + hndl->move( r.x() + r.width() / 2 - w / 2, r.y() - h / 2 ); + break; + case SizeHandle::RightTop: + hndl->move( r.x() + r.width() - w / 2, r.y() - h / 2 ); + break; + case SizeHandle::Right: + hndl->move( r.x() + r.width() - w / 2, r.y() + r.height() / 2 - h / 2 ); + break; + case SizeHandle::RightBottom: + hndl->move( r.x() + r.width() - w / 2, r.y() + r.height() - h / 2 ); + break; + case SizeHandle::Bottom: + hndl->move( r.x() + r.width() / 2 - w / 2, r.y() + r.height() - h / 2 ); + break; + case SizeHandle::LeftBottom: + hndl->move( r.x() - w / 2, r.y() + r.height() - h / 2 ); + break; + case SizeHandle::Left: + hndl->move( r.x() - w / 2, r.y() + r.height() / 2 - h / 2 ); + break; + default: + break; + } + } +} + +void WidgetSelection::hide() +{ + for ( int i = SizeHandle::LeftTop; i <= SizeHandle::Left; ++i ) { + SizeHandle *h = handles[ i ]; + if ( h ) + h->hide(); + } +} + +void WidgetSelection::show() +{ + for ( int i = SizeHandle::LeftTop; i <= SizeHandle::Left; ++i ) { + SizeHandle *h = handles[ i ]; + if ( h ) { + h->show(); + h->raise(); + } + } +} + +void WidgetSelection::update() +{ + for ( int i = SizeHandle::LeftTop; i <= SizeHandle::Left; ++i ) { + SizeHandle *h = handles[ i ]; + if ( h ) + h->update(); + } +} + +QWidget *WidgetSelection::widget() const +{ + return wid; +} +#include "sizehandle.moc" diff --git a/kommander/editor/sizehandle.h b/kommander/editor/sizehandle.h new file mode 100644 index 00000000..ccd6a6ef --- /dev/null +++ b/kommander/editor/sizehandle.h @@ -0,0 +1,91 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef SIZEHANDLE_H +#define SIZEHANDLE_H + +#include <qwidget.h> +#include <qintdict.h> +#include <qptrdict.h> + +class QMouseEvent; +class FormWindow; +class WidgetSelection; +class QPaintEvent; + +class SizeHandle : public QWidget +{ + Q_OBJECT + +public: + enum Direction { LeftTop, Top, RightTop, Right, RightBottom, Bottom, LeftBottom, Left }; + + SizeHandle( FormWindow *parent, Direction d, WidgetSelection *s ); + void setWidget( QWidget *w ); + void setActive( bool a ); + void updateCursor(); + + void setEnabled( bool ) {} + +protected: + void paintEvent( QPaintEvent *e ); + void mousePressEvent( QMouseEvent *e ); + void mouseMoveEvent( QMouseEvent *e ); + void mouseReleaseEvent( QMouseEvent *e ); + +private: + void trySetGeometry( QWidget *w, int x, int y, int width, int height ); + void tryResize( QWidget *w, int width, int height ); + +private: + QWidget *widget; + Direction dir; + QPoint oldPressPos; + FormWindow *formWindow; + WidgetSelection *sel; + QRect geom, origGeom; + bool active; + +}; + +class WidgetSelection +{ +public: + WidgetSelection( FormWindow *parent, QPtrDict<WidgetSelection> *selDict ); + + void setWidget( QWidget *w, bool updateDict = TRUE ); + bool isUsed() const; + + void updateGeometry(); + void hide(); + void show(); + void update(); + + QWidget *widget() const; + +protected: + QIntDict<SizeHandle> handles; + QWidget *wid; + FormWindow *formWindow; + QPtrDict<WidgetSelection> *selectionDict; + +}; + +#endif diff --git a/kommander/editor/styledbutton.cpp b/kommander/editor/styledbutton.cpp new file mode 100644 index 00000000..9b77b941 --- /dev/null +++ b/kommander/editor/styledbutton.cpp @@ -0,0 +1,290 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qvariant.h> // HP-UX compiler needs this here +#include "styledbutton.h" +#include "formwindow.h" +#include "pixmapchooser.h" +#include <kcolordialog.h> +#include <qpalette.h> +#include <qlabel.h> +#include <qpainter.h> +#include <qimage.h> +#include <qpixmap.h> +#include <qapplication.h> +#include <qdragobject.h> +#include <qstyle.h> + +StyledButton::StyledButton(QWidget* parent, const char* name) + : QButton( parent, name ), pix( 0 ), spix( 0 ), s( 0 ), formWindow( 0 ), mousePressed( false ) +{ + setMinimumSize( minimumSizeHint() ); + setAcceptDrops( true ); + + connect( this, SIGNAL(clicked()), SLOT(onEditor())); + + setEditor( ColorEditor ); +} + +StyledButton::StyledButton( const QBrush& b, QWidget* parent, const char* name, WFlags f ) + : QButton( parent, name, f ), spix( 0 ), s( 0 ), formWindow( 0 ) +{ + col = b.color(); + pix = b.pixmap(); + setMinimumSize( minimumSizeHint() ); +} + +StyledButton::~StyledButton() +{ +} + +void StyledButton::setEditor( EditorType e ) +{ + if ( edit == e ) + return; + + edit = e; + update(); +} + +StyledButton::EditorType StyledButton::editor() const +{ + return edit; +} + +void StyledButton::setColor( const QColor& c ) +{ + col = c; + update(); +} + +void StyledButton::setPixmap( const QPixmap & pm ) +{ + if ( !pm.isNull() ) { + delete pix; + pix = new QPixmap( pm ); + } else { + delete pix; + pix = 0; + } + scalePixmap(); +} + +QColor StyledButton::color() const +{ + return col; +} + +QPixmap* StyledButton::pixmap() const +{ + return pix; +} + +bool StyledButton::scale() const +{ + return s; +} + +void StyledButton::setScale( bool on ) +{ + if ( s == on ) + return; + + s = on; + scalePixmap(); +} + +QSize StyledButton::sizeHint() const +{ + return QSize( 50, 25 ); +} + +QSize StyledButton::minimumSizeHint() const +{ + return QSize( 50, 25 ); +} + +void StyledButton::scalePixmap() +{ + delete spix; + + if ( pix ) { + spix = new QPixmap( 6*width()/8, 6*height()/8 ); + QImage img = pix->convertToImage(); + + spix->convertFromImage( s? img.smoothScale( 6*width()/8, 6*height()/8 ) : img ); + } else { + spix = 0; + } + + update(); +} + +void StyledButton::resizeEvent( QResizeEvent* e ) +{ + scalePixmap(); + QButton::resizeEvent( e ); +} + +void StyledButton::drawButton( QPainter *paint ) +{ + style().drawPrimitive(QStyle::PE_ButtonBevel, paint, rect(), colorGroup(), + isDown() ? QStyle::Style_Sunken : QStyle::Style_Raised); + drawButtonLabel(paint); + + if (hasFocus()) + style().drawPrimitive(QStyle::PE_FocusRect, paint, + style().subRect(QStyle::SR_PushButtonFocusRect, this), + colorGroup(), QStyle::Style_Default); +} + +void StyledButton::drawButtonLabel( QPainter *paint ) +{ + QColor pen = isEnabled() ? + hasFocus() ? palette().active().buttonText() : palette().inactive().buttonText() + : palette().disabled().buttonText(); + paint->setPen( pen ); + + if(!isEnabled()) { + paint->setBrush( QBrush( colorGroup().button() ) ); + } + else if ( edit == PixmapEditor && spix ) { + paint->setBrush( QBrush( col, *spix ) ); + paint->setBrushOrigin( width()/8, height()/8 ); + } else + paint->setBrush( QBrush( col ) ); + + paint->drawRect( width()/8, height()/8, 6*width()/8, 6*height()/8 ); +} + +void StyledButton::onEditor() +{ + switch (edit) { + case ColorEditor: { + QColor c = palette().active().background(); + if ( KColorDialog::getColor( c, this ) == QDialog::Accepted ) { + setColor( c ); + emit changed(); + } + } break; + case PixmapEditor: { + QPixmap p; + if ( pixmap() ) + p = qChoosePixmap( this, formWindow, *pixmap() ); + else + p = qChoosePixmap( this, formWindow, QPixmap() ); + if ( !p.isNull() ) { + setPixmap( p ); + emit changed(); + } + } break; + default: + break; + } +} + +void StyledButton::mousePressEvent(QMouseEvent* e) +{ + QButton::mousePressEvent(e); + mousePressed = true; + pressPos = e->pos(); +} + +void StyledButton::mouseMoveEvent(QMouseEvent* e) +{ + QButton::mouseMoveEvent( e ); +#ifndef QT_NO_DRAGANDDROP + if ( !mousePressed ) + return; + if ( ( pressPos - e->pos() ).manhattanLength() > QApplication::startDragDistance() ) { + if ( edit == ColorEditor ) { + QColorDrag *drg = new QColorDrag( col, this ); + QPixmap pix( 25, 25 ); + pix.fill( col ); + QPainter p( &pix ); + p.drawRect( 0, 0, pix.width(), pix.height() ); + p.end(); + drg->setPixmap( pix ); + mousePressed = false; + drg->dragCopy(); + } + else if ( edit == PixmapEditor && pix && !pix->isNull() ) { + QImage img = pix->convertToImage(); + QImageDrag *drg = new QImageDrag( img, this ); + if(spix) + drg->setPixmap( *spix ); + mousePressed = false; + drg->dragCopy(); + } + } +#endif +} + +#ifndef QT_NO_DRAGANDDROP +void StyledButton::dragEnterEvent( QDragEnterEvent *e ) +{ + setFocus(); + if ( edit == ColorEditor && QColorDrag::canDecode( e ) ) + e->accept(); + else if ( edit == PixmapEditor && QImageDrag::canDecode( e ) ) + e->accept(); + else + e->ignore(); +} + +void StyledButton::dragLeaveEvent( QDragLeaveEvent * ) +{ + if ( hasFocus() ) + parentWidget()->setFocus(); +} + +void StyledButton::dragMoveEvent( QDragMoveEvent *e ) +{ + if ( edit == ColorEditor && QColorDrag::canDecode( e ) ) + e->accept(); + else if ( edit == PixmapEditor && QImageDrag::canDecode( e ) ) + e->accept(); + else + e->ignore(); +} + +void StyledButton::dropEvent( QDropEvent *e ) +{ + if ( edit == ColorEditor && QColorDrag::canDecode( e ) ) { + QColor color; + QColorDrag::decode( e, color ); + setColor(color); + emit changed(); + e->accept(); + } + else if ( edit == PixmapEditor && QImageDrag::canDecode( e ) ) { + QImage img; + QImageDrag::decode( e, img ); + QPixmap pm; + pm.convertFromImage(img); + setPixmap(pm); + emit changed(); + e->accept(); + } else { + e->ignore(); + } +} +#endif // QT_NO_DRAGANDDROP +#include "styledbutton.moc" diff --git a/kommander/editor/styledbutton.h b/kommander/editor/styledbutton.h new file mode 100644 index 00000000..a2927084 --- /dev/null +++ b/kommander/editor/styledbutton.h @@ -0,0 +1,97 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef STYLEDBUTTON_H +#define STYLEDBUTTON_H + +#include <qbutton.h> +#include <qpixmap.h> + +class QColor; +class QBrush; +class FormWindow; + +class StyledButton : public QButton +{ + Q_OBJECT + + Q_PROPERTY( QColor color READ color WRITE setColor ) + Q_PROPERTY( QPixmap pixmap READ pixmap WRITE setPixmap ) + Q_PROPERTY( EditorType editor READ editor WRITE setEditor ) + Q_PROPERTY( bool scale READ scale WRITE setScale ) + + Q_ENUMS( EditorType ) + +public: + enum EditorType { ColorEditor, PixmapEditor }; + + StyledButton( QWidget* parent = 0, const char* name = 0 ); + StyledButton( const QBrush& b, QWidget* parent = 0, const char* name = 0, WFlags f = 0 ); + ~StyledButton(); + + void setEditor( EditorType ); + EditorType editor() const; + + void setColor( const QColor& ); + void setPixmap( const QPixmap& ); + + QPixmap* pixmap() const; + QColor color() const; + + void setScale( bool ); + bool scale() const; + + QSize sizeHint() const; + QSize minimumSizeHint() const; + + void setFormWindow( FormWindow *fw ) { formWindow = fw; } + +public slots: + virtual void onEditor(); + +signals: + void changed(); + +protected: + void mousePressEvent(QMouseEvent*); + void mouseMoveEvent(QMouseEvent*); +#ifndef QT_NO_DRAGANDDROP + void dragEnterEvent ( QDragEnterEvent * ); + void dragMoveEvent ( QDragMoveEvent * ); + void dragLeaveEvent ( QDragLeaveEvent * ); + void dropEvent ( QDropEvent * ); +#endif // QT_NO_DRAGANDDROP + void drawButton( QPainter* ); + void drawButtonLabel( QPainter* ); + void resizeEvent( QResizeEvent* ); + void scalePixmap(); + +private: + QPixmap* pix; + QPixmap* spix; // the pixmap scaled down to fit into the button + QColor col; + EditorType edit; + bool s; + FormWindow *formWindow; + QPoint pressPos; + bool mousePressed; +}; + +#endif //STYLEDBUTTON_H diff --git a/kommander/editor/tableeditor.ui b/kommander/editor/tableeditor.ui new file mode 100644 index 00000000..26345a3f --- /dev/null +++ b/kommander/editor/tableeditor.ui @@ -0,0 +1,813 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>TableEditorBase</class> +<widget class="QDialog"> + <property name="name"> + <cstring>TableEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>538</width> + <height>369</height> + </rect> + </property> + <property name="caption"> + <string>Edit Table</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QTable" row="0" column="0"> + <column> + <property name="text"> + <string>1</string> + </property> + </column> + <row> + <property name="text"> + <string>1</string> + </property> + </row> + <property name="name"> + <cstring>table</cstring> + </property> + <property name="numRows"> + <number>1</number> + </property> + <property name="numCols"> + <number>1</number> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>Layout11</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonApply</cstring> + </property> + <property name="text"> + <string>&Apply</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Apply all changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + <widget class="QTabWidget" row="0" column="1"> + <property name="name"> + <cstring>TabWidget</cstring> + </property> + <widget class="QWidget"> + <property name="name"> + <cstring>columns_tab</cstring> + </property> + <attribute name="title"> + <string>Co&lumns</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <spacer row="4" column="2"> + <property name="name"> + <cstring>Spacer3</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QListBox" row="0" column="0" rowspan="6" colspan="1"> + <property name="name"> + <cstring>listColumns</cstring> + </property> + </widget> + <spacer row="3" column="1"> + <property name="name"> + <cstring>Spacer2</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton" row="4" column="1"> + <property name="name"> + <cstring>buttonColumnUp</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move up</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item up.</b><p>The top-most column will be the first column of the list.</p></string> + </property> + </widget> + <widget class="QPushButton" row="5" column="1"> + <property name="name"> + <cstring>buttonColumnDown</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image1</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move down</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item down.</b><p>The top-most column will be the first column of the list.</p></string> + </property> + </widget> + <widget class="QPushButton" row="1" column="1"> + <property name="name"> + <cstring>buttonDeleteColumn</cstring> + </property> + <property name="text"> + <string>&Delete Column</string> + </property> + </widget> + <widget class="QPushButton" row="0" column="1"> + <property name="name"> + <cstring>buttonNewColumn</cstring> + </property> + <property name="text"> + <string>&New Column</string> + </property> + </widget> + <widget class="QLayoutWidget" row="2" column="1" rowspan="1" colspan="2"> + <property name="name"> + <cstring>Layout6</cstring> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>labelTable</cstring> + </property> + <property name="text"> + <string>Table:</string> + </property> + </widget> + <widget class="QLayoutWidget" row="3" column="1"> + <property name="name"> + <cstring>Layout2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>labelColumnPixmap</cstring> + </property> + <property name="text"> + <string>Label4</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonDeleteColPixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image2</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Delete Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Delete the selected item's pixmap.</b><p>The pixmap in the current column of the selected item will be deleted.</p></string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonChooseColPixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="toolTip" stdset="0"> + <string>Select a Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Select a pixmap file for the item.</b><p>The pixmap will be changed in the current column of the selected item.</p></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLabel" row="2" column="0"> + <property name="name"> + <cstring>TextLabel2</cstring> + </property> + <property name="text"> + <string>&Label:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>editColumnText</cstring> + </property> + </widget> + <widget class="QLabel" row="3" column="0"> + <property name="name"> + <cstring>Label2</cstring> + </property> + <property name="text"> + <string>Pixmap:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemChoosePixmap</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>labelFields</cstring> + </property> + <property name="text"> + <string>&Field:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>comboFields</cstring> + </property> + </widget> + <widget class="QLineEdit" row="2" column="1"> + <property name="name"> + <cstring>editColumnText</cstring> + </property> + </widget> + <widget class="QComboBox" row="1" column="1"> + <property name="name"> + <cstring>comboFields</cstring> + </property> + <property name="editable"> + <bool>true</bool> + </property> + </widget> + <widget class="QLabel" row="0" column="1"> + <property name="name"> + <cstring>labelTableValue</cstring> + </property> + <property name="text"> + <string><no table></string> + </property> + </widget> + </grid> + </widget> + </grid> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>rows_tab</cstring> + </property> + <attribute name="title"> + <string>&Rows</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <spacer row="4" column="2"> + <property name="name"> + <cstring>Spacer3_2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton" row="4" column="1"> + <property name="name"> + <cstring>buttonRowUp</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move up</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item up.</b><p>The top-most column will be the first column of the list.</p></string> + </property> + </widget> + <widget class="QListBox" row="0" column="0" rowspan="6" colspan="1"> + <property name="name"> + <cstring>listRows</cstring> + </property> + </widget> + <widget class="QPushButton" row="5" column="1"> + <property name="name"> + <cstring>buttonRowDown</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image1</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Move down</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Move the selected item down.</b><p>The top-most column will be the first column of the list.</p></string> + </property> + </widget> + <spacer row="3" column="1"> + <property name="name"> + <cstring>Spacer2_2</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton" row="0" column="1"> + <property name="name"> + <cstring>buttonNewRow</cstring> + </property> + <property name="text"> + <string>&New Row</string> + </property> + </widget> + <widget class="QPushButton" row="1" column="1"> + <property name="name"> + <cstring>buttonDeleteRow</cstring> + </property> + <property name="text"> + <string>&Delete Row</string> + </property> + </widget> + <widget class="QLayoutWidget" row="2" column="1" rowspan="1" colspan="2"> + <property name="name"> + <cstring>Layout7_2</cstring> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel" row="0" column="0"> + <property name="name"> + <cstring>TextLabel2_3</cstring> + </property> + <property name="text"> + <string>&Label:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>editRowText</cstring> + </property> + </widget> + <widget class="QLabel" row="1" column="0"> + <property name="name"> + <cstring>Label2_2</cstring> + </property> + <property name="text"> + <string>Pixmap:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>itemChoosePixmap</cstring> + </property> + </widget> + <widget class="QLayoutWidget" row="1" column="1"> + <property name="name"> + <cstring>Layout2_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>labelRowPixmap</cstring> + </property> + <property name="text"> + <string>Label4</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonDeleteRowPixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image2</pixmap> + </property> + <property name="toolTip" stdset="0"> + <string>Delete Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Delete the selected item's pixmap.</b><p>The pixmap in the current column of the selected item will be deleted.</p></string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonChooseRowPixmap</cstring> + </property> + <property name="maximumSize"> + <size> + <width>30</width> + <height>22</height> + </size> + </property> + <property name="text"> + <string>...</string> + </property> + <property name="toolTip" stdset="0"> + <string>Select a Pixmap</string> + </property> + <property name="whatsThis" stdset="0"> + <string><b>Select a pixmap file for the item.</b><p>The pixmap will be changed in the current column of the selected item.</p></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLineEdit" row="0" column="1"> + <property name="name"> + <cstring>editRowText</cstring> + </property> + </widget> + </grid> + </widget> + </grid> + </widget> + </widget> + </grid> +</widget> +<images> + <image name="image0"> + <data format="XPM.GZ" length="1040">789c5dcf4d73a2401006e0bbbf82726ed61609ca0c4c6ded0125dfd1985baab6f600338c280a46fc08a6f6bf2f3ddd26abc0619eb7677a9aab9ef3361d3bbdab4ebd4db673e5a83cd9383dbd5bad9adf7f7e7d76ba9e70dacfe78ed7fdd1e9ba8e72265599c17adaae99773df033cb9818225f2cc38132027887f4af8d01ee817dc935720d1c7827d648c1910f969273cd8123e4a93a21d2d95ba0ef098d631864409b6f2c13c195063e210389d55720ef0b8dd56764e021c7c8905acd2c93b66aa71a224389fffb0e14fd4062f51119d290115252ab2391c6585ab653a5f6de033294f8fbf74849175544eacc80c120e478b644267451434c90a9659a78d8aa2066585d00c33425ae80d25702b92352756ea91475ce90ba8f4c80299cb5177d58ea8c5a6d819a67b4595b66865a29602632628e3406b9011a73a26b1f96a40c575f19536dc7d959c6543e5f1466f95fd646aba22cabf5fb57c636f9a24ddaa75e52c6b6f90ea3aada2f313b7ccc1b1b1da3e128a67df09aaa1addb82963dfb3b8b7cdf18e9dcfe70e8b687f91b1fba25acf2eb2a289460f17d9a28c4c7c9e1d8ae8f1e9227b1e4feafa859d9f8de378fa8afbfefeecfc030f08f1a3</data> + </image> + <image name="image1"> + <data format="XPM.GZ" length="1085">789c5dd0cd6ee2301000e03b4f11911b5ad1189290a8da0324a5e90f29941e2aadf6e0d84ea10d1020849ad5befb7a3cceaa29e2e06f663c33ce55cf7a9dcfacde55e758d16acd2cb6a207abc74f9b8dfcf5fbe79f4e97f896fabb8145ba3f3addbec5ac74b715704ed5d9769c01cb73e0423368f80224c190e53e70091c389e83d98366e83942679f0c43cc7e0087c4f3307b63c8b1d559337459c6810f48df137aab49436c750f748917320f78418e4cf65993fa04b33572c4313b067a039f333de80e39e238680ff4d5d2581c69d2c0c3ad8e0db1f30619127cd1dcd00c7a4452824c80a321359d73cd8c129c1b1b0acc726030a414b31299f9989d1952a4d0ccc23073819f861c973c2133d3b904aacf6ceeda9a8c12bc5b219929de21f9005900a99bf9f8e9a8a159728a5477f5d77847367719305373b1788b14668d4c9337d95b2437ef5d03b9c84df10a28fc866fc05c9522fbf0b369c6b8d0c7ffb1fc6db57effb0bfc68acd7657ee0fedba63599dea73d18a7dca525ec6ed3aa16293a81d2bf232beb1bfc578d58a416731ad641da95381b1e3f496ca939432c9f3bb7b8c450f8fb39994b18c93493a36fda2a7b9aa8ae3e4b278b69b192aa822499dc2d6cddc68b94ff697f46c7fdd255ad6f5e2dbdbfac7c3cbd8ecf7f7baf30f538f0154</data> + </image> + <image name="image2"> + <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c6b53006ab440370316528264b4c198450c5808a94d1ed00aac214832b43124b544ec414d34b4c4c441103f11341120831309758313d0cf3b0840b7258d55a73010092c14eca</data> + </image> +</images> +<connections> + <connection> + <sender>buttonApply</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>applyClicked()</slot> + </connection> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>okClicked()</slot> + </connection> + <connection> + <sender>listColumns</sender> + <signal>currentChanged(QListBoxItem*)</signal> + <receiver>TableEditorBase</receiver> + <slot>currentColumnChanged(QListBoxItem*)</slot> + </connection> + <connection> + <sender>listColumns</sender> + <signal>selectionChanged(QListBoxItem*)</signal> + <receiver>TableEditorBase</receiver> + <slot>currentColumnChanged(QListBoxItem*)</slot> + </connection> + <connection> + <sender>editColumnText</sender> + <signal>textChanged(const QString&)</signal> + <receiver>TableEditorBase</receiver> + <slot>columnTextChanged(const QString&)</slot> + </connection> + <connection> + <sender>buttonNewColumn</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>newColumnClicked()</slot> + </connection> + <connection> + <sender>buttonDeleteColumn</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>deleteColumnClicked()</slot> + </connection> + <connection> + <sender>buttonColumnUp</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>columnUpClicked()</slot> + </connection> + <connection> + <sender>buttonColumnDown</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>columnDownClicked()</slot> + </connection> + <connection> + <sender>comboFields</sender> + <signal>activated(const QString&)</signal> + <receiver>TableEditorBase</receiver> + <slot>currentFieldChanged(const QString&)</slot> + </connection> + <connection> + <sender>listRows</sender> + <signal>selectionChanged(QListBoxItem*)</signal> + <receiver>TableEditorBase</receiver> + <slot>currentRowChanged(QListBoxItem*)</slot> + </connection> + <connection> + <sender>listRows</sender> + <signal>currentChanged(QListBoxItem*)</signal> + <receiver>TableEditorBase</receiver> + <slot>currentRowChanged(QListBoxItem*)</slot> + </connection> + <connection> + <sender>buttonNewRow</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>newRowClicked()</slot> + </connection> + <connection> + <sender>buttonDeleteRow</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>deleteRowClicked()</slot> + </connection> + <connection> + <sender>buttonRowUp</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>rowUpClicked()</slot> + </connection> + <connection> + <sender>buttonRowDown</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>rowDownClicked()</slot> + </connection> + <connection> + <sender>buttonDeleteRowPixmap</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>deleteRowPixmapClicked()</slot> + </connection> + <connection> + <sender>buttonChooseRowPixmap</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>chooseRowPixmapClicked()</slot> + </connection> + <connection> + <sender>buttonDeleteColPixmap</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>deleteColPixmapClicked()</slot> + </connection> + <connection> + <sender>editRowText</sender> + <signal>textChanged(const QString&)</signal> + <receiver>TableEditorBase</receiver> + <slot>rowTextChanged(const QString&)</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>reject()</slot> + </connection> + <connection> + <sender>buttonChooseColPixmap</sender> + <signal>clicked()</signal> + <receiver>TableEditorBase</receiver> + <slot>chooseColPixmapClicked()</slot> + </connection> + <slot access="protected" language="C++" returnType="void">init()</slot> + <slot access="protected" language="C++" returnType="void">destroy()</slot> + <slot access="protected" language="C++" returnType="void">applyClicked()</slot> + <slot access="protected" language="C++" returnType="void">chooseRowPixmapClicked()</slot> + <slot access="protected" language="C++" returnType="void">columnTextChanged( const QString & )</slot> + <slot access="protected" language="C++" returnType="void">columnUpClicked()</slot> + <slot access="protected" language="C++" returnType="void">currentColumnChanged( QListBoxItem * )</slot> + <slot access="protected" language="C++" returnType="void">currentFieldChanged( const QString & )</slot> + <slot access="protected" language="C++" returnType="void">currentRowChanged( QListBoxItem * )</slot> + <slot access="protected" language="C++" returnType="void">deleteColPixmapClicked()</slot> + <slot access="protected" language="C++" returnType="void">deleteColumnClicked()</slot> + <slot access="protected" language="C++" returnType="void">deleteRowClicked()</slot> + <slot access="protected" language="C++" returnType="void">deleteRowPixmapClicked()</slot> + <slot access="protected" language="C++" returnType="void">newColumnClicked()</slot> + <slot access="protected" language="C++" returnType="void">newRowClicked()</slot> + <slot access="protected" language="C++" returnType="void">chooseColPixmapClicked()</slot> + <slot access="protected" language="C++" returnType="void">okClicked()</slot> + <slot access="protected" language="C++" returnType="void">rowDownClicked()</slot> + <slot access="protected" language="C++" returnType="void">rowTextChanged( const QString & )</slot> + <slot access="protected" language="C++" returnType="void">rowUpClicked()</slot> + <slot access="protected" language="C++" returnType="void">columnDownClicked()</slot> +</connections> +<tabstops> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> + <tabstop>table</tabstop> + <tabstop>TabWidget</tabstop> + <tabstop>listColumns</tabstop> + <tabstop>buttonNewColumn</tabstop> + <tabstop>buttonDeleteColumn</tabstop> + <tabstop>comboFields</tabstop> + <tabstop>editColumnText</tabstop> + <tabstop>buttonDeleteColPixmap</tabstop> + <tabstop>buttonChooseColPixmap</tabstop> + <tabstop>buttonColumnUp</tabstop> + <tabstop>buttonColumnDown</tabstop> + <tabstop>buttonApply</tabstop> + <tabstop>listRows</tabstop> + <tabstop>buttonNewRow</tabstop> + <tabstop>buttonDeleteRow</tabstop> + <tabstop>editRowText</tabstop> + <tabstop>buttonDeleteRowPixmap</tabstop> + <tabstop>buttonChooseRowPixmap</tabstop> + <tabstop>buttonRowUp</tabstop> + <tabstop>buttonRowDown</tabstop> + <tabstop>buttonHelp</tabstop> +</tabstops> +</UI> diff --git a/kommander/editor/tableeditorimpl.cpp b/kommander/editor/tableeditorimpl.cpp new file mode 100644 index 00000000..d8cfc70d --- /dev/null +++ b/kommander/editor/tableeditorimpl.cpp @@ -0,0 +1,464 @@ +#include "tableeditorimpl.h" +#ifndef QT_NO_TABLE +#include <qtable.h> +#endif +#include "formwindow.h" +#include <qlabel.h> +#include <qcombobox.h> +#include <qheader.h> +#include <qlistbox.h> +#include <qlineedit.h> +#include <qpushbutton.h> +#include "pixmapchooser.h" +#include "command.h" +#include <qvaluelist.h> +#include <qtabwidget.h> +#ifndef KOMMANDER +#include "project.h" +#endif +#include "metadatabase.h" +#include "mainwindow.h" + +#include <klocale.h> + +TableEditor::TableEditor( QWidget* parent, QWidget *editWidget, FormWindow *fw, const char* name, bool modal, WFlags fl ) + : TableEditorBase( parent, name, modal, fl ), +#ifndef QT_NO_TABLE + editTable( (QTable*)editWidget ), +#endif + formWindow( fw ) +{ + connect( buttonHelp, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); +#ifndef QT_NO_TABLE + labelColumnPixmap->setText( "" ); + labelRowPixmap->setText( "" ); + + if ( !editTable->inherits( "QDataTable" ) ) { + labelFields->hide(); + comboFields->hide(); + labelTable->hide(); + labelTableValue->hide(); + } +#ifndef QT_NO_SQL + if ( editTable->inherits( "QDataTable" ) ) { + // ## why does this behave weird? + // TabWidget->removePage( rows_tab ); + // rows_tab->hide(); + // ## do this in the meantime... + TabWidget->setTabEnabled( rows_tab, false ); + } + + if ( formWindow->project() && editTable->inherits( "QDataTable" ) ) { + QStringList lst = MetaDataBase::fakeProperty( editTable, "database" ).toStringList(); + if ( lst.count() == 2 && !lst[ 0 ].isEmpty() && !lst[ 1 ].isEmpty() ) { + QStringList fields; + fields << i18n( "<no field>" ); + fields += formWindow->project()->databaseFieldList( lst[ 0 ], lst[ 1 ] ); + comboFields->insertStringList( fields ); + } + if ( !lst[ 1 ].isEmpty() ) + labelTableValue->setText( lst[ 1 ] ); + } +#endif + + readFromTable(); +#endif +} + +TableEditor::~TableEditor() +{ +} + +void TableEditor::columnDownClicked() +{ + if ( listColumns->currentItem() == -1 || + listColumns->currentItem() == (int)listColumns->count() - 1 || + listColumns->count() < 2 ) + return; + saveFieldMap(); + int index = listColumns->currentItem() + 1; + QListBoxItem *i = listColumns->item( listColumns->currentItem() ); + listColumns->takeItem( i ); + listColumns->insertItem( i, index ); + listColumns->setCurrentItem( i ); + readColumns(); + restoreFieldMap(); + currentColumnChanged( i ); +} + +void TableEditor::columnTextChanged( const QString &s ) +{ + if ( listColumns->currentItem() == -1 ) + return; + listColumns->blockSignals( true ); + listColumns->changeItem( s, listColumns->currentItem() ); + listColumns->blockSignals( false ); +#ifndef QT_NO_TABLE + if ( table->horizontalHeader()->iconSet( listColumns->currentItem() ) ) + table->horizontalHeader()->setLabel( listColumns->currentItem(), + *table->horizontalHeader()->iconSet( listColumns->currentItem() ), s ); + else + table->horizontalHeader()->setLabel( listColumns->currentItem(), s ); +#endif +} + +void TableEditor::columnUpClicked() +{ + if ( listColumns->currentItem() <= 0 || + listColumns->count() < 2 ) + return; + saveFieldMap(); + int index = listColumns->currentItem() - 1; + QListBoxItem *i = listColumns->item( listColumns->currentItem() ); + listColumns->takeItem( i ); + listColumns->insertItem( i, index ); + listColumns->setCurrentItem( i ); + readColumns(); + restoreFieldMap(); + currentColumnChanged( i ); +} + +void TableEditor::currentColumnChanged( QListBoxItem *i ) +{ + if ( !i ) + return; + editColumnText->blockSignals( true ); + editColumnText->setText( i->text() ); + if ( i->pixmap() ) + labelColumnPixmap->setPixmap( *i->pixmap() ); + else + labelColumnPixmap->setText( "" ); + editColumnText->blockSignals( false ); + +#ifndef QT_NO_TABLE + if ( editTable->inherits( "QDataTable" ) ) { + QString s = *fieldMap.find( listColumns->index( i ) ); + if ( s.isEmpty() ) + comboFields->setCurrentItem( 0 ); + else if ( comboFields->listBox()->findItem( s ) ) + comboFields->setCurrentItem( comboFields->listBox()->index( comboFields->listBox()->findItem( s ) ) ); + else + comboFields->lineEdit()->setText( s ); + } +#endif +} + +void TableEditor::currentFieldChanged( const QString &s ) +{ + if ( listColumns->currentItem() == -1 ) + return; + fieldMap.remove( listColumns->currentItem() ); + fieldMap.insert( listColumns->currentItem(), s ); + editColumnText->blockSignals( true ); //## necessary + QString newColText = s.mid(0,1).upper() + s.mid(1); + editColumnText->setText( newColText ); + columnTextChanged( newColText ); + editColumnText->blockSignals( false ); +} + +void TableEditor::currentRowChanged( QListBoxItem *i ) +{ + if ( !i ) + return; + editRowText->blockSignals( true ); + editRowText->setText( i->text() ); + if ( i->pixmap() ) + labelRowPixmap->setPixmap( *i->pixmap() ); + else + labelRowPixmap->setText( "" ); + editRowText->blockSignals( false ); +} + +void TableEditor::deleteColumnClicked() +{ + if ( listColumns->currentItem() == -1 ) + return; +#ifndef QT_NO_TABLE + table->setNumCols( table->numCols() - 1 ); + delete listColumns->item( listColumns->currentItem() ); + readColumns(); + if ( listColumns->firstItem() ) { + listColumns->setCurrentItem( listColumns->firstItem() ); + listColumns->setSelected( listColumns->firstItem(), true ); + } +#endif +} + +void TableEditor::deleteRowClicked() +{ + if ( listRows->currentItem() == -1 ) + return; +#ifndef QT_NO_TABLE + table->setNumRows( table->numRows() - 1 ); + delete listRows->item( listRows->currentItem() ); + readRows(); + if ( listRows->firstItem() ) { + listRows->setCurrentItem( listRows->firstItem() ); + listRows->setSelected( listRows->firstItem(), true ); + } +#endif +} + +void TableEditor::newColumnClicked() +{ +#ifndef QT_NO_TABLE + table->setNumCols( table->numCols() + 1 ); + QMap<QString, bool> m; + for ( int i = 0; i < table->numCols() - 1; ++i ) + m.insert( table->horizontalHeader()->label( i ), true ); + int n = table->numCols() - 1; + QString t = QString::number( n ); + while ( m.find( t ) != m.end() ) + t = QString::number( ++n ); + table->horizontalHeader()->setLabel( table->numCols() - 1, t ); + listColumns->insertItem( t ); + QListBoxItem *item = listColumns->item( listColumns->count() - 1 ); + listColumns->setCurrentItem( item ); + listColumns->setSelected( item, true ); + if ( editTable->inherits( "QDataTable" ) ) { + comboFields->setFocus(); + } else { + editColumnText->setFocus(); + editColumnText->selectAll(); + } +#endif +} + +void TableEditor::newRowClicked() +{ +#ifndef QT_NO_TABLE + table->setNumRows( table->numRows() + 1 ); + QMap<QString, bool> m; + for ( int i = 0; i < table->numRows() - 1; ++i ) + m.insert( table->verticalHeader()->label( i ), true ); + int n = table->numRows() - 1; + QString t = QString::number( n ); + while ( m.find( t ) != m.end() ) + t = QString::number( ++n ); + table->verticalHeader()->setLabel( table->numRows() - 1, t ); + listRows->insertItem( t ); + QListBoxItem *item = listRows->item( listRows->count() - 1 ); + listRows->setCurrentItem( item ); + listRows->setSelected( item, true ); +#endif +} + +void TableEditor::okClicked() +{ + applyClicked(); + accept(); +} + +void TableEditor::rowDownClicked() +{ + if ( listRows->currentItem() == -1 || + listRows->currentItem() == (int)listRows->count() - 1 || + listRows->count() < 2 ) + return; + int index = listRows->currentItem() + 1; + QListBoxItem *i = listRows->item( listRows->currentItem() ); + listRows->takeItem( i ); + listRows->insertItem( i, index ); + listRows->setCurrentItem( i ); + readRows(); +} + +void TableEditor::rowTextChanged( const QString &s ) +{ + if ( listRows->currentItem() == -1 ) + return; +#ifndef QT_NO_TABLE + listRows->changeItem( s, listRows->currentItem() ); + if ( table->verticalHeader()->iconSet( listRows->currentItem() ) ) + table->verticalHeader()->setLabel( listRows->currentItem(), + *table->verticalHeader()->iconSet( listRows->currentItem() ), s ); + else + table->verticalHeader()->setLabel( listRows->currentItem(), s ); +#endif +} + +void TableEditor::rowUpClicked() +{ + if ( listRows->currentItem() <= 0 || + listRows->count() < 2 ) + return; + int index = listRows->currentItem() - 1; + QListBoxItem *i = listRows->item( listRows->currentItem() ); + listRows->takeItem( i ); + listRows->insertItem( i, index ); + listRows->setCurrentItem( i ); + readRows(); +} + +void TableEditor::applyClicked() +{ + QValueList<PopulateTableCommand::Row> rows; + QValueList<PopulateTableCommand::Column> cols; + + int i = 0; +#ifndef QT_NO_TABLE + for ( i = 0; i < table->horizontalHeader()->count(); ++i ) { + PopulateTableCommand::Column col; + col.text = table->horizontalHeader()->label( i ); + if ( table->horizontalHeader()->iconSet( i ) ) + col.pix = table->horizontalHeader()->iconSet( i )->pixmap(); + col.field = *fieldMap.find( i ); + cols.append( col ); + } + for ( i = 0; i < table->verticalHeader()->count(); ++i ) { + PopulateTableCommand::Row row; + row.text = table->verticalHeader()->label( i ); + if ( table->verticalHeader()->iconSet( i ) ) + row.pix = table->verticalHeader()->iconSet( i )->pixmap(); + rows.append( row ); + } + PopulateTableCommand *cmd = new PopulateTableCommand( i18n("Edit Rows and Columns of '%1' " ).arg( editTable->name() ), + formWindow, editTable, rows, cols ); + cmd->execute(); + formWindow->commandHistory()->addCommand( cmd ); +#endif +} + +void TableEditor::chooseRowPixmapClicked() +{ + if ( listRows->currentItem() == -1 ) + return; + QPixmap pix; + if ( listRows->item( listRows->currentItem() )->pixmap() ) + pix = qChoosePixmap( this, formWindow, *listRows->item( listRows->currentItem() )->pixmap() ); + else + pix = qChoosePixmap( this, formWindow, QPixmap() ); + + if ( pix.isNull() ) + return; + +#ifndef QT_NO_TABLE + table->verticalHeader()->setLabel( listRows->currentItem(), pix, table->verticalHeader()->label( listRows->currentItem() ) ); + listRows->changeItem( pix, listRows->currentText(), listRows->currentItem() ); +#endif +} + +void TableEditor::deleteRowPixmapClicked() +{ + if ( listRows->currentItem() == -1 ) + return; +#ifndef QT_NO_TABLE + table->verticalHeader()->setLabel( listRows->currentItem(), QPixmap(), table->verticalHeader()->label( listRows->currentItem() ) ); + listRows->changeItem( listRows->currentText(), listRows->currentItem() ); +#endif +} + +void TableEditor::chooseColPixmapClicked() +{ + if ( listColumns->currentItem() == -1 ) + return; + QPixmap pix; + if ( listColumns->item( listColumns->currentItem() )->pixmap() ) + pix = qChoosePixmap( this, formWindow, *listColumns->item( listColumns->currentItem() )->pixmap() ); + else + pix = qChoosePixmap( this, formWindow, QPixmap() ); + + if ( pix.isNull() ) + return; +#ifndef QT_NO_TABLE + table->horizontalHeader()->setLabel( listColumns->currentItem(), pix, table->horizontalHeader()->label( listColumns->currentItem() ) ); + listColumns->changeItem( pix, listColumns->currentText(), listColumns->currentItem() ); +#endif +} + +void TableEditor::deleteColPixmapClicked() +{ + if ( listColumns->currentItem() == -1 ) + return; +#ifndef QT_NO_TABLE + table->horizontalHeader()->setLabel( listColumns->currentItem(), QPixmap(), table->horizontalHeader()->label( listColumns->currentItem() ) ); + listColumns->changeItem( listColumns->currentText(), listColumns->currentItem() ); +#endif +} + +void TableEditor::readFromTable() +{ +#ifndef QT_NO_TABLE + QHeader *cols = editTable->horizontalHeader(); + table->setNumCols( cols->count() ); + QMap<QString, QString> columnFields = MetaDataBase::columnFields( editTable ); + for ( int i = 0; i < cols->count(); ++i ) { + if ( editTable->horizontalHeader()->iconSet( i ) ) { + table->horizontalHeader()->setLabel( i, *editTable->horizontalHeader()->iconSet( i ), + editTable->horizontalHeader()->label( i ) ); + listColumns->insertItem( editTable->horizontalHeader()->iconSet( i )->pixmap(), + editTable->horizontalHeader()->label( i ) ); + } else { + table->horizontalHeader()->setLabel( i, editTable->horizontalHeader()->label( i ) ); + listColumns->insertItem( editTable->horizontalHeader()->label( i ) ); + } + QString cf = *columnFields.find( editTable->horizontalHeader()->label( i ) ); + fieldMap.insert( i, cf ); + } + + if ( listColumns->firstItem() ) { + listColumns->setCurrentItem( listColumns->firstItem() ); + listColumns->setSelected( listColumns->firstItem(), true ); + } + + QHeader *rows = editTable->verticalHeader(); + table->setNumRows( rows->count() ); + for ( int j = 0; j < rows->count(); ++j ) { + if ( editTable->verticalHeader()->iconSet( j ) ) { + table->verticalHeader()->setLabel( j, *editTable->verticalHeader()->iconSet( j ), + editTable->verticalHeader()->label( j ) ); + listRows->insertItem( editTable->verticalHeader()->iconSet( j )->pixmap(), + editTable->verticalHeader()->label( j ) ); + } else { + table->verticalHeader()->setLabel( j, editTable->verticalHeader()->label( j ) ); + listRows->insertItem( editTable->verticalHeader()->label( j ) ); + } + } + + if ( listRows->firstItem() ) { + listRows->setCurrentItem( listRows->firstItem() ); + listRows->setSelected( listRows->firstItem(), true ); + } +#endif +} + +void TableEditor::readColumns() +{ + int j = 0; +#ifndef QT_NO_TABLE + for ( QListBoxItem *i = listColumns->firstItem(); i; i = i->next(), ++j ) { + if ( i->pixmap() ) + table->horizontalHeader()->setLabel( j, *i->pixmap(), i->text() ); + else + table->horizontalHeader()->setLabel( j, i->text() ); + } +#endif +} + +void TableEditor::readRows() +{ + int j = 0; +#ifndef QT_NO_TABLE + for ( QListBoxItem *i = listRows->firstItem(); i; i = i->next(), ++j ) { + if ( i->pixmap() ) + table->verticalHeader()->setLabel( j, *i->pixmap(), i->text() ); + else + table->verticalHeader()->setLabel( j, i->text() ); + } +#endif +} + +void TableEditor::saveFieldMap() +{ + tmpFieldMap.clear(); + for ( QMap<int, QString>::Iterator it = fieldMap.begin(); it != fieldMap.end(); ++it ) + tmpFieldMap.insert( listColumns->item( it.key() ), *it ); +} + +void TableEditor::restoreFieldMap() +{ + fieldMap.clear(); + for ( QMap<QListBoxItem*, QString>::Iterator it = tmpFieldMap.begin(); it != tmpFieldMap.end(); ++it ) + fieldMap.insert( listColumns->index( it.key() ), *it ); +} +#include "tableeditorimpl.moc" diff --git a/kommander/editor/tableeditorimpl.h b/kommander/editor/tableeditorimpl.h new file mode 100644 index 00000000..8018bf92 --- /dev/null +++ b/kommander/editor/tableeditorimpl.h @@ -0,0 +1,56 @@ +#ifndef TABLEEDITOR_H +#define TABLEEDITOR_H + +#include "tableeditor.h" +#include <qmap.h> + +class QListBoxItem; +class QTable; +class FormWindow; + +class TableEditor : public TableEditorBase +{ + Q_OBJECT + +public: + TableEditor( QWidget* parent = 0, QWidget *editWidget = 0, FormWindow *fw = 0, + const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); + ~TableEditor(); + +protected slots: + void columnDownClicked(); + void columnTextChanged( const QString & ); + void columnUpClicked(); + void currentColumnChanged( QListBoxItem * ); + void currentFieldChanged( const QString & ); + void currentRowChanged( QListBoxItem * ); + void deleteColumnClicked(); + void deleteRowClicked(); + void newColumnClicked(); + void newRowClicked(); + void okClicked(); + void rowDownClicked(); + void rowTextChanged( const QString & ); + void rowUpClicked(); + void applyClicked(); + void chooseRowPixmapClicked(); + void deleteRowPixmapClicked(); + void chooseColPixmapClicked(); + void deleteColPixmapClicked(); + +private: + void readFromTable(); + void readColumns(); + void readRows(); + void saveFieldMap(); + void restoreFieldMap(); + +private: + QTable *editTable; + FormWindow *formWindow; + QMap<int, QString> fieldMap; + QMap<QListBoxItem*, QString> tmpFieldMap; + +}; + +#endif // TABLEEDITOR_H diff --git a/kommander/editor/templates/Configuration_Dialog.ui b/kommander/editor/templates/Configuration_Dialog.ui new file mode 100644 index 00000000..199f5b90 --- /dev/null +++ b/kommander/editor/templates/Configuration_Dialog.ui @@ -0,0 +1,156 @@ +<!DOCTYPE UI><UI version="3.1" stdsetdef="1"> +<class>MyDialog2</class> +<widget class="QDialog"> + <property name="name"> + <cstring>MyDialog2</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>597</width> + <height>364</height> + </rect> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QListBox" row="0" column="0"> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <property name="name"> + <cstring>listBox</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QTabWidget" row="0" column="1"> + <property name="name"> + <cstring>tabWidget</cstring> + </property> + <widget class="QWidget"> + <property name="name"> + <cstring>Widget2</cstring> + </property> + <attribute name="title"> + <string>Tab</string> + </attribute> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>Widget3</cstring> + </property> + <attribute name="title"> + <string>Tab</string> + </attribute> + </widget> + </widget> + <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2"> + <property name="name"> + <cstring>Layout1</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="accel"> + <string>F1</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + </hbox> + </widget> + </grid> +</widget> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>MyDialog2</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>MyDialog2</receiver> + <slot>reject()</slot> + </connection> +</connections> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kommander/editor/templates/Dialog_with_Buttons_(Bottom).ui b/kommander/editor/templates/Dialog_with_Buttons_(Bottom).ui new file mode 100644 index 00000000..77d77cb3 --- /dev/null +++ b/kommander/editor/templates/Dialog_with_Buttons_(Bottom).ui @@ -0,0 +1,114 @@ +<!DOCTYPE UI><UI version="3.1" stdsetdef="1"> +<class>MyDialog</class> +<widget class="QDialog"> + <property name="name"> + <cstring>MyDialog</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>511</width> + <height>282</height> + </rect> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout1</cstring> + </property> + <property name="geometry"> + <rect> + <x>20</x> + <y>240</y> + <width>476</width> + <height>33</height> + </rect> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="accel"> + <string>F1</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + </hbox> + </widget> +</widget> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>MyDialog</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>MyDialog</receiver> + <slot>reject()</slot> + </connection> +</connections> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kommander/editor/templates/Dialog_with_Buttons_(Right).ui b/kommander/editor/templates/Dialog_with_Buttons_(Right).ui new file mode 100644 index 00000000..fd2c01f0 --- /dev/null +++ b/kommander/editor/templates/Dialog_with_Buttons_(Right).ui @@ -0,0 +1,114 @@ +<!DOCTYPE UI><UI version="3.1" stdsetdef="1"> +<class>MyDialog</class> +<widget class="QDialog"> + <property name="name"> + <cstring>MyDialog</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>592</width> + <height>470</height> + </rect> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout5</cstring> + </property> + <property name="geometry"> + <rect> + <x>500</x> + <y>30</y> + <width>82</width> + <height>410</height> + </rect> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="accel"> + <string>F1</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Spacer1</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </vbox> + </widget> +</widget> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>MyDialog</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>MyDialog</receiver> + <slot>reject()</slot> + </connection> +</connections> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kommander/editor/templates/Makefile.am b/kommander/editor/templates/Makefile.am new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/kommander/editor/templates/Makefile.am diff --git a/kommander/editor/templates/Tab_Dialog.ui b/kommander/editor/templates/Tab_Dialog.ui new file mode 100644 index 00000000..a2ad9315 --- /dev/null +++ b/kommander/editor/templates/Tab_Dialog.ui @@ -0,0 +1,138 @@ +<!DOCTYPE UI><UI version="3.1" stdsetdef="1"> +<class>MyDialog1</class> +<widget class="QDialog"> + <property name="name"> + <cstring>MyDialog1</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>528</width> + <height>368</height> + </rect> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QTabWidget"> + <property name="name"> + <cstring>tabWidget</cstring> + </property> + <widget class="QWidget"> + <property name="name"> + <cstring>Widget8</cstring> + </property> + <attribute name="title"> + <string>Tab</string> + </attribute> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>Widget9</cstring> + </property> + <attribute name="title"> + <string>Tab</string> + </attribute> + </widget> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout1</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="accel"> + <string>F1</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<connections> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>MyDialog1</receiver> + <slot>accept()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>MyDialog1</receiver> + <slot>reject()</slot> + </connection> +</connections> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kommander/editor/templates/cpp_template b/kommander/editor/templates/cpp_template new file mode 100644 index 00000000..6afef5d4 --- /dev/null +++ b/kommander/editor/templates/cpp_template @@ -0,0 +1,16 @@ +/*************************************************************************** + |FILENAME| - description + ------------------- + begin : |DATE| + copyright : (C) |YEAR| by |AUTHOR| + email : |EMAIL| + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ diff --git a/kommander/editor/templates/header_template b/kommander/editor/templates/header_template new file mode 100644 index 00000000..6afef5d4 --- /dev/null +++ b/kommander/editor/templates/header_template @@ -0,0 +1,16 @@ +/*************************************************************************** + |FILENAME| - description + ------------------- + begin : |DATE| + copyright : (C) |YEAR| by |AUTHOR| + email : |EMAIL| + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ diff --git a/kommander/editor/timestamp.cpp b/kommander/editor/timestamp.cpp new file mode 100644 index 00000000..b0d42e03 --- /dev/null +++ b/kommander/editor/timestamp.cpp @@ -0,0 +1,81 @@ + /********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "timestamp.h" +#include <qfile.h> +#include <qfileinfo.h> + +class QTimer; + +TimeStamp::TimeStamp( QObject *parent, const QString &f ) + : QObject( parent ), filename( f ), autoCheck( false ) +{ + timer = new QTimer( this ); + connect( timer, SIGNAL( timeout() ), this, SLOT( autoCheckTimeStamp() ) ); + update(); +} + +void TimeStamp::setFileName( const QString &f ) +{ + filename = f; + update(); +} + +QString TimeStamp::fileName() const +{ + return filename; +} + +void TimeStamp::setAutoCheckEnabled( bool a ) +{ + autoCheck = a; + if ( autoCheck ) + timer->start( 5000 ); + else + timer->stop(); +} + +void TimeStamp::update() +{ + QFile f( filename ); + if ( !f.exists() ) + return; + lastTimeStamp = QFileInfo( f ).lastModified(); +} + +bool TimeStamp::isUpToDate() const +{ + QFile f( filename ); + if ( !f.exists() ) + return true; + return lastTimeStamp == QFileInfo( f ).lastModified(); +} + +bool TimeStamp::isAutoCheckEnabled() const +{ + return autoCheck; +} + +void TimeStamp::autoCheckTimeStamp() +{ + if ( !isUpToDate() ) + emit timeStampChanged(); +} +#include "timestamp.moc" diff --git a/kommander/editor/timestamp.h b/kommander/editor/timestamp.h new file mode 100644 index 00000000..06d50507 --- /dev/null +++ b/kommander/editor/timestamp.h @@ -0,0 +1,57 @@ + /********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef TIMESTAMP_H +#define TIMESTAMP_H + +#include <qobject.h> +#include <qdatetime.h> +#include <qtimer.h> + +class TimeStamp : public QObject +{ + Q_OBJECT + +public: + TimeStamp( QObject *parent, const QString &f ); + + void setFileName( const QString &f ); + QString fileName() const; + void setAutoCheckEnabled( bool a ); + void update(); + + bool isUpToDate() const; + bool isAutoCheckEnabled() const; + +signals: + void timeStampChanged(); + +private slots: + void autoCheckTimeStamp(); + +private: + QDateTime lastTimeStamp; + QString filename; + bool autoCheck; + QTimer *timer; + +}; + +#endif diff --git a/kommander/editor/widgetdatabase.cpp b/kommander/editor/widgetdatabase.cpp new file mode 100644 index 00000000..4de615d0 --- /dev/null +++ b/kommander/editor/widgetdatabase.cpp @@ -0,0 +1,1029 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#if !defined(UIC) +#include "pixmapchooser.h" +#endif +#ifndef KOMMANDER +#include "widgetinterface.h" +#endif +#include "widgetdatabase.h" + +#include <qapplication.h> +//#define NO_STATIC_COLORS +#include "globaldefs.h" +#include <qstrlist.h> +#include <qdict.h> +#include <qfile.h> +#include <qtextstream.h> +#include <qcleanuphandler.h> + +#include <qfeatures.h> + +#include <stdlib.h> + +#include <kommanderfactory.h> +#include <klocale.h> + +const int dbsize = 300; +const int dbcustom = 200; +const int dbdictsize = 211; +static WidgetDatabaseRecord* widget_db[ dbsize ]; +static QDict<int> *className2Id = 0; +static int dbcount = 0; +static int dbcustomcount = 200; +static QStrList *wGroups; +static QStrList *invisibleGroups; +static bool whatsThisLoaded = false; +#ifndef KOMMANDER +static QPluginManager<WidgetInterface> *widgetPluginManager = 0; +#endif +static bool plugins_set_up = false; +static bool was_in_setup = false; + +#ifndef KOMMANDER +QCleanupHandler<QPluginManager<WidgetInterface> > cleanup_manager; +#endif + +WidgetDatabaseRecord::WidgetDatabaseRecord() +{ + isForm = false; + isContainer = false; + iconSet = 0; + nameCounter = 0; +} + +WidgetDatabaseRecord::~WidgetDatabaseRecord() +{ + delete iconSet; +} + + +/*! + \class WidgetDatabase widgetdatabase.h + \brief The WidgetDatabase class holds information about widgets + + The WidgetDatabase holds information about widgets like toolTip(), + iconName(), ... It works Id-based, so all access functions take the + widget id as parameter. To get the id for a widget (classname), use + idFromClassName(). + + All access functions are static. Having multiple widgetdatabases in + one application doesn't make sense anyway and so you don't need more + than an instance of the widgetdatabase. + + For creating widgets, layouts, etc. see WidgetFactory. +*/ + +/*! + Creates widget database. Does nothing. +*/ + +WidgetDatabase::WidgetDatabase() +{ +} + +/*! Sets up the widget database. If the static widgetdatabase already + exists, the functions returns immediately. +*/ + +void WidgetDatabase::setupDataBase( int id ) +{ + was_in_setup = true; +#ifndef UIC + Q_UNUSED(id) if (dbcount) + return; +#else + if (dbcount && id != -2) + return; + if (dbcount && !plugins_set_up) + { + setupPlugins(); + return; + } + if (dbcount && plugins_set_up) + return; +#endif + + wGroups = new QStrList; + invisibleGroups = new QStrList; + invisibleGroups->append("Forms"); + invisibleGroups->append("Temp"); + className2Id = new QDict < int >(dbdictsize); + className2Id->setAutoDelete(true); + + WidgetDatabaseRecord *r = 0; + + /* Designer widgets */ + r = new WidgetDatabaseRecord; + r->iconName = "pushbutton.xpm"; + r->name = "QPushButton"; + r->group = widgetGroup("Buttons"); + r->toolTip = i18n("Push Button"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "toolbutton.xpm"; + r->name = "QToolButton"; + r->group = widgetGroup("Buttons"); + r->toolTip = i18n("Tool Button"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "radiobutton.xpm"; + r->name = "QRadioButton"; + r->group = widgetGroup("Buttons"); + r->toolTip = i18n("Radio Button"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "checkbox.xpm"; + r->name = "QCheckBox"; + r->group = widgetGroup("Buttons"); + r->toolTip = i18n("Check Box"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "groupbox.xpm"; + r->name = "QGroupBox"; + r->group = widgetGroup("Containers"); + r->toolTip = i18n("Group Box"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "buttongroup.xpm"; + r->name = "QButtonGroup"; + r->group = widgetGroup("Containers"); + r->toolTip = i18n("Button Group"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "frame.xpm"; + r->name = "QFrame"; + r->group = widgetGroup("Containers"); + r->toolTip = i18n("Frame"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "tabwidget.xpm"; + r->name = "QTabWidget"; + r->group = widgetGroup("Containers"); + r->toolTip = i18n("Tabwidget"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "listbox.xpm"; + r->name = "QListBox"; + r->group = widgetGroup("Views"); + r->toolTip = i18n("List Box"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "listview.xpm"; + r->name = "QListView"; + r->group = widgetGroup("Views"); + r->toolTip = i18n("List View"); + append(r); + +#if !defined(QT_NO_ICONVIEW) || defined(UIC) + r = new WidgetDatabaseRecord; + r->iconName = "iconview.xpm"; + r->name = "QIconView"; + r->group = widgetGroup("Views"); + r->toolTip = i18n("Icon View"); + append(r); +#endif + +#if !defined(QT_NO_TABLE) + r = new WidgetDatabaseRecord; + r->iconName = "table.xpm"; + r->name = "QTable"; + r->group = widgetGroup("Views"); + r->toolTip = i18n("Table"); + append(r); +#endif + +#if !defined(QT_NO_SQL) + r = new WidgetDatabaseRecord; + r->iconName = "datatable.xpm"; + r->includeFile = "qdatatable.h"; + r->name = "QDataTable"; + r->group = widgetGroup("Database"); + r->toolTip = i18n("Data Table"); + append(r); +#endif + + r = new WidgetDatabaseRecord; + r->iconName = "lineedit.xpm"; + r->name = "QLineEdit"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Line Edit"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "spinbox.xpm"; + r->name = "QSpinBox"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Spin Box"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "dateedit.xpm"; + r->name = "QDateEdit"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Date Edit"); + r->includeFile = "qdatetimeedit.h"; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "timeedit.xpm"; + r->name = "QTimeEdit"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Time Edit"); + r->includeFile = "qdatetimeedit.h"; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "datetimeedit.xpm"; + r->name = "QDateTimeEdit"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Date-Time Edit"); + r->includeFile = "qdatetimeedit.h"; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "multilineedit.xpm"; + r->name = "QMultiLineEdit"; + r->group = widgetGroup("Temp"); + r->toolTip = i18n("Multi Line Edit"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "richtextedit.xpm"; + r->name = "QTextEdit"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Rich Text Edit"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "combobox.xpm"; + r->name = "QComboBox"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Combo Box"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "slider.xpm"; + r->name = "QSlider"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Slider"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "scrollbar.xpm"; + r->name = "QScrollBar"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Scrollbar"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "dial.xpm"; + r->name = "QDial"; + r->group = widgetGroup("Input"); + r->toolTip = i18n("Dial"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "label.xpm"; + r->name = "QLabel"; + r->group = widgetGroup("Temp"); + r->toolTip = i18n("Label"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "lcdnumber.xpm"; + r->name = "QLCDNumber"; + r->group = widgetGroup("Display"); + r->toolTip = i18n("LCD Number"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "progress.xpm"; + r->name = "QProgressBar"; + r->group = widgetGroup("Display"); + r->toolTip = i18n("Progress Bar"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "textview.xpm"; + r->name = "QTextView"; + r->group = widgetGroup("Temp"); + r->toolTip = i18n("Text View"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "textbrowser.xpm"; + r->name = "QTextBrowser"; + r->group = widgetGroup("Display"); + r->toolTip = i18n("Text Browser"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "spacer.xpm"; + r->name = "Spacer"; + r->group = widgetGroup("Temp"); + r->toolTip = i18n("Spacer"); + r->whatsThis = + i18n("The Spacer provides horizontal and vertical spacing to be able to manipulate the behaviour of layouts."); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "QWidget"; + r->isForm = true; + r->group = widgetGroup("Forms"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "QDialog"; + r->group = widgetGroup("Forms"); + r->isForm = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "QWizard"; + r->group = widgetGroup("Forms"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "QDesignerWizard"; + r->group = widgetGroup("Forms"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "QLayoutWidget"; + r->group = widgetGroup("Temp"); + r->includeFile = ""; + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "QSplitter"; + r->group = widgetGroup("Temp"); + r->includeFile = "qsplitter.h"; + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "tabwidget.xpm"; + r->name = "QDesignerTabWidget"; + r->group = widgetGroup("Temp"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "tabwidget.xpm"; + r->name = "QDesignerWidget"; + r->group = widgetGroup("Temp"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "tabwidget.xpm"; + r->name = "QDesignerDialog"; + r->group = widgetGroup("Temp"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = ""; + r->name = "QMainWindow"; + r->includeFile = "qmainwindow.h"; + r->group = widgetGroup("Temp"); + r->isContainer = true; + append(r); + +#ifndef QT_NO_SQL + r = new WidgetDatabaseRecord; + r->name = "QDataBrowser"; + r->includeFile = "qdatabrowser.h"; + r->group = widgetGroup("Database"); + r->toolTip = "Data Browser"; + r->iconName = "databrowser.xpm"; + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "QDataView"; + r->includeFile = "qdataview.h"; + r->group = widgetGroup("Database"); + r->toolTip = "Data View"; + r->iconName = "dataview.xpm"; + r->isContainer = true; + append(r); +#endif + + r = new WidgetDatabaseRecord; + r->name = "Dialog"; + r->group = widgetGroup("Forms"); + r->isContainer = true; + r->isForm = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "Wizard"; + r->group = widgetGroup("Forms"); + r->isContainer = true; + r->isForm = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "EditorDialog"; + r->group = widgetGroup("Temp"); + r->isContainer = true; + r->isForm = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "EditorWizard"; + r->group = widgetGroup("Temp"); + r->isContainer = true; + r->isForm = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "EditorTabWidget"; + r->group = widgetGroup("Temp"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->name = "EditorToolBox"; + r->group = widgetGroup("Temp"); + r->isContainer = true; + append(r); + + + /* Kommandr widgets */ + r = new WidgetDatabaseRecord; + r->iconName = "label.xpm"; + r->name = "Label"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("Text Label"); + r->whatsThis = i18n("The Text Label provides a widget to display static text."); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "pixlabel.xpm"; + r->name = "PixmapLabel"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("Pixmap Label"); + r->whatsThis = i18n("The Pixmap Label provides a widget to display pixmaps."); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "lineedit.xpm"; + r->name = "LineEdit"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A line edit"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "TextEdit"; + r->iconName = "textedit.png"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A rich text edit"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "TextBrowser"; + r->iconName = "textbrowser.png"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("Text Browser"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "listbox.xpm"; + r->name = "ListBox"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("List Box"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "combobox.xpm"; + r->name = "ComboBox"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A combo box"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "TreeWidget"; + r->iconName = "listview.png"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A tree widget"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "Table"; + r->iconName = "table.xmp"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A table widget"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "pushbutton.xpm"; + r->name = "ExecButton"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A button that when clicked, execute a command"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "closebutton.png"; + r->name = "CloseButton"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A button that closes the dialog it is in"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "Konsole"; + r->iconName = "konsole.png"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A listbox showing output of a script"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "FileSelector"; + r->iconName = "lineedit.xpm"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A widget made up of a line edit and push button, for selecting files and folders"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "checkbox.xpm"; + r->name = "CheckBox"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A check box"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "radiobutton.xpm"; + r->name = "RadioButton"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A radio button"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "buttongroup.xpm"; + r->name = "ButtonGroup"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A widget for grouping buttons together"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "groupbox.xpm"; + r->name = "GroupBox"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A widget for grouping other widgets together"); + r->isContainer = true; + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "tabwidget.xpm"; + r->name = "TabWidget"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A widget with tabs"); + r->isContainer = true; + append(r); + + +// r = new WidgetDatabaseRecord; +// r->iconName = ""; +// r->name = "ToolBox"; +// r->group = widgetGroup("Kommander"); +// r->toolTip = ""; +// r->isContainer = true; +// append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "spinbox.xpm"; + r->name = "SpinBoxInt"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A spin box"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "Slider"; + r->iconName = "slider.png"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("Slider"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "RichTextEditor"; + r->iconName = "richtextedit.xpm"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A small rich text editor"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "StatusBar"; + r->iconName = "statusbar.png"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A status bar"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "ProgressBar"; + r->iconName = "progress.png"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A progress bar"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "ScriptObject"; + r->iconName = "shellscript.png"; + r->group = widgetGroup( "Kommander" ); + r->toolTip = i18n("A hidden script container"); + append(r); + + r = new WidgetDatabaseRecord; + r->name = "Timer"; + r->iconName = "timer.png"; + r->group = widgetGroup( "Kommander" ); + r->toolTip = i18n("A timer for running scripts periodically"); + append(r); + + r = new WidgetDatabaseRecord; + r->iconName = "datepicker.xpm"; + r->name = "DatePicker"; + r->group = widgetGroup("Kommander"); + r->toolTip = i18n("A date selection widget"); + append(r); + +#ifndef UIC + setupPlugins(); +#endif +} + +void WidgetDatabase::setupPlugins() +{ + if (plugins_set_up) + return; + //qDebug("WidgetDatabase::setupPlugins"); + plugins_set_up = true; + FeatureList widgets = KommanderFactory::featureList(); + //qDebug("num features = %d", widgets.count()); + for (FeatureList::Iterator it = widgets.begin(); it != widgets.end(); ++it) + { + if (hasWidget(it.key())) + continue; + WidgetDatabaseRecord *r = new WidgetDatabaseRecord; + + QString grp = (*it).group; + if (grp.isEmpty()) + grp = "Kommander"; + r->group = widgetGroup(grp); + r->toolTip = (*it).toolTip; + r->iconSet = (*it).iconSet; + r->whatsThis = (*it).whatsThis; + r->isContainer = (*it).isContainer; + r->name = it.key(); + append(r); + } +} + +/*! + Returns the number of elements in the widget database. +*/ + +int WidgetDatabase::count() +{ + setupDataBase( -1 ); + return dbcount; +} + +/*! + Returns the id at which the ids of custom widgets start. +*/ + +int WidgetDatabase::startCustom() +{ + setupDataBase( -1 ); + return dbcustom; +} + +/*! + Returns the iconset which represents the class registered as \a id. +*/ + +QIconSet WidgetDatabase::iconSet( int id ) +{ + setupDataBase( id ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return QIconSet(); +#if !defined(UIC) && !defined(RESOURCE) + if ( !r->iconSet ) + r->iconSet = new QIconSet( PixmapChooser::loadPixmap( r->iconName, PixmapChooser::Small ), + PixmapChooser::loadPixmap( r->iconName, PixmapChooser::Large ) ); + return *r->iconSet; +#else + return QIconSet(); +#endif +} + +/*! + Returns the classname of the widget which is registered as \a id. +*/ + +QString WidgetDatabase::className( int id ) +{ + setupDataBase( id ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return QString::null; + return r->name; +} + +/*! + Returns the group the widget registered as \a id belongs to. +*/ + +QString WidgetDatabase::group( int id ) +{ + setupDataBase( id ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return QString::null; + return r->group; +} + +/*! + Returns the tooltip text of the widget which is registered as \a id. +*/ + +QString WidgetDatabase::toolTip( int id ) +{ + setupDataBase( id ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return QString::null; + return r->toolTip; +} + +/*! + Returns the what's this? text of the widget which is registered as \a id. +*/ + +QString WidgetDatabase::whatsThis( int id ) +{ + setupDataBase( id ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return QString::null; + return r->whatsThis; +} + +/*! + Returns the include file if the widget which is registered as \a id. +*/ + +QString WidgetDatabase::includeFile( int id ) +{ + setupDataBase( id ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return QString::null; + if ( r->includeFile.isNull() ) + return r->name.lower() + ".h"; + return r->includeFile; +} + +/*! Returns whether the widget registered as \a id is a form. +*/ +bool WidgetDatabase::isForm( int id ) +{ + setupDataBase( id ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return false; + return r->isForm; +} + +/*! Returns whether the widget registered as \a id can have children. +*/ + +bool WidgetDatabase::isContainer( int id ) +{ + setupDataBase( id ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return false; + return r->isContainer || r->isForm; +} + +QString WidgetDatabase::createWidgetName( int id ) +{ + setupDataBase( id ); + QString n = className( id ); + if ( n == "QLayoutWidget" ) + n = "Layout"; + if ( n[ 0 ] == 'Q' ) + n = n.mid( 1 ); + WidgetDatabaseRecord *r = at( id ); + if ( !r ) + return n; + n += QString::number( ++r->nameCounter ); + return n; +} + +/*! Returns the id for \a name or -1 if \a name is unknown. + */ +int WidgetDatabase::idFromClassName( const QString &name ) +{ + setupDataBase( -1 ); + if ( name.isEmpty() ) + return 0; + int *i = className2Id->find( name ); + if ( i ) + return *i; + if ( name == "FormWindow" ) + return idFromClassName( "QLayoutWidget" ); +#ifdef UIC + setupDataBase( -2 ); + i = className2Id->find( name ); + if ( i ) + return *i; +#endif + return -1; +} + +bool WidgetDatabase::hasWidget( const QString &name ) +{ + return className2Id->find( name ) != 0; +} + +WidgetDatabaseRecord *WidgetDatabase::at( int index ) +{ + if ( index < 0 ) + return 0; + if ( index >= dbcustom && index < dbcustomcount ) + return widget_db[ index ]; + if ( index < dbcount ) + return widget_db[ index ]; + return 0; +} + +void WidgetDatabase::insert( int index, WidgetDatabaseRecord *r ) +{ + if ( index < 0 || index >= dbsize ) + return; + widget_db[ index ] = r; + className2Id->insert( r->name, new int( index ) ); + if ( index < dbcustom ) + dbcount = QMAX( dbcount, index ); +} + +void WidgetDatabase::append( WidgetDatabaseRecord *r ) +{ + if ( !was_in_setup ) + setupDataBase( -1 ); + insert( dbcount++, r ); +} + +QString WidgetDatabase::widgetGroup( const QString &g ) +{ + if ( wGroups->find( g ) == -1 ) + wGroups->append( g ); + return g; +} + +bool WidgetDatabase::isGroupEmpty( const QString &grp ) +{ + WidgetDatabaseRecord *r = 0; + for ( int i = 0; i < dbcount; ++i ) { + if ( !( r = widget_db[ i ] ) ) + continue; + if ( r->group == grp ) + { + // FIXME + if(r->group == "Kommander") + return false; + + if(r->name[0] != 'Q') + return false; + } + } + return true; +} + +QString WidgetDatabase::widgetGroup( int i ) +{ + setupDataBase( -1 ); + if ( i >= 0 && i < (int)wGroups->count() ) + return wGroups->at( i ); + return QString::null; +} + +int WidgetDatabase::numWidgetGroups() +{ + setupDataBase( -1 ); + return wGroups->count(); +} + +bool WidgetDatabase::isGroupVisible( const QString &g ) +{ + setupDataBase( -1 ); + return invisibleGroups->find( g ) == -1; +} + +int WidgetDatabase::addCustomWidget( WidgetDatabaseRecord *r ) +{ + insert( dbcustomcount++, r ); + return dbcustomcount - 1; +} + +bool WidgetDatabase::isCustomWidget( int id ) +{ + if ( id >= dbcustom && id < dbcustomcount ) + return true; + return false; +} + +bool WidgetDatabase::isWhatsThisLoaded() +{ + return whatsThisLoaded; +} + +void WidgetDatabase::loadWhatsThis( const QString &docPath ) +{ + QString whatsthisFile = docPath + "/whatsthis"; + QFile f( whatsthisFile ); + if ( !f.open( IO_ReadOnly ) ) + return; + QTextStream ts( &f ); + while ( !ts.atEnd() ) { + QString s = ts.readLine(); + QStringList l = QStringList::split( " | ", s ); + int id = idFromClassName( l[ 1 ] ); + WidgetDatabaseRecord *r = at( id ); + if ( r ) + r->whatsThis = l[ 0 ]; + } + whatsThisLoaded = true; +} + + +// ### Qt 3.1: make these publically accessible via QWidgetDatabase API +#ifndef KOMMANDER +#if defined(UIC) +bool dbnounload = false; +QStringList *dbpaths = 0; +#endif + +QPluginManager<WidgetInterface> *widgetManager() +{ + if ( !widgetPluginManager ) { +#ifndef KOMMANDER + widgetPluginManager = new QPluginManager<WidgetInterface>( IID_Widget, QApplication::libraryPaths(), "/designer" ); +#else + widgetPluginManager = new QPluginManager<WidgetInterface>( IID_Widget, QApplication::libraryPaths(), "" ); +#endif + + cleanup_manager.add( &widgetPluginManager ); +#if defined(UIC) + if ( dbnounload ) + widgetPluginManager->setAutoUnload( false ); + if ( dbpaths ) { + QStringList::ConstIterator it = dbpaths->begin(); + for ( ; it != dbpaths->end(); ++it ) + widgetPluginManager->addLibraryPath( *it ); + } +#endif + } + return widgetPluginManager; +} +#endif diff --git a/kommander/editor/widgetdatabase.h b/kommander/editor/widgetdatabase.h new file mode 100644 index 00000000..ad1f123c --- /dev/null +++ b/kommander/editor/widgetdatabase.h @@ -0,0 +1,87 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef WIDGETDATABASE_H +#define WIDGETDATABASE_H + +#include <qiconset.h> +#include <qstring.h> +#ifndef KOMMANDER +#include "widgetinterface.h" // up here for GCC 2.7.* compatibility +#include <private/qpluginmanager_p.h> + + +extern QPluginManager<WidgetInterface> *widgetManager(); +#endif + +struct WidgetDatabaseRecord +{ + WidgetDatabaseRecord(); + ~WidgetDatabaseRecord(); + QString iconName, name, group, toolTip, whatsThis, includeFile; + uint isContainer : 1; + uint isForm : 1; + QIconSet *iconSet; + int nameCounter; +}; + +class WidgetDatabase : public Qt +{ +public: + WidgetDatabase(); + static void setupDataBase( int id ); + static void setupPlugins(); + + static int count(); + static int startCustom(); + + static QIconSet iconSet( int id ); + static QString className( int id ); + static QString group( int id ); + static QString toolTip( int id ); + static QString whatsThis( int id ); + static QString includeFile( int id ); + static bool isForm( int id ); + static bool isContainer( int id ); + + static int idFromClassName( const QString &name ); + static QString createWidgetName( int id ); + + static WidgetDatabaseRecord *at( int index ); + static void insert( int index, WidgetDatabaseRecord *r ); + static void append( WidgetDatabaseRecord *r ); + + static QString widgetGroup( const QString &g ); + static QString widgetGroup( int i ); + static int numWidgetGroups(); + static bool isGroupVisible( const QString &g ); + static bool isGroupEmpty( const QString &grp ); + + static int addCustomWidget( WidgetDatabaseRecord *r ); + static bool isCustomWidget( int id ); + + static bool isWhatsThisLoaded(); + static void loadWhatsThis( const QString &docPath ); + + static bool hasWidget( const QString &name ); + +}; + +#endif diff --git a/kommander/editor/widgetfactory.cpp b/kommander/editor/widgetfactory.cpp new file mode 100644 index 00000000..0dbab517 --- /dev/null +++ b/kommander/editor/widgetfactory.cpp @@ -0,0 +1,1928 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <klocale.h> +#include <kommanderfactory.h> + +#include "kmdrmainwindow.h" +#include <qvariant.h> // HP-UX compiler need this here +#include "widgetfactory.h" +#include "widgetdatabase.h" +#include "metadatabase.h" +#include "mainwindow.h" +#include "formwindow.h" +#include "pixmapchooser.h" +#include "layout.h" +#include "listboxeditorimpl.h" +#include "listvieweditorimpl.h" +#include "iconvieweditorimpl.h" +#include "multilineeditorimpl.h" +#ifndef KOMMANDER +#include "widgetinterface.h" +#endif +#ifndef QT_NO_TABLE +#include "tableeditorimpl.h" +#endif + +#include <qfeatures.h> + +#include <qpixmap.h> +#include <qgroupbox.h> +#include <qiconview.h> +#ifndef QT_NO_TABLE +#include <qtable.h> +#endif +#ifndef QT_NO_SQL +#include <qdatatable.h> +#endif +#include <qdatetimeedit.h> +#include <qlineedit.h> +#include <qspinbox.h> +#include <qmultilineedit.h> +#include <qtextedit.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qwidgetstack.h> +#include <qcombobox.h> +#include <qtabbar.h> +#include <qlistbox.h> +#include <qlistview.h> +#include <qobjectlist.h> +#include <qlcdnumber.h> +#include <qslider.h> +#include <qdial.h> +#include <qprogressbar.h> +#include <qtextview.h> +#include <qtextbrowser.h> +#include <qframe.h> +#include <qmetaobject.h> +#include <qwizard.h> +#include <qvaluelist.h> +#include <qtimer.h> +#include <qscrollbar.h> +#include <qmainwindow.h> +#include <qmenubar.h> +#include <qapplication.h> +#include <qsplitter.h> +#ifndef QT_NO_SQL +#include "database.h" +#endif + +//#define NO_STATIC_COLORS +#include "globaldefs.h" + +/* KOMMANDER INCLUDES */ +#include <lineedit.h> +#include <dialog.h> +#include <execbutton.h> +#include <closebutton.h> +#include <textedit.h> +#include <fileselector.h> +#include <textedit.h> +#include <radiobutton.h> +#include <groupbox.h> +#include <buttongroup.h> +#include <checkbox.h> +#include <combobox.h> +#include <spinboxint.h> +#include <wizard.h> +#include <tabwidget.h> +#include <subdialog.h> +#include <listbox.h> +#include <scriptobject.h> +#include <richtexteditor.h> +#include <treewidget.h> +#include <slider.h> +#include <datepicker.h> +#include <popupmenu.h> +#include "toolbox.h" +#include "fontdialog.h" +#include "aboutdialog.h" + +FormWindow *find_formwindow( QWidget *w ) +{ + if ( !w ) + return 0; + for (;;) { + if ( w->inherits( "FormWindow" ) ) + return (FormWindow*)w; + if ( !w->parentWidget() ) + return 0; + w = w->parentWidget(); + } +} + +void QLayoutWidget::paintEvent( QPaintEvent* ) +{ + QPainter p ( this ); + p.setPen( red ); + p.drawRect( rect() ); +} + + +QDesignerTabWidget::QDesignerTabWidget( QWidget *parent, const char *name ) + : QTabWidget( parent, name ), dropIndicator( 0 ), dragPage( 0 ), mousePressed( false ) +{ + tabBar()->setAcceptDrops( true ); + tabBar()->installEventFilter( this ); +} + +int QDesignerTabWidget::currentPage() const +{ + return tabBar()->currentTab(); +} + +void QDesignerTabWidget::setCurrentPage( int i ) +{ + tabBar()->setCurrentTab( i ); +} + +QString QDesignerTabWidget::pageTitle() const +{ + return ((QTabWidget*)this)->tabLabel( QTabWidget::currentPage() ); +} + +void QDesignerTabWidget::setPageTitle( const QString& title ) +{ + changeTab( QTabWidget::currentPage(), title ); +} + +void QDesignerTabWidget::setPageName( const QCString& name ) +{ + if ( QTabWidget::currentPage() ) + QTabWidget::currentPage()->setName( name ); +} + +QCString QDesignerTabWidget::pageName() const +{ + if ( !QTabWidget::currentPage() ) + return 0; + return QTabWidget::currentPage()->name(); +} + +int QDesignerTabWidget::count() const +{ + return tabBar()->count(); +} + +bool QDesignerTabWidget::eventFilter( QObject *o, QEvent *e ) +{ + if ( o != tabBar() ) return false; + + switch ( e->type() ) { + case QEvent::MouseButtonPress: { + mousePressed = true; + QMouseEvent *me = (QMouseEvent*)e; + pressPoint = me->pos(); + } + break; + case QEvent::MouseMove: { + QMouseEvent *me = (QMouseEvent*)e; + if ( mousePressed && ( pressPoint - me->pos()).manhattanLength() > QApplication::startDragDistance() ) { + QTextDrag *drg = new QTextDrag( QString::number( (long) this ) , this ); + mousePressed = false; + dragPage = QTabWidget::currentPage(); + dragLabel = QTabWidget::tabLabel( dragPage ); + + int index = indexOf( dragPage ); + + removePage( dragPage ); + if ( !drg->dragMove() ) { + insertTab( dragPage, dragLabel, index ); + showPage( dragPage ); + } + if ( dropIndicator ) + dropIndicator->hide(); + } + } + break; + case QEvent::DragLeave: { + if ( dropIndicator ) + dropIndicator->hide(); + } + break; + case QEvent::DragMove: { + QDragEnterEvent *de = (QDragEnterEvent*) e; + if ( QTextDrag::canDecode( de ) ) { + QString text; + QTextDrag::decode( de, text ); + if ( text == QString::number( (long)this ) ) + de->accept(); + else + return false; + } + + int index = 0; + QRect rect; + for ( ; index < tabBar()->count(); index++ ) { + if ( tabBar()->tabAt( index )->rect().contains( de->pos() ) ) { + rect = tabBar()->tabAt( index )->rect(); + break; + } + } + + if ( index == tabBar()->count() -1 ) { + QRect rect2 = rect; + rect2.setLeft( rect2.left() + rect2.width() / 2 ); + if ( rect2.contains( de->pos() ) ) + index++; + } + + if ( ! dropIndicator ) { + dropIndicator = new QWidget( this ); + dropIndicator->setBackgroundColor( red ); + } + + QPoint pos; + if ( index == tabBar()->count() ) + pos = tabBar()->mapToParent( QPoint( rect.x() + rect.width(), rect.y() ) ); + else + pos = tabBar()->mapToParent( QPoint( rect.x(), rect.y() ) ); + + dropIndicator->setGeometry( pos.x(), pos.y() , 3, rect.height() ); + dropIndicator->show(); + } + break; + case QEvent::Drop: { + QDragEnterEvent *de = (QDragEnterEvent*) e; + if ( QTextDrag::canDecode( de ) ) { + QString text; + QTextDrag::decode( de, text ); + if ( text == QString::number( (long)this ) ) { + + int newIndex = 0; + for ( ; newIndex < tabBar()->count(); newIndex++ ) { + if ( tabBar()->tabAt( newIndex )->rect().contains( de->pos() ) ) + break; + } + + if ( newIndex == tabBar()->count() -1 ) { + QRect rect2 = tabBar()->tabAt( newIndex )->rect(); + rect2.setLeft( rect2.left() + rect2.width() / 2 ); + if ( rect2.contains( de->pos() ) ) + newIndex++; + } + + int oldIndex = 0; + for ( ; oldIndex < tabBar()->count(); oldIndex++ ) { + if ( tabBar()->tabAt( oldIndex )->rect().contains( pressPoint ) ) + break; + } + + FormWindow *fw = find_formwindow( this ); + MoveTabPageCommand *cmd = + new MoveTabPageCommand( i18n("Move Tab Page" ), fw, this, + dragPage, dragLabel, newIndex, oldIndex ); + fw->commandHistory()->addCommand( cmd ); + cmd->execute(); + de->accept(); + } + } + } + break; + default: + break; + } + return false; +} + +int QDesignerWizard::currentPageNum() const +{ + for ( int i = 0; i < pageCount(); ++i ) { + if ( page( i ) == currentPage() ) + return i; + } + return 0; +} + +void QDesignerWizard::setCurrentPage( int i ) +{ + if ( i < currentPageNum() ) { + while ( i < currentPageNum() ) { + if ( currentPageNum() == 0 ) + break; + back(); + } + + } else { + while ( i > currentPageNum() ) { + if ( currentPageNum() == pageCount() - 1 ) + break; + next(); + } + } +} + +QString QDesignerWizard::pageTitle() const +{ + return title( currentPage() ); +} + +void QDesignerWizard::setPageTitle( const QString& title ) +{ + setTitle( currentPage(), title ); +} + +void QDesignerWizard::setPageName( const QCString& name ) +{ + if ( QWizard::currentPage() ) + QWizard::currentPage()->setName( name ); +} + +QCString QDesignerWizard::pageName() const +{ + if ( !QWizard::currentPage() ) + return 0; + return QWizard::currentPage()->name(); +} + +int QDesignerWizard::pageNum( QWidget *p ) +{ + for ( int i = 0; i < pageCount(); ++i ) { + if ( page( i ) == p ) + return i; + } + return -1; +} + +void QDesignerWizard::addPage( QWidget *p, const QString &t ) +{ + QWizard::addPage( p, t ); + if ( removedPages.find( p ) ) + removedPages.remove( p ); +} + +void QDesignerWizard::removePage( QWidget *p ) +{ + QWizard::removePage( p ); + removedPages.insert( p, p ); +} + +void QDesignerWizard::insertPage( QWidget *p, const QString &t, int index ) +{ + QWizard::insertPage( p, t, index ); + if ( removedPages.find( p ) ) + removedPages.remove( p ); +} + +QMap< int, QMap< QString, QVariant> > *defaultProperties = 0; +QMap< int, QStringList > *changedProperties = 0; + +/*! + \class WidgetFactory widgetfactory.h + \brief Set of static functions for creating widgets, layouts and do other stuff + + The widget factory offers functions to create widgets, create and + delete layouts find out other details - all based on the + WidgetDatabase's data. So the functions that use ids use the same + ids as in the WidgetDatabase. +*/ + + +void WidgetFactory::saveDefaultProperties( QWidget *w, int id ) +{ + QMap< QString, QVariant> propMap; + QStrList lst = w->metaObject()->propertyNames( true ); + for ( uint i = 0; i < lst.count(); ++i ) { + QVariant var = w->property( lst.at( i ) ); + if ( !var.isValid() && qstrcmp( "pixmap", lst.at( i ) ) == 0 ) + var = QVariant( QPixmap() ); + else if ( !var.isValid() && qstrcmp( "iconSet", lst.at( i ) ) == 0 ) + var = QVariant( QIconSet() ); + propMap.replace( lst.at( i ), var ); + } + defaultProperties->replace( id, propMap ); +} + +static void saveChangedProperties( QWidget *w, int id ) +{ + QStringList l = MetaDataBase::changedProperties( w ); + changedProperties->insert( id, l ); +} + +EditorTabWidget::EditorTabWidget( QWidget *parent, const char *name ) + : TabWidget( parent, name ), dropIndicator( 0 ), dragPage( 0 ), mousePressed( false ) +{ + tabBar()->setAcceptDrops( true ); + tabBar()->installEventFilter( this ); +} + +int EditorTabWidget::currentPage() const +{ + return tabBar()->currentTab(); +} + +void EditorTabWidget::setCurrentPage( int i ) +{ + tabBar()->setCurrentTab( i ); +} + +QString EditorTabWidget::pageTitle() const +{ + return ((QTabWidget*)this)->tabLabel( QTabWidget::currentPage() ); +} + +void EditorTabWidget::setPageTitle( const QString& title ) +{ + changeTab( QTabWidget::currentPage(), title ); +} + +void EditorTabWidget::setPageName( const QCString& name ) +{ + if ( QTabWidget::currentPage() ) + QTabWidget::currentPage()->setName( name ); +} + +QCString EditorTabWidget::pageName() const +{ + if ( !QTabWidget::currentPage() ) + return 0; + return QTabWidget::currentPage()->name(); +} + +int EditorTabWidget::count() const +{ + return tabBar()->count(); +} + +bool EditorTabWidget::eventFilter( QObject *o, QEvent *e ) +{ + if ( o != tabBar() ) return false; + + switch ( e->type() ) { + case QEvent::MouseButtonPress: { + mousePressed = true; + QMouseEvent *me = (QMouseEvent*)e; + pressPoint = me->pos(); + } + break; + case QEvent::MouseMove: { + QMouseEvent *me = (QMouseEvent*)e; + if ( mousePressed && ( pressPoint - me->pos()).manhattanLength() > QApplication::startDragDistance() ) { + QTextDrag *drg = new QTextDrag( QString::number( (long) this ) , this ); + mousePressed = false; + dragPage = QTabWidget::currentPage(); + dragLabel = QTabWidget::tabLabel( dragPage ); + + int index = indexOf( dragPage ); + + removePage( dragPage ); + if ( !drg->dragMove() ) { + insertTab( dragPage, dragLabel, index ); + showPage( dragPage ); + } + if ( dropIndicator ) + dropIndicator->hide(); + } + } + break; + case QEvent::DragLeave: { + if ( dropIndicator ) + dropIndicator->hide(); + } + break; + case QEvent::DragMove: { + QDragEnterEvent *de = (QDragEnterEvent*) e; + if ( QTextDrag::canDecode( de ) ) { + QString text; + QTextDrag::decode( de, text ); + if ( text == QString::number( (long)this ) ) + de->accept(); + else + return false; + } + + int index = 0; + QRect rect; + for ( ; index < tabBar()->count(); index++ ) { + if ( tabBar()->tabAt( index )->rect().contains( de->pos() ) ) { + rect = tabBar()->tabAt( index )->rect(); + break; + } + } + + if ( index == tabBar()->count() -1 ) { + QRect rect2 = rect; + rect2.setLeft( rect2.left() + rect2.width() / 2 ); + if ( rect2.contains( de->pos() ) ) + index++; + } + + if ( ! dropIndicator ) { + dropIndicator = new QWidget( this ); + dropIndicator->setBackgroundColor( red ); + } + + QPoint pos; + if ( index == tabBar()->count() ) + pos = tabBar()->mapToParent( QPoint( rect.x() + rect.width(), rect.y() ) ); + else + pos = tabBar()->mapToParent( QPoint( rect.x(), rect.y() ) ); + + dropIndicator->setGeometry( pos.x(), pos.y() , 3, rect.height() ); + dropIndicator->show(); + } + break; + case QEvent::Drop: { + QDragEnterEvent *de = (QDragEnterEvent*) e; + if ( QTextDrag::canDecode( de ) ) { + QString text; + QTextDrag::decode( de, text ); + if ( text == QString::number( (long)this ) ) { + + int newIndex = 0; + for ( ; newIndex < tabBar()->count(); newIndex++ ) { + if ( tabBar()->tabAt( newIndex )->rect().contains( de->pos() ) ) + break; + } + + if ( newIndex == tabBar()->count() -1 ) { + QRect rect2 = tabBar()->tabAt( newIndex )->rect(); + rect2.setLeft( rect2.left() + rect2.width() / 2 ); + if ( rect2.contains( de->pos() ) ) + newIndex++; + } + + int oldIndex = 0; + for ( ; oldIndex < tabBar()->count(); oldIndex++ ) { + if ( tabBar()->tabAt( oldIndex )->rect().contains( pressPoint ) ) + break; + } + + FormWindow *fw = find_formwindow( this ); + MoveTabPageCommand *cmd = + new MoveTabPageCommand( i18n("Move Tab Page" ), fw, this, + dragPage, dragLabel, newIndex, oldIndex ); + fw->commandHistory()->addCommand( cmd ); + cmd->execute(); + de->accept(); + } + } + } + break; + default: + break; + } + return false; +} + + +EditorToolBox::EditorToolBox( QWidget *parent, const char *name ) + : ToolBox( parent, name ) +{ + setAcceptDrops( true ); +} + +int EditorToolBox::currentPage() const +{ + return currentIndex(); +} + +void EditorToolBox::setCurrentPage( int i ) +{ + setCurrentItem( item( i ) ); +} + +QString EditorToolBox::pageTitle() const +{ + return itemLabel( currentIndex() ); +} + +void EditorToolBox::setPageTitle( const QString& title ) +{ + setItemLabel( currentIndex(), title ); +} + +void EditorToolBox::setPageName( const QCString& name ) +{ + if ( currentItem() ) + currentItem()->setName( name ); +} + +QCString EditorToolBox::pageName() const +{ + if ( !currentItem() ) + return 0; + return currentItem()->name(); +} + +int EditorToolBox::count() const +{ + return QToolBox::count(); +} + + + +/*! Creates a widget of the type which is registered as \a id as + child of \a parent. The \a name is optional. If \a init is true, the + widget is initialized with some defaults, else the plain widget is + created. +*/ + +QWidget *WidgetFactory::create( int id, QWidget *parent, const char *name, bool init, const QRect *r, Qt::Orientation orient ) +{ + QString n = WidgetDatabase::className(id); + //qDebug("Trying to create '%s'", n.latin1()); + if (n.isEmpty()) + return 0; + + if (!defaultProperties) + { + defaultProperties = new QMap < int, QMap < QString, QVariant > >(); + changedProperties = new QMap < int, QStringList > (); + } + + QWidget *w = 0; + QString str = WidgetDatabase::createWidgetName(id); + const char *s = str.latin1(); + w = createWidget(n, parent, name ? name : s, init, r, orient); + //qDebug("Trying to create '%s', widget (id=%d) - %s", s, id, w ? "successful" : "failure"); + if (!w && WidgetDatabase::isCustomWidget(id)) + w = createCustomWidget(parent, name ? name : s, MetaDataBase::customWidget(id)); + if (!w) + return 0; + MetaDataBase::addEntry(w); + + if (!defaultProperties->contains(id)) + saveDefaultProperties(w, id); + if (!changedProperties->contains(id)) + saveChangedProperties(w, id); + + return w; +} + +/*! Creates a layout on the widget \a widget of the type \a type + which can be \c HBox, \c VBox or \c Grid. +*/ + +QLayout *WidgetFactory::createLayout( QWidget *widget, QLayout *layout, LayoutType type ) +{ + int spacing = MainWindow::self->currentLayoutDefaultSpacing(); + int margin = 0; + + if ( widget && !widget->inherits( "QLayoutWidget" ) && + ( WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( widget ) ) ) || + widget && widget->parentWidget() && widget->parentWidget()->inherits( "FormWindow" ) ) ) + margin = MainWindow::self->currentLayoutDefaultMargin(); + + if ( !layout && widget && widget->inherits( "QTabWidget" ) ) + widget = ((QTabWidget*)widget)->currentPage(); + + if ( !layout && widget && widget->inherits( "QToolBox" ) ) + widget = ((QToolBox*)widget)->currentItem(); + + if ( !layout && widget && widget->inherits( "QWizard" ) ) + widget = ((QWizard*)widget)->currentPage(); + + if ( !layout && widget && widget->inherits( "QMainWindow" ) ) + widget = ((QMainWindow*)widget)->centralWidget(); + + if ( !layout && widget && widget->inherits( "QWidgetStack" ) ) + widget = ((QWidgetStack*)widget)->visibleWidget(); + + MetaDataBase::addEntry( widget ); + + if ( !layout && widget && widget->inherits( "QGroupBox" ) ) { + QGroupBox *gb = (QGroupBox*)widget; + gb->setColumnLayout( 0, Qt::Vertical ); + gb->layout()->setMargin( 0 ); + gb->layout()->setSpacing( 0 ); + QLayout *l; + switch ( type ) { + case HBox: + l = new QHBoxLayout( gb->layout() ); + MetaDataBase::setMargin( gb, margin ); + MetaDataBase::setSpacing( gb, spacing ); + l->setAlignment( AlignTop ); + MetaDataBase::addEntry( l ); + return l; + case VBox: + l = new QVBoxLayout( gb->layout(), spacing ); + MetaDataBase::setMargin( gb, margin ); + MetaDataBase::setSpacing( gb, spacing ); + l->setAlignment( AlignTop ); + MetaDataBase::addEntry( l ); + return l; + case Grid: + l = new QDesignerGridLayout( gb->layout() ); + MetaDataBase::setMargin( gb, margin ); + MetaDataBase::setSpacing( gb, spacing ); + l->setAlignment( AlignTop ); + MetaDataBase::addEntry( l ); + return l; + default: + return 0; + } + } else { + if ( layout ) { + QLayout *l; + switch ( type ) { + case HBox: + l = new QHBoxLayout( layout ); + MetaDataBase::addEntry( l ); + l->setSpacing( spacing ); + l->setMargin( margin ); + MetaDataBase::addEntry( l ); + return l; + case VBox: + l = new QVBoxLayout( layout ); + MetaDataBase::addEntry( l ); + l->setSpacing( spacing ); + l->setMargin( margin ); + MetaDataBase::addEntry( l ); + return l; + case Grid: { + l = new QDesignerGridLayout( layout ); + MetaDataBase::addEntry( l ); + l->setSpacing( spacing ); + l->setMargin( margin ); + MetaDataBase::addEntry( l ); + return l; + } + default: + return 0; + } + } else { + QLayout *l; + switch ( type ) { + case HBox: + l = new QHBoxLayout( widget ); + MetaDataBase::addEntry( l ); + if ( widget ) { + MetaDataBase::setMargin( widget, margin ); + MetaDataBase::setSpacing( widget, spacing ); + } else { + l->setMargin( margin ); + l->setSpacing( margin ); + } + MetaDataBase::addEntry( l ); + return l; + case VBox: + l = new QVBoxLayout( widget ); + MetaDataBase::addEntry( l ); + if ( widget ) { + MetaDataBase::setMargin( widget, margin ); + MetaDataBase::setSpacing( widget, spacing ); + } else { + l->setMargin( margin ); + l->setSpacing( margin ); + } + MetaDataBase::addEntry( l ); + return l; + case Grid: { + l = new QDesignerGridLayout( widget ); + MetaDataBase::addEntry( l ); + if ( widget ) { + MetaDataBase::setMargin( widget, margin ); + MetaDataBase::setSpacing( widget, spacing ); + } else { + l->setMargin( margin ); + l->setSpacing( margin ); + } + MetaDataBase::addEntry( l ); + return l; + } + default: + return 0; + } + } + } +} + +void WidgetFactory::deleteLayout( QWidget *widget ) +{ + if ( !widget ) + return; + + if ( widget->inherits( "QTabWidget" ) ) + widget = ((QTabWidget*)widget)->currentPage(); + if ( widget->inherits( "QWizard" ) ) + widget = ((QWizard*)widget)->currentPage(); + if ( widget->inherits( "QMainWindow" ) ) + widget = ((QMainWindow*)widget)->centralWidget(); + if ( widget->inherits( "QWidgetStack" ) ) + widget = ((QWidgetStack*)widget)->visibleWidget(); + delete widget->layout(); +} + +/*! Factory functions for creating a widget of the type \a className + as child of \a parent with the name \a name. + + If \a init is true, some initial default properties are set. This + has to be in sync with the initChangedProperties() function! +*/ + +QWidget *WidgetFactory::createWidget( const QString &className, QWidget *parent, const char *name, bool init, + const QRect *r, Qt::Orientation orient ) +{ + if (className == "QPushButton") + { + QPushButton *b = 0; + if (init) + { + b = new QDesignerPushButton(parent, name); + b->setText(QString::fromLatin1(name)); + } else + { + b = new QDesignerPushButton(parent, name); + } + QWidget *w = find_formwindow(b); + b->setAutoDefault(w && ((FormWindow *) w)->mainContainer()->inherits("QDialog")); + return b; + } else if (className == "QToolButton") + { + if (init) + { + QDesignerToolButton *tb = new QDesignerToolButton(parent, name); + tb->setText("..."); + return tb; + } + return new QDesignerToolButton(parent, name); + } else if (className == "QCheckBox") + { + if (init) + { + QDesignerCheckBox *cb = new QDesignerCheckBox(parent, name); + cb->setText(QString::fromLatin1(name)); + return cb; + } + return new QDesignerCheckBox(parent, name); + } else if (className == "QRadioButton") + { + if (init) + { + QDesignerRadioButton *rb = new QDesignerRadioButton(parent, name); + rb->setText(QString::fromLatin1(name)); + return rb; + } + return new QDesignerRadioButton(parent, name); + } else if (className == "QGroupBox") + { + if (init) + return new QGroupBox(QString::fromLatin1(name), parent, name); + return new QGroupBox(parent, name); + } else if (className == "QButtonGroup") + { + if (init) + return new QButtonGroup(QString::fromLatin1(name), parent, name); + return new QButtonGroup(parent, name); + } else if (className == "QIconView") + { +#if !defined(QT_NO_ICONVIEW) + QIconView *iv = new QIconView(parent, name); + if (init) + (void) new QIconViewItem(iv, i18n("New Item")); + return iv; +#else + return 0; +#endif + } else if (className == "QTable") + { +#if !defined(QT_NO_TABLE) + if (init) + return new QTable(3, 3, parent, name); + return new QTable(parent, name); +#else + return 0; +#endif +#ifndef QT_NO_SQL + } else if (className == "QDataTable") + { + return new QDataTable(parent, name); +#endif //QT_NO_SQL + } else if (className == "QDateEdit") + { + return new QDateEdit(parent, name); + } else if (className == "QTimeEdit") + { + return new QTimeEdit(parent, name); + } else if (className == "QDateTimeEdit") + { + return new QDateTimeEdit(parent, name); + } else if (className == "QListBox") + { + QListBox *lb = new QListBox(parent, name); + if (init) + { + lb->insertItem(i18n("New Item")); + lb->setCurrentItem(0); + } + return lb; + } else if (className == "QListView") + { + QListView *lv = new QListView(parent, name); + lv->setSorting(-1); + if (init) + { + lv->addColumn(i18n("Column 1")); + lv->setCurrentItem(new QListViewItem(lv, i18n("New Item"))); + } + return lv; + } else if (className == "QLineEdit") + return new QLineEdit(parent, name); + else if (className == "QSpinBox") + return new QSpinBox(parent, name); + else if (className == "QSplitter") + return new QSplitter(parent, name); + else if (className == "QMultiLineEdit") + return new QMultiLineEdit(parent, name); + else if (className == "QTextEdit") + return new QTextEdit(parent, name); + else if (className == "QLabel") + { + QDesignerLabel *l = new QDesignerLabel(parent, name); + if (init) + { + l->setText(QString::fromLatin1(name)); + MetaDataBase::addEntry(l); + MetaDataBase::setPropertyChanged(l, "text", true); + } + return l; + } else if (className == "QLayoutWidget") + return new QLayoutWidget(parent, name); + else if (className == "QTabWidget") + { + QTabWidget *tw = new QDesignerTabWidget(parent, name); + if (init) + { + FormWindow *fw = find_formwindow(parent); + QWidget *w = fw ? new QDesignerWidget(fw, tw, "tab") : new QWidget(tw, "tab"); + tw->addTab(w, i18n("Tab 1")); + MetaDataBase::addEntry(w); + w = fw ? new QDesignerWidget(fw, tw, "tab") : new QWidget(tw, "tab"); + tw->addTab(w, i18n("Tab 2")); + MetaDataBase::addEntry(tw); + MetaDataBase::addEntry(w); + } + return tw; + } else if (className == "QComboBox") + { + return new QComboBox(false, parent, name); + } else if (className == "QWidget") + { + if (parent && + (parent->inherits("FormWindow") || parent->inherits("QWizard") + || parent->inherits("QTabWidget") || parent->inherits("QToolBox") || parent->inherits("QMainWindow"))) + { + FormWindow *fw = find_formwindow(parent); + if (fw) + { + QDesignerWidget *dw = new QDesignerWidget(fw, parent, name); + MetaDataBase::addEntry(dw); + return dw; + } + } + return new QWidget(parent, name); + } else if (className == "QDialog") + { + QDialog *dia = 0; + if (parent && parent->inherits("FormWindow")) + dia = new QDesignerDialog((FormWindow *) parent, parent, name); + else + dia = new QDialog(parent, name); + if (parent && !parent->inherits("MainWindow")) + dia->reparent(parent, QPoint(0, 0), true); + return dia; + } else if (className == "QWizard") + { + QWizard *wiz = new QDesignerWizard(parent, name); + if (parent && !parent->inherits("MainWindow")) + { + wiz->reparent(parent, QPoint(0, 0), true); + } + if (init && parent && parent->inherits("FormWindow")) + { + QDesignerWidget *dw = new QDesignerWidget((FormWindow *) parent, wiz, "page"); + MetaDataBase::addEntry(dw); + wiz->addPage(dw, i18n("Page")); + QTimer::singleShot(0, wiz, SLOT(next())); + } + return wiz; + } else if (className == "Spacer") + { + Spacer *s = new Spacer(parent, name); + MetaDataBase::addEntry(s); + MetaDataBase::setPropertyChanged(s, "orientation", true); + MetaDataBase::setPropertyChanged(s, "sizeType", true); + if (!r) + return s; + if (!r->isValid() || r->width() < 2 && r->height() < 2) + s->setOrientation(orient); + else if (r->width() < r->height()) + s->setOrientation(Qt::Vertical); + else + s->setOrientation(Qt::Horizontal); + return s; + } else if (className == "QLCDNumber") + return new QLCDNumber(parent, name); + else if (className == "QProgressBar") + return new QProgressBar(parent, name); + else if (className == "QTextView") + return new QTextView(parent, name); + else if (className == "QTextBrowser") + return new QTextBrowser(parent, name); + else if (className == "QDial") + return new QDial(parent, name); + else if (className == "QSlider") + { + QSlider *s = new QSlider(parent, name); + if (!r) + return s; + if (!r->isValid() || r->width() < 2 && r->height() < 2) + s->setOrientation(orient); + else if (r->width() > r->height()) + s->setOrientation(Qt::Horizontal); + MetaDataBase::addEntry(s); + MetaDataBase::setPropertyChanged(s, "orientation", true); + return s; + } else if (className == "QScrollBar") + { + QScrollBar *s = new QScrollBar(parent, name); + if (!r) + return s; + if (!r->isValid() || r->width() < 2 && r->height() < 2) + s->setOrientation(orient); + else if (r->width() > r->height()) + s->setOrientation(Qt::Horizontal); + MetaDataBase::addEntry(s); + MetaDataBase::setPropertyChanged(s, "orientation", true); + return s; + } else if (className == "QFrame") + { + if (!init) + return new QFrame(parent, name); + QFrame *f = new QFrame(parent, name); + f->setFrameStyle(QFrame::StyledPanel | QFrame::Raised); + return f; + } else if (className == "Line") + { + Line *l = new Line(parent, name); + MetaDataBase::addEntry(l); + MetaDataBase::setPropertyChanged(l, "orientation", true); + MetaDataBase::setPropertyChanged(l, "frameShadow", true); + MetaDataBase::setPropertyChanged(l, "frameShape", true); + if (!r) + return l; + if (!r->isValid() || r->width() < 2 && r->height() < 2) + l->setOrientation(orient); + else if (r->width() < r->height()) + l->setOrientation(Qt::Vertical); + return l; + } else if (className == "QMainWindow") + { + QMainWindow *mw = new KmdrMainWindow(parent, name, 0); + mw->setDockEnabled(Qt::DockMinimized, false); + QDesignerWidget *dw = new QDesignerWidget((FormWindow *) parent, mw, "central widget"); + mw->setDockMenuEnabled(false); + MetaDataBase::addEntry(dw); + mw->setCentralWidget(dw); + (void) mw->statusBar(); + dw->show(); + return mw; + } +#ifndef QT_NO_SQL + else if (className == "QDataBrowser") + { + QWidget *w = new QDesignerDataBrowser(parent, name); + if (parent) + w->reparent(parent, QPoint(0, 0), true); + return w; + } else if (className == "QDataView") + { + QWidget *w = new QDesignerDataView(parent, name); + if (parent) + w->reparent(parent, QPoint(0, 0), true); + return w; + } +#endif +#ifdef KOMMANDER + + if (className == "LineEdit") + return new LineEdit(parent, name); + else if (className == "ListView") + { + QListView *lv = new QListView(parent, name); + lv->setSorting(-1); + if (init) + { + lv->addColumn(i18n("Column 1")); + lv->setCurrentItem(new QListViewItem(lv, i18n("New Item"))); + } + return lv; + } + else if (className == "Dialog") + { + QDialog *dia = 0; + if (parent && parent->inherits("FormWindow")) + dia = new EditorDialog((FormWindow *) parent, parent, name); + else + dia = new Dialog(parent, name, false); + + if (parent) + dia->reparent(parent, QPoint(0, 0), true); + return dia; + } + else if (className == "Wizard") + { + //qDebug("Creating Wizard..."); + QWizard *wiz; + if (parent && parent->inherits("FormWindow")) + wiz = new QDesignerWizard(parent, name); + else + wiz = new Wizard(parent, name); + if (parent) + wiz->reparent(parent, QPoint(0, 0), true); + if (init && parent && parent->inherits("FormWindow")) + { + QDesignerWidget *dw = new QDesignerWidget((FormWindow *) parent, wiz, "page"); + MetaDataBase::addEntry(dw); + wiz->addPage(dw, i18n("Page 1")); + wiz->addPage(dw, i18n("Page 2")); + QTimer::singleShot(0, wiz, SLOT(next())); + } + return wiz; + } + else if (className == "TabWidget") + { + QTabWidget *tw = new EditorTabWidget(parent, name); + if (init) + { + FormWindow *fw = find_formwindow(parent); + QWidget *w = fw ? new QDesignerWidget(fw, tw, "tab") : new QWidget(tw, "tab"); + tw->addTab(w, i18n("Tab 1")); + MetaDataBase::addEntry(w); + w = fw ? new QDesignerWidget(fw, tw, "tab") : new QWidget(tw, "tab"); + tw->addTab(w, i18n("Tab 2")); + MetaDataBase::addEntry(tw); + MetaDataBase::addEntry(w); + } + return tw; + } else if (className == "ToolBox") + { + QToolBox *tw = new EditorToolBox(parent, name); + if (init) + { + FormWindow *fw = find_formwindow(parent); + QWidget *w = fw ? new QDesignerWidget(fw, tw, "toolbox") : new QWidget(tw, "toolbox"); + tw->addItem(w, i18n("Page 1")); + MetaDataBase::addEntry(w); + w = fw ? new QDesignerWidget(fw, tw, "toolbox") : new QWidget(tw, "toolbox"); + tw->addItem(w, i18n("Page 2")); + MetaDataBase::addEntry(tw); + MetaDataBase::addEntry(w); + } + return tw; + } + else if (className == "ExecButton") + return new ExecButton(parent, name); + else if (className == "CloseButton") + return new CloseButton(parent, name); + else if (className == "SubDialog") + return new SubDialog(parent, name); + else if (className == "FileSelector") + return new FileSelector(parent, name); + else if (className == "TextEdit") + return new TextEdit(parent, name); + else if (className == "RadioButton") + return new RadioButton(parent, name); + else if (className == "ButtonGroup") + return new ButtonGroup(parent, name); + else if (className == "GroupBox") + return new GroupBox(parent, name); + else if (className == "CheckBox") + return new CheckBox(parent, name); + else if (className == "ComboBox") + return new ComboBox(parent, name); + else if (className == "SpinBoxInt") + return new SpinBoxInt(parent, name); + else if (className == "ListBox") + return new ListBox(parent, name); + else if (className == "ScriptObject") + return new ScriptObject(parent, name); + else if (className == "RichTextEditor") + return new RichTextEditor(parent, name); + else if (className == "DatePicker") + return new DatePicker(parent, name); + else if (className == "PopupMenu") + return new PopupMenu(parent, name); + else if (className == "FontDialog") + return new FontDialog(parent, name); + else if (className == "AboutDialog") + return new AboutDialog(parent, name); + else if (className == "TreeWidget") + { + QListView *lv = new TreeWidget(parent, name); + lv->setSorting(-1); + if (init) + { + lv->addColumn(i18n("Column 1")); + lv->setCurrentItem(new QListViewItem(lv, i18n("New Item"))); + } + return lv; + } else if (className == "Slider") + { + Slider *s = new Slider(parent, name); + if (!r) + return s; + if (!r->isValid() || r->width() < 2 && r->height() < 2) + s->setOrientation(orient); + else if (r->width() > r->height()) + s->setOrientation(Qt::Horizontal); + MetaDataBase::addEntry(s); + MetaDataBase::setPropertyChanged(s, "orientation", true); + return s; + } +#endif + + QWidget *w = KommanderFactory::createWidget(className, parent, name); + return w; +} + + + +/*! Find out which type the layout of the widget is. Returns \c HBox, + \c VBox, \c Grid or \c NoLayout. \a layout points to this + QWidget::layout() of \a w or to 0 after the function call. +*/ + +WidgetFactory::LayoutType WidgetFactory::layoutType( QWidget *w, QLayout *&layout ) +{ + layout = 0; + + if ( w && w->inherits( "QTabWidget" ) ) + w = ((QTabWidget*)w)->currentPage(); + if ( w->inherits( "QToolBox" ) ) + w = ((QToolBox*)w)->currentItem(); + if ( w && w->inherits( "QWizard" ) ) + w = ((QWizard*)w)->currentPage(); + if ( w && w->inherits( "QMainWindow" ) ) + w = ((QMainWindow*)w)->centralWidget(); + if ( w && w->inherits( "QWidgetStack" ) ) + w = ((QWidgetStack*)w)->visibleWidget(); + + if ( w && w->inherits( "QSplitter" ) ) + return ( (QSplitter*)w )->orientation() == Horizontal ? HBox : VBox; + + if ( !w || !w->layout() ) + return NoLayout; + QLayout *lay = w->layout(); + + if ( w->inherits( "QGroupBox" ) ) { + QObjectList *l = lay->queryList( "QLayout" ); + if ( l && l->first() ) + lay = (QLayout*)l->first(); + delete l; + } + layout = lay; + + if ( lay->inherits( "QHBoxLayout" ) ) + return HBox; + else if ( lay->inherits( "QVBoxLayout" ) ) + return VBox; + else if ( lay->inherits( "QGridLayout" ) ) + return Grid; + return NoLayout; +} + +/*! + \overload +*/ +WidgetFactory::LayoutType WidgetFactory::layoutType( QLayout *layout ) +{ + if ( layout->inherits( "QHBoxLayout" ) ) + return HBox; + else if ( layout->inherits( "QVBoxLayout" ) ) + return VBox; + else if ( layout->inherits( "QGridLayout" ) ) + return Grid; + return NoLayout; +} + +/*! + \overload +*/ +WidgetFactory::LayoutType WidgetFactory::layoutType( QWidget *w ) +{ + QLayout *l = 0; + return layoutType( w, l ); +} + + +QWidget *WidgetFactory::layoutParent( QLayout *layout ) +{ + QObject *o = layout; + while ( o ) { + if ( o->isWidgetType() ) + return (QWidget*)o; + o = o->parent(); + } + return 0; +} + +/*! Returns the widget into which children should be inserted when \a + w is a container known to the designer. + + Usually that is \a w itself, sometimes it is different (e.g. a + tabwidget is known to the designer as a container but the child + widgets should be inserted into the current page of the + tabwidget. So in this case this function returns the current page of + the tabwidget.) + */ +QWidget* WidgetFactory::containerOfWidget( QWidget *w ) +{ + if ( !w ) + return w; + if ( w->inherits( "QTabWidget" ) ) + return ((QTabWidget*)w)->currentPage(); + if ( w->inherits( "QToolBox" ) ) + return ((QToolBox*)w)->currentItem(); + if ( w->inherits( "QWizard" ) ) + return ((QWizard*)w)->currentPage(); + if ( w->inherits( "QWidgetStack" ) ) + return ((QWidgetStack*)w)->visibleWidget(); + if ( w->inherits( "QMainWindow" ) ) + return ((QMainWindow*)w)->centralWidget(); + return w; +} + +/*! Returns the actual designer widget of the container \a w. This is + normally \a w itself, but might be a parent or grand parent of \a w + (e.g. when working with a tabwidget and \a w is the container which + contains and layouts childs, but the actual widget known to the + designer is the tabwidget which is the parent of \a w. So this + function returns the tabwidget then.) +*/ + +QWidget* WidgetFactory::widgetOfContainer( QWidget *w ) +{ + if ( w->parentWidget() && w->parentWidget()->inherits( "QWidgetStack" ) ) + w = w->parentWidget(); + while ( w ) { + if ( WidgetDatabase::isContainer( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( w ) ) ) || + w && w->parentWidget() && w->parentWidget()->inherits( "FormWindow" ) ) + return w; + w = w->parentWidget(); + } + return w; +} + +/*! + Returns whether \a o is a passive interactor or not. + */ +bool WidgetFactory::isPassiveInteractor( QObject* o ) +{ + if ( QApplication::activePopupWidget() ) // if a popup is open, we have to make sure that this one is closed, else X might do funny things + return true; + + if ( o->inherits( "QTabBar" ) || ::qt_cast<QToolBox*>(o->parent()) ) + return true; + else if ( o->inherits( "QSizeGrip" ) ) + return true; + else if ( o->inherits( "QToolButton" ) && o->parent() && o->parent()->inherits( "QTabBar" ) ) + return true; + else if ( o->parent() && o->parent()->inherits( "QWizard" ) && o->inherits( "QPushButton" ) ) + return true; + else if ( o->parent() && o->parent()->inherits( "QMainWindow" ) && o->inherits( "QMenuBar" ) ) + return true; + else if ( o->inherits( "QDockWindowHandle" ) ) + return true; + else if ( o->inherits( "QHideDock" ) ) + return true; + + return false; +} + + +/*! + Returns the class name of object \a o that should be used for externally (i.e. for saving) + */ +const char* WidgetFactory::classNameOf( QObject* o ) +{ + if (o->inherits("QDesignerTabWidget")) + return "QTabWidget"; +#ifdef KOMMANDER + else if (o->inherits("EditorTabWidget")) + return "TabWidget"; + else if (o->inherits("EditorToolBox")) + return "ToolBox"; +#endif + else if (o->inherits("QDesignerDialog")) + return "QDialog"; + else if (o->inherits("QDesignerWidget")) + return "QWidget"; + else if (o->inherits("CustomWidget")) + return ((CustomWidget *) o)->realClassName().latin1(); + else if (o->inherits("QDesignerLabel")) + return "QLabel"; + else if (o->inherits("QDesignerWizard")) + return "QWizard"; + else if (o->inherits("EditorWizard")) + return "Wizard"; + else if (o->inherits("QDesignerPushButton")) + return "QPushButton"; + else if (o->inherits("QDesignerToolButton")) + return "QToolButton"; + else if (o->inherits("QDesignerRadioButton")) + return "QRadioButton"; + else if (o->inherits("QDesignerCheckBox")) + return "QCheckBox"; + else if (o->inherits("QDesignerMenuBar")) + return "QMenuBar"; + else if (o->inherits("QDesignerToolBar")) + return "QToolBar"; +#ifndef QT_NO_SQL + else if (o->inherits("QDesignerDataBrowser")) + return "QDataBrowser"; + else if (o->inherits("QDesignerDataView")) + return "QDataView"; +#endif + else if (o->inherits("EditorDialog")) + return "Dialog"; + return o->className(); +} + +/*! As some properties are set by default when creating a widget this + functions markes this properties as changed. Has to be in sync with + createWidget()! +*/ + +void WidgetFactory::initChangedProperties( QObject *o ) +{ + MetaDataBase::setPropertyChanged( o, "name", true ); + if ( !o->inherits( "QDesignerToolBar" ) && !o->inherits( "QDesignerMenuBar" ) ) + MetaDataBase::setPropertyChanged( o, "geometry", true ); + + if ( o->inherits( "QPushButton" ) || o->inherits("QRadioButton") || o->inherits( "QCheckBox" ) || o->inherits( "QToolButton" ) ) + MetaDataBase::setPropertyChanged( o, "text", true ); + else if (::qt_cast<QToolButton*>(o) && ::qt_cast<QToolBox*>(widgetOfContainer((QWidget*)o->parent()))) { + MetaDataBase::setPropertyChanged( o, "usesTextLabel", TRUE ); + MetaDataBase::setPropertyChanged( o, "textLabel", TRUE ); + MetaDataBase::setPropertyChanged( o, "autoRaise", TRUE ); + MetaDataBase::setPropertyChanged( o, "textPosition", TRUE ); + } else if ( o->inherits( "QGroupBox" ) ) + MetaDataBase::setPropertyChanged( o, "title", true ); + else if ( o->isA( "QFrame" ) ) { + MetaDataBase::setPropertyChanged( o, "frameShadow", true ); + MetaDataBase::setPropertyChanged( o, "frameShape", true ); + } else if ( o->inherits( "QTabWidget" ) || o->inherits( "QWizard" ) ) { + MetaDataBase::setPropertyChanged( o, "pageTitle", true ); + MetaDataBase::setPropertyChanged( o, "pageName", true ); +#ifndef QT_NO_TABLE + } else if ( o->inherits( "QTable" ) && !o->inherits( "QDataTable" ) ) { + MetaDataBase::setPropertyChanged( o, "numRows", true ); + MetaDataBase::setPropertyChanged( o, "numCols", true ); + QTable *t = (QTable*)o; + for ( int i = 0; i < 3; ++i ) { + t->horizontalHeader()->setLabel( i, QString::number( i + 1 ) ); + t->verticalHeader()->setLabel( i, QString::number( i + 1 ) ); + } +#endif + } else if ( ::qt_cast<QToolBox*>(o) ) { + MetaDataBase::setPropertyChanged( o, "currentIndex", true ); + MetaDataBase::setPropertyChanged( o, "itemName", true ); + MetaDataBase::setPropertyChanged( o, "itemLabel", true ); + MetaDataBase::setPropertyChanged( o, "itemIconSet", true ); + MetaDataBase::setPropertyChanged( o, "itemToolTip", true ); + MetaDataBase::setPropertyChanged( o, "itemBackgroundMode", true ); + } else if ( o->inherits( "QSplitter" ) ) { + MetaDataBase::setPropertyChanged( o, "orientation", true ); + } else if ( o->inherits( "QDesignerToolBar" ) ) { + MetaDataBase::setPropertyChanged( o, "label", true ); + } else if ( o->inherits( "QDesignerMenuBar" ) ) { + MetaDataBase::setPropertyChanged( o, "itemName", true ); + MetaDataBase::setPropertyChanged( o, "itemNumber", true ); + MetaDataBase::setPropertyChanged( o, "itemText", true ); + } +} + +bool WidgetFactory::hasSpecialEditor( int id ) +{ + QString className = WidgetDatabase::className(id); + + if (className == "TextEdit" || className == "ComboBox" || className == "ListBox" || className == + "TreeWidget" || className == "TextBrowser") + return true; + + if (className.mid(1) == "ListBox") + return true; + if (className.mid(1) == "ComboBox") + return true; + if (className.mid(1) == "ListView") + return true; + if (className.mid(1) == "IconView") + return true; + if (className == "QTextEdit" || className == "QMultiLineEdit") + return true; + if (className.contains("Table")) + return true; + + return false; +} + +bool WidgetFactory::hasItems( int id ) +{ + QString className = WidgetDatabase::className(id); + + if (className == "ComboBox" || className == "ListBox" || className == "TreeWidget") + return true; + if (className.mid(1) == "ListBox" || className.mid(1) == "ListView" || + className.mid(1) == "IconView" || className.mid(1) == "ComboBox" || + className.contains("Table")) + return true; + + return false; +} + +void WidgetFactory::editWidget( int id, QWidget *parent, QWidget *editWidget, FormWindow *fw ) +{ + QString className = WidgetDatabase::className(id); + +#ifdef KOMMANDER + if (className == "ComboBox") + { + if (!editWidget->inherits("QComboBox")) + return; + + QComboBox *cb = (QComboBox *) editWidget; + + ListBoxEditor *e = new ListBoxEditor(parent, cb->listBox(), fw); + e->exec(); + delete e; + + cb->update(); + + return; + } + if (className == "TextEdit" || className == "TextBrowser") + { + MultiLineEditor *e = new MultiLineEditor(parent, editWidget, fw); + e->exec(); + delete e; + return; + } + if (className == "TreeWidget") + { + if (!editWidget->inherits("QListView")) + return; + QListView *lv = (QListView *) editWidget; + ListViewEditor *e = new ListViewEditor(parent, lv, fw); + e->exec(); + delete e; + return; + } + if (className == "ListBox") + { + if (!editWidget->inherits("QListBox")) + return; + ListBoxEditor *e = new ListBoxEditor(parent, editWidget, fw); + e->exec(); + delete e; + return; + } +#endif + if (className.mid(1) == "ListBox") + { + if (!editWidget->inherits("QListBox")) + return; + ListBoxEditor *e = new ListBoxEditor(parent, editWidget, fw); + e->exec(); + delete e; + return; + } + + if (className.mid(1) == "ComboBox") + { + if (!editWidget->inherits("QComboBox")) + return; + QComboBox *cb = (QComboBox *) editWidget; + ListBoxEditor *e = new ListBoxEditor(parent, cb->listBox(), fw); + e->exec(); + delete e; + cb->update(); + return; + } + + if (className.mid(1) == "ListView") + { + if (!editWidget->inherits("QListView")) + return; + QListView *lv = (QListView *) editWidget; + ListViewEditor *e = new ListViewEditor(parent, lv, fw); + e->exec(); + delete e; + return; + } + + if (className.mid(1) == "IconView") + { + if (!editWidget->inherits("QIconView")) + return; + IconViewEditor *e = new IconViewEditor(parent, editWidget, fw); + e->exec(); + delete e; + return; + } + + if (className == "QMultiLineEdit" || className == "QTextEdit") + { + MultiLineEditor *e = new MultiLineEditor(parent, editWidget, fw); + e->exec(); + delete e; + return; + } +#ifndef QT_NO_TABLE + if (className.contains("Table")) + { + TableEditor *e = new TableEditor(parent, editWidget, fw); + e->exec(); + delete e; + return; + } +#endif +} + +bool WidgetFactory::canResetProperty( QObject *w, const QString &propName ) +{ + if ( propName == "name" || propName == "geometry" ) + return false; + QStringList l = *changedProperties->find( WidgetDatabase::idFromClassName( WidgetFactory::classNameOf( w ) ) ); + return l.findIndex( propName ) == -1; +} + +bool WidgetFactory::resetProperty( QObject *w, const QString &propName ) +{ + const QMetaProperty *p = w->metaObject()->property( w->metaObject()-> + findProperty( propName, true ), true ); + if (!p ) + return false; + return p->reset( w ); +} + +QVariant WidgetFactory::defaultValue( QObject *w, const QString &propName ) +{ + if ( propName == "wordwrap" ) { + int v = defaultValue( w, "alignment" ).toInt(); + return QVariant( ( v & WordBreak ) == WordBreak, 0 ); + } else if ( propName == "toolTip" || propName == "whatsThis" ) { + return QVariant( QString::fromLatin1( "" ) ); + } else if ( w->inherits( "CustomWidget" ) ) { + return QVariant(); + } else if ( propName == "frameworkCode" ) { + return QVariant( true, 0 ); + } else if ( propName == "layoutMargin" ) { + if ( w->inherits( "QLayoutWidget" ) ) + return QVariant( 0 ); + else if ( MainWindow::self->formWindow() ) + return QVariant( MainWindow::self->formWindow()->layoutDefaultMargin() ); + } else if ( propName == "layoutSpacing" ) { + if ( MainWindow::self->formWindow() ) + return QVariant( MainWindow::self->formWindow()->layoutDefaultSpacing() ); + } + + return *( *defaultProperties->find( WidgetDatabase::idFromClassName( classNameOf( w ) ) ) ).find( propName ); +} + +QString WidgetFactory::defaultCurrentItem( QObject *w, const QString &propName ) +{ + const QMetaProperty *p = w->metaObject()-> + property( w->metaObject()->findProperty( propName, true ), true ); + if ( !p ) { + int v = defaultValue( w, "alignment" ).toInt(); + if ( propName == "hAlign" ) { + if ( ( v & AlignAuto ) == AlignAuto ) + return "AlignAuto"; + if ( ( v & AlignLeft ) == AlignLeft ) + return "AlignLeft"; + if ( ( v & AlignCenter ) == AlignCenter || ( v & AlignHCenter ) == AlignHCenter ) + return "AlignHCenter"; + if ( ( v & AlignRight ) == AlignRight ) + return "AlignRight"; + if ( ( v & AlignJustify ) == AlignJustify ) + return "AlignJustify"; + } else if ( propName == "vAlign" ) { + if ( ( v & AlignTop ) == AlignTop ) + return "AlignTop"; + if ( ( v & AlignCenter ) == AlignCenter || ( v & AlignVCenter ) == AlignVCenter ) + return "AlignVCenter"; + if ( ( v & AlignBottom ) == AlignBottom ) + return "AlignBottom"; + } + return QString::null; + + } + return p->valueToKey( defaultValue( w, propName ).toInt() ); +} + +QWidget *WidgetFactory::createCustomWidget( QWidget *parent, const char *name, MetaDataBase::CustomWidget *w ) +{ + if ( !w ) + return 0; + return new CustomWidget( parent, name, w ); +} + +QVariant WidgetFactory::property( QObject *w, const char *name ) +{ + QVariant v = w->property( name ); + if ( v.isValid() ) + return v; + return MetaDataBase::fakeProperty( w, name ); +} + +void QDesignerLabel::updateBuddy() +{ + + if ( myBuddy.isEmpty() ) + return; + + QObjectList *l = topLevelWidget()->queryList( "QWidget", myBuddy, false, true ); + if ( !l || !l->first() ) { + delete l; + return; + } + + QLabel::setBuddy( (QWidget*)l->first() ); + delete l; +} + +void QDesignerWidget::paintEvent( QPaintEvent *e ) +{ + formwindow->paintGrid( this, e ); +} + +void QDesignerDialog::paintEvent( QPaintEvent *e ) +{ + formwindow->paintGrid( this, e ); +} + +void EditorDialog::paintEvent( QPaintEvent *e ) +{ + formwindow->paintGrid( this, e ); +} + +QSizePolicy QLayoutWidget::sizePolicy() const +{ + return sp; +} + +bool QLayoutWidget::event( QEvent *e ) +{ + if ( e && ( e->type() == QEvent::ChildInserted || + e->type() == QEvent::ChildRemoved || + e->type() == QEvent::LayoutHint || + e->type() == QEvent::Reparent ) ) + updateSizePolicy(); + return QWidget::event( e ); +} + +/* + This function must be called on QLayoutWidget creation and whenever + the QLayoutWidget's parent layout changes (e.g., from a QHBoxLayout + to a QVBoxLayout), because of the (illogical) way layouting works. +*/ +void QLayoutWidget::updateSizePolicy() +{ + if ( !children() || children()->count() == 0 ) { + sp = QWidget::sizePolicy(); + return; + } + + /* + QSizePolicy::MayShrink & friends are private. Here we assume the + following: + + Fixed = 0 + Maximum = MayShrink + Minimum = MayGrow + Preferred = MayShrink | MayGrow + */ + + int ht = (int) QSizePolicy::Preferred; + int vt = (int) QSizePolicy::Preferred; + + if ( layout() ) { + /* + parentLayout is set to the parent layout if there is one and if it is + top level, in which case layouting is illogical. + */ + QLayout *parentLayout = 0; + if ( parent() && parent()->isWidgetType() ) { + parentLayout = ((QWidget *)parent())->layout(); + if ( parentLayout && parentLayout->mainWidget()->inherits("QLayoutWidget") ) + parentLayout = 0; + } + + QObjectListIt it( *children() ); + QObject *o; + + if ( layout()->inherits("QVBoxLayout") ) { + if ( parentLayout && parentLayout->inherits("QHBoxLayout") ) + vt = QSizePolicy::Minimum; + else + vt = QSizePolicy::Fixed; + + while ( ( o = it.current() ) ) { + ++it; + if ( !o->isWidgetType() || ( (QWidget*)o )->testWState( WState_ForceHide ) ) + continue; + QWidget *w = (QWidget*)o; + + if ( !w->sizePolicy().mayGrowHorizontally() ) + ht &= ~QSizePolicy::Minimum; + if ( !w->sizePolicy().mayShrinkHorizontally() ) + ht &= ~QSizePolicy::Maximum; + if ( w->sizePolicy().mayGrowVertically() ) + vt |= QSizePolicy::Minimum; + if ( w->sizePolicy().mayShrinkVertically() ) + vt |= QSizePolicy::Maximum; + } + } else if ( layout()->inherits("QHBoxLayout") ) { + if ( parentLayout && parentLayout->inherits("QVBoxLayout") ) + ht = QSizePolicy::Minimum; + else + ht = QSizePolicy::Fixed; + + while ( ( o = it.current() ) ) { + ++it; + if ( !o->isWidgetType() || ( (QWidget*)o )->testWState( WState_ForceHide ) ) + continue; + QWidget *w = (QWidget*)o; + + if ( w->sizePolicy().mayGrowHorizontally() ) + ht |= QSizePolicy::Minimum; + if ( w->sizePolicy().mayShrinkHorizontally() ) + ht |= QSizePolicy::Maximum; + if ( !w->sizePolicy().mayGrowVertically() ) + vt &= ~QSizePolicy::Minimum; + if ( !w->sizePolicy().mayShrinkVertically() ) + vt &= ~QSizePolicy::Maximum; + } + } else if ( layout()->inherits("QGridLayout") ) { + ht = QSizePolicy::Fixed; + vt = QSizePolicy::Fixed; + if ( parentLayout ) { + if ( parentLayout->inherits("QVBoxLayout") ) + ht = QSizePolicy::Minimum; + else if ( parentLayout->inherits("QHBoxLayout") ) + vt = QSizePolicy::Minimum; + } + + while ( ( o = it.current() ) ) { + ++it; + if ( !o->isWidgetType() || ( (QWidget*)o )->testWState( WState_ForceHide ) ) + continue; + QWidget *w = (QWidget*)o; + + if ( w->sizePolicy().mayGrowHorizontally() ) + ht |= QSizePolicy::Minimum; + if ( w->sizePolicy().mayShrinkHorizontally() ) + ht |= QSizePolicy::Maximum; + if ( w->sizePolicy().mayGrowVertically() ) + vt |= QSizePolicy::Minimum; + if ( w->sizePolicy().mayShrinkVertically() ) + vt |= QSizePolicy::Maximum; + } + } + if ( layout()->expanding() & QSizePolicy::Horizontally ) + ht = QSizePolicy::Expanding; + if ( layout()->expanding() & QSizePolicy::Vertically ) + vt = QSizePolicy::Expanding; + + layout()->invalidate(); + } + + sp = QSizePolicy( (QSizePolicy::SizeType) ht, (QSizePolicy::SizeType) vt ); + updateGeometry(); +} + +void CustomWidget::paintEvent( QPaintEvent *e ) +{ + if ( parentWidget() && parentWidget()->inherits( "FormWindow" ) ) { + ( (FormWindow*)parentWidget() )->paintGrid( this, e ); + } else { + QPainter p( this ); + p.fillRect( rect(), colorGroup().dark() ); + p.drawPixmap( ( width() - cusw->pixmap->width() ) / 2, + ( height() - cusw->pixmap->height() ) / 2, + *cusw->pixmap ); + } +} + + +#include "widgetfactory.moc" diff --git a/kommander/editor/widgetfactory.h b/kommander/editor/widgetfactory.h new file mode 100644 index 00000000..03d2b2f1 --- /dev/null +++ b/kommander/editor/widgetfactory.h @@ -0,0 +1,473 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef WIDGETFACTORY_H +#define WIDGETFACTORY_H + +#include <qvariant.h> +#include <qiconset.h> +#include <qstring.h> +#include <qintdict.h> +#include <qtabwidget.h> +#include <qpixmap.h> +#include <qsize.h> +#include <qpainter.h> +#include <qevent.h> +#include <qobjectlist.h> +#include <qlabel.h> +#include <qwizard.h> +#include <qptrdict.h> +#include <qpushbutton.h> +#include <qtoolbutton.h> +#include <qcheckbox.h> +#include <qradiobutton.h> +#include <qbuttongroup.h> + +#include "metadatabase.h" +#ifndef KOMMANDER +#include "qwidgetfactory.h" +#include "ewidgetfactory.h" +#else +#include "kommanderfactory.h" +#endif + +/* KOMMANDER INCLUDES */ +#include <dialog.h> +#include <wizard.h> +#include <tabwidget.h> +#include "toolbox.h" + +class QWidget; +class QLayout; +class FormWindow; + +class WidgetFactory : public Qt +{ + friend class CustomWidgetFactory; + +public: + enum LayoutType { + HBox, + VBox, + Grid, + NoLayout + }; + + static QWidget *create( int id, QWidget *parent, const char *name = 0, bool init = TRUE, + const QRect *rect = 0, Qt::Orientation orient = Qt::Horizontal ); + static QLayout *createLayout( QWidget *widget, QLayout* layout, LayoutType type ); + static void deleteLayout( QWidget *widget ); + + static LayoutType layoutType( QWidget *w ); + static LayoutType layoutType( QWidget *w, QLayout *&layout ); + static LayoutType layoutType( QLayout *layout ); + static QWidget *layoutParent( QLayout *layout ); + + static QWidget* containerOfWidget( QWidget *w ); + static QWidget* widgetOfContainer( QWidget *w ); + + static bool isPassiveInteractor( QObject* o ); + static const char* classNameOf( QObject* o ); + + static void initChangedProperties( QObject *o ); + + static bool hasSpecialEditor( int id ); + static bool hasItems( int id ); + static void editWidget( int id, QWidget *parent, QWidget *editWidget, FormWindow *fw ); + + static bool canResetProperty( QObject *w, const QString &propName ); + static bool resetProperty( QObject *w, const QString &propName ); + static QVariant defaultValue( QObject *w, const QString &propName ); + static QString defaultCurrentItem( QObject *w, const QString &propName ); + + static QVariant property( QObject *w, const char *name ); + static void saveDefaultProperties( QWidget *w, int id ); + +private: + static QWidget *createWidget( const QString &className, QWidget *parent, const char *name, bool init, + const QRect *r = 0, Qt::Orientation orient = Qt::Horizontal ); + static QWidget *createCustomWidget( QWidget *parent, const char *name, MetaDataBase::CustomWidget *w ); + +}; + + +class QDesignerTabWidget : public QTabWidget +{ + Q_OBJECT + Q_PROPERTY( int currentPage READ currentPage WRITE setCurrentPage STORED false DESIGNABLE true ) + Q_PROPERTY( QString pageTitle READ pageTitle WRITE setPageTitle STORED false DESIGNABLE true ) + Q_PROPERTY( QCString pageName READ pageName WRITE setPageName STORED false DESIGNABLE true ) +public: + QDesignerTabWidget( QWidget *parent, const char *name ); + + int currentPage() const; + void setCurrentPage( int i ); + QString pageTitle() const; + void setPageTitle( const QString& title ); + QCString pageName() const; + void setPageName( const QCString& name ); + + int count() const; + QTabBar *tabBar() const { return QTabWidget::tabBar(); } + + bool eventFilter( QObject*, QEvent* ); + +private: + QPoint pressPoint; + QWidget *dropIndicator; + QWidget *dragPage; + QString dragLabel; + bool mousePressed; +}; + +class EditorTabWidget : public TabWidget +{ + Q_OBJECT + Q_PROPERTY( int currentPage READ currentPage WRITE setCurrentPage STORED false DESIGNABLE true ) + Q_PROPERTY( QString pageTitle READ pageTitle WRITE setPageTitle STORED false DESIGNABLE true ) + Q_PROPERTY( QCString pageName READ pageName WRITE setPageName STORED false DESIGNABLE true ) +public: + EditorTabWidget( QWidget *parent, const char *name ); + + int currentPage() const; + void setCurrentPage( int i ); + QString pageTitle() const; + void setPageTitle( const QString& title ); + QCString pageName() const; + void setPageName( const QCString& name ); + + int count() const; + QTabBar *tabBar() const { return QTabWidget::tabBar(); } + + bool eventFilter( QObject*, QEvent* ); + +private: + QPoint pressPoint; + QWidget *dropIndicator; + QWidget *dragPage; + QString dragLabel; + bool mousePressed; +}; + +class EditorToolBox : public ToolBox +{ + Q_OBJECT + Q_PROPERTY( int currentPage READ currentPage WRITE setCurrentPage STORED false DESIGNABLE true ) + Q_PROPERTY( QString pageTitle READ pageTitle WRITE setPageTitle STORED false DESIGNABLE true ) + Q_PROPERTY( QCString pageName READ pageName WRITE setPageName STORED false DESIGNABLE true ) +public: + EditorToolBox( QWidget *parent, const char *name ); + + int currentPage() const; + void setCurrentPage( int i ); + QString pageTitle() const; + void setPageTitle( const QString& title ); + QCString pageName() const; + void setPageName( const QCString& name ); + + int count() const; +}; + +class QDesignerWizard : public QWizard +{ + Q_OBJECT + Q_PROPERTY( int currentPage READ currentPageNum WRITE setCurrentPage STORED false DESIGNABLE true ) + Q_PROPERTY( QString pageTitle READ pageTitle WRITE setPageTitle STORED false DESIGNABLE true ) + Q_PROPERTY( QCString pageName READ pageName WRITE setPageName STORED false DESIGNABLE true ) +public: + QDesignerWizard( QWidget *parent, const char *name ) : QWizard( parent, name ) {} + + int currentPageNum() const; + void setCurrentPage( int i ); + QString pageTitle() const; + void setPageTitle( const QString& title ); + QCString pageName() const; + void setPageName( const QCString& name ); + int pageNum( QWidget *page ); + void addPage( QWidget *p, const QString & ); + void removePage( QWidget *p ); + void insertPage( QWidget *p, const QString &t, int index ); + bool isPageRemoved( QWidget *p ) { return (removedPages.find( p ) != 0); } + + void reject() {} + +private: + struct Page + { + Page( QWidget *a, const QString &b ) : p( a ), t( b ) {} + Page() : p( 0 ), t( QString::null ) {} + QWidget *p; + QString t; + }; + QPtrDict<QWidget> removedPages; + +}; + +class QLayoutWidget : public QWidget +{ + Q_OBJECT + +public: + QLayoutWidget( QWidget *parent, const char *name ) : QWidget( parent, name ), sp( QWidget::sizePolicy() ) {} + + QSizePolicy sizePolicy() const; + void updateSizePolicy(); + +protected: + void paintEvent( QPaintEvent * ); + bool event( QEvent * ); + QSizePolicy sp; + +}; + + +class CustomWidget : public QWidget +{ + Q_OBJECT + +public: + CustomWidget( QWidget *parent, const char *name, MetaDataBase::CustomWidget *cw ) + : QWidget( parent, name ), cusw( cw ) { + alwaysExpand = parentWidget() && parentWidget()->inherits( "FormWindow" ); + setSizePolicy( cw->sizePolicy ); + if ( !alwaysExpand ) + setBackgroundMode( PaletteDark ); + } + + QSize sizeHint() const { + QSize sh = cusw->sizeHint; + if ( sh.isValid() ) + return sh; + return QWidget::sizeHint(); + } + + QString realClassName() { return cusw->className; } + MetaDataBase::CustomWidget *customWidget() const { return cusw; } + +protected: + void paintEvent( QPaintEvent *e ); + + MetaDataBase::CustomWidget *cusw; + bool alwaysExpand; + +}; + + +class Line : public QFrame +{ + Q_OBJECT + + Q_PROPERTY( Orientation orientation READ orientation WRITE setOrientation ) + Q_OVERRIDE( int frameWidth DESIGNABLE false ) + Q_OVERRIDE( Shape frameShape DESIGNABLE false ) + Q_OVERRIDE( QRect frameRect DESIGNABLE false ) + Q_OVERRIDE( QRect contentsRect DESIGNABLE false ) +public: + Line( QWidget *parent, const char *name ) + : QFrame( parent, name, WMouseNoMask ) { + setFrameStyle( HLine | Sunken ); + } + + void setOrientation( Orientation orient ) { + if ( orient == Horizontal ) + setFrameShape( HLine ); + else + setFrameShape( VLine ); + } + Orientation orientation() const { + return frameShape() == HLine ? Horizontal : Vertical; + } +}; + +class QDesignerLabel : public QLabel +{ + Q_OBJECT + + Q_PROPERTY( QCString buddy READ buddyWidget WRITE setBuddyWidget ) + +public: + QDesignerLabel( QWidget *parent = 0, const char *name = 0 ) + : QLabel( parent, name ) { myBuddy = 0; } + + void setBuddyWidget( const QCString &b ) { + myBuddy = b; + updateBuddy(); + } + QCString buddyWidget() const { + return myBuddy; + }; + +protected: + void showEvent( QShowEvent *e ) { + QLabel::showEvent( e ); + updateBuddy(); + } + + +private: + void updateBuddy(); + + QCString myBuddy; + +}; + +class QDesignerWidget : public QWidget +{ + Q_OBJECT + +public: + QDesignerWidget( FormWindow *fw, QWidget *parent, const char *name ) + : QWidget( parent, name, WResizeNoErase ), formwindow( fw ) {} + +protected: + void paintEvent( QPaintEvent *e ); + +private: + FormWindow *formwindow; + +}; + +class QDesignerDialog : public QDialog +{ + Q_OBJECT + +public: + QDesignerDialog( FormWindow *fw, QWidget *parent, const char *name ) + : QDialog( parent, name, FALSE, WResizeNoErase ), formwindow( fw ) {} + +protected: + void paintEvent( QPaintEvent *e ); + +private: + FormWindow *formwindow; + +}; + +class QDesignerToolButton : public QToolButton +{ + Q_OBJECT + Q_PROPERTY( int buttonGroupId READ buttonGroupId WRITE setButtonGroupId ) + +public: + QDesignerToolButton( QWidget *parent, const char *name ) + : QToolButton( parent, name ) {} + + bool isInButtonGroup() const { + return parentWidget() && parentWidget()->inherits( "QButtonGroup" ); + } + int buttonGroupId() const { + return parentWidget() && parentWidget()->inherits( "QButtonGroup" ) ? ( (QButtonGroup*)parentWidget() )->id( (QButton*)this ) : -1; + } + void setButtonGroupId( int id ) { + if ( parentWidget() && parentWidget()->inherits( "QButtonGroup" ) ) { + ( (QButtonGroup*)parentWidget() )->remove( this ); + ( (QButtonGroup*)parentWidget() )->insert( this, id ); + } + } +}; + +class QDesignerRadioButton : public QRadioButton +{ + Q_OBJECT + Q_PROPERTY( int buttonGroupId READ buttonGroupId WRITE setButtonGroupId ) + +public: + QDesignerRadioButton( QWidget *parent, const char *name ) + : QRadioButton( parent, name ) {} + + bool isInButtonGroup() const { + return parentWidget() && parentWidget()->inherits( "QButtonGroup" ); + } + int buttonGroupId() const { + return parentWidget() && parentWidget()->inherits( "QButtonGroup" ) ? ( (QButtonGroup*)parentWidget() )->id( (QButton*)this ) : -1; + } + void setButtonGroupId( int id ) { + if ( parentWidget() && parentWidget()->inherits( "QButtonGroup" ) ) { + ( (QButtonGroup*)parentWidget() )->remove( this ); + ( (QButtonGroup*)parentWidget() )->insert( this, id ); + } + } + +}; + +class QDesignerPushButton : public QPushButton +{ + Q_OBJECT + Q_PROPERTY( int buttonGroupId READ buttonGroupId WRITE setButtonGroupId ) + +public: + QDesignerPushButton( QWidget *parent, const char *name ) + : QPushButton( parent, name ) {} + + bool isInButtonGroup() const { + return parentWidget() && parentWidget()->inherits( "QButtonGroup" ); + } + int buttonGroupId() const { + return parentWidget() && parentWidget()->inherits( "QButtonGroup" ) ? ( (QButtonGroup*)parentWidget() )->id( (QButton*)this ) : -1; + } + void setButtonGroupId( int id ) { + if ( parentWidget() && parentWidget()->inherits( "QButtonGroup" ) ) { + ( (QButtonGroup*)parentWidget() )->remove( this ); + ( (QButtonGroup*)parentWidget() )->insert( this, id ); + } + } + +}; + +class QDesignerCheckBox : public QCheckBox +{ + Q_OBJECT + Q_PROPERTY( int buttonGroupId READ buttonGroupId WRITE setButtonGroupId ) + +public: + QDesignerCheckBox( QWidget *parent, const char *name ) + : QCheckBox( parent, name ) {} + + bool isInButtonGroup() const { + return parentWidget() && parentWidget()->inherits( "QButtonGroup" ); + } + int buttonGroupId() const { + return parentWidget() && parentWidget()->inherits( "QButtonGroup" ) ? ( (QButtonGroup*)parentWidget() )->id( (QButton*)this ) : -1; + } + void setButtonGroupId( int id ) { + if ( parentWidget() && parentWidget()->inherits( "QButtonGroup" ) ) { + ( (QButtonGroup*)parentWidget() )->remove( this ); + ( (QButtonGroup*)parentWidget() )->insert( this, id ); + } + } + +}; + +class EditorDialog : public Dialog +{ + Q_OBJECT + +public: + EditorDialog( FormWindow *fw, QWidget *parent, const char *name ) + : Dialog( parent, name, FALSE, WResizeNoErase ), formwindow( fw ) { } + +protected: + void paintEvent( QPaintEvent *e ); + +private: + FormWindow *formwindow; + +}; +#endif diff --git a/kommander/editor/widgetinterface.h b/kommander/editor/widgetinterface.h new file mode 100644 index 00000000..bf6bcd55 --- /dev/null +++ b/kommander/editor/widgetinterface.h @@ -0,0 +1,29 @@ + /********************************************************************** +** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef WIDGETINTERFACE_H +#define WIDGETINTERFACE_H + +#include <private/qwidgetinterface_p.h> + +#define WidgetInterface QWidgetFactoryInterface +#define IID_Widget IID_QWidgetFactory + +#endif diff --git a/kommander/editor/wizardeditor.ui b/kommander/editor/wizardeditor.ui new file mode 100644 index 00000000..c73e2628 --- /dev/null +++ b/kommander/editor/wizardeditor.ui @@ -0,0 +1,320 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> +<class>WizardEditorBase</class> +<widget class="QDialog"> + <property name="name"> + <cstring>WizardEditorBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>369</width> + <height>245</height> + </rect> + </property> + <property name="caption"> + <string>Wizard Page Editor</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout19</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout14</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>2</number> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>pagesLabel</cstring> + </property> + <property name="text"> + <string>Wizard pages:</string> + </property> + </widget> + <widget class="QListBox"> + <property name="name"> + <cstring>listBox</cstring> + </property> + </widget> + </vbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout18</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonAdd</cstring> + </property> + <property name="text"> + <string>&Add</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonRemove</cstring> + </property> + <property name="text"> + <string>&Remove</string> + </property> + </widget> + <spacer> + <property name="name" stdset="0"> + <cstring>Spacer11</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonUp</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image0</pixmap> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonDown</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="pixmap"> + <pixmap>image1</pixmap> + </property> + </widget> + </vbox> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>Layout1</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name" stdset="0"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and apply all the changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonApply</cstring> + </property> + <property name="text"> + <string>&Apply</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Apply all changes.</string> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0"> + <string>Close the dialog and discard any changes.</string> + </property> + </widget> + </hbox> + </widget> + </vbox> +</widget> +<images> + <image name="image0"> + <data format="XPM.GZ" length="1040">789c5dcf4d73a2401006e0bbbf82726ed61609ca0c4c6ded0125dfd1985baab6f600338c280a46fc08a6f6bf2f3ddd26abc0619eb7677a9aab9ef3361d3bbdab4ebd4db673e5a83cd9383dbd5bad9adf7f7e7d76ba9e70dacfe78ed7fdd1e9ba8e72265599c17adaae99773df033cb9818225f2cc38132027887f4af8d01ee817dc935720d1c7827d648c1910f969273cd8123e4a93a21d2d95ba0ef098d631864409b6f2c13c195063e210389d55720ef0b8dd56764e021c7c8905acd2c93b66aa71a224389fffb0e14fd4062f51119d290115252ab2391c6585ab653a5f6de033294f8fbf74849175544eacc80c120e478b644267451434c90a9659a78d8aa2066585d00c33425ae80d25702b92352756ea91475ce90ba8f4c80299cb5177d58ea8c5a6d819a67b4595b66865a29602632628e3406b9011a73a26b1f96a40c575f19536dc7d959c6543e5f1466f95fd646aba22cabf5fb57c636f9a24ddaa75e52c6b6f90ea3aada2f313b7ccc1b1b1da3e128a67df09aaa1addb82963dfb3b8b7cdf18e9dcfe70e8b687f91b1fba25acf2eb2a289460f17d9a28c4c7c9e1d8ae8f1e9227b1e4feafa859d9f8de378fa8afbfefeecfc030f08f1a3</data> + </image> + <image name="image1"> + <data format="XPM.GZ" length="1085">789c5dd0cd6ee2301000e03b4f11911b5ad1189290a8da0324a5e90f29941e2aadf6e0d84ea10d1020849ad5befb7a3cceaa29e2e06f663c33ce55cf7a9dcfacde55e758d16acd2cb6a207abc74f9b8dfcf5fbe79f4e97f896fabb8145ba3f3addbec5ac74b715704ed5d9769c01cb73e0423368f80224c190e53e70091c389e83d98366e83942679f0c43cc7e0087c4f3307b63c8b1d559337459c6810f48df137aab49436c750f748917320f78418e4cf65993fa04b33572c4313b067a039f333de80e39e238680ff4d5d2581c69d2c0c3ad8e0db1f30619127cd1dcd00c7a4452824c80a321359d73cd8c129c1b1b0acc726030a414b31299f9989d1952a4d0ccc23073819f861c973c2133d3b904aacf6ceeda9a8c12bc5b219929de21f9005900a99bf9f8e9a8a159728a5477f5d77847367719305373b1788b14668d4c9337d95b2437ef5d03b9c84df10a28fc866fc05c9522fbf0b369c6b8d0c7ffb1fc6db57effb0bfc68acd7657ee0fedba63599dea73d18a7dca525ec6ed3aa16293a81d2bf232beb1bfc578d58a416731ad641da95381b1e3f496ca939432c9f3bb7b8c450f8fb39994b18c93493a36fda2a7b9aa8ae3e4b278b69b192aa822499dc2d6cddc68b94ff697f46c7fdd255ad6f5e2dbdbfac7c3cbd8ecf7f7baf30f538f0154</data> + </image> +</images> +<connections> + <connection> + <sender>buttonHelp</sender> + <signal>clicked()</signal> + <receiver>WizardEditorBase</receiver> + <slot>helpClicked()</slot> + </connection> + <connection> + <sender>buttonApply</sender> + <signal>clicked()</signal> + <receiver>WizardEditorBase</receiver> + <slot>applyClicked()</slot> + </connection> + <connection> + <sender>buttonUp</sender> + <signal>clicked()</signal> + <receiver>WizardEditorBase</receiver> + <slot>upClicked()</slot> + </connection> + <connection> + <sender>buttonDown</sender> + <signal>clicked()</signal> + <receiver>WizardEditorBase</receiver> + <slot>downClicked()</slot> + </connection> + <connection> + <sender>buttonAdd</sender> + <signal>clicked()</signal> + <receiver>WizardEditorBase</receiver> + <slot>addClicked()</slot> + </connection> + <connection> + <sender>buttonRemove</sender> + <signal>clicked()</signal> + <receiver>WizardEditorBase</receiver> + <slot>removeClicked()</slot> + </connection> + <connection> + <sender>listBox</sender> + <signal>selected(int)</signal> + <receiver>WizardEditorBase</receiver> + <slot>itemSelected(int)</slot> + </connection> + <connection> + <sender>listBox</sender> + <signal>highlighted(int)</signal> + <receiver>WizardEditorBase</receiver> + <slot>itemHighlighted(int)</slot> + </connection> + <connection> + <sender>buttonOk</sender> + <signal>clicked()</signal> + <receiver>WizardEditorBase</receiver> + <slot>okClicked()</slot> + </connection> + <connection> + <sender>buttonCancel</sender> + <signal>clicked()</signal> + <receiver>WizardEditorBase</receiver> + <slot>cancelClicked()</slot> + </connection> +</connections> +<slots> + <slot access="protected">init()</slot> + <slot access="protected">destroy()</slot> + <slot access="protected">addClicked()</slot> + <slot access="protected">applyClicked()</slot> + <slot access="protected">cancelClicked()</slot> + <slot access="protected">downClicked()</slot> + <slot access="protected">helpClicked()</slot> + <slot access="protected">itemHighlighted(int)</slot> + <slot access="protected">itemSelected(int)</slot> + <slot access="protected">okClicked()</slot> + <slot access="protected">removeClicked()</slot> + <slot access="protected">upClicked()</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kommander/editor/wizardeditorimpl.cpp b/kommander/editor/wizardeditorimpl.cpp new file mode 100644 index 00000000..12f8d33f --- /dev/null +++ b/kommander/editor/wizardeditorimpl.cpp @@ -0,0 +1,220 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "wizardeditorimpl.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "pixmapchooser.h" +#include "command.h" + +#include <qwizard.h> +#include <qlistbox.h> +#include <qpushbutton.h> +#include <kinputdialog.h> + +#include <klocale.h> + +WizardEditor::WizardEditor( QWidget *parent, QWizard *w, FormWindow *fw ) + : WizardEditorBase( parent, 0 ), formwindow( fw ), wizard( w ) +{ + connect( buttonHelp, SIGNAL( clicked() ), MainWindow::self, SLOT( showDialogHelp() ) ); + fillListBox(); +} + +WizardEditor::~WizardEditor() +{ + commands.setAutoDelete( true ); +} + +void WizardEditor::okClicked() +{ + applyClicked(); + accept(); +} + +void WizardEditor::cancelClicked() +{ + reject(); +} + +void WizardEditor::applyClicked() +{ + if ( commands.isEmpty() ) return; + + // schedule macro command + MacroCommand* cmd = new MacroCommand( i18n("Edit Wizard Pages" ), formwindow, commands ); + formwindow->commandHistory()->addCommand( cmd ); + cmd->execute(); + + // clear command list + commands.clear(); + + // fix wizard buttons + for ( int i = 0; i < wizard->pageCount(); i++ ) { + + QWidget * page = wizard->page( i ); + if ( i == 0 ) { // first page + + wizard->setBackEnabled( page, false ); + wizard->setNextEnabled( page, true ); + } + else if ( i == wizard->pageCount() - 1 ) { // last page + + wizard->setBackEnabled( page, true ); + wizard->setNextEnabled( page, false ); + } + else { + + wizard->setBackEnabled( page, true ); + wizard->setNextEnabled( page, true ); + } + wizard->setFinishEnabled( page, false ); + } + + // update listbox + int index = listBox->currentItem(); + fillListBox(); + listBox->setCurrentItem( index ); + + // show current page + wizard->showPage( wizard->page( 0 ) ); +} + +void WizardEditor::helpClicked() +{ + +} + +void WizardEditor::addClicked() +{ + int index = listBox->currentItem() + 1; + // update listbox + listBox->insertItem( i18n( "Page" ), index ); + + // schedule add command + AddWizardPageCommand *cmd = new AddWizardPageCommand( i18n("Add Page to %1" ).arg( wizard->name() ), + formwindow, wizard, "Page", index, false); + commands.append( cmd ); + + // update buttons + updateButtons(); +} + +void WizardEditor::removeClicked() +{ + if (listBox->count() < 2 ) return; + + int index = listBox->currentItem(); + + // update listbox + listBox->removeItem( index); + + // schedule remove command + DeleteWizardPageCommand *cmd = new DeleteWizardPageCommand( i18n("Delete Page %1 of %2" ) + .arg( listBox->text( index ) ).arg( wizard->name() ), + formwindow, wizard, index, false ); + commands.append( cmd ); + + // update buttons + updateButtons(); +} + +void WizardEditor::upClicked() +{ + int index1 = listBox->currentItem(); + int index2 = index1 - 1; + + // swap listbox items + QString item1 = listBox->text( index1 ); + listBox->removeItem( index1 ); + listBox->insertItem( item1, index2 ); + listBox->setCurrentItem( index2 ); + + // schedule swap command + SwapWizardPagesCommand *cmd = new SwapWizardPagesCommand( i18n("Swap Pages %1 and %2 of %3" ).arg( index1 ).arg( index2 ) + .arg( wizard->name() ), formwindow, wizard, index1, index2); + commands.append( cmd ); + + // update buttons + updateButtons(); +} + +void WizardEditor::downClicked() +{ + int index1 = listBox->currentItem(); + int index2 = index1 + 1; + + // swap listbox items + QString item1 = listBox->text( index1 ); + listBox->removeItem( index1 ); + listBox->insertItem( item1, index2 ); + listBox->setCurrentItem( index2 ); + + // schedule swap command + SwapWizardPagesCommand *cmd = new SwapWizardPagesCommand( i18n("Swap Pages %1 and %2 of %3" ).arg( index1 ).arg( index2 ) + .arg( wizard->name() ), formwindow, wizard, index2, index1); + commands.append( cmd ); + + // update buttons + updateButtons(); +} + +void WizardEditor::fillListBox() +{ + listBox->clear(); + + if ( !wizard ) return; + for ( int i = 0; i < wizard->pageCount(); i++ ) + listBox->insertItem( wizard->title( wizard->page( i ) ) ); + + updateButtons(); +} + +void WizardEditor::itemHighlighted( int ) +{ + updateButtons(); +} + +void WizardEditor::itemSelected( int index ) +{ + if ( index < 0 ) return; + + bool ok = false; + QString text = KInputDialog::getText( i18n("Page Title"), i18n("New page title:" ), listBox->text( index ), &ok, this ); + if ( ok ) { + QString pn( i18n("Rename page %1 of %2" ).arg( listBox->text( index ) ).arg( wizard->name() ) ); + RenameWizardPageCommand *cmd = new RenameWizardPageCommand( pn, formwindow, wizard, index, text ); + commands.append( cmd ); + listBox->changeItem( text, index ); + } +} + +void WizardEditor::updateButtons() +{ + int index = listBox->currentItem(); + + buttonUp->setEnabled( index > 0 ); + buttonDown->setEnabled( index < (int)listBox->count() - 1 ); + buttonRemove->setEnabled( index >= 0 ); + + if ( listBox->count() < 2 ) + buttonRemove->setEnabled( false ); +} +#include "wizardeditorimpl.moc" diff --git a/kommander/editor/wizardeditorimpl.h b/kommander/editor/wizardeditorimpl.h new file mode 100644 index 00000000..3a9f909e --- /dev/null +++ b/kommander/editor/wizardeditorimpl.h @@ -0,0 +1,64 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef WIZARDEDITORIMPL_H +#define WIZARDEDITORIMPL_H + +class QWizard; +class FormWindow; + +#include <qptrlist.h> + +#include "wizardeditor.h" +#include "command.h" + +class WizardEditor : public WizardEditorBase +{ + Q_OBJECT + +public: + WizardEditor( QWidget *parent, QWizard *wizard, FormWindow *fw ); + ~WizardEditor(); + +protected slots: + void okClicked(); + void applyClicked(); + void cancelClicked(); + void helpClicked(); + + void addClicked(); + void removeClicked(); + void upClicked(); + void downClicked(); + + void itemHighlighted( int ); + void itemSelected( int ); + +private: + void updateButtons(); + void fillListBox(); + +private: + FormWindow *formwindow; + QWizard *wizard; + QPtrList<Command> commands; +}; + +#endif diff --git a/kommander/editor/workspace.cpp b/kommander/editor/workspace.cpp new file mode 100644 index 00000000..c5c6420e --- /dev/null +++ b/kommander/editor/workspace.cpp @@ -0,0 +1,787 @@ +/********************************************************************** +** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include <qvariant.h> // HP-UX compiler needs this here +#include <qlistview.h> +#include "workspace.h" +#include "formwindow.h" +#include "mainwindow.h" +#include "pixmapchooser.h" +#include "globaldefs.h" +#include "command.h" +#ifndef KOMMANDER +#include "project.h" +#include "pixmapcollection.h" +#include "sourcefile.h" +#include "sourceeditor.h" +#endif +#include "formfile.h" + +#include <qheader.h> +#include <qfileinfo.h> +#include <qapplication.h> +#include <qpainter.h> +#include <qpen.h> +#include <qobjectlist.h> +#include <qworkspace.h> +#include <qpopupmenu.h> +#include <qtextstream.h> +#include "qcompletionedit.h" + +#include <kurldrag.h> +#include <klocale.h> + +static const char * const folderxpm[]={ + "16 16 6 1", + ". c None", + "b c #ffff00", + "d c #000000", + "* c #999999", + "a c #cccccc", + "c c #ffffff", + "................", + "................", + "..*****.........", + ".*ababa*........", + "*abababa******..", + "*cccccccccccc*d.", + "*cbababababab*d.", + "*cabababababa*d.", + "*cbababababab*d.", + "*cabababababa*d.", + "*cbababababab*d.", + "*cabababababa*d.", + "*cbababababab*d.", + "**************d.", + ".dddddddddddddd.", + "................"}; + +static const char * const file_xpm[]={ + "16 16 5 1", + ". c #7f7f7f", + "# c None", + "c c #000000", + "b c #bfbfbf", + "a c #ffffff", + "################", + "..........######", + ".aaaaaaaab.#####", + ".aaaaaaaaba.####", + ".aaaaaaaacccc###", + ".aaaaaaaaaabc###", + ".aaaaaaaaaabc###", + ".aaaaaaaaaabc###", + ".aaaaaaaaaabc###", + ".aaaaaaaaaabc###", + ".aaaaaaaaaabc###", + ".aaaaaaaaaabc###", + ".aaaaaaaaaabc###", + ".aaaaaaaaaabc###", + ".bbbbbbbbbbbc###", + "ccccccccccccc###"}; + +static QPixmap *folderPixmap = 0; +static QPixmap *filePixmap = 0; +static QPixmap* formPixmap = 0; + +#ifndef KOMMANDER +WorkspaceItem::WorkspaceItem( QListView *parent, Project* p ) +#else +WorkspaceItem::WorkspaceItem( QListView *parent ) +#endif + : QListViewItem( parent ) +{ + init(); +#ifndef KOMMANDER + project = p; +#endif + t = ProjectType; + setPixmap( 0, *folderPixmap ); + setExpandable( false ); +} + +#ifndef KOMMANDER +WorkspaceItem::WorkspaceItem( QListViewItem *parent, SourceFile* sf ) + : QListViewItem( parent ) +{ + init(); + sourceFile = sf; + t = SourceFileType; + setPixmap( 0, *filePixmap ); +} +#endif + +WorkspaceItem::WorkspaceItem( QListViewItem *parent, FormFile* ff, Type type ) + : QListViewItem( parent ) +{ + init(); + formFile = ff; + t = type; + if ( type == FormFileType ) { + setPixmap( 0, *formPixmap ); + QObject::connect( ff, SIGNAL( somethingChanged(FormFile*) ), listView(), SLOT( update(FormFile*) ) ); +#ifndef KOMMANDER + if ( formFile->supportsCodeFile() ) + (void) new WorkspaceItem( this, formFile, FormSourceType ); + } else if ( type == FormSourceType ) { + setPixmap( 0, *filePixmap ); +#endif + } +} + +WorkspaceItem::WorkspaceItem( QListView *parent, FormFile* ff, Type type ) + : QListViewItem( parent ) +{ + init(); + formFile = ff; + t = type; + if ( type == FormFileType ) { + setPixmap( 0, *formPixmap ); + QObject::connect( ff, SIGNAL( somethingChanged(FormFile*) ), listView(), SLOT( update(FormFile*) ) ); +#ifndef KOMMANDER + if ( formFile->supportsCodeFile() ) + (void) new WorkspaceItem( this, formFile, FormSourceType ); + } else if ( type == FormSourceType ) { + setPixmap( 0, *filePixmap ); +#endif + } +} + + +void WorkspaceItem::init() +{ + autoOpen = false; + useOddColor = false; +#ifndef KOMMANDER + project = 0; + sourceFile = 0; +#endif + formFile = 0; +} + +void WorkspaceItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align ) +{ + QColorGroup g( cg ); + g.setColor( QColorGroup::Base, backgroundColor() ); + g.setColor( QColorGroup::Foreground, Qt::black ); + +#ifndef KOMMANDER + if ( type() == FormSourceType && !formFile->hasFormCode() ) { + g.setColor( QColorGroup::Text, listView()->palette().disabled().color( QColorGroup::Text) ); + g.setColor( QColorGroup::HighlightedText, listView()->palette().disabled().color( QColorGroup::Text) ); + } else { +#endif + g.setColor( QColorGroup::Text, Qt::black ); +#ifndef KOMMANDER + } +#endif + p->save(); + + if ( isModified() ) { + QFont f = p->font(); + f.setBold( true ); + p->setFont( f ); + } + + QListViewItem::paintCell( p, g, column, width, align ); + p->setPen( QPen( cg.dark(), 1 ) ); + if ( column == 0 ) + p->drawLine( 0, 0, 0, height() - 1 ); + if ( listView()->firstChild() != this ) { + if ( nextSibling() != itemBelow() && itemBelow()->depth() < depth() ) { + int d = depth() - itemBelow()->depth(); + p->drawLine( -listView()->treeStepSize() * d, height() - 1, 0, height() - 1 ); + } + } + p->drawLine( 0, height() - 1, width, height() - 1 ); + p->drawLine( width - 1, 0, width - 1, height() ); + p->restore(); +} + +QString WorkspaceItem::text( int column ) const +{ + if ( column != 0 ) + return QListViewItem::text( column ); + switch( t ) { +#ifndef KOMMANDER + case ProjectType: + if ( project->isDummy() ) + return i18n("<No Project>" ); + return project->makeRelative( project->fileName() ); +#endif + case FormFileType: + return formFile->formName() + ": " + formFile->fileName(); +#ifndef KOMMANDER + case FormSourceType: + return formFile->codeFile(); + case SourceFileType: + return sourceFile->fileName(); +#endif + } + + return QString::null; // shut up compiler +} + +void WorkspaceItem::fillCompletionList( QStringList& completion ) +{ + switch( t ) { + case ProjectType: + break; + case FormFileType: + completion += formFile->formName(); + completion += formFile->fileName(); + break; +#ifndef KOMMANDER + case FormSourceType: + completion += formFile->codeFile(); + break; + case SourceFileType: + completion += sourceFile->fileName(); + break; +#endif + } +} + +bool WorkspaceItem::checkCompletion( const QString& completion ) +{ + switch( t ) { + case ProjectType: + break; + case FormFileType: + return completion == formFile->formName() + || completion == formFile->fileName(); +#ifndef KOMMANDER + case FormSourceType: + return completion == formFile->codeFile(); + case SourceFileType: + return completion == sourceFile->fileName(); +#endif + } + return false; +} + + +bool WorkspaceItem::isModified() const +{ +#ifndef KOMMANDER + switch( t ) { + case ProjectType: + return project->isModified(); + case FormFileType: + return formFile->isModified( FormFile::WFormWindow ); + case FormSourceType: + return formFile->isModified( FormFile::WFormCode ); + case SourceFileType: + return sourceFile->isModified(); + } + return false; // shut up compiler +#else + return formFile->isModified(); +#endif +} + +QString WorkspaceItem::key( int column, bool ) const +{ + QString key = text( column ); + if ( t == FormFileType ) + key.prepend( "0" ); + else + key.prepend( "a" ); + return key; +} + +QColor WorkspaceItem::backgroundColor() +{ + bool b = useOddColor; + if ( t == FormSourceType && parent() ) + b = ( ( WorkspaceItem*)parent() )->useOddColor; + return b ? *backColor2 : *backColor1; +} + + +void WorkspaceItem::setOpen( bool b ) +{ + QListViewItem::setOpen( b ); + autoOpen = false; +} + +void WorkspaceItem::setAutoOpen( bool b ) +{ + QListViewItem::setOpen( b ); + autoOpen = b; +} + +Workspace::Workspace( QWidget *parent, MainWindow *mw ) + : QListView( parent, 0, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | + WStyle_Tool | WStyle_MinMax | WStyle_SysMenu ), mainWindow( mw ), +#ifndef KOMMANDER + project( 0 ), completionDirty( false ) +#else + completionDirty( false ) +#endif +{ + init_colors(); + + setDefaultRenameAction( Accept ); + blockNewForms = false; + bufferEdit = 0; + header()->setStretchEnabled( true ); + header()->hide(); + setSorting( 0 ); + setResizePolicy( QScrollView::Manual ); +#ifndef KOMMANDER + setIcon( PixmapChooser::loadPixmap( "logo" ) ); +#endif + QPalette p( palette() ); + p.setColor( QColorGroup::Base, QColor( *backColor2 ) ); + (void)*selectedBack; // hack + setPalette( p ); + addColumn( i18n("Files" ) ); + setAllColumnsShowFocus( true ); + connect( this, SIGNAL( mouseButtonClicked( int, QListViewItem *, const QPoint &, int ) ), + this, SLOT( itemClicked( int, QListViewItem *, const QPoint& ) ) ), + connect( this, SIGNAL( doubleClicked( QListViewItem * ) ), + this, SLOT( itemDoubleClicked( QListViewItem * ) ) ), + connect( this, SIGNAL( contextMenuRequested( QListViewItem *, const QPoint &, int ) ), + this, SLOT( rmbClicked( QListViewItem *, const QPoint& ) ) ), + setHScrollBarMode( AlwaysOff ); + setVScrollBarMode( AlwaysOn ); + viewport()->setAcceptDrops( true ); + setAcceptDrops( true ); + setColumnWidthMode( 1, Manual ); + + if ( !folderPixmap ) { + folderPixmap = new QPixmap( folderxpm ); + filePixmap = new QPixmap( file_xpm ); + formPixmap = new QPixmap( PixmapChooser::loadPixmap( "form.xpm", PixmapChooser::Mini ) ); + } + +#ifdef KOMMANDER + makeConnections(mw); +#endif +} + + +#ifndef KOMMANDER +void Workspace::projectDestroyed( QObject* o ) +{ + if ( o == project ) { + project = 0; + clear(); + } +} +#endif + +#ifndef KOMMANDER +void Workspace::setCurrentProject( Project *pro ) +{ + if ( project == pro ) + return; + if ( project ) { + disconnect( project, SIGNAL( sourceFileAdded(SourceFile*) ), this, SLOT( sourceFileAdded(SourceFile*) ) ); + disconnect( project, SIGNAL( sourceFileRemoved(SourceFile*) ), this, SLOT( sourceFileRemoved(SourceFile*) ) ); + disconnect( project, SIGNAL( formFileAdded(FormFile*) ), this, SLOT( formFileAdded(FormFile*) ) ); + disconnect( project, SIGNAL( formFileRemoved(FormFile*) ), this, SLOT( formFileRemoved(FormFile*) ) ); + disconnect( project, SIGNAL( projectModified() ), this, SLOT( update() ) ); + } + project = pro; + connect( project, SIGNAL( sourceFileAdded(SourceFile*) ), this, SLOT( sourceFileAdded(SourceFile*) ) ); + connect( project, SIGNAL( sourceFileRemoved(SourceFile*) ), this, SLOT( sourceFileRemoved(SourceFile*) ) ); + connect( project, SIGNAL( formFileAdded(FormFile*) ), this, SLOT( formFileAdded(FormFile*) ) ); + connect( project, SIGNAL( formFileRemoved(FormFile*) ), this, SLOT( formFileRemoved(FormFile*) ) ); + connect( project, SIGNAL( destroyed(QObject*) ), this, SLOT( projectDestroyed(QObject*) ) ); + connect( project, SIGNAL( projectModified() ), this, SLOT( update() ) ); + clear(); + + if ( bufferEdit ) + bufferEdit->clear(); + + projectItem = new WorkspaceItem( this, project ); + + projectItem->setOpen( true ); + + for ( QPtrListIterator<SourceFile> sources = project->sourceFiles(); + sources.current(); ++sources ) { + SourceFile* f = sources.current(); + (void) new WorkspaceItem( projectItem, f ); + } + + for ( QPtrListIterator<FormFile> forms = project->formFiles(); + forms.current(); ++forms ) { + FormFile* f = forms.current(); + (void) new WorkspaceItem( projectItem, f ); + } + + updateColors(); + completionDirty = true; +} +#endif + +#ifdef KOMMANDER +void Workspace::makeConnections(MainWindow *) +{ + // FIXME +} +#endif + +#ifndef KOMMANDER +void Workspace::sourceFileAdded( SourceFile* sf ) +{ + (void) new WorkspaceItem( projectItem, sf ); + Q_UNUSED(sf); + updateColors(); +} +#endif + +#ifndef KOMMANDER +void Workspace::sourceFileRemoved( SourceFile* sf ) +{ + delete findItem( sf ); + updateColors(); +} +#endif + +void Workspace::formFileAdded( FormFile* ff ) +{ +#ifndef KOMMANDER + (void) new WorkspaceItem( projectItem, ff ); +#else + (void) new WorkspaceItem( this, ff ); +#endif + updateColors(); +} + +void Workspace::formFileRemoved( FormFile* ff ) +{ + delete findItem( ff ); + updateColors(); +} + + +void Workspace::update() +{ + completionDirty = true; + triggerUpdate(); +} + +void Workspace::update( FormFile* ff ) +{ + QListViewItem* i = findItem( ff ); + if ( i ) { + i->repaint(); + if ( (i = i->firstChild()) ) + i->repaint(); + } +} + + +void Workspace::activeFormChanged( FormWindow *fw ) +{ + WorkspaceItem *i = findItem( fw->formFile() ); + if ( i ) { + setCurrentItem( i ); + setSelected( i, true ); + if ( !i->isOpen() ) + i->setAutoOpen( true ); + } + + closeAutoOpenItems(); + +} + +#ifndef KOMMANDER +void Workspace::activeEditorChanged( SourceEditor *se ) +{ + if ( !se->object() ) + return; + + if ( se->formWindow() ) { + WorkspaceItem *i = findItem( se->formWindow()->formFile() ); + if ( i && i->firstChild() ) { + if ( !i->isOpen() ) + i->setAutoOpen( true ); + setCurrentItem( i->firstChild() ); + setSelected( i->firstChild(), true ); + } + } else { + WorkspaceItem *i = findItem( se->sourceFile() ); + if ( i ) { + setCurrentItem( i ); + setSelected( i, true ); + } + } + + closeAutoOpenItems(); +} +#endif + +WorkspaceItem *Workspace::findItem( FormFile* ff) +{ + QListViewItemIterator it( this ); + for ( ; it.current(); ++it ) { + if ( ( (WorkspaceItem*)it.current() )->formFile == ff ) + return (WorkspaceItem*)it.current(); + } + return 0; +} + +#ifndef KOMMANDER +WorkspaceItem *Workspace::findItem( SourceFile *sf ) +{ + QListViewItemIterator it( this ); + for ( ; it.current(); ++it ) { + if ( ( (WorkspaceItem*)it.current() )->sourceFile == sf ) + return (WorkspaceItem*)it.current(); + } + return 0; +} +#endif + +void Workspace::closeAutoOpenItems() +{ + QListViewItemIterator it( this ); + for ( ; it.current(); ++it ) { + WorkspaceItem* i = (WorkspaceItem*) it.current(); + WorkspaceItem* ip = (WorkspaceItem*) i->parent(); + if ( i->type() == WorkspaceItem::FormSourceType ) { + if ( !i->isSelected() && !ip->isSelected() + && ip->isAutoOpen() ) { + ip->setAutoOpen( false ); + } + } + } +} + + +void Workspace::closeEvent( QCloseEvent *e ) +{ + e->accept(); +} + +void Workspace::itemDoubleClicked( QListViewItem *i ) +{ + if ( ( (WorkspaceItem*)i)->type()== WorkspaceItem::ProjectType ) + i->setOpen( true ); +} + +void Workspace::itemClicked( int button, QListViewItem *i, const QPoint& ) +{ + if ( !i || button != LeftButton ) + return; + + closeAutoOpenItems(); + + WorkspaceItem* wi = (WorkspaceItem*)i; +#ifndef KOMMANDER + if ( wi->type() == WorkspaceItem::SourceFileType ) + mainWindow->editSource( wi->sourceFile ); + switch( wi->type() ) { + case WorkspaceItem::ProjectType: + break; // ### TODO + case WorkspaceItem::FormFileType: + wi->formFile->showFormWindow(); + break; + case WorkspaceItem::FormSourceType: + wi->formFile->showEditor(); + break; + case WorkspaceItem::SourceFileType: + mainWindow->editSource( wi->sourceFile ); + break; + } +#else + wi->formFile->showFormWindow(); +#endif +} + +void Workspace::contentsDropEvent( QDropEvent *e ) +{ + if (!KURLDrag::canDecode(e)) + { + e->ignore(); + return; + } + + KURL::List files; + KURLDrag::decode(e, files); + if (files.isEmpty()) + return; + + for (KURL::List::Iterator it = files.begin(); it != files.end(); ++it) + { + if (!(*it).isLocalFile()) + continue; + QString fn = (*it).path(); + mainWindow->fileOpen(fn); + } +} + +void Workspace::contentsDragEnterEvent( QDragEnterEvent *e ) +{ + if ( !KURLDrag::canDecode( e ) ) + e->ignore(); + else + e->accept(); +} + +void Workspace::contentsDragMoveEvent( QDragMoveEvent *e ) +{ + if ( !KURLDrag::canDecode( e ) ) + e->ignore(); + else + e->accept(); +} + +void Workspace::rmbClicked( QListViewItem *i, const QPoint& pos ) +{ + if ( !i ) + return; + WorkspaceItem* wi = (WorkspaceItem*)i; + enum { OPEN_SOURCE, REMOVE_SOURCE, OPEN_FORM, REMOVE_FORM, OPEN_FORM_SOURCE }; + QPopupMenu menu( this ); + switch ( wi->type() ) { +#ifndef KOMMANDER + case WorkspaceItem::SourceFileType: + menu.insertItem( i18n("&Open Source File..." ), OPEN_SOURCE ); + menu.insertSeparator(); + menu.insertItem( PixmapChooser::loadPixmap( "editcut" ), + i18n("&Remove Source File From Project" ), REMOVE_SOURCE ); + break; +#endif + case WorkspaceItem::FormFileType: + menu.insertItem( i18n("&Open Form..." ), OPEN_FORM ); + menu.insertSeparator(); + menu.insertItem( PixmapChooser::loadPixmap( "editcut" ), +#ifndef KOMMANDER + i18n("&Remove Form From Project" ), REMOVE_FORM ); +#else + i18n("&Remove Form" ), REMOVE_FORM ); +#endif + break; + case WorkspaceItem::FormSourceType: + menu.insertItem( i18n("&Open Form Source..." ), OPEN_FORM_SOURCE ); + menu.insertSeparator(); + menu.insertItem( PixmapChooser::loadPixmap( "editcut" ), +#ifndef KOMMANDER + i18n("&Remove Form From Project" ), REMOVE_FORM ); +#else + i18n("&Remove Form" ), REMOVE_FORM ); +#endif + break; +#ifndef KOMMANDER + case WorkspaceItem::ProjectType: + MainWindow::self->popupProjectMenu( pos ); + return; +#endif + default: + return; + } + switch ( menu.exec( pos ) ) { +#ifndef KOMMANDER + case REMOVE_SOURCE: + project->removeSourceFile( wi->sourceFile ); + break; +#endif + case OPEN_SOURCE: + itemClicked( LeftButton, i, pos ); + break; +#ifndef KOMMANDER + case REMOVE_FORM: // FIXME + project->removeFormFile( wi->formFile ); + break; +#endif + case OPEN_FORM: + itemClicked( LeftButton, i, pos ); + break; + case OPEN_FORM_SOURCE: + itemClicked( LeftButton, i, pos ); + break; + default: + break; + } +} + +bool Workspace::eventFilter( QObject *o, QEvent * e ) +{ + // Reggie, on what type of events do we have to execute updateBufferEdit() + if ( o ==bufferEdit && e->type() != QEvent::ChildRemoved ) + updateBufferEdit(); + return QListView::eventFilter( o, e ); +} + +void Workspace::setBufferEdit( QCompletionEdit *edit ) +{ + bufferEdit = edit; + connect( bufferEdit, SIGNAL( chosen( const QString & ) ), + this, SLOT( bufferChosen( const QString & ) ) ); + bufferEdit->installEventFilter( this ); +} + +void Workspace::updateBufferEdit() +{ + if ( !bufferEdit || !completionDirty ) + return; + completionDirty = false; +#ifndef KOMMANDER + QStringList completion = MainWindow::self->projectFileNames(); + while ( it.current() ) { + ( (WorkspaceItem*)it.current())->fillCompletionList( completion ); + ++it; + } + completion.sort(); + bufferEdit->setCompletionList( completion ); +#endif +} + +void Workspace::bufferChosen( const QString &buffer ) +{ + if ( bufferEdit ) + bufferEdit->setText( "" ); + +#ifndef KOMMANDER + if ( MainWindow::self->projectFileNames().contains( buffer ) ) { + MainWindow::self->setCurrentProjectByFilename( buffer ); + return; + } +#endif + + QListViewItemIterator it( this ); + while ( it.current() ) { + if ( ( (WorkspaceItem*)it.current())->checkCompletion( buffer ) ) { + itemClicked( LeftButton, it.current(), QPoint() ); + break; + } + ++it; + } +} + +void Workspace::updateColors() +{ + QListViewItem* i = firstChild(); + if ( i ) + i = i->firstChild(); + bool b = true; + while ( i ) { + WorkspaceItem* wi = ( WorkspaceItem*) i; + i = i->nextSibling(); + wi->useOddColor = b; + b = !b; + } +} +#include "workspace.moc" diff --git a/kommander/editor/workspace.h b/kommander/editor/workspace.h new file mode 100644 index 00000000..e1c0ae8e --- /dev/null +++ b/kommander/editor/workspace.h @@ -0,0 +1,170 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef WORKSPACE_H +#define WORKSPACE_H + +#include <qlistview.h> + +class FormWindow; +class QResizeEvent; +class QCloseEvent; +class QDropEvent; +class QDragMoveEvent; +class QDragEnterEvent; +class MainWindow; +#ifndef KOMMANDER +class Project; +class SourceFile; +#endif +class FormFile; +class QCompletionEdit; +#ifndef KOMMANDER + class SourceEditor; +#endif + +class WorkspaceItem : public QListViewItem +{ +public: + enum Type { ProjectType, FormFileType, FormSourceType, SourceFileType }; + +#ifndef KOMMANDER + //WorkspaceItem( QListView *parent, Project* p ); +#else + WorkspaceItem(QListView *parent); +#endif +#ifndef KOMMANDER +// WorkspaceItem( QListViewItem *parent, SourceFile* sf ); +#endif + WorkspaceItem( QListViewItem *parent, FormFile* ff, Type t = FormFileType ); + WorkspaceItem( QListView *parent, FormFile* ff, Type t = FormFileType ); + + void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align ); + + Type type() const { return t; } + + bool isModified() const; + + QString text( int ) const; + + void fillCompletionList( QStringList& completion ); + bool checkCompletion( const QString& completion ); + + QString key( int, bool ) const; // column sorting key + +#ifndef KOMMANDER + Project* project; +#endif +#ifndef KOMMANDER + SourceFile* sourceFile; +#endif + FormFile* formFile; + + void setOpen( bool ); + + void setAutoOpen( bool ); + bool isAutoOpen() const { return isOpen() && autoOpen; } + + bool useOddColor; + +private: + void init(); + bool autoOpen; + QColor backgroundColor(); + Type t; +}; + +class Workspace : public QListView +{ + Q_OBJECT + +public: + Workspace( QWidget *parent , MainWindow *mw ); + +#ifndef KOMMANDER + void setCurrentProject( Project *pro ); +#endif +#ifdef KOMMANDER + void makeConnections(MainWindow *); +#endif + void contentsDropEvent( QDropEvent *e ); + void contentsDragEnterEvent( QDragEnterEvent *e ); + void contentsDragMoveEvent( QDragMoveEvent *e ); + + void setBufferEdit( QCompletionEdit *edit ); + +public slots: + + void update(); + void update( FormFile* ); + + void activeFormChanged( FormWindow *fw ); +#ifndef KOMMANDER +// void activeEditorChanged( SourceEditor *se ); +#endif + +protected: + void closeEvent( QCloseEvent *e ); + bool eventFilter( QObject *, QEvent * ); + + +private slots: + void itemClicked( int, QListViewItem *i, const QPoint& pos ); + void itemDoubleClicked( QListViewItem *i ); + void rmbClicked( QListViewItem *i, const QPoint& pos ); + void bufferChosen( const QString &buffer ); + +#ifndef KOMMANDER +// void projectDestroyed( QObject* ); +#endif + +#ifndef KOMMANDER +// void sourceFileAdded( SourceFile* ); + // void sourceFileRemoved( SourceFile* ); +#endif + + void formFileAdded( FormFile* ); + void formFileRemoved( FormFile* ); + +private: + WorkspaceItem *findItem( FormFile *ff ); +#ifndef KOMMANDER + WorkspaceItem *findItem( SourceFile *sf ); +#endif + + void closeAutoOpenItems(); + +private: + MainWindow *mainWindow; +#ifndef KOMMANDER + Project *project; +#endif +#ifndef KOMMANDER + WorkspaceItem *projectItem; +#endif + QCompletionEdit *bufferEdit; + bool blockNewForms; + void updateBufferEdit(); + bool completionDirty; + void updateColors(); + +}; + +#endif |