summaryrefslogtreecommitdiffstats
path: root/kommander/editor
diff options
context:
space:
mode:
Diffstat (limited to 'kommander/editor')
-rw-r--r--kommander/editor/Makefile.am53
-rw-r--r--kommander/editor/actiondnd.cpp1244
-rw-r--r--kommander/editor/actiondnd.h304
-rw-r--r--kommander/editor/actioneditor.ui201
-rw-r--r--kommander/editor/actioneditorimpl.cpp261
-rw-r--r--kommander/editor/actioneditorimpl.h64
-rw-r--r--kommander/editor/actionlistview.cpp111
-rw-r--r--kommander/editor/actionlistview.h75
-rw-r--r--kommander/editor/asciivalidator.cpp77
-rw-r--r--kommander/editor/asciivalidator.h46
-rw-r--r--kommander/editor/assistproc.cpp74
-rw-r--r--kommander/editor/assistproc.h47
-rw-r--r--kommander/editor/assoctexteditor.ui222
-rw-r--r--kommander/editor/assoctexteditorimpl.cpp506
-rw-r--r--kommander/editor/assoctexteditorimpl.h133
-rw-r--r--kommander/editor/choosewidget.ui150
-rw-r--r--kommander/editor/choosewidgetimpl.cpp128
-rw-r--r--kommander/editor/choosewidgetimpl.h45
-rw-r--r--kommander/editor/command.cpp1838
-rw-r--r--kommander/editor/command.h931
-rw-r--r--kommander/editor/connectioneditor.ui418
-rw-r--r--kommander/editor/connectioneditorimpl.cpp373
-rw-r--r--kommander/editor/connectioneditorimpl.h76
-rw-r--r--kommander/editor/createtemplate.ui222
-rw-r--r--kommander/editor/defs.cpp78
-rw-r--r--kommander/editor/defs.h35
-rw-r--r--kommander/editor/filechooser.cpp63
-rw-r--r--kommander/editor/filechooser.h42
-rw-r--r--kommander/editor/formfile.cpp302
-rw-r--r--kommander/editor/formfile.h74
-rw-r--r--kommander/editor/formsettings.ui338
-rw-r--r--kommander/editor/formsettingsimpl.cpp58
-rw-r--r--kommander/editor/formsettingsimpl.h43
-rw-r--r--kommander/editor/formwindow.cpp2609
-rw-r--r--kommander/editor/formwindow.h292
-rw-r--r--kommander/editor/functions.ui722
-rw-r--r--kommander/editor/functionsimpl.cpp392
-rw-r--r--kommander/editor/functionsimpl.h61
-rw-r--r--kommander/editor/globaldefs.h45
-rw-r--r--kommander/editor/hierarchyview.cpp724
-rw-r--r--kommander/editor/hierarchyview.h161
-rw-r--r--kommander/editor/iconvieweditor.ui450
-rw-r--r--kommander/editor/iconvieweditorimpl.cpp158
-rw-r--r--kommander/editor/iconvieweditorimpl.h52
-rw-r--r--kommander/editor/kmdr-editor.desktop129
-rw-r--r--kommander/editor/kommander-new.xml587
-rw-r--r--kommander/editor/kommander.xml998
-rw-r--r--kommander/editor/kommanderui.rc5
-rw-r--r--kommander/editor/layout.cpp956
-rw-r--r--kommander/editor/layout.h180
-rw-r--r--kommander/editor/listboxeditor.ui455
-rw-r--r--kommander/editor/listboxeditorimpl.cpp216
-rw-r--r--kommander/editor/listboxeditorimpl.h55
-rw-r--r--kommander/editor/listeditor.ui147
-rw-r--r--kommander/editor/listvieweditor.ui936
-rw-r--r--kommander/editor/listvieweditorimpl.cpp585
-rw-r--r--kommander/editor/listvieweditorimpl.h94
-rw-r--r--kommander/editor/main.cpp81
-rw-r--r--kommander/editor/mainwindow.cpp1903
-rw-r--r--kommander/editor/mainwindow.h317
-rw-r--r--kommander/editor/mainwindowactions.cpp1201
-rw-r--r--kommander/editor/messagelog.cpp149
-rw-r--r--kommander/editor/messagelog.h55
-rw-r--r--kommander/editor/metadatabase.cpp1219
-rw-r--r--kommander/editor/metadatabase.h222
-rw-r--r--kommander/editor/multilineeditor.ui225
-rw-r--r--kommander/editor/multilineeditorimpl.cpp98
-rw-r--r--kommander/editor/multilineeditorimpl.h61
-rw-r--r--kommander/editor/newform.ui210
-rw-r--r--kommander/editor/newformimpl.cpp202
-rw-r--r--kommander/editor/newformimpl.h73
-rw-r--r--kommander/editor/orderindicator.cpp107
-rw-r--r--kommander/editor/orderindicator.h52
-rw-r--r--kommander/editor/paletteeditor.ui518
-rw-r--r--kommander/editor/paletteeditoradvanced.ui766
-rw-r--r--kommander/editor/paletteeditoradvancedimpl.cpp638
-rw-r--r--kommander/editor/paletteeditoradvancedimpl.h90
-rw-r--r--kommander/editor/paletteeditorimpl.cpp299
-rw-r--r--kommander/editor/paletteeditorimpl.h70
-rw-r--r--kommander/editor/parser.cpp66
-rw-r--r--kommander/editor/parser.h33
-rw-r--r--kommander/editor/pics/Makefile.am5
-rw-r--r--kommander/editor/pics/arrow.xbm10
-rw-r--r--kommander/editor/pics/background.pngbin0 -> 15068 bytes
-rw-r--r--kommander/editor/pics/cross.xbm10
-rw-r--r--kommander/editor/pics/hand.xbm10
-rw-r--r--kommander/editor/pics/hsplit.xbm10
-rw-r--r--kommander/editor/pics/ibeam.xbm10
-rw-r--r--kommander/editor/pics/images.h10979
-rw-r--r--kommander/editor/pics/kfontcombo.pngbin0 -> 1194 bytes
-rw-r--r--kommander/editor/pics/kommandersplash.pngbin0 -> 242008 bytes
-rw-r--r--kommander/editor/pics/large/adjustsize.xpm187
-rw-r--r--kommander/editor/pics/large/buttongroup.xpm79
-rw-r--r--kommander/editor/pics/large/checkbox.xpm67
-rw-r--r--kommander/editor/pics/large/combobox.xpm192
-rw-r--r--kommander/editor/pics/large/connecttool.xpm187
-rw-r--r--kommander/editor/pics/large/customwidget.xpm41
-rw-r--r--kommander/editor/pics/large/datepicker.xpm121
-rw-r--r--kommander/editor/pics/large/dial.xpm51
-rw-r--r--kommander/editor/pics/large/disabled/adjustsize.xpm51
-rw-r--r--kommander/editor/pics/large/disabled/connecttool.xpm57
-rw-r--r--kommander/editor/pics/large/disabled/editbreaklayout.xpm54
-rw-r--r--kommander/editor/pics/large/disabled/editcopy.xpm69
-rw-r--r--kommander/editor/pics/large/disabled/editgrid.xpm49
-rw-r--r--kommander/editor/pics/large/disabled/editpaste.xpm69
-rw-r--r--kommander/editor/pics/large/disabled/editslots.xpm65
-rw-r--r--kommander/editor/pics/large/disabled/editvlayout.xpm55
-rw-r--r--kommander/editor/pics/large/disabled/layout.xpm52
-rw-r--r--kommander/editor/pics/large/disabled/left.xpm59
-rw-r--r--kommander/editor/pics/large/disabled/redo.xpm52
-rw-r--r--kommander/editor/pics/large/disabled/right.xpm57
-rw-r--r--kommander/editor/pics/large/disabled/undo.xpm52
-rw-r--r--kommander/editor/pics/large/editbreaklayout.xpm250
-rw-r--r--kommander/editor/pics/large/editcopy.xpm43
-rw-r--r--kommander/editor/pics/large/editcut.xpm42
-rw-r--r--kommander/editor/pics/large/editdelete.xpm226
-rw-r--r--kommander/editor/pics/large/editgrid.xpm206
-rw-r--r--kommander/editor/pics/large/edithlayout.xpm103
-rw-r--r--kommander/editor/pics/large/editlower.xpm144
-rw-r--r--kommander/editor/pics/large/editpaste.xpm46
-rw-r--r--kommander/editor/pics/large/editraise.xpm149
-rw-r--r--kommander/editor/pics/large/editslots.xpm264
-rw-r--r--kommander/editor/pics/large/editvlayout.xpm89
-rw-r--r--kommander/editor/pics/large/filenew.xpm42
-rw-r--r--kommander/editor/pics/large/fileopen.xpm44
-rw-r--r--kommander/editor/pics/large/filesave.xpm42
-rw-r--r--kommander/editor/pics/large/form.xpm91
-rw-r--r--kommander/editor/pics/large/frame.xpm58
-rw-r--r--kommander/editor/pics/large/groupbox.xpm60
-rw-r--r--kommander/editor/pics/large/help.xpm182
-rw-r--r--kommander/editor/pics/large/home.xpm250
-rw-r--r--kommander/editor/pics/large/iconview.xpm142
-rw-r--r--kommander/editor/pics/large/image.xpm267
-rw-r--r--kommander/editor/pics/large/label.xpm105
-rw-r--r--kommander/editor/pics/large/layout.xpm167
-rw-r--r--kommander/editor/pics/large/lcdnumber.xpm154
-rw-r--r--kommander/editor/pics/large/left.xpm181
-rw-r--r--kommander/editor/pics/large/line.xpm45
-rw-r--r--kommander/editor/pics/large/lineedit.xpm135
-rw-r--r--kommander/editor/pics/large/listbox.xpm121
-rw-r--r--kommander/editor/pics/large/listview.xpm148
-rw-r--r--kommander/editor/pics/large/multilineedit.xpm108
-rw-r--r--kommander/editor/pics/large/newform.xpm35
-rw-r--r--kommander/editor/pics/large/ordertool.xpm157
-rw-r--r--kommander/editor/pics/large/pixlabel.xpm204
-rw-r--r--kommander/editor/pics/large/pointer.xpm27
-rw-r--r--kommander/editor/pics/large/print.xpm155
-rw-r--r--kommander/editor/pics/large/progress.xpm145
-rw-r--r--kommander/editor/pics/large/project.xpm50
-rw-r--r--kommander/editor/pics/large/pushbutton.xpm72
-rw-r--r--kommander/editor/pics/large/radiobutton.xpm67
-rw-r--r--kommander/editor/pics/large/redo.xpm42
-rw-r--r--kommander/editor/pics/large/right.xpm181
-rw-r--r--kommander/editor/pics/large/slider.xpm133
-rw-r--r--kommander/editor/pics/large/spacer.xpm248
-rw-r--r--kommander/editor/pics/large/spinbox.xpm102
-rw-r--r--kommander/editor/pics/large/table.xpm69
-rw-r--r--kommander/editor/pics/large/tabwidget.xpm94
-rw-r--r--kommander/editor/pics/large/textbrowser.xpm196
-rw-r--r--kommander/editor/pics/large/textview.xpm103
-rw-r--r--kommander/editor/pics/large/toolbutton.xpm123
-rw-r--r--kommander/editor/pics/large/undo.xpm42
-rw-r--r--kommander/editor/pics/mini/down.xpm71
-rw-r--r--kommander/editor/pics/mini/form.xpm27
-rw-r--r--kommander/editor/pics/mini/image.xpm28
-rw-r--r--kommander/editor/pics/mini/left.xpm69
-rw-r--r--kommander/editor/pics/mini/resetproperty.xpm13
-rw-r--r--kommander/editor/pics/mini/right.xpm77
-rw-r--r--kommander/editor/pics/mini/up.xpm68
-rw-r--r--kommander/editor/pics/mkimages3
-rw-r--r--kommander/editor/pics/mkpics2
-rw-r--r--kommander/editor/pics/no.xbm10
-rw-r--r--kommander/editor/pics/qtlogo.pngbin0 -> 12615 bytes
-rw-r--r--kommander/editor/pics/sizeall.xbm10
-rw-r--r--kommander/editor/pics/sizeb.xbm10
-rw-r--r--kommander/editor/pics/sizef.xbm10
-rw-r--r--kommander/editor/pics/sizeh.xbm10
-rw-r--r--kommander/editor/pics/sizev.xbm10
-rw-r--r--kommander/editor/pics/small/adjustsize.pngbin0 -> 495 bytes
-rw-r--r--kommander/editor/pics/small/book.xpm32
-rw-r--r--kommander/editor/pics/small/buttongroup.pngbin0 -> 648 bytes
-rw-r--r--kommander/editor/pics/small/checkbox.pngbin0 -> 817 bytes
-rw-r--r--kommander/editor/pics/small/closebutton.pngbin0 -> 585 bytes
-rw-r--r--kommander/editor/pics/small/combobox.pngbin0 -> 549 bytes
-rw-r--r--kommander/editor/pics/small/connecttool.pngbin0 -> 553 bytes
-rw-r--r--kommander/editor/pics/small/customwidget.pngbin0 -> 1133 bytes
-rw-r--r--kommander/editor/pics/small/databrowser.xpm156
-rw-r--r--kommander/editor/pics/small/datatable.xpm156
-rw-r--r--kommander/editor/pics/small/dataview.xpm156
-rw-r--r--kommander/editor/pics/small/dateedit.pngbin0 -> 505 bytes
-rw-r--r--kommander/editor/pics/small/datepicker.pngbin0 -> 965 bytes
-rw-r--r--kommander/editor/pics/small/datetimeedit.pngbin0 -> 1074 bytes
-rw-r--r--kommander/editor/pics/small/dial.pngbin0 -> 1024 bytes
-rw-r--r--kommander/editor/pics/small/disabled/adjustsize.pngbin0 -> 659 bytes
-rw-r--r--kommander/editor/pics/small/disabled/connecttool.pngbin0 -> 836 bytes
-rw-r--r--kommander/editor/pics/small/disabled/editbreaklayout.pngbin0 -> 1126 bytes
-rw-r--r--kommander/editor/pics/small/disabled/editcopy.pngbin0 -> 931 bytes
-rw-r--r--kommander/editor/pics/small/disabled/editcut.xpm32
-rw-r--r--kommander/editor/pics/small/disabled/editgrid.pngbin0 -> 735 bytes
-rw-r--r--kommander/editor/pics/small/disabled/edithlayout.pngbin0 -> 601 bytes
-rw-r--r--kommander/editor/pics/small/disabled/edithlayoutsplit.pngbin0 -> 754 bytes
-rw-r--r--kommander/editor/pics/small/disabled/editpaste.pngbin0 -> 901 bytes
-rw-r--r--kommander/editor/pics/small/disabled/editslots.xpm44
-rw-r--r--kommander/editor/pics/small/disabled/editvlayout.pngbin0 -> 617 bytes
-rw-r--r--kommander/editor/pics/small/disabled/editvlayoutsplit.pngbin0 -> 752 bytes
-rw-r--r--kommander/editor/pics/small/disabled/filesave.pngbin0 -> 587 bytes
-rw-r--r--kommander/editor/pics/small/disabled/layout.xpm42
-rw-r--r--kommander/editor/pics/small/disabled/left.xpm32
-rw-r--r--kommander/editor/pics/small/disabled/redo.pngbin0 -> 531 bytes
-rw-r--r--kommander/editor/pics/small/disabled/right.xpm32
-rw-r--r--kommander/editor/pics/small/disabled/searchfind.pngbin0 -> 1013 bytes
-rw-r--r--kommander/editor/pics/small/disabled/undo.pngbin0 -> 541 bytes
-rw-r--r--kommander/editor/pics/small/editbreaklayout.pngbin0 -> 744 bytes
-rw-r--r--kommander/editor/pics/small/editcopy.pngbin0 -> 485 bytes
-rw-r--r--kommander/editor/pics/small/editcut.pngbin0 -> 649 bytes
-rw-r--r--kommander/editor/pics/small/editdelete.xpm226
-rw-r--r--kommander/editor/pics/small/editgrid.pngbin0 -> 520 bytes
-rw-r--r--kommander/editor/pics/small/edithlayout.pngbin0 -> 706 bytes
-rw-r--r--kommander/editor/pics/small/edithlayoutsplit.pngbin0 -> 809 bytes
-rw-r--r--kommander/editor/pics/small/editlower.xpm113
-rw-r--r--kommander/editor/pics/small/editpaste.pngbin0 -> 902 bytes
-rw-r--r--kommander/editor/pics/small/editraise.xpm110
-rw-r--r--kommander/editor/pics/small/editslots.pngbin0 -> 690 bytes
-rw-r--r--kommander/editor/pics/small/editvlayout.pngbin0 -> 289 bytes
-rw-r--r--kommander/editor/pics/small/editvlayoutsplit.pngbin0 -> 355 bytes
-rw-r--r--kommander/editor/pics/small/exec.pngbin0 -> 1408 bytes
-rw-r--r--kommander/editor/pics/small/filenew.pngbin0 -> 313 bytes
-rw-r--r--kommander/editor/pics/small/fileopen.pngbin0 -> 681 bytes
-rw-r--r--kommander/editor/pics/small/filesave.pngbin0 -> 328 bytes
-rw-r--r--kommander/editor/pics/small/form.xpm67
-rw-r--r--kommander/editor/pics/small/frame.pngbin0 -> 400 bytes
-rw-r--r--kommander/editor/pics/small/groupbox.pngbin0 -> 439 bytes
-rw-r--r--kommander/editor/pics/small/help.pngbin0 -> 837 bytes
-rw-r--r--kommander/editor/pics/small/home.xpm160
-rw-r--r--kommander/editor/pics/small/iconview.pngbin0 -> 613 bytes
-rw-r--r--kommander/editor/pics/small/image.xpm226
-rw-r--r--kommander/editor/pics/small/konsole.pngbin0 -> 1155 bytes
-rw-r--r--kommander/editor/pics/small/label.pngbin0 -> 953 bytes
-rw-r--r--kommander/editor/pics/small/layout.xpm121
-rw-r--r--kommander/editor/pics/small/lcdnumber.pngbin0 -> 558 bytes
-rw-r--r--kommander/editor/pics/small/left.xpm141
-rw-r--r--kommander/editor/pics/small/line.pngbin0 -> 287 bytes
-rw-r--r--kommander/editor/pics/small/lineedit.pngbin0 -> 461 bytes
-rw-r--r--kommander/editor/pics/small/listbox.pngbin0 -> 386 bytes
-rw-r--r--kommander/editor/pics/small/listview.pngbin0 -> 759 bytes
-rw-r--r--kommander/editor/pics/small/multilineedit.pngbin0 -> 454 bytes
-rw-r--r--kommander/editor/pics/small/newform.xpm35
-rw-r--r--kommander/editor/pics/small/ordertool.pngbin0 -> 587 bytes
-rw-r--r--kommander/editor/pics/small/pixlabel.pngbin0 -> 1229 bytes
-rw-r--r--kommander/editor/pics/small/pointer.pngbin0 -> 586 bytes
-rw-r--r--kommander/editor/pics/small/print.xpm117
-rw-r--r--kommander/editor/pics/small/progress.pngbin0 -> 609 bytes
-rw-r--r--kommander/editor/pics/small/pushbutton.pngbin0 -> 408 bytes
-rw-r--r--kommander/editor/pics/small/radiobutton.pngbin0 -> 586 bytes
-rw-r--r--kommander/editor/pics/small/redo.pngbin0 -> 592 bytes
-rw-r--r--kommander/editor/pics/small/richtextedit.pngbin0 -> 834 bytes
-rw-r--r--kommander/editor/pics/small/right.xpm141
-rw-r--r--kommander/editor/pics/small/scrollbar.pngbin0 -> 408 bytes
-rw-r--r--kommander/editor/pics/small/searchfind.pngbin0 -> 843 bytes
-rw-r--r--kommander/editor/pics/small/shellscript.pngbin0 -> 1053 bytes
-rw-r--r--kommander/editor/pics/small/slider.pngbin0 -> 729 bytes
-rw-r--r--kommander/editor/pics/small/spacer.pngbin0 -> 715 bytes
-rw-r--r--kommander/editor/pics/small/spinbox.pngbin0 -> 455 bytes
-rw-r--r--kommander/editor/pics/small/statusbar.pngbin0 -> 294 bytes
-rw-r--r--kommander/editor/pics/small/table.pngbin0 -> 483 bytes
-rw-r--r--kommander/editor/pics/small/tabwidget.pngbin0 -> 572 bytes
-rw-r--r--kommander/editor/pics/small/textbrowser.pngbin0 -> 514 bytes
-rw-r--r--kommander/editor/pics/small/textedit.pngbin0 -> 497 bytes
-rw-r--r--kommander/editor/pics/small/textview.pngbin0 -> 498 bytes
-rw-r--r--kommander/editor/pics/small/timeedit.pngbin0 -> 1520 bytes
-rw-r--r--kommander/editor/pics/small/timer.pngbin0 -> 1462 bytes
-rw-r--r--kommander/editor/pics/small/toolbutton.pngbin0 -> 1262 bytes
-rw-r--r--kommander/editor/pics/small/undo.pngbin0 -> 572 bytes
-rw-r--r--kommander/editor/pics/temp.tmp0
-rw-r--r--kommander/editor/pics/toolbox.pngbin0 -> 783 bytes
-rw-r--r--kommander/editor/pics/uparrow.xbm10
-rw-r--r--kommander/editor/pics/vsplit.xbm10
-rw-r--r--kommander/editor/pics/wait.xbm10
-rw-r--r--kommander/editor/pixmapchooser.cpp1105
-rw-r--r--kommander/editor/pixmapchooser.h86
-rw-r--r--kommander/editor/pixmapfunction.ui923
-rw-r--r--kommander/editor/preferences.ui669
-rw-r--r--kommander/editor/previewframe.cpp52
-rw-r--r--kommander/editor/previewframe.h53
-rw-r--r--kommander/editor/previewwidget.ui279
-rw-r--r--kommander/editor/previewwidgetimpl.cpp60
-rw-r--r--kommander/editor/previewwidgetimpl.h37
-rw-r--r--kommander/editor/propertyeditor.cpp3706
-rw-r--r--kommander/editor/propertyeditor.h670
-rw-r--r--kommander/editor/qcompletionedit.cpp185
-rw-r--r--kommander/editor/qcompletionedit.h53
-rw-r--r--kommander/editor/resource.cpp2858
-rw-r--r--kommander/editor/resource.h159
-rw-r--r--kommander/editor/sizehandle.cpp384
-rw-r--r--kommander/editor/sizehandle.h91
-rw-r--r--kommander/editor/styledbutton.cpp290
-rw-r--r--kommander/editor/styledbutton.h97
-rw-r--r--kommander/editor/tableeditor.ui813
-rw-r--r--kommander/editor/tableeditorimpl.cpp464
-rw-r--r--kommander/editor/tableeditorimpl.h56
-rw-r--r--kommander/editor/templates/Configuration_Dialog.ui156
-rw-r--r--kommander/editor/templates/Dialog_with_Buttons_(Bottom).ui114
-rw-r--r--kommander/editor/templates/Dialog_with_Buttons_(Right).ui114
-rw-r--r--kommander/editor/templates/Makefile.am0
-rw-r--r--kommander/editor/templates/Tab_Dialog.ui138
-rw-r--r--kommander/editor/templates/cpp_template16
-rw-r--r--kommander/editor/templates/header_template16
-rw-r--r--kommander/editor/timestamp.cpp81
-rw-r--r--kommander/editor/timestamp.h57
-rw-r--r--kommander/editor/widgetdatabase.cpp1029
-rw-r--r--kommander/editor/widgetdatabase.h87
-rw-r--r--kommander/editor/widgetfactory.cpp1928
-rw-r--r--kommander/editor/widgetfactory.h473
-rw-r--r--kommander/editor/widgetinterface.h29
-rw-r--r--kommander/editor/wizardeditor.ui320
-rw-r--r--kommander/editor/wizardeditorimpl.cpp220
-rw-r--r--kommander/editor/wizardeditorimpl.h64
-rw-r--r--kommander/editor/workspace.cpp787
-rw-r--r--kommander/editor/workspace.h170
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>&amp;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>&amp;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>&amp;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&amp;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&amp;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>&amp;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>&amp;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 &currentItemText, 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 &currentItemText, 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>&lt;b&gt;Edit Connections&lt;/b&gt;&lt;p&gt;Add and remove connections in the current form .&lt;/p&gt;&lt;p&gt;Select a signal and a corresponding slot then press the &lt;b&gt;Connect&lt;/b&gt;-button to create a connection.&lt;/p&gt;&lt;p&gt;Select a connection from the list then press the &lt;b&gt;Disconnect&lt;/b&gt;-button to delete the connection.&lt;/p&gt;</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>&lt;b&gt;A list of slots for the receiver.&lt;/b&gt;&lt;p&gt;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.&lt;/b&gt;</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&amp;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>&amp;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>&amp;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>&amp;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>&amp;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&amp;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&amp;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 &amp; )</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 &amp;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&amp;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>&amp;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>&amp;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>&lt;b&gt;Form Settings&lt;/b&gt;&lt;p&gt;Change settings for the form. Settings like &lt;b&gt;Comment&lt;/b&gt; and &lt;b&gt;Author&lt;/b&gt; are for your own use and are not required.&lt;/p&gt;</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>&amp;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>&amp;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&amp;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&amp;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&amp;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>&amp;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&amp;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>&amp;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>&amp;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&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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 &amp;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(&para, &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>&lt;b&gt;Edit Iconview&lt;/b&gt;&lt;p&gt;Add, edit or delete items in the icon view.&lt;/p&gt;&lt;p&gt;Click the &lt;b&gt;New Item&lt;/b&gt;-button to create a new item, then enter text and choose a pixmap.&lt;/p&gt;&lt;p&gt;Select an item from the view and click the &lt;b&gt;Delete Item&lt;/b&gt;-button to remove the item from the iconview.&lt;/p&gt;</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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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 &amp; )</signal>
+ <receiver>IconViewEditorBase</receiver>
+ <slot>currentTextChanged(const QString&amp;)</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 &amp; )</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_:#&#37;@-]*">
+ <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*">
+ <!ENTITY word "[^|&amp;;()&lt;&gt;\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="&#42;" 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="&lt;&lt;&lt;" />
+ <!-- handle &, &&, | and || -->
+ <RegExpr attribute="Control" context="#stay" String="([|&amp;])\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="\\[][;&quot;\\'$`{}()|&amp;&lt;&gt;* ]" />
+ <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="&quot;" />
+ <!-- <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" /> -->
+ <!-- <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1="&quot;" /> -->
+ </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="$(&lt;" />
+ <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;|&amp;]))" endRegion="expression" />
+ <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&amp;]))" 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;|&amp;]))" endRegion="expression" />
+ <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&amp;]))" 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="[^]})|;`&amp;&gt;&lt;]" />
+ </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="&quot;" />
+ <RegExpr attribute="String Escape" context="#stay" String="\\[`&quot;\\$\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_:#&#37;@-]*">
+ <!ENTITY varname "[A-Za-z_][A-Za-z0-9_]*">
+ <!ENTITY word "[^|&amp;;()&lt;&gt;\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="&lt;&lt;&lt;" />
+ <!-- handle here document -->
+ <StringDetect attribute="Redirection" context="HereDoc" String="&lt;&lt;" lookAhead="true" />
+ <!-- handle process subst -->
+ <RegExpr attribute="Redirection" context="ProcessSubst" String="[&lt;&gt;]\(" />
+ <!-- handle redirection -->
+ <RegExpr attribute="Redirection" context="#stay" String="([0-9]*(&gt;{1,2}|&lt;)(&amp;[0-9]+-?)?|&amp;&gt;|&gt;&amp;|[0-9]*&lt;&gt;)" />
+ <!-- handle &, &&, | and || -->
+ <RegExpr attribute="Control" context="#stay" String="([|&amp;])\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="\\[][;&quot;\\'$`{}()|&amp;&lt;&gt;* ]" />
+ <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="&quot;" />
+ <Detect2Chars attribute="String SingleQ" context="StringEsc" char="$" char1="'" />
+ <Detect2Chars attribute="String Transl." context="StringDQ" char="$" char1="&quot;" />
+ </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="$(&lt;" />
+ <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;|&amp;]))" endRegion="expression" />
+ <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[\s;|&amp;]))" 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;|&amp;]))" endRegion="expression" />
+ <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[\s;|&amp;]))" 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="[^]})|;`&amp;&gt;&lt;]" />
+ </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="&quot;" />
+ <RegExpr attribute="String Escape" context="#stay" String="\\[`&quot;\\$\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="(&lt;&lt;\s*&quot;(&word;)&quot;)" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocQ" String="(&lt;&lt;\s*'(&word;)')" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocQ" String="(&lt;&lt;\s*\\(&word;))" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocNQ" String="(&lt;&lt;(?!-)\s*(&word;))" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocIQ" String="(&lt;&lt;-\s*&quot;(&word;)&quot;)" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocIQ" String="(&lt;&lt;-\s*'(&word;)')" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocIQ" String="(&lt;&lt;-\s*\\(&word;))" lookAhead="true" />
+ <RegExpr attribute="Redirection" context="HereDocINQ" String="(&lt;&lt;-\s*(&word;))" lookAhead="true" />
+ <StringDetect attribute="Redirection" context="#pop" String="&lt;&lt;" /><!-- 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>&lt;b&gt;Edit Listbox&lt;/b&gt;&lt;p&gt;Add, edit or delete items in the listbox.&lt;/p&gt;&lt;p&gt;Click the &lt;b&gt;New Item&lt;/b&gt;-button to create a new listbox entry, then enter text and choose a pixmap.&lt;/p&gt;&lt;p&gt;Select an item from the list and click the &lt;b&gt;Delete Item&lt;/b&gt;-button to remove the item from the list.&lt;/p&gt;</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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;New Item</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Add an item</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;b&gt;Add a new item.&lt;/b&gt;&lt;p&gt;New items are appended to the list.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="1" column="1">
+ <property name="name">
+ <cstring>itemDelete</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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 &amp; )</signal>
+ <receiver>ListBoxEditorBase</receiver>
+ <slot>currentTextChanged(const QString&amp;)</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 &amp; )</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>&amp;Add</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="1" column="1">
+ <property name="name">
+ <cstring>PushButton2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Remove</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="2" column="1">
+ <property name="name">
+ <cstring>PushButton3</cstring>
+ </property>
+ <property name="text">
+ <string>Re&amp;name</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="4" column="1">
+ <property name="name">
+ <cstring>PushButton4</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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 &amp; 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>&lt;b&gt;Edit Listview&lt;/b&gt;&lt;p&gt;Use the controls on the &lt;b&gt;Items&lt;/b&gt;-tab to add, edit or delete items in the listview. Change the column configuration of the listview using the controls on the &lt;b&gt;Columns&lt;/b&gt;-tab.&lt;/p&gt;Click the &lt;b&gt;New Item&lt;/b&gt;-button to create a new item, then enter text and add a pixmap.&lt;/p&gt;&lt;p&gt;Select an item from the list and click the &lt;b&gt;Delete Item&lt;/b&gt;-button to remove the item from the list.&lt;/p&gt;</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>&amp;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>&amp;Delete Item</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Delete item</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;b&gt;Deletes the selected item.&lt;/b&gt;&lt;p&gt;Any sub-items are also deleted.&lt;/p&gt;</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 &amp;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&amp;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>&amp;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>&lt;b&gt;Change the text of the item.&lt;/b&gt;&lt;p&gt;The text will be changed in the current column of the selected item.&lt;/p&gt;</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>&lt;b&gt;Select the current column.&lt;/b&gt;&lt;p&gt;The item's text and pixmap will be changed for the current column&lt;/p&gt;</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>Label4</cstring>
+ </property>
+ <property name="text">
+ <string>Colu&amp;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>&lt;b&gt;Delete the selected item's pixmap.&lt;/b&gt;&lt;p&gt;The pixmap in the current column of the selected item will be deleted.&lt;/p&gt;</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>&lt;b&gt;Select a pixmap file for the item.&lt;/b&gt;&lt;p&gt;The pixmap will be changed in the current column of the selected item.&lt;/p&gt;</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>&amp;New Item</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Add an item</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;b&gt;Adds a new item to the list.&lt;/b&gt;&lt;p&gt;The item will be inserted at the top of the list and can be moved using the up- and down-buttons.&lt;/p&gt;</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 &amp;Subitem</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Add a subitem</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;b&gt;Create a new sub-item for the selected item.&lt;/b&gt;&lt;p&gt;New sub-items are inserted at the top of the list of sub-items, and new levels are created automatically.&lt;/p&gt;</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>&lt;b&gt;Move the selected item up.&lt;/b&gt;&lt;p&gt;The item will be moved within its level in the hierarchy.&lt;/p&gt;</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>&lt;b&gt;Move the selected item down.&lt;/b&gt;&lt;p&gt;The item will be moved within its level in the hierarchy.&lt;/p&gt;</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>&lt;b&gt;Move the selected item one level up.&lt;/b&gt;&lt;p&gt;This will also change the level of the item's sub-items.&lt;/p&gt;</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>&lt;b&gt;Move the selected item one level down.&lt;/b&gt;&lt;p&gt;This will also change the level of the item's sub-items.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>Widget11</cstring>
+ </property>
+ <attribute name="title">
+ <string>Co&amp;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>&amp;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>&lt;b&gt;Select a pixmap file for the selected column.&lt;/b&gt;&lt;p&gt;The pixmap will be displayed in the header of the listview.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>Label1</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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>&lt;b&gt;Enter the text for the selected column.&lt;/b&gt;&lt;p&gt;The text will be displayed in the header of the listview.&lt;/p&gt;</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&amp;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&amp;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>&amp;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>&lt;b&gt;Move the selected item down.&lt;/b&gt;&lt;p&gt;The top-most column will be the first column in the list.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="0" column="1">
+ <property name="name">
+ <cstring>colNew</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;New Column</string>
+ </property>
+ <property name="toolTip" stdset="0">
+ <string>Add a Column</string>
+ </property>
+ <property name="whatsThis" stdset="0">
+ <string>&lt;b&gt;Create a new column.&lt;/b&gt;&lt;p&gt;New columns are appended at the end of (right of) the list and may be moved using the up- and down-buttons.&lt;/p&gt;</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>&lt;b&gt;Move the selected item up.&lt;/b&gt;&lt;p&gt;The top-most column will be the first column in the list.&lt;/p&gt;</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>&amp;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>&amp;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>&amp;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>&amp;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&amp;)</signal>
+ <receiver>ListViewEditorBase</receiver>
+ <slot>itemTextChanged(const QString&amp;)</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&amp;)</signal>
+ <receiver>ListViewEditorBase</receiver>
+ <slot>columnTextChanged(const QString&amp;)</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&amp;)</signal>
+ <receiver>ListViewEditorBase</receiver>
+ <slot>initTabPage(const QString&amp;)</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 &amp;)</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 &amp;)</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 &amp;)</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 &macro )
+{
+ 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 &macro );
+ 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>&lt;b&gt;Edit Multiline Edit&lt;/b&gt;&lt;p&gt;Enter the text and click the &lt;b&gt;OK&lt;/b&gt;-Button to apply the changes.&lt;/p&gt;</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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&lt;b&gt;New Form&lt;/b&gt;&lt;p&gt;Select a template for the new form and click the &lt;b&gt;OK&lt;/b&gt;-button to create it.&lt;/p&gt;</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>&amp;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>&amp;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>&amp;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 &amp; )</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>&amp;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&amp;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>&amp;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 &amp;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>&amp;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>&amp;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>&amp;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>&lt;b&gt;Edit Palette&lt;/b&gt;&lt;p&gt;Change the current widget or form's palette.&lt;/p&gt;&lt;p&gt;Use a generated palette or select colors for each color group and each color role.&lt;/p&gt;&lt;p&gt;The palette can be tested with different widget layouts in the preview section.&lt;/p&gt;</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 &amp;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 &amp;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>&lt;b&gt;Select a color role.&lt;/b&gt;&lt;p&gt;Available central color roles are: &lt;ul&gt; &lt;li&gt;Background - general background color.&lt;/li&gt; &lt;li&gt;Foreground - general foreground color. &lt;/li&gt; &lt;li&gt;Base - used as the background color for example, for text entry widgets; it is usually white or another light color. &lt;/li&gt; &lt;li&gt;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. &lt;/li&gt; &lt;li&gt;Button - general button background color; useful where buttons need a background different from Background, as in the Macintosh style. &lt;/li&gt; &lt;li&gt;ButtonText - a foreground color used with the Button color. &lt;/li&gt; &lt;li&gt;Highlight - a color used to indicate a selected or highlighted item. &lt;/li&gt; &lt;li&gt;HighlightedText - a text color that contrasts to Highlight. &lt;/li&gt; &lt;li&gt;BrightText - a text color that is very different from Foreground and contrasts well with, for example, black. &lt;/li&gt; &lt;/ul&gt; &lt;/p&gt;</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&amp;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>&amp;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 &amp;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 &amp;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>&lt;b&gt;Select a color effect role.&lt;/b&gt;&lt;p&gt;Available effect roles are: &lt;ul&gt; &lt;li&gt;Light - lighter than Button color. &lt;/li&gt; &lt;li&gt;Midlight - between Button and Light. &lt;/li&gt; &lt;li&gt;Mid - between Button and Dark. &lt;/li&gt; &lt;li&gt;Dark - darker than Button. &lt;/li&gt; &lt;li&gt;Shadow - a very dark color. &lt;/li&gt; &lt;/ul&gt;</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&amp;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>&amp;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>&amp;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>&amp;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
new file mode 100644
index 00000000..d2102bac
--- /dev/null
+++ b/kommander/editor/pics/background.png
Binary files differ
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
new file mode 100644
index 00000000..87835d6c
--- /dev/null
+++ b/kommander/editor/pics/kfontcombo.png
Binary files differ
diff --git a/kommander/editor/pics/kommandersplash.png b/kommander/editor/pics/kommandersplash.png
new file mode 100644
index 00000000..cbc8f863
--- /dev/null
+++ b/kommander/editor/pics/kommandersplash.png
Binary files differ
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&#87782+*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
new file mode 100644
index 00000000..4e1a1472
--- /dev/null
+++ b/kommander/editor/pics/qtlogo.png
Binary files differ
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
new file mode 100644
index 00000000..6ade1e22
--- /dev/null
+++ b/kommander/editor/pics/small/adjustsize.png
Binary files differ
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
new file mode 100644
index 00000000..d89e28fd
--- /dev/null
+++ b/kommander/editor/pics/small/buttongroup.png
Binary files differ
diff --git a/kommander/editor/pics/small/checkbox.png b/kommander/editor/pics/small/checkbox.png
new file mode 100644
index 00000000..ab6f53e0
--- /dev/null
+++ b/kommander/editor/pics/small/checkbox.png
Binary files differ
diff --git a/kommander/editor/pics/small/closebutton.png b/kommander/editor/pics/small/closebutton.png
new file mode 100644
index 00000000..63903b30
--- /dev/null
+++ b/kommander/editor/pics/small/closebutton.png
Binary files differ
diff --git a/kommander/editor/pics/small/combobox.png b/kommander/editor/pics/small/combobox.png
new file mode 100644
index 00000000..7d4890a7
--- /dev/null
+++ b/kommander/editor/pics/small/combobox.png
Binary files differ
diff --git a/kommander/editor/pics/small/connecttool.png b/kommander/editor/pics/small/connecttool.png
new file mode 100644
index 00000000..fca6748f
--- /dev/null
+++ b/kommander/editor/pics/small/connecttool.png
Binary files differ
diff --git a/kommander/editor/pics/small/customwidget.png b/kommander/editor/pics/small/customwidget.png
new file mode 100644
index 00000000..ab790e1f
--- /dev/null
+++ b/kommander/editor/pics/small/customwidget.png
Binary files differ
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
new file mode 100644
index 00000000..48286bec
--- /dev/null
+++ b/kommander/editor/pics/small/dateedit.png
Binary files differ
diff --git a/kommander/editor/pics/small/datepicker.png b/kommander/editor/pics/small/datepicker.png
new file mode 100644
index 00000000..4bcc6450
--- /dev/null
+++ b/kommander/editor/pics/small/datepicker.png
Binary files differ
diff --git a/kommander/editor/pics/small/datetimeedit.png b/kommander/editor/pics/small/datetimeedit.png
new file mode 100644
index 00000000..68a56737
--- /dev/null
+++ b/kommander/editor/pics/small/datetimeedit.png
Binary files differ
diff --git a/kommander/editor/pics/small/dial.png b/kommander/editor/pics/small/dial.png
new file mode 100644
index 00000000..260033c2
--- /dev/null
+++ b/kommander/editor/pics/small/dial.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/adjustsize.png b/kommander/editor/pics/small/disabled/adjustsize.png
new file mode 100644
index 00000000..56bbd3ec
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/adjustsize.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/connecttool.png b/kommander/editor/pics/small/disabled/connecttool.png
new file mode 100644
index 00000000..173da192
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/connecttool.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/editbreaklayout.png b/kommander/editor/pics/small/disabled/editbreaklayout.png
new file mode 100644
index 00000000..17412eff
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/editbreaklayout.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/editcopy.png b/kommander/editor/pics/small/disabled/editcopy.png
new file mode 100644
index 00000000..0392669a
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/editcopy.png
Binary files differ
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
new file mode 100644
index 00000000..1eb30e07
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/editgrid.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/edithlayout.png b/kommander/editor/pics/small/disabled/edithlayout.png
new file mode 100644
index 00000000..bb347268
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/edithlayout.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/edithlayoutsplit.png b/kommander/editor/pics/small/disabled/edithlayoutsplit.png
new file mode 100644
index 00000000..be482a4a
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/edithlayoutsplit.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/editpaste.png b/kommander/editor/pics/small/disabled/editpaste.png
new file mode 100644
index 00000000..90a56778
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/editpaste.png
Binary files differ
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
new file mode 100644
index 00000000..a5de1cdc
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/editvlayout.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/editvlayoutsplit.png b/kommander/editor/pics/small/disabled/editvlayoutsplit.png
new file mode 100644
index 00000000..fdce42d8
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/editvlayoutsplit.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/filesave.png b/kommander/editor/pics/small/disabled/filesave.png
new file mode 100644
index 00000000..0f09208f
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/filesave.png
Binary files differ
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
new file mode 100644
index 00000000..198368f0
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/redo.png
Binary files differ
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
new file mode 100644
index 00000000..5da4456a
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/searchfind.png
Binary files differ
diff --git a/kommander/editor/pics/small/disabled/undo.png b/kommander/editor/pics/small/disabled/undo.png
new file mode 100644
index 00000000..387cbe94
--- /dev/null
+++ b/kommander/editor/pics/small/disabled/undo.png
Binary files differ
diff --git a/kommander/editor/pics/small/editbreaklayout.png b/kommander/editor/pics/small/editbreaklayout.png
new file mode 100644
index 00000000..badbb8e7
--- /dev/null
+++ b/kommander/editor/pics/small/editbreaklayout.png
Binary files differ
diff --git a/kommander/editor/pics/small/editcopy.png b/kommander/editor/pics/small/editcopy.png
new file mode 100644
index 00000000..2f931cb2
--- /dev/null
+++ b/kommander/editor/pics/small/editcopy.png
Binary files differ
diff --git a/kommander/editor/pics/small/editcut.png b/kommander/editor/pics/small/editcut.png
new file mode 100644
index 00000000..a911482d
--- /dev/null
+++ b/kommander/editor/pics/small/editcut.png
Binary files differ
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
new file mode 100644
index 00000000..f2b18e8a
--- /dev/null
+++ b/kommander/editor/pics/small/editgrid.png
Binary files differ
diff --git a/kommander/editor/pics/small/edithlayout.png b/kommander/editor/pics/small/edithlayout.png
new file mode 100644
index 00000000..68e3c76a
--- /dev/null
+++ b/kommander/editor/pics/small/edithlayout.png
Binary files differ
diff --git a/kommander/editor/pics/small/edithlayoutsplit.png b/kommander/editor/pics/small/edithlayoutsplit.png
new file mode 100644
index 00000000..86c2cfdb
--- /dev/null
+++ b/kommander/editor/pics/small/edithlayoutsplit.png
Binary files differ
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
new file mode 100644
index 00000000..e395fc76
--- /dev/null
+++ b/kommander/editor/pics/small/editpaste.png
Binary files differ
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
new file mode 100644
index 00000000..b86bddb6
--- /dev/null
+++ b/kommander/editor/pics/small/editslots.png
Binary files differ
diff --git a/kommander/editor/pics/small/editvlayout.png b/kommander/editor/pics/small/editvlayout.png
new file mode 100644
index 00000000..f4cd3f9c
--- /dev/null
+++ b/kommander/editor/pics/small/editvlayout.png
Binary files differ
diff --git a/kommander/editor/pics/small/editvlayoutsplit.png b/kommander/editor/pics/small/editvlayoutsplit.png
new file mode 100644
index 00000000..0180cf5a
--- /dev/null
+++ b/kommander/editor/pics/small/editvlayoutsplit.png
Binary files differ
diff --git a/kommander/editor/pics/small/exec.png b/kommander/editor/pics/small/exec.png
new file mode 100644
index 00000000..14dc7455
--- /dev/null
+++ b/kommander/editor/pics/small/exec.png
Binary files differ
diff --git a/kommander/editor/pics/small/filenew.png b/kommander/editor/pics/small/filenew.png
new file mode 100644
index 00000000..9520080e
--- /dev/null
+++ b/kommander/editor/pics/small/filenew.png
Binary files differ
diff --git a/kommander/editor/pics/small/fileopen.png b/kommander/editor/pics/small/fileopen.png
new file mode 100644
index 00000000..30052901
--- /dev/null
+++ b/kommander/editor/pics/small/fileopen.png
Binary files differ
diff --git a/kommander/editor/pics/small/filesave.png b/kommander/editor/pics/small/filesave.png
new file mode 100644
index 00000000..c137165b
--- /dev/null
+++ b/kommander/editor/pics/small/filesave.png
Binary files differ
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
new file mode 100644
index 00000000..c070b9c4
--- /dev/null
+++ b/kommander/editor/pics/small/frame.png
Binary files differ
diff --git a/kommander/editor/pics/small/groupbox.png b/kommander/editor/pics/small/groupbox.png
new file mode 100644
index 00000000..4025b4dc
--- /dev/null
+++ b/kommander/editor/pics/small/groupbox.png
Binary files differ
diff --git a/kommander/editor/pics/small/help.png b/kommander/editor/pics/small/help.png
new file mode 100644
index 00000000..35394010
--- /dev/null
+++ b/kommander/editor/pics/small/help.png
Binary files differ
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
new file mode 100644
index 00000000..13b8f153
--- /dev/null
+++ b/kommander/editor/pics/small/iconview.png
Binary files differ
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
new file mode 100644
index 00000000..3e60f289
--- /dev/null
+++ b/kommander/editor/pics/small/konsole.png
Binary files differ
diff --git a/kommander/editor/pics/small/label.png b/kommander/editor/pics/small/label.png
new file mode 100644
index 00000000..5d7d7b4c
--- /dev/null
+++ b/kommander/editor/pics/small/label.png
Binary files differ
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
new file mode 100644
index 00000000..64eda5e4
--- /dev/null
+++ b/kommander/editor/pics/small/lcdnumber.png
Binary files differ
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
new file mode 100644
index 00000000..5c64dfb5
--- /dev/null
+++ b/kommander/editor/pics/small/line.png
Binary files differ
diff --git a/kommander/editor/pics/small/lineedit.png b/kommander/editor/pics/small/lineedit.png
new file mode 100644
index 00000000..dafdfdf3
--- /dev/null
+++ b/kommander/editor/pics/small/lineedit.png
Binary files differ
diff --git a/kommander/editor/pics/small/listbox.png b/kommander/editor/pics/small/listbox.png
new file mode 100644
index 00000000..d467fc9f
--- /dev/null
+++ b/kommander/editor/pics/small/listbox.png
Binary files differ
diff --git a/kommander/editor/pics/small/listview.png b/kommander/editor/pics/small/listview.png
new file mode 100644
index 00000000..d71cc1c9
--- /dev/null
+++ b/kommander/editor/pics/small/listview.png
Binary files differ
diff --git a/kommander/editor/pics/small/multilineedit.png b/kommander/editor/pics/small/multilineedit.png
new file mode 100644
index 00000000..e2f08995
--- /dev/null
+++ b/kommander/editor/pics/small/multilineedit.png
Binary files differ
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
new file mode 100644
index 00000000..ad122839
--- /dev/null
+++ b/kommander/editor/pics/small/ordertool.png
Binary files differ
diff --git a/kommander/editor/pics/small/pixlabel.png b/kommander/editor/pics/small/pixlabel.png
new file mode 100644
index 00000000..32b90d82
--- /dev/null
+++ b/kommander/editor/pics/small/pixlabel.png
Binary files differ
diff --git a/kommander/editor/pics/small/pointer.png b/kommander/editor/pics/small/pointer.png
new file mode 100644
index 00000000..67e38a36
--- /dev/null
+++ b/kommander/editor/pics/small/pointer.png
Binary files differ
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
new file mode 100644
index 00000000..29416702
--- /dev/null
+++ b/kommander/editor/pics/small/progress.png
Binary files differ
diff --git a/kommander/editor/pics/small/pushbutton.png b/kommander/editor/pics/small/pushbutton.png
new file mode 100644
index 00000000..61f779ce
--- /dev/null
+++ b/kommander/editor/pics/small/pushbutton.png
Binary files differ
diff --git a/kommander/editor/pics/small/radiobutton.png b/kommander/editor/pics/small/radiobutton.png
new file mode 100644
index 00000000..10c1d8c3
--- /dev/null
+++ b/kommander/editor/pics/small/radiobutton.png
Binary files differ
diff --git a/kommander/editor/pics/small/redo.png b/kommander/editor/pics/small/redo.png
new file mode 100644
index 00000000..abdad26c
--- /dev/null
+++ b/kommander/editor/pics/small/redo.png
Binary files differ
diff --git a/kommander/editor/pics/small/richtextedit.png b/kommander/editor/pics/small/richtextedit.png
new file mode 100644
index 00000000..73573a8a
--- /dev/null
+++ b/kommander/editor/pics/small/richtextedit.png
Binary files differ
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
new file mode 100644
index 00000000..466c58de
--- /dev/null
+++ b/kommander/editor/pics/small/scrollbar.png
Binary files differ
diff --git a/kommander/editor/pics/small/searchfind.png b/kommander/editor/pics/small/searchfind.png
new file mode 100644
index 00000000..3f369fdb
--- /dev/null
+++ b/kommander/editor/pics/small/searchfind.png
Binary files differ
diff --git a/kommander/editor/pics/small/shellscript.png b/kommander/editor/pics/small/shellscript.png
new file mode 100644
index 00000000..59de8cfe
--- /dev/null
+++ b/kommander/editor/pics/small/shellscript.png
Binary files differ
diff --git a/kommander/editor/pics/small/slider.png b/kommander/editor/pics/small/slider.png
new file mode 100644
index 00000000..525bd1ca
--- /dev/null
+++ b/kommander/editor/pics/small/slider.png
Binary files differ
diff --git a/kommander/editor/pics/small/spacer.png b/kommander/editor/pics/small/spacer.png
new file mode 100644
index 00000000..926e8afc
--- /dev/null
+++ b/kommander/editor/pics/small/spacer.png
Binary files differ
diff --git a/kommander/editor/pics/small/spinbox.png b/kommander/editor/pics/small/spinbox.png
new file mode 100644
index 00000000..7ae20630
--- /dev/null
+++ b/kommander/editor/pics/small/spinbox.png
Binary files differ
diff --git a/kommander/editor/pics/small/statusbar.png b/kommander/editor/pics/small/statusbar.png
new file mode 100644
index 00000000..ac08552d
--- /dev/null
+++ b/kommander/editor/pics/small/statusbar.png
Binary files differ
diff --git a/kommander/editor/pics/small/table.png b/kommander/editor/pics/small/table.png
new file mode 100644
index 00000000..4bbd9c2d
--- /dev/null
+++ b/kommander/editor/pics/small/table.png
Binary files differ
diff --git a/kommander/editor/pics/small/tabwidget.png b/kommander/editor/pics/small/tabwidget.png
new file mode 100644
index 00000000..1254bb63
--- /dev/null
+++ b/kommander/editor/pics/small/tabwidget.png
Binary files differ
diff --git a/kommander/editor/pics/small/textbrowser.png b/kommander/editor/pics/small/textbrowser.png
new file mode 100644
index 00000000..090e2f84
--- /dev/null
+++ b/kommander/editor/pics/small/textbrowser.png
Binary files differ
diff --git a/kommander/editor/pics/small/textedit.png b/kommander/editor/pics/small/textedit.png
new file mode 100644
index 00000000..823d0818
--- /dev/null
+++ b/kommander/editor/pics/small/textedit.png
Binary files differ
diff --git a/kommander/editor/pics/small/textview.png b/kommander/editor/pics/small/textview.png
new file mode 100644
index 00000000..ec2270c3
--- /dev/null
+++ b/kommander/editor/pics/small/textview.png
Binary files differ
diff --git a/kommander/editor/pics/small/timeedit.png b/kommander/editor/pics/small/timeedit.png
new file mode 100644
index 00000000..01b37888
--- /dev/null
+++ b/kommander/editor/pics/small/timeedit.png
Binary files differ
diff --git a/kommander/editor/pics/small/timer.png b/kommander/editor/pics/small/timer.png
new file mode 100644
index 00000000..e2e17452
--- /dev/null
+++ b/kommander/editor/pics/small/timer.png
Binary files differ
diff --git a/kommander/editor/pics/small/toolbutton.png b/kommander/editor/pics/small/toolbutton.png
new file mode 100644
index 00000000..25d240a1
--- /dev/null
+++ b/kommander/editor/pics/small/toolbutton.png
Binary files differ
diff --git a/kommander/editor/pics/small/undo.png b/kommander/editor/pics/small/undo.png
new file mode 100644
index 00000000..839a823f
--- /dev/null
+++ b/kommander/editor/pics/small/undo.png
Binary files differ
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
new file mode 100644
index 00000000..2ab71dc7
--- /dev/null
+++ b/kommander/editor/pics/toolbox.png
Binary files differ
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>&amp;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>&amp;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>&amp;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>&amp;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>&lt;b&gt;Preferences&lt;/b&gt;&lt;p&gt;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.&lt;/p&gt;</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&amp;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&amp;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>&amp;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 &amp;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>&lt;b&gt;Customize the grid appearance for all forms.&lt;/b&gt;&lt;p&gt;When &lt;b&gt;Show Grid&lt;/b&gt; is checked, all forms show a grid.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ <widget class="QGroupBox" row="1" column="1">
+ <property name="name">
+ <cstring>GroupBox1</cstring>
+ </property>
+ <property name="title">
+ <string>Gr&amp;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&amp;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>&lt;b&gt;Customize the grid-settings for all forms.&lt;/b&gt;&lt;p&gt;When &lt;b&gt;Snap to Grid&lt;/b&gt; is checked, the widgets snap to the grid using the the X/Y resolution.&lt;/p&gt;</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>&lt;b&gt;Customize the grid-settings for all forms.&lt;/b&gt;&lt;p&gt;When &lt;b&gt;Show Grid&lt;/b&gt; is checked, a grid is shown on all forms using the X/Y resolution.&lt;/p&gt;</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>&lt;b&gt;Customize the grid-settings for all forms.&lt;/b&gt;&lt;p&gt;When &lt;b&gt;Show Grid&lt;/b&gt; is checked, a grid is shown on all forms using the X/Y resolution.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ <widget class="QLabel" row="0" column="0">
+ <property name="name">
+ <cstring>Label1</cstring>
+ </property>
+ <property name="text">
+ <string>Grid-&amp;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-&amp;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&amp;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 &amp;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 &amp;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&amp;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>&amp;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>&lt;b&gt;Enter the path to the documentation.&lt;/b&gt;&lt;p&gt;You may provide an $environment variable as the first part of the pathname.&lt;/p&gt;</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>&amp;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 &amp;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&amp;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>&amp;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>&amp;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>&amp;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>&lt;p&gt;
+&lt;a href="http://www.trolltech.com"&gt; http://www.trolltech.com &lt;/a&gt;
+&lt;/p&gt;
+&lt;p&gt;
+&lt;a href="http://www.kde.org"&gt; http://www.kde.org &lt;/a&gt;
+&lt;/p&gt;</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( "&" ), "&amp;" );
+ s2 = s2.replace( QRegExp( ">" ), "&gt;" );
+ s2 = s2.replace( QRegExp( "<" ), "&lt;" );
+ if ( attribute ) {
+ s2 = s2.replace( QRegExp( "\"" ), "&quot;" );
+ s2 = s2.replace( QRegExp( "'" ), "&apos;" );
+ }
+ 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>&amp;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>&amp;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>&amp;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>&amp;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&amp;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>&lt;b&gt;Move the selected item up.&lt;/b&gt;&lt;p&gt;The top-most column will be the first column of the list.&lt;/p&gt;</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>&lt;b&gt;Move the selected item down.&lt;/b&gt;&lt;p&gt;The top-most column will be the first column of the list.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="1" column="1">
+ <property name="name">
+ <cstring>buttonDeleteColumn</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;Delete Column</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="0" column="1">
+ <property name="name">
+ <cstring>buttonNewColumn</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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>&lt;b&gt;Delete the selected item's pixmap.&lt;/b&gt;&lt;p&gt;The pixmap in the current column of the selected item will be deleted.&lt;/p&gt;</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>&lt;b&gt;Select a pixmap file for the item.&lt;/b&gt;&lt;p&gt;The pixmap will be changed in the current column of the selected item.&lt;/p&gt;</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget class="QLabel" row="2" column="0">
+ <property name="name">
+ <cstring>TextLabel2</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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>&amp;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>&lt;no table&gt;</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </grid>
+ </widget>
+ <widget class="QWidget">
+ <property name="name">
+ <cstring>rows_tab</cstring>
+ </property>
+ <attribute name="title">
+ <string>&amp;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>&lt;b&gt;Move the selected item up.&lt;/b&gt;&lt;p&gt;The top-most column will be the first column of the list.&lt;/p&gt;</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>&lt;b&gt;Move the selected item down.&lt;/b&gt;&lt;p&gt;The top-most column will be the first column of the list.&lt;/p&gt;</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>&amp;New Row</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" row="1" column="1">
+ <property name="name">
+ <cstring>buttonDeleteRow</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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>&amp;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>&lt;b&gt;Delete the selected item's pixmap.&lt;/b&gt;&lt;p&gt;The pixmap in the current column of the selected item will be deleted.&lt;/p&gt;</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>&lt;b&gt;Select a pixmap file for the item.&lt;/b&gt;&lt;p&gt;The pixmap will be changed in the current column of the selected item.&lt;/p&gt;</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&amp;)</signal>
+ <receiver>TableEditorBase</receiver>
+ <slot>columnTextChanged(const QString&amp;)</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&amp;)</signal>
+ <receiver>TableEditorBase</receiver>
+ <slot>currentFieldChanged(const QString&amp;)</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&amp;)</signal>
+ <receiver>TableEditorBase</receiver>
+ <slot>rowTextChanged(const QString&amp;)</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 &amp; )</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 &amp; )</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 &amp; )</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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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>&amp;Add</string>
+ </property>
+ </widget>
+ <widget class="QPushButton">
+ <property name="name">
+ <cstring>buttonRemove</cstring>
+ </property>
+ <property name="text">
+ <string>&amp;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>&amp;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>&amp;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>&amp;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>&amp;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