diff --git a/Code/Mantid/MantidPlot/CMakeLists.txt b/Code/Mantid/MantidPlot/CMakeLists.txt index 8eca506905980c79020a937dad9a45ab2442d0e6..5a25d851c98d85a747a669921d852786c74dd243 100644 --- a/Code/Mantid/MantidPlot/CMakeLists.txt +++ b/Code/Mantid/MantidPlot/CMakeLists.txt @@ -10,7 +10,7 @@ set ( QTIPLOT_SRCS src/ApplicationWindow.cpp src/ArrowMarker.cpp src/AssociationsDialog.cpp src/AxesDialog.cpp - src/AxisAxisDetails.cpp + src/AxisDetails.cpp src/Bar.cpp src/BoxCurve.cpp src/CanvasPicker.cpp @@ -99,7 +99,7 @@ set ( QTIPLOT_SRCS src/ApplicationWindow.cpp src/QwtPieCurve.cpp src/RangeSelectorTool.cpp src/RenameWindowDialog.cpp - src/ScaleAxisDetails.cpp + src/ScaleDetails.cpp src/ScaleDraw.cpp src/ScalePicker.cpp src/ScreenPickerTool.cpp @@ -242,7 +242,7 @@ set ( QTIPLOT_HDRS src/ApplicationWindow.h src/ArrowMarker.h src/AssociationsDialog.h src/AxesDialog.h - src/AxisAxisDetails.h + src/AxisDetails.h src/Bar.h src/BoxCurve.h src/CanvasPicker.h @@ -339,7 +339,7 @@ set ( QTIPLOT_HDRS src/ApplicationWindow.h src/RangeSelectorTool.h src/RenameWindowDialog.h src/resource.h - src/ScaleAxisDetails.h + src/ScaleDetails.h src/ScaleDraw.h src/ScalePicker.h src/ScreenPickerTool.h @@ -548,7 +548,7 @@ include_directories ( ${CMAKE_CURRENT_SOURCE_DIR} ) set ( QTIPLOT_MOC_FILES src/ApplicationWindow.h src/AssociationsDialog.h src/AxesDialog.h - src/AxisAxisDetails.h + src/AxisDetails.h src/CanvasPicker.h src/ColorMapDialog.h src/CommandLineInterpreter.h @@ -621,7 +621,7 @@ set ( QTIPLOT_MOC_FILES src/ApplicationWindow.h src/QwtPieCurve.h src/RangeSelectorTool.h src/RenameWindowDialog.h - src/ScaleAxisDetails.h + src/ScaleDetails.h src/ScalePicker.h src/ScreenPickerTool.h src/Script.h diff --git a/Code/Mantid/MantidPlot/src/AxesDialog.cpp b/Code/Mantid/MantidPlot/src/AxesDialog.cpp index a2cec4190766afa5d74303eddbeabbe67f258f6a..c689362384f525b0b29ce71284e6093f6e20af9f 100644 --- a/Code/Mantid/MantidPlot/src/AxesDialog.cpp +++ b/Code/Mantid/MantidPlot/src/AxesDialog.cpp @@ -1,31 +1,31 @@ /*************************************************************************** - File : AxesDialog.cpp - Project : QtiPlot - -------------------------------------------------------------------- - Copyright : (C) 2006 by Ion Vasilief, Tilman Hoener zu Siederdissen - Email (use @ for *) : ion_vasilief*yahoo.fr, thzs*gmx.net - Description : General plot options dialog +File : AxesDialog.cpp +Project : QtiPlot +-------------------------------------------------------------------- +Copyright : (C) 2006 by Ion Vasilief, Tilman Hoener zu Siederdissen +Email (use @ for *) : ion_vasilief*yahoo.fr, thzs*gmx.net +Description : General plot options dialog - ***************************************************************************/ +***************************************************************************/ /*************************************************************************** - * * - * 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. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the Free Software * - * Foundation, Inc., 51 Franklin Street, Fifth Floor, * - * Boston, MA 02110-1301 USA * - * * - ***************************************************************************/ +* * +* 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. * +* * +* This program is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU General Public License for more details. * +* * +* You should have received a copy of the GNU General Public License * +* along with this program; if not, write to the Free Software * +* Foundation, Inc., 51 Franklin Street, Fifth Floor, * +* Boston, MA 02110-1301 USA * +* * +***************************************************************************/ #include "qwt_compat.h" #include "AxesDialog.h" #include "ApplicationWindow.h" @@ -66,558 +66,558 @@ /* XPM */ static const char* bottom_scl_xpm[] = { "36 38 75 1", " c None", ". c #FFFFFF", - "+ c #818181", "@ c #070707", "# c #101010", "$ c #EEEEEE", "% c #1D1D1D", - "& c #ACACAC", "* c #151515", "= c #121212", "- c #929292", "; c #242424", - "> c #D5D5D5", ", c #C9C9C9", "' c #2A2A2A", ") c #5E5E5E", "! c #000000", - "~ c #C8C8C8", "{ c #D2D2D2", "] c #090909", "^ c #060606", "/ c #FEFEFE", - "( c #FCFCFC", "_ c #F7F7F7", ": c #CECECE", "< c #444444", "[ c #E0E0E0", - "} c #464646", "| c #E8E8E8", "1 c #282828", "2 c #D3D3D3", "3 c #D1D1D1", - "4 c #A4A4A4", "5 c #484848", "6 c #EBEBEB", "7 c #7D7D7D", "8 c #050505", - "9 c #7F7F7F", "0 c #FDFDFD", "a c #7D6F6F", "b c #F38C82", "c c #E71E09", - "d c #E82612", "e c #FDEFEE", "f c #E9321F", "g c #F7B3AC", "h c #E82B17", - "i c #E82814", "j c #F49C93", "k c #EA3826", "l c #FBD8D5", "m c #F9CEC9", - "n c #EA3E2C", "o c #EF6D5F", "p c #E71803", "q c #F9CDC8", "r c #FAD6D2", - "s c #E7200B", "t c #E71D08", "u c #FEFCFC", "v c #FEF7F7", "w c #FAD2CE", - "x c #ED5546", "y c #FCE2E0", "z c #ED5748", "A c #FCEAE8", "B c #EA3C2A", - "C c #FAD7D3", "D c #FAD5D1", "E c #F6ACA5", "F c #ED594A", "G c #FDECEB", - "H c #F2897E", "I c #E71C07", "J c #F28B80", - "....................................", - "......+@#+......$%......&*=-........", - "......;>,'......)!......%~{]........", - "......^/(^......_!........:<........", - "......^((^.......!.......[}|........", - "......123;.......!......456.........", - "......78^9.......!......*!!!........", - "+@#+................................", - ";>,'...(!0.......!.......!.....+@#+.", - "^/(^...!!!!!!!!!!!!!!!!!!!!!!..;>,'.", - "^((^...!aaaaaaaaaaaaaaaaaaaa!..^/(^.", - "123;..!!aaaaaaaaaaaaaaaaaaaa!!.^((^.", - "78^9...!aaaaaaaaaaaaaaaaaaaa!..123;.", - ".......!aaaaaaaaaaaaaaaaaaaa!..78^9.", - ".......!aaaaaaaaaaaaaaaaaaaa!.......", - "$%.....!aaaaaaaaaaaaaaaaaaaa!.......", - ")!.....!aaaaaaaaaaaaaaaaaaaa!..$%...", - "_!.....!aaaaaaaaaaaaaaaaaaaa!..)!...", - ".!....!!aaaaaaaaaaaaaaaaaaaa!!._!...", - ".!.....!aaaaaaaaaaaaaaaaaaaa!...!...", - ".!.....!aaaaaaaaaaaaaaaaaaaa!...!...", - ".......!aaaaaaaaaaaaaaaaaaaa!...!...", - "&*=-...!aaaaaaaaaaaaaaaaaaaa!.......", - "%~{]...!aaaaaaaaaaaaaaaaaaaa!..&*=-.", - "..:<...!aaaaaaaaaaaaaaaaaaaa!..%~{].", - ".[}|..!!aaaaaaaaaaaaaaaaaaaa!!...:<.", - "456....!aaaaaaaaaaaaaaaaaaaa!...[}|.", - "*!!!...!aaaaaaaaaaaaaaaaaaaa!..456..", - ".......!!!!!!!!!!!!!!!!!!!!!!..*!!!.", - ".........!........!.......!.........", - "....................................", - "........bcdb.....ef......ghij.......", - "........klmn.....op......fqrs.......", - "........t/ut.....vp........wx.......", - "........tuut......p.......yzA.......", - "........BCDk......p......EFG........", - "........HItJ......p......hppp.......", - "...................................." }; + "+ c #818181", "@ c #070707", "# c #101010", "$ c #EEEEEE", "% c #1D1D1D", + "& c #ACACAC", "* c #151515", "= c #121212", "- c #929292", "; c #242424", + "> c #D5D5D5", ", c #C9C9C9", "' c #2A2A2A", ") c #5E5E5E", "! c #000000", + "~ c #C8C8C8", "{ c #D2D2D2", "] c #090909", "^ c #060606", "/ c #FEFEFE", + "( c #FCFCFC", "_ c #F7F7F7", ": c #CECECE", "< c #444444", "[ c #E0E0E0", + "} c #464646", "| c #E8E8E8", "1 c #282828", "2 c #D3D3D3", "3 c #D1D1D1", + "4 c #A4A4A4", "5 c #484848", "6 c #EBEBEB", "7 c #7D7D7D", "8 c #050505", + "9 c #7F7F7F", "0 c #FDFDFD", "a c #7D6F6F", "b c #F38C82", "c c #E71E09", + "d c #E82612", "e c #FDEFEE", "f c #E9321F", "g c #F7B3AC", "h c #E82B17", + "i c #E82814", "j c #F49C93", "k c #EA3826", "l c #FBD8D5", "m c #F9CEC9", + "n c #EA3E2C", "o c #EF6D5F", "p c #E71803", "q c #F9CDC8", "r c #FAD6D2", + "s c #E7200B", "t c #E71D08", "u c #FEFCFC", "v c #FEF7F7", "w c #FAD2CE", + "x c #ED5546", "y c #FCE2E0", "z c #ED5748", "A c #FCEAE8", "B c #EA3C2A", + "C c #FAD7D3", "D c #FAD5D1", "E c #F6ACA5", "F c #ED594A", "G c #FDECEB", + "H c #F2897E", "I c #E71C07", "J c #F28B80", + "....................................", + "......+@#+......$%......&*=-........", + "......;>,'......)!......%~{]........", + "......^/(^......_!........:<........", + "......^((^.......!.......[}|........", + "......123;.......!......456.........", + "......78^9.......!......*!!!........", + "+@#+................................", + ";>,'...(!0.......!.......!.....+@#+.", + "^/(^...!!!!!!!!!!!!!!!!!!!!!!..;>,'.", + "^((^...!aaaaaaaaaaaaaaaaaaaa!..^/(^.", + "123;..!!aaaaaaaaaaaaaaaaaaaa!!.^((^.", + "78^9...!aaaaaaaaaaaaaaaaaaaa!..123;.", + ".......!aaaaaaaaaaaaaaaaaaaa!..78^9.", + ".......!aaaaaaaaaaaaaaaaaaaa!.......", + "$%.....!aaaaaaaaaaaaaaaaaaaa!.......", + ")!.....!aaaaaaaaaaaaaaaaaaaa!..$%...", + "_!.....!aaaaaaaaaaaaaaaaaaaa!..)!...", + ".!....!!aaaaaaaaaaaaaaaaaaaa!!._!...", + ".!.....!aaaaaaaaaaaaaaaaaaaa!...!...", + ".!.....!aaaaaaaaaaaaaaaaaaaa!...!...", + ".......!aaaaaaaaaaaaaaaaaaaa!...!...", + "&*=-...!aaaaaaaaaaaaaaaaaaaa!.......", + "%~{]...!aaaaaaaaaaaaaaaaaaaa!..&*=-.", + "..:<...!aaaaaaaaaaaaaaaaaaaa!..%~{].", + ".[}|..!!aaaaaaaaaaaaaaaaaaaa!!...:<.", + "456....!aaaaaaaaaaaaaaaaaaaa!...[}|.", + "*!!!...!aaaaaaaaaaaaaaaaaaaa!..456..", + ".......!!!!!!!!!!!!!!!!!!!!!!..*!!!.", + ".........!........!.......!.........", + "....................................", + "........bcdb.....ef......ghij.......", + "........klmn.....op......fqrs.......", + "........t/ut.....vp........wx.......", + "........tuut......p.......yzA.......", + "........BCDk......p......EFG........", + "........HItJ......p......hppp.......", + "...................................." }; /* XPM */ static const char* top_scl_xpm[] = { "36 38 75 1", " c None", ". c #FFFFFF", - "+ c #F38C82", "@ c #E71E09", "# c #E82612", "$ c #FEFAFA", "% c #E9321F", - "& c #F7B3AC", "* c #E82B17", "= c #E82814", "- c #F49C93", "; c #EA3826", - "> c #FBD8D5", ", c #F9CEC9", "' c #EA3E2C", ") c #EF6D5F", "! c #E71803", - "~ c #F9CDC8", "{ c #FAD6D2", "] c #E7200B", "^ c #E71D08", "/ c #FEFEFE", - "( c #FEFCFC", "_ c #FAD2CE", ": c #ED5546", "< c #FCE2E0", "[ c #ED5748", - "} c #FCEAE8", "| c #EA3C2A", "1 c #FAD7D3", "2 c #FAD5D1", "3 c #F6ACA5", - "4 c #ED594A", "5 c #FDF2F1", "6 c #F2897E", "7 c #E71C07", "8 c #F28B80", - "9 c #818181", "0 c #070707", "a c #101010", "b c #242424", "c c #D5D5D5", - "d c #C9C9C9", "e c #2A2A2A", "f c #000000", "g c #060606", "h c #FCFCFC", - "i c #7D6F6F", "j c #282828", "k c #D3D3D3", "l c #D1D1D1", "m c #7D7D7D", - "n c #050505", "o c #7F7F7F", "p c #FAFAFA", "q c #1D1D1D", "r c #5E5E5E", - "s c #ACACAC", "t c #151515", "u c #121212", "v c #929292", "w c #C8C8C8", - "x c #D2D2D2", "y c #090909", "z c #CECECE", "A c #444444", "B c #E0E0E0", - "C c #464646", "D c #E8E8E8", "E c #A4A4A4", "F c #484848", "G c #F1F1F1", - "H c #EEEEEE", "I c #F7F7F7", "J c #EBEBEB", - "....................................", - ".......+@#+.....$%......&*=-........", - ".......;>,'.....)!......%~{]........", - ".......^/(^......!........_:........", - ".......^((^......!.......<[}........", - ".......|12;......!......345.........", - ".......67^8......!......*!!!........", - "90a9................................", - "bcde....f........f.......f.....90a9.", - "g/hg...ffffffffffffffffffffff..bcde.", - "ghhg...fiiiiiiiiiiiiiiiiiiiif..g/hg.", - "jklb..ffiiiiiiiiiiiiiiiiiiiiff.ghhg.", - "mngo...fiiiiiiiiiiiiiiiiiiiif..jklb.", - ".......fiiiiiiiiiiiiiiiiiiiif..mngo.", - ".......fiiiiiiiiiiiiiiiiiiiif.......", - "pq.....fiiiiiiiiiiiiiiiiiiiif.......", - "rf.....fiiiiiiiiiiiiiiiiiiiif..pq...", - ".f.....fiiiiiiiiiiiiiiiiiiiif..rf...", - ".f....ffiiiiiiiiiiiiiiiiiiiiff..f...", - ".f.....fiiiiiiiiiiiiiiiiiiiif...f...", - ".f.....fiiiiiiiiiiiiiiiiiiiif...f...", - ".......fiiiiiiiiiiiiiiiiiiiif...f...", - "stuv...fiiiiiiiiiiiiiiiiiiiif.......", - "qwxy...fiiiiiiiiiiiiiiiiiiiif..stuv.", - "..zA...fiiiiiiiiiiiiiiiiiiiif..qwxy.", - ".BCD..ffiiiiiiiiiiiiiiiiiiiiff...zA.", - "EFG....fiiiiiiiiiiiiiiiiiiiif...BCD.", - "tfff...fiiiiiiiiiiiiiiiiiiiif..EFG..", - ".......ffffffffffffffffffffff..tfff.", - ".........f........f.......f.........", - "....................................", - ".......90a9......Hq......stuv.......", - ".......bcde......rf......qwxy.......", - ".......g/hg......If........zA.......", - ".......ghhg.......f.......BCD.......", - ".......jklb.......f......EFJ........", - ".......mngo.......f......tfff.......", - "...................................." }; + "+ c #F38C82", "@ c #E71E09", "# c #E82612", "$ c #FEFAFA", "% c #E9321F", + "& c #F7B3AC", "* c #E82B17", "= c #E82814", "- c #F49C93", "; c #EA3826", + "> c #FBD8D5", ", c #F9CEC9", "' c #EA3E2C", ") c #EF6D5F", "! c #E71803", + "~ c #F9CDC8", "{ c #FAD6D2", "] c #E7200B", "^ c #E71D08", "/ c #FEFEFE", + "( c #FEFCFC", "_ c #FAD2CE", ": c #ED5546", "< c #FCE2E0", "[ c #ED5748", + "} c #FCEAE8", "| c #EA3C2A", "1 c #FAD7D3", "2 c #FAD5D1", "3 c #F6ACA5", + "4 c #ED594A", "5 c #FDF2F1", "6 c #F2897E", "7 c #E71C07", "8 c #F28B80", + "9 c #818181", "0 c #070707", "a c #101010", "b c #242424", "c c #D5D5D5", + "d c #C9C9C9", "e c #2A2A2A", "f c #000000", "g c #060606", "h c #FCFCFC", + "i c #7D6F6F", "j c #282828", "k c #D3D3D3", "l c #D1D1D1", "m c #7D7D7D", + "n c #050505", "o c #7F7F7F", "p c #FAFAFA", "q c #1D1D1D", "r c #5E5E5E", + "s c #ACACAC", "t c #151515", "u c #121212", "v c #929292", "w c #C8C8C8", + "x c #D2D2D2", "y c #090909", "z c #CECECE", "A c #444444", "B c #E0E0E0", + "C c #464646", "D c #E8E8E8", "E c #A4A4A4", "F c #484848", "G c #F1F1F1", + "H c #EEEEEE", "I c #F7F7F7", "J c #EBEBEB", + "....................................", + ".......+@#+.....$%......&*=-........", + ".......;>,'.....)!......%~{]........", + ".......^/(^......!........_:........", + ".......^((^......!.......<[}........", + ".......|12;......!......345.........", + ".......67^8......!......*!!!........", + "90a9................................", + "bcde....f........f.......f.....90a9.", + "g/hg...ffffffffffffffffffffff..bcde.", + "ghhg...fiiiiiiiiiiiiiiiiiiiif..g/hg.", + "jklb..ffiiiiiiiiiiiiiiiiiiiiff.ghhg.", + "mngo...fiiiiiiiiiiiiiiiiiiiif..jklb.", + ".......fiiiiiiiiiiiiiiiiiiiif..mngo.", + ".......fiiiiiiiiiiiiiiiiiiiif.......", + "pq.....fiiiiiiiiiiiiiiiiiiiif.......", + "rf.....fiiiiiiiiiiiiiiiiiiiif..pq...", + ".f.....fiiiiiiiiiiiiiiiiiiiif..rf...", + ".f....ffiiiiiiiiiiiiiiiiiiiiff..f...", + ".f.....fiiiiiiiiiiiiiiiiiiiif...f...", + ".f.....fiiiiiiiiiiiiiiiiiiiif...f...", + ".......fiiiiiiiiiiiiiiiiiiiif...f...", + "stuv...fiiiiiiiiiiiiiiiiiiiif.......", + "qwxy...fiiiiiiiiiiiiiiiiiiiif..stuv.", + "..zA...fiiiiiiiiiiiiiiiiiiiif..qwxy.", + ".BCD..ffiiiiiiiiiiiiiiiiiiiiff...zA.", + "EFG....fiiiiiiiiiiiiiiiiiiiif...BCD.", + "tfff...fiiiiiiiiiiiiiiiiiiiif..EFG..", + ".......ffffffffffffffffffffff..tfff.", + ".........f........f.......f.........", + "....................................", + ".......90a9......Hq......stuv.......", + ".......bcde......rf......qwxy.......", + ".......g/hg......If........zA.......", + ".......ghhg.......f.......BCD.......", + ".......jklb.......f......EFJ........", + ".......mngo.......f......tfff.......", + "...................................." }; /* XPM */ static const char* left_scl_xpm[] = { "36 36 72 1", " c None", ". c #FFFFFF", - "+ c #818181", "@ c #070707", "# c #101010", "$ c #FAFAFA", "% c #1D1D1D", - "& c #ACACAC", "* c #151515", "= c #121212", "- c #929292", "; c #242424", - "> c #D5D5D5", ", c #C9C9C9", "' c #2A2A2A", ") c #5E5E5E", "! c #000000", - "~ c #C8C8C8", "{ c #D2D2D2", "] c #090909", "^ c #060606", "/ c #FEFEFE", - "( c #FCFCFC", "_ c #CECECE", ": c #444444", "< c #E0E0E0", "[ c #464646", - "} c #E8E8E8", "| c #282828", "1 c #D3D3D3", "2 c #D1D1D1", "3 c #A4A4A4", - "4 c #484848", "5 c #F1F1F1", "6 c #7D7D7D", "7 c #050505", "8 c #7F7F7F", - "9 c #F38C82", "0 c #E71E09", "a c #E82612", "b c #EA3826", "c c #FBD8D5", - "d c #F9CEC9", "e c #EA3E2C", "f c #E71D08", "g c #FEFCFC", "h c #7D6F6F", - "i c #EA3C2A", "j c #FAD7D3", "k c #FAD5D1", "l c #F2897E", "m c #E71C07", - "n c #F28B80", "o c #FEFAFA", "p c #E9321F", "q c #EF6D5F", "r c #E71803", - "s c #F7B3AC", "t c #E82B17", "u c #E82814", "v c #F49C93", "w c #F9CDC8", - "x c #FAD6D2", "y c #E7200B", "z c #FAD2CE", "A c #ED5546", "B c #FCE2E0", - "C c #ED5748", "D c #FCEAE8", "E c #F6ACA5", "F c #ED594A", "G c #FDF2F1", - ".......+@#+......$%......&*=-.......", - ".......;>,'......)!......%~{].......", - ".......^/(^.......!........_:.......", - ".......^((^.......!.......<[}.......", - ".......|12;.......!......345........", - ".......67^8.......!......*!!!.......", - "....................................", - ".90a9...!........!.......!.....+@#+.", - ".bcde..!!!!!!!!!!!!!!!!!!!!!!..;>,'.", - ".f/gf..!hhhhhhhhhhhhhhhhhhhh!..^/(^.", - ".fggf.!!hhhhhhhhhhhhhhhhhhhh!!.^((^.", - ".ijkb..!hhhhhhhhhhhhhhhhhhhh!..|12;.", - ".lmfn..!hhhhhhhhhhhhhhhhhhhh!..67^8.", - ".......!hhhhhhhhhhhhhhhhhhhh!.......", - ".......!hhhhhhhhhhhhhhhhhhhh!.......", - "..op...!hhhhhhhhhhhhhhhhhhhh!...%...", - "..qr...!hhhhhhhhhhhhhhhhhhhh!..)!...", - "...r..!!hhhhhhhhhhhhhhhhhhhh!!..!...", - "...r...!hhhhhhhhhhhhhhhhhhhh!...!...", - "...r...!hhhhhhhhhhhhhhhhhhhh!...!...", - "...r...!hhhhhhhhhhhhhhhhhhhh!...!...", - ".......!hhhhhhhhhhhhhhhhhhhh!.......", - ".stuv..!hhhhhhhhhhhhhhhhhhhh!..&*=-.", - ".pwxy..!hhhhhhhhhhhhhhhhhhhh!..%~{].", - "...zA.!!hhhhhhhhhhhhhhhhhhhh!!..._:.", - "..BCD..!hhhhhhhhhhhhhhhhhhhh!...<[}.", - ".EFG...!hhhhhhhhhhhhhhhhhhhh!..34...", - ".trrr..!!!!!!!!!!!!!!!!!!!!!!..*!!!.", - ".........!........!.......!.........", - "....................................", - ".......+@#+......$%......&*=-.......", - ".......;>,'......)!......%~{].......", - ".......^/(^.......!........_:.......", - ".......^((^.......!.......<[}.......", - ".......|12;.......!......345........", - ".......67^8.......!......*!!!......." }; + "+ c #818181", "@ c #070707", "# c #101010", "$ c #FAFAFA", "% c #1D1D1D", + "& c #ACACAC", "* c #151515", "= c #121212", "- c #929292", "; c #242424", + "> c #D5D5D5", ", c #C9C9C9", "' c #2A2A2A", ") c #5E5E5E", "! c #000000", + "~ c #C8C8C8", "{ c #D2D2D2", "] c #090909", "^ c #060606", "/ c #FEFEFE", + "( c #FCFCFC", "_ c #CECECE", ": c #444444", "< c #E0E0E0", "[ c #464646", + "} c #E8E8E8", "| c #282828", "1 c #D3D3D3", "2 c #D1D1D1", "3 c #A4A4A4", + "4 c #484848", "5 c #F1F1F1", "6 c #7D7D7D", "7 c #050505", "8 c #7F7F7F", + "9 c #F38C82", "0 c #E71E09", "a c #E82612", "b c #EA3826", "c c #FBD8D5", + "d c #F9CEC9", "e c #EA3E2C", "f c #E71D08", "g c #FEFCFC", "h c #7D6F6F", + "i c #EA3C2A", "j c #FAD7D3", "k c #FAD5D1", "l c #F2897E", "m c #E71C07", + "n c #F28B80", "o c #FEFAFA", "p c #E9321F", "q c #EF6D5F", "r c #E71803", + "s c #F7B3AC", "t c #E82B17", "u c #E82814", "v c #F49C93", "w c #F9CDC8", + "x c #FAD6D2", "y c #E7200B", "z c #FAD2CE", "A c #ED5546", "B c #FCE2E0", + "C c #ED5748", "D c #FCEAE8", "E c #F6ACA5", "F c #ED594A", "G c #FDF2F1", + ".......+@#+......$%......&*=-.......", + ".......;>,'......)!......%~{].......", + ".......^/(^.......!........_:.......", + ".......^((^.......!.......<[}.......", + ".......|12;.......!......345........", + ".......67^8.......!......*!!!.......", + "....................................", + ".90a9...!........!.......!.....+@#+.", + ".bcde..!!!!!!!!!!!!!!!!!!!!!!..;>,'.", + ".f/gf..!hhhhhhhhhhhhhhhhhhhh!..^/(^.", + ".fggf.!!hhhhhhhhhhhhhhhhhhhh!!.^((^.", + ".ijkb..!hhhhhhhhhhhhhhhhhhhh!..|12;.", + ".lmfn..!hhhhhhhhhhhhhhhhhhhh!..67^8.", + ".......!hhhhhhhhhhhhhhhhhhhh!.......", + ".......!hhhhhhhhhhhhhhhhhhhh!.......", + "..op...!hhhhhhhhhhhhhhhhhhhh!...%...", + "..qr...!hhhhhhhhhhhhhhhhhhhh!..)!...", + "...r..!!hhhhhhhhhhhhhhhhhhhh!!..!...", + "...r...!hhhhhhhhhhhhhhhhhhhh!...!...", + "...r...!hhhhhhhhhhhhhhhhhhhh!...!...", + "...r...!hhhhhhhhhhhhhhhhhhhh!...!...", + ".......!hhhhhhhhhhhhhhhhhhhh!.......", + ".stuv..!hhhhhhhhhhhhhhhhhhhh!..&*=-.", + ".pwxy..!hhhhhhhhhhhhhhhhhhhh!..%~{].", + "...zA.!!hhhhhhhhhhhhhhhhhhhh!!..._:.", + "..BCD..!hhhhhhhhhhhhhhhhhhhh!...<[}.", + ".EFG...!hhhhhhhhhhhhhhhhhhhh!..34...", + ".trrr..!!!!!!!!!!!!!!!!!!!!!!..*!!!.", + ".........!........!.......!.........", + "....................................", + ".......+@#+......$%......&*=-.......", + ".......;>,'......)!......%~{].......", + ".......^/(^.......!........_:.......", + ".......^((^.......!.......<[}.......", + ".......|12;.......!......345........", + ".......67^8.......!......*!!!......." }; /* XPM */ static const char* right_scl_xpm[] = { "36 36 72 1", " c None", ". c #FFFFFF", - "+ c #818181", "@ c #070707", "# c #101010", "$ c #FAFAFA", "% c #1D1D1D", - "& c #ACACAC", "* c #151515", "= c #121212", "- c #929292", "; c #242424", - "> c #D5D5D5", ", c #C9C9C9", "' c #2A2A2A", ") c #5E5E5E", "! c #000000", - "~ c #C8C8C8", "{ c #D2D2D2", "] c #090909", "^ c #060606", "/ c #FEFEFE", - "( c #FCFCFC", "_ c #CECECE", ": c #444444", "< c #E0E0E0", "[ c #464646", - "} c #E8E8E8", "| c #282828", "1 c #D3D3D3", "2 c #D1D1D1", "3 c #A4A4A4", - "4 c #484848", "5 c #F1F1F1", "6 c #7D7D7D", "7 c #050505", "8 c #7F7F7F", - "9 c #F38C82", "0 c #E71E09", "a c #E82612", "b c #EA3826", "c c #FBD8D5", - "d c #F9CEC9", "e c #EA3E2C", "f c #7D6F6F", "g c #E71D08", "h c #FEFCFC", - "i c #EA3C2A", "j c #FAD7D3", "k c #FAD5D1", "l c #F2897E", "m c #E71C07", - "n c #F28B80", "o c #FEFAFA", "p c #E9321F", "q c #EF6D5F", "r c #E71803", - "s c #F7B3AC", "t c #E82B17", "u c #E82814", "v c #F49C93", "w c #F9CDC8", - "x c #FAD6D2", "y c #E7200B", "z c #FAD2CE", "A c #ED5546", "B c #FCE2E0", - "C c #ED5748", "D c #FCEAE8", "E c #F6ACA5", "F c #ED594A", "G c #FDF2F1", - ".......+@#+......$%......&*=-.......", - ".......;>,'......)!......%~{].......", - ".......^/(^.......!........_:.......", - ".......^((^.......!.......<[}.......", - ".......|12;.......!......345........", - ".......67^8.......!......*!!!.......", - "....................................", - ".+@#+...!........!.......!.....90a9.", - ".;>,'..!!!!!!!!!!!!!!!!!!!!!!..bcde.", - ".^/(^..!ffffffffffffffffffff!..g/hg.", - ".^((^.!!ffffffffffffffffffff!!.ghhg.", - ".|12;..!ffffffffffffffffffff!..ijkb.", - ".67^8..!ffffffffffffffffffff!..lmgn.", - ".......!ffffffffffffffffffff!.......", - ".......!ffffffffffffffffffff!.......", - ".$%....!ffffffffffffffffffff!...op..", - ".)!....!ffffffffffffffffffff!...qr..", - "..!...!!ffffffffffffffffffff!!...r..", - "..!....!ffffffffffffffffffff!....r..", - "..!....!ffffffffffffffffffff!....r..", - "..!....!ffffffffffffffffffff!....r..", - ".......!ffffffffffffffffffff!.......", - ".&*=-..!ffffffffffffffffffff!..stuv.", - ".%~{]..!ffffffffffffffffffff!..pwxy.", - "..._:.!!ffffffffffffffffffff!!...zA.", - "..<[}..!ffffffffffffffffffff!...BCD.", - ".345...!ffffffffffffffffffff!..EFG..", - ".*!!!..!!!!!!!!!!!!!!!!!!!!!!..trrr.", - ".........!........!.......!.........", - "....................................", - ".......+@#+......$%......&*=-.......", - ".......;>,'......)!......%~{].......", - ".......^/(^.......!........_:.......", - ".......^((^.......!.......<[}.......", - ".......|12;.......!......345........", - ".......67^8.......!......*!!!......." }; + "+ c #818181", "@ c #070707", "# c #101010", "$ c #FAFAFA", "% c #1D1D1D", + "& c #ACACAC", "* c #151515", "= c #121212", "- c #929292", "; c #242424", + "> c #D5D5D5", ", c #C9C9C9", "' c #2A2A2A", ") c #5E5E5E", "! c #000000", + "~ c #C8C8C8", "{ c #D2D2D2", "] c #090909", "^ c #060606", "/ c #FEFEFE", + "( c #FCFCFC", "_ c #CECECE", ": c #444444", "< c #E0E0E0", "[ c #464646", + "} c #E8E8E8", "| c #282828", "1 c #D3D3D3", "2 c #D1D1D1", "3 c #A4A4A4", + "4 c #484848", "5 c #F1F1F1", "6 c #7D7D7D", "7 c #050505", "8 c #7F7F7F", + "9 c #F38C82", "0 c #E71E09", "a c #E82612", "b c #EA3826", "c c #FBD8D5", + "d c #F9CEC9", "e c #EA3E2C", "f c #7D6F6F", "g c #E71D08", "h c #FEFCFC", + "i c #EA3C2A", "j c #FAD7D3", "k c #FAD5D1", "l c #F2897E", "m c #E71C07", + "n c #F28B80", "o c #FEFAFA", "p c #E9321F", "q c #EF6D5F", "r c #E71803", + "s c #F7B3AC", "t c #E82B17", "u c #E82814", "v c #F49C93", "w c #F9CDC8", + "x c #FAD6D2", "y c #E7200B", "z c #FAD2CE", "A c #ED5546", "B c #FCE2E0", + "C c #ED5748", "D c #FCEAE8", "E c #F6ACA5", "F c #ED594A", "G c #FDF2F1", + ".......+@#+......$%......&*=-.......", + ".......;>,'......)!......%~{].......", + ".......^/(^.......!........_:.......", + ".......^((^.......!.......<[}.......", + ".......|12;.......!......345........", + ".......67^8.......!......*!!!.......", + "....................................", + ".+@#+...!........!.......!.....90a9.", + ".;>,'..!!!!!!!!!!!!!!!!!!!!!!..bcde.", + ".^/(^..!ffffffffffffffffffff!..g/hg.", + ".^((^.!!ffffffffffffffffffff!!.ghhg.", + ".|12;..!ffffffffffffffffffff!..ijkb.", + ".67^8..!ffffffffffffffffffff!..lmgn.", + ".......!ffffffffffffffffffff!.......", + ".......!ffffffffffffffffffff!.......", + ".$%....!ffffffffffffffffffff!...op..", + ".)!....!ffffffffffffffffffff!...qr..", + "..!...!!ffffffffffffffffffff!!...r..", + "..!....!ffffffffffffffffffff!....r..", + "..!....!ffffffffffffffffffff!....r..", + "..!....!ffffffffffffffffffff!....r..", + ".......!ffffffffffffffffffff!.......", + ".&*=-..!ffffffffffffffffffff!..stuv.", + ".%~{]..!ffffffffffffffffffff!..pwxy.", + "..._:.!!ffffffffffffffffffff!!...zA.", + "..<[}..!ffffffffffffffffffff!...BCD.", + ".345...!ffffffffffffffffffff!..EFG..", + ".*!!!..!!!!!!!!!!!!!!!!!!!!!!..trrr.", + ".........!........!.......!.........", + "....................................", + ".......+@#+......$%......&*=-.......", + ".......;>,'......)!......%~{].......", + ".......^/(^.......!........_:.......", + ".......^((^.......!.......<[}.......", + ".......|12;.......!......345........", + ".......67^8.......!......*!!!......." }; static const char* image2_data[] = - { "74 77 171 2", " c None", ". c #FFFFFF", "+ c #E0E0E0", - "@ c #FAFAFA", "# c #363636", "$ c #ABABAB", "% c #000000", - "& c #BDBDBD", "* c #737373", "= c #858585", "- c #FFE8E8", - "; c #FFF7F7", "> c #FFD1D1", ", c #FFF0F0", "' c #E6E6E6", - ") c #FFB2B2", "! c #FFE6E6", "~ c #FF6666", "{ c #FFCCCC", - "] c #C9C9C9", "^ c #939493", "/ c #808080", "( c #878787", - "_ c #D6D6D6", ": c #969696", "< c #030303", "[ c #383838", - "} c #4C4C4C", "| c #1A1A1A", "1 c #080808", "2 c #C2C2C2", - "3 c #EBEBEB", "4 c #F0F0F0", "5 c #8C8C8C", "6 c #7A7A7A", - "7 c #A3A3A3", "8 c #999999", "9 c #A1A1A1", "0 c #828282", - "a c #949494", "b c #F2F2F2", "c c #474747", "d c #545454", - "e c #0F0F0F", "f c #B5B5B5", "g c #CFCFCF", "h c #262626", - "i c #333333", "j c #DEDEDE", "k c #FDFDFD", "l c #D7D7D7", - "m c #B7B7B7", "n c #C4C4C4", "o c #F7F7F7", "p c #CCCCCC", - "q c #2E2E2E", "r c #B2B2B2", "s c #DFDFDF", "t c #ACACAC", - "u c #ADADAD", "v c #D3D3D3", "w c #CDCDCD", "x c #AAAAAA", - "y c #D4C3C3", "z c #A9A9A9", "A c #AAA8A8", "B c #DB7F7F", - "C c #E3E3E3", "D c #E5E5E5", "E c #F2DADA", "F c #B19999", - "G c #FFC4C4", "H c #D2D2D2", "I c #FFD4D4", "J c #EA6565", - "K c #E2E2E2", "L c #FFA1A1", "M c #C8C8C8", "N c #AFAFAF", - "O c #FF9999", "P c #F5C6C6", "Q c #E9E9E9", "R c #B6B6B6", - "S c #CFB4B4", "T c #B9B9B9", "U c #F5F5F5", "V c #ACA7A7", - "W c #EAEAEA", "X c #F9F9F9", "Y c #B8B8B8", "Z c #C0A6A6", - "` c #B4B4B4", " . c #EFEFEF", ".. c #F2C3C3", "+. c #EEEEEE", - "@. c #BCBCBC", "#. c #C5C5C5", "$. c #DADADA", "%. c #BEBEBE", - "&. c #B0B0B0", "*. c #FBFBFB", "=. c #C6C6C6", "-. c #B1B1B1", - ";. c #BABABA", ">. c #AEAEAE", ",. c #D0D0D0", "'. c #FCFCFC", - "). c #141414", "!. c #D8D8D8", "~. c #C7C7C7", "{. c #575757", - "]. c #3D3D3D", "^. c #C3C3C3", "/. c #5E5E5E", "(. c #7D7D7D", - "_. c #B3B3B3", ":. c #F6C8C8", "<. c #757575", "[. c #919191", - "}. c #CAB3B3", "|. c #EDEDED", "1. c #ADA8A8", "2. c #666666", - "3. c #2B2B2B", "4. c #BBBBBB", "5. c #C9AAAA", "6. c #292929", - "7. c #D4D4D4", "8. c #FBC9C9", "9. c #E8E8E8", "0. c #9C9C9C", - "a. c #E4E4E4", "b. c #E7E7E7", "c. c #CACACA", "d. c #C1C1C1", - "e. c #E39090", "f. c #CBCBCB", "g. c #ADA3A3", "h. c #C8B0B0", - "i. c #F59A9A", "j. c #C0A9A9", "k. c #C9BFBF", "l. c #7A4747", - "m. c #A18C8C", "n. c #8C8282", "o. c #332929", "p. c #242424", - "q. c #0A0A0A", "r. c #454545", "s. c #595959", "t. c #525252", - "u. c #5C5C5C", "v. c #D9D9D9", "w. c #121212", "x. c #8A8A8A", - "y. c #171717", "z. c #A8A8A8", "A. c #696969", "B. c #707070", - "C. c #9E9E9E", "D. c #404040", "E. c #616161", "F. c #8F8F8F", - "G. c #4F4F4F", "H. c #050505", "I. c #DBDBDB", "J. c #4A4A4A", - "K. c #212121", "L. c #3B3B3B", "M. c #636363", "N. c #D1D1D1", - ". . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . @ # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . $ % & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . * % = . . . . . . . . . . . - . . . . . . . . . . . ; > . . . . . . . . . . . . , . . . . . . . . . . . - - . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . . ] ^ / ( _ . ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . : < [ } | 1 ] ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . 2 ' . . 3 % / ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . . . . . 4 % 5 ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . . . . . 6 1 + ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . . . . 7 < 8 @ 5 % 9 . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . . . 0 < a . b c % d . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . b d e f . . . ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". g h i j . . . . ' % . . . . . . . . . . . . ) . . . . k l m m m n o ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - "p 1 q $ r r r g . ' % . . . . . . . . . . . . ) . . . s t u ] v w r x y ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - "7 i i i i i i : . ' % . . . . . . . . . . . . ) . . p z _ . . . . . l A B . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . ) . C x D . . . . . . . E F ] . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . G . u H . . . . . . . . I J x K . . . . . . . . . . { . . . . . . . . . . . L G . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { M N . . . . . . . . . { ~ _ $ o . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . P x Q . . . . . . . . . { ~ . & R . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . S T . . . . . . . . . . { ~ . U $ _ . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . 4 V W . . . . . . . . . . { ~ . . K x X . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . Y Z . . . . . . . . . . . { ~ . . . ` n . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . .x ... . . . . . . . . . . { ~ . . . +.$ +.. . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . @.n { . . . . . . . . . . . { ~ . . . . #.R . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . x +.{ . . . . . . . . . . . { ~ . . . . X z o . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . $.u . { . . . . . . . . . . . { ~ . . . . . %.&.*.. . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . ` =.. { . . . . . . . . . . . { ~ . . . . . . -.=.. . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . 4 z X . { . . . . . . . . . . . { ~ . . . . . . + t . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . #.;.. . { . . . . . . . . . . . { ~ . . . . . . . >.v . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . u $.. . { . . . . . . . . . . . { ~ . . . . . . . _ t . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . n 2 . ' % . . . . . . . + t k . . { . . . . . . . . . . . { ~ . . . . . . . . t ,.. . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . '.& ).5 . ' % . . . . . . . m #.. . . { . . . . . . . . . . . { ~ . . . . . . . . !.t . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . f % % % ~.. ' % . . . . . . . x W . . . { . . . . . . . . . . . { ~ . . . . . . . . . N ] . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . a 1 @ . ' % . . . . . . s u . . . . { . . . . . . . . . . . { ~ . . . . . . . . . l u k { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . {.].. . ' % . . . . . . %.%.. . . . { . . . . . . . . . . . { ~ . . . . . . . . . . r ^.{ . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . | 6 . U /.% (.. . . . . _.' . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . 4 u :.. . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . + % r . o <.% [.. . . . o $ '.. . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . ^.}.. . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . 7 % |.. . ' % . . . . . ,._.. . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . o 1.D . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . 2.3.. . . ' % . . . . . 4.=.. . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . 5.-.. . . . . . . . . . O { . . . . . . . . . . . ", - ". . p p 6.} p + . ' % . . . . . _.7.. . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . 8.t ,.. . . . . . . . . O { . . . . . . . . . . . ", - ". 9.i i i i i 0.. ' % . . . . . x +.. . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { C x a.. . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . x . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . ,.u . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . b.t . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . &.4.. . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . ^.T . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . X u c.. . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . m H . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . +.$ p . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . t C . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . +.x _ . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . z X . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . + x _ . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . U x . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . K x H . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . a.f . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . ' &.d.X O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . $.-.. . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . X _.>.e.{ . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . M 4.. . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . f.g.h.U . . . . . . . . . . ", - ". . . . . . . . . ' % . . . $.,.. . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . i.j.x Y b . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { b.@.x &.~.D . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . U f.m @.. . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", - ". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . k.l.. . . . . . . . . . . . { . . . . . . . . . . . m.n.. . . . . . . 2 C . . ", - ". . . . . . . . . ' % i i i i i i i i i i i i o.i i i i i i i i i i i p.q.i i i i i i i i i i i i o.i i i i i i i i i i i | ).i i i i i i i ).< r.~.", - ". . . . . . . . . . Y r r r r r r r r r r r r r r r r r r r r r r r r (.p.r r r r r r r r r r r r r r r r r r r r r r r r s.c r r r r r r r t.u.2 . ", - ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ] . . . . . . . . . . . . . . . . . . . . . . . . + v.. . . . . . . . . . . ", - ". . . . '.= ).% w.[.. . . . . . . . . . . . . . . . . . . . . . . . . . x.8 . . . . . . . . . . . . . . . . . . . . . ~.2.[ i c 2 . . . . . . . . . ", - ". . . . 2.y.z.p A.< j . . . . . . . . . . . . . . . . . . . . . . b &.B.< C.. . . . . . . . . . . . . . . . . . . . . D.t.[.a 3.1 9.. . . . . . . . ", - ". . . p % &.. . + % r . . . . . . . . . . . . . . . . . . . . . . 2 } i % v.. . . . . . . . . . . . . . . . . . . . . 3 . . . &.% p . . . . . . . . ", - ". . . E.h . . . ' % r . . . . . . . . . . . . . . . . . . . . . . . . / ).. . . . . . . . . . . . . . . . . . . . . . . . . . F.< 9.. . . . . . . . ", - ". . . | * . . . ~.% ~.. . . . . . . . . . . . . . . . . . . . . . . . c G.. . . . . . . . . . . . . . . . . . . . . . . . . + ).E.. . . . . . . . . ", - ". . j % &.. . . a H.U . . . . . . . . . . . . . . . . . . . . . . . '.q.x.. . . . . . . . . . . . . . . . . . . . . . . . j h # U . . . . . . . . . ", - ". . Y % I.. . . G.D.. . . . . . . . . . . . . . . . . . . . . . . . p % ~.. . . . . . . . . . . . . . . . . . . . . . . n y.J.4 . . . . . . . . . . ", - ". . r % ' . . 9.1 8 . . . . . . . . . . . . . . . . . . . . . . . . a 1 o . . . . . . . . . . . . . . . . . . . . . . [.H.<.'.. . . . . . . . . . . ", - ". . & % 2 . '.s.K.U . . . . . . . . . . . . . . . . . . . . . . . . d L.. . . . . . . . . . . . . . . . . . . . . |.t.w.r . . . . . . . . . . . . . ", - ". . @ 6.).} h y.p . . . . . . . . . . . . . . . . . . . . . . @ / / ).# / Y . . . . . . . . . . . . . . . . . . . M.% J.2.2.2.2.N.. . . . . . . . . ", - ". . . 3 F./ a 4 . . . . . . . . . . . . . . . . . . . . . . . |./ / / / / n . . . . . . . . . . . . . . . . . . . 0./ / / / / / 9.. . . . . . . . . " }; +{ "74 77 171 2", " c None", ". c #FFFFFF", "+ c #E0E0E0", +"@ c #FAFAFA", "# c #363636", "$ c #ABABAB", "% c #000000", +"& c #BDBDBD", "* c #737373", "= c #858585", "- c #FFE8E8", +"; c #FFF7F7", "> c #FFD1D1", ", c #FFF0F0", "' c #E6E6E6", +") c #FFB2B2", "! c #FFE6E6", "~ c #FF6666", "{ c #FFCCCC", +"] c #C9C9C9", "^ c #939493", "/ c #808080", "( c #878787", +"_ c #D6D6D6", ": c #969696", "< c #030303", "[ c #383838", +"} c #4C4C4C", "| c #1A1A1A", "1 c #080808", "2 c #C2C2C2", +"3 c #EBEBEB", "4 c #F0F0F0", "5 c #8C8C8C", "6 c #7A7A7A", +"7 c #A3A3A3", "8 c #999999", "9 c #A1A1A1", "0 c #828282", +"a c #949494", "b c #F2F2F2", "c c #474747", "d c #545454", +"e c #0F0F0F", "f c #B5B5B5", "g c #CFCFCF", "h c #262626", +"i c #333333", "j c #DEDEDE", "k c #FDFDFD", "l c #D7D7D7", +"m c #B7B7B7", "n c #C4C4C4", "o c #F7F7F7", "p c #CCCCCC", +"q c #2E2E2E", "r c #B2B2B2", "s c #DFDFDF", "t c #ACACAC", +"u c #ADADAD", "v c #D3D3D3", "w c #CDCDCD", "x c #AAAAAA", +"y c #D4C3C3", "z c #A9A9A9", "A c #AAA8A8", "B c #DB7F7F", +"C c #E3E3E3", "D c #E5E5E5", "E c #F2DADA", "F c #B19999", +"G c #FFC4C4", "H c #D2D2D2", "I c #FFD4D4", "J c #EA6565", +"K c #E2E2E2", "L c #FFA1A1", "M c #C8C8C8", "N c #AFAFAF", +"O c #FF9999", "P c #F5C6C6", "Q c #E9E9E9", "R c #B6B6B6", +"S c #CFB4B4", "T c #B9B9B9", "U c #F5F5F5", "V c #ACA7A7", +"W c #EAEAEA", "X c #F9F9F9", "Y c #B8B8B8", "Z c #C0A6A6", +"` c #B4B4B4", " . c #EFEFEF", ".. c #F2C3C3", "+. c #EEEEEE", +"@. c #BCBCBC", "#. c #C5C5C5", "$. c #DADADA", "%. c #BEBEBE", +"&. c #B0B0B0", "*. c #FBFBFB", "=. c #C6C6C6", "-. c #B1B1B1", +";. c #BABABA", ">. c #AEAEAE", ",. c #D0D0D0", "'. c #FCFCFC", +"). c #141414", "!. c #D8D8D8", "~. c #C7C7C7", "{. c #575757", +"]. c #3D3D3D", "^. c #C3C3C3", "/. c #5E5E5E", "(. c #7D7D7D", +"_. c #B3B3B3", ":. c #F6C8C8", "<. c #757575", "[. c #919191", +"}. c #CAB3B3", "|. c #EDEDED", "1. c #ADA8A8", "2. c #666666", +"3. c #2B2B2B", "4. c #BBBBBB", "5. c #C9AAAA", "6. c #292929", +"7. c #D4D4D4", "8. c #FBC9C9", "9. c #E8E8E8", "0. c #9C9C9C", +"a. c #E4E4E4", "b. c #E7E7E7", "c. c #CACACA", "d. c #C1C1C1", +"e. c #E39090", "f. c #CBCBCB", "g. c #ADA3A3", "h. c #C8B0B0", +"i. c #F59A9A", "j. c #C0A9A9", "k. c #C9BFBF", "l. c #7A4747", +"m. c #A18C8C", "n. c #8C8282", "o. c #332929", "p. c #242424", +"q. c #0A0A0A", "r. c #454545", "s. c #595959", "t. c #525252", +"u. c #5C5C5C", "v. c #D9D9D9", "w. c #121212", "x. c #8A8A8A", +"y. c #171717", "z. c #A8A8A8", "A. c #696969", "B. c #707070", +"C. c #9E9E9E", "D. c #404040", "E. c #616161", "F. c #8F8F8F", +"G. c #4F4F4F", "H. c #050505", "I. c #DBDBDB", "J. c #4A4A4A", +"K. c #212121", "L. c #3B3B3B", "M. c #636363", "N. c #D1D1D1", +". . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . @ # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . $ % & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . * % = . . . . . . . . . . . - . . . . . . . . . . . ; > . . . . . . . . . . . . , . . . . . . . . . . . - - . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . . ] ^ / ( _ . ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . : < [ } | 1 ] ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . 2 ' . . 3 % / ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . . . . . 4 % 5 ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . . . . . 6 1 + ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . . . . 7 < 8 @ 5 % 9 . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . . . 0 < a . b c % d . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . b d e f . . . ' % . . . . . . . . . . . . ) . . . . . . . . . . . ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". g h i j . . . . ' % . . . . . . . . . . . . ) . . . . k l m m m n o ! ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +"p 1 q $ r r r g . ' % . . . . . . . . . . . . ) . . . s t u ] v w r x y ~ . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +"7 i i i i i i : . ' % . . . . . . . . . . . . ) . . p z _ . . . . . l A B . . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . ) . C x D . . . . . . . E F ] . . . . . . . . . . . { . . . . . . . . . . . ) ) . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . G . u H . . . . . . . . I J x K . . . . . . . . . . { . . . . . . . . . . . L G . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { M N . . . . . . . . . { ~ _ $ o . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . P x Q . . . . . . . . . { ~ . & R . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . S T . . . . . . . . . . { ~ . U $ _ . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . 4 V W . . . . . . . . . . { ~ . . K x X . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . Y Z . . . . . . . . . . . { ~ . . . ` n . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . .x ... . . . . . . . . . . { ~ . . . +.$ +.. . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . @.n { . . . . . . . . . . . { ~ . . . . #.R . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . x +.{ . . . . . . . . . . . { ~ . . . . X z o . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . $.u . { . . . . . . . . . . . { ~ . . . . . %.&.*.. . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . ` =.. { . . . . . . . . . . . { ~ . . . . . . -.=.. . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . 4 z X . { . . . . . . . . . . . { ~ . . . . . . + t . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . #.;.. . { . . . . . . . . . . . { ~ . . . . . . . >.v . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . u $.. . { . . . . . . . . . . . { ~ . . . . . . . _ t . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . n 2 . ' % . . . . . . . + t k . . { . . . . . . . . . . . { ~ . . . . . . . . t ,.. . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . '.& ).5 . ' % . . . . . . . m #.. . . { . . . . . . . . . . . { ~ . . . . . . . . !.t . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . f % % % ~.. ' % . . . . . . . x W . . . { . . . . . . . . . . . { ~ . . . . . . . . . N ] . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . a 1 @ . ' % . . . . . . s u . . . . { . . . . . . . . . . . { ~ . . . . . . . . . l u k { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . {.].. . ' % . . . . . . %.%.. . . . { . . . . . . . . . . . { ~ . . . . . . . . . . r ^.{ . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . | 6 . U /.% (.. . . . . _.' . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . 4 u :.. . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . + % r . o <.% [.. . . . o $ '.. . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . ^.}.. . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . 7 % |.. . ' % . . . . . ,._.. . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . o 1.D . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . 2.3.. . . ' % . . . . . 4.=.. . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . 5.-.. . . . . . . . . . O { . . . . . . . . . . . ", +". . p p 6.} p + . ' % . . . . . _.7.. . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . 8.t ,.. . . . . . . . . O { . . . . . . . . . . . ", +". 9.i i i i i 0.. ' % . . . . . x +.. . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { C x a.. . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . x . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . ,.u . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . b.t . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . &.4.. . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . ^.T . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . X u c.. . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . m H . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . +.$ p . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . t C . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . +.x _ . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . z X . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . + x _ . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . U x . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . K x H . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . a.f . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . ' &.d.X O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . $.-.. . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . X _.>.e.{ . . . . . . . . . . . ", +". . . . . . . . . ' % . . . M 4.. . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . f.g.h.U . . . . . . . . . . ", +". . . . . . . . . ' % . . . $.,.. . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . i.j.x Y b . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { b.@.x &.~.D . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . U f.m @.. . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . { ~ . . . . . . . . . . . . { . . . . . . . . . . . O { . . . . . . . . . . . ", +". . . . . . . . . ' % . . . . . . . . . . . . { . . . . . . . . . . . k.l.. . . . . . . . . . . . { . . . . . . . . . . . m.n.. . . . . . . 2 C . . ", +". . . . . . . . . ' % i i i i i i i i i i i i o.i i i i i i i i i i i p.q.i i i i i i i i i i i i o.i i i i i i i i i i i | ).i i i i i i i ).< r.~.", +". . . . . . . . . . Y r r r r r r r r r r r r r r r r r r r r r r r r (.p.r r r r r r r r r r r r r r r r r r r r r r r r s.c r r r r r r r t.u.2 . ", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ] . . . . . . . . . . . . . . . . . . . . . . . . + v.. . . . . . . . . . . ", +". . . . '.= ).% w.[.. . . . . . . . . . . . . . . . . . . . . . . . . . x.8 . . . . . . . . . . . . . . . . . . . . . ~.2.[ i c 2 . . . . . . . . . ", +". . . . 2.y.z.p A.< j . . . . . . . . . . . . . . . . . . . . . . b &.B.< C.. . . . . . . . . . . . . . . . . . . . . D.t.[.a 3.1 9.. . . . . . . . ", +". . . p % &.. . + % r . . . . . . . . . . . . . . . . . . . . . . 2 } i % v.. . . . . . . . . . . . . . . . . . . . . 3 . . . &.% p . . . . . . . . ", +". . . E.h . . . ' % r . . . . . . . . . . . . . . . . . . . . . . . . / ).. . . . . . . . . . . . . . . . . . . . . . . . . . F.< 9.. . . . . . . . ", +". . . | * . . . ~.% ~.. . . . . . . . . . . . . . . . . . . . . . . . c G.. . . . . . . . . . . . . . . . . . . . . . . . . + ).E.. . . . . . . . . ", +". . j % &.. . . a H.U . . . . . . . . . . . . . . . . . . . . . . . '.q.x.. . . . . . . . . . . . . . . . . . . . . . . . j h # U . . . . . . . . . ", +". . Y % I.. . . G.D.. . . . . . . . . . . . . . . . . . . . . . . . p % ~.. . . . . . . . . . . . . . . . . . . . . . . n y.J.4 . . . . . . . . . . ", +". . r % ' . . 9.1 8 . . . . . . . . . . . . . . . . . . . . . . . . a 1 o . . . . . . . . . . . . . . . . . . . . . . [.H.<.'.. . . . . . . . . . . ", +". . & % 2 . '.s.K.U . . . . . . . . . . . . . . . . . . . . . . . . d L.. . . . . . . . . . . . . . . . . . . . . |.t.w.r . . . . . . . . . . . . . ", +". . @ 6.).} h y.p . . . . . . . . . . . . . . . . . . . . . . @ / / ).# / Y . . . . . . . . . . . . . . . . . . . M.% J.2.2.2.2.N.. . . . . . . . . ", +". . . 3 F./ a 4 . . . . . . . . . . . . . . . . . . . . . . . |./ / / / / n . . . . . . . . . . . . . . . . . . . 0./ / / / / / 9.. . . . . . . . . " }; static const char* image3_data[] = - { "74 77 168 2", " c None", ". c #FFFFFF", "+ c #E0E0E0", - "@ c #FAFAFA", "# c #363636", "$ c #ABABAB", "% c #000000", - "& c #BDBDBD", "* c #737373", "= c #858585", "- c #E6E6E6", - "; c #C9C9C9", "> c #939493", ", c #808080", "' c #878787", - ") c #D6D6D6", "! c #969696", "~ c #030303", "{ c #383838", - "] c #4C4C4C", "^ c #1A1A1A", "/ c #080808", "( c #C2C2C2", - "_ c #EBEBEB", ": c #F0F0F0", "< c #8C8C8C", "[ c #7A7A7A", - "} c #A3A3A3", "| c #999999", "1 c #A1A1A1", "2 c #FFE6E6", - "3 c #FFF0F0", "4 c #828282", "5 c #949494", "6 c #F2F2F2", - "7 c #474747", "8 c #545454", "9 c #FF8080", "0 c #FFB2B2", - "a c #0F0F0F", "b c #B5B5B5", "c c #CFCFCF", "d c #262626", - "e c #333333", "f c #DEDEDE", "g c #FDFDFD", "h c #D7D7D7", - "i c #B7B7B7", "j c #C4C4C4", "k c #F7F7F7", "l c #CCCCCC", - "m c #2E2E2E", "n c #B2B2B2", "o c #DFDFDF", "p c #ACACAC", - "q c #ADADAD", "r c #D3D3D3", "s c #CDCDCD", "t c #AAAAAA", - "u c #D4D4D4", "v c #A9A9A9", "w c #DBDBDB", "x c #E3E3E3", - "y c #E5E5E5", "z c #B1B1B1", "A c #D2D2D2", "B c #EAEAEA", - "C c #E2E2E2", "D c #C8C8C8", "E c #AFAFAF", "F c #F5F5F5", - "G c #E9E9E9", "H c #B6B6B6", "I c #B9B9B9", "J c #F9F9F9", - "K c #B8B8B8", "L c #C0C0C0", "M c #B4B4B4", "N c #EFD9D9", - "O c #AAA8A8", "P c #F2DBDB", "Q c #EED6D6", "R c #ABA8A8", - "S c #EED8D8", "T c #BCB1B1", "U c #C4B6B6", "V c #C5B7B7", - "W c #B6ADAD", "X c #EEEEEE", "Y c #DADADA", "Z c #BEBEBE", - "` c #B0B0B0", " . c #FBFBFB", ".. c #C6C6C6", "+. c #C5C5C5", - "@. c #BABABA", "#. c #AEAEAE", "$. c #D0D0D0", "%. c #FCFCFC", - "&. c #141414", "*. c #D8D8D8", "=. c #C7C7C7", "-. c #575757", - ";. c #3D3D3D", ">. c #C3C3C3", ",. c #5E5E5E", "'. c #7D6E6E", - "). c #FF9999", "!. c #B39D9D", "~. c #E69292", "{. c #F09393", - "]. c #ADA2A2", "^. c #F49999", "/. c #FFC2C2", "(. c #757575", - "_. c #918787", ":. c #F7AEAE", "<. c #ABA6A6", "[. c #FCB2B2", - "}. c #C3A0A0", "|. c #C7A4A4", "1. c #FFD1D1", "2. c #EDEDED", - "3. c #B3B3B3", "4. c #666666", "5. c #2B2B2B", "6. c #BBBBBB", - "7. c #292929", "8. c #E8E8E8", "9. c #9C9C9C", "0. c #E4E4E4", - "a. c #E7E7E7", "b. c #CACACA", "c. c #E4A7A7", "d. c #B59F9F", - "e. c #E6A7A7", "f. c #B0A3A3", "g. c #C19E9E", "h. c #F9B0B0", - "i. c #CBCBCB", "j. c #F4F4F4", "k. c #BCBCBC", "l. c #707070", - "m. c #242424", "n. c #0A0A0A", "o. c #454545", "p. c #7D7D7D", - "q. c #595959", "r. c #525252", "s. c #5C5C5C", "t. c #D9D9D9", - "u. c #121212", "v. c #919191", "w. c #8A8A8A", "x. c #171717", - "y. c #A8A8A8", "z. c #696969", "A. c #9E9E9E", "B. c #404040", - "C. c #616161", "D. c #8F8F8F", "E. c #4F4F4F", "F. c #050505", - "G. c #4A4A4A", "H. c #212121", "I. c #3B3B3B", "J. c #636363", - "K. c #D1D1D1", - ". . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . @ # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . $ % & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . * % = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . ; > , ' ) . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . ! ~ { ] ^ / ; - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . ( - . . _ % , - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . : % < - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . [ / + - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . } ~ | @ < % 1 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 2 2 2 3 . . . ", - ". . . . 4 ~ 5 . 6 7 % 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 0 . . . ", - ". . 6 8 a b . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". c d e f . . . . - % . . . . . . . . . . . . . . . . . g h i i i j k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - "l / m $ n n n c . - % . . . . . . . . . . . . . . . . o p q ; r s n t u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - "} e e e e e e ! . - % . . . . . . . . . . . . . . . l v ) . . . . . h t w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . x t y . . . . . . . 6 z ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . q A . . . . . . . . . B t C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . D E . . . . . . . . . . . ) $ k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . F t G . . . . . . . . . . . . & H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . c I . . . . . . . . . . . . . F $ ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . : p B . . . . . . . . . . . . . . C t J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . K L . . . . . . . . . . . . . . . . M j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % 2 2 2 2 2 2 2 2 2 2 N O P 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Q R S 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 3 . . . ", - ". . . . . . . . . - % 2 2 2 2 2 2 2 2 2 2 T U 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 V W 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 3 . . . ", - ". . . . . . . . . - % . . . . . . . . . . t X . . . . . . . . . . . . . . . . . . J v k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . Y q . . . . . . . . . . . . . . . . . . . . Z ` .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . M ... . . . . . . . . . . . . . . . . . . . . z ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . : v J . . . . . . . . . . . . . . . . . . . . . + p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . +.@.. . . . . . . . . . . . . . . . . . . . . . . #.r . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . q Y . . . . . . . . . . . . . . . . . . . . . . . ) p . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . j ( . - % . . . . . . . + p g . . . . . . . . . . . . . . . . . . . . . . . . p $.. . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . %.& &.< . - % . . . . . . . i +.. . . . . . . . . . . . . . . . . . . . . . . . . *.p . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . b % % % =.. - % . . . . . . . t B . . . . . . . . . . . . . . . . . . . . . . . . . . E ; . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . 5 / @ . - % . . . . . . o q . . . . . . . . . . . . . . . . . . . . . . . . . . . h q g . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . -.;.. . - % . . . . . . Z Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . n >.. . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . ^ [ . F ,.% '.).).).).).!.~.).).).).).).).).).).).).).).).).).).).).).).).).).).).).{.].^.).).).).).).).).).).).).).).).).).).).)./.. . . ", - ". . . . + % n . k (.% _.0 0 0 0 :.<.[.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }.|.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.. . . ", - ". . . . } % 2.. . - % . . . . . $.3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k p y . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . 4.5.. . . - % . . . . . 6.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; z . . . . . . . . . . . . . . . . . . . . . . . ", - ". . l l 7.] l + . - % . . . . . 3.u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .p $.. . . . . . . . . . . . . . . . . . . . . . ", - ". 8.e e e e e 9.. - % . . . . . t X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x t 0.. . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.q . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . a.p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ` 6.. . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . >.I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J q b.. . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . i A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X $ l . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . p x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X t ) . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . v J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + t ) . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . F t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C t A . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % 0 0 0 c.d.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e.f.g.h.0 0 0 0 0 0 0 0 0 1.. . . ", - ". . . . . . . . . - % . . . Y z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J 3.#.x . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . D 6.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i.p D F . . . . . . . . . . ", - ". . . . . . . . . - % . . . Y $.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j.L t K 6 . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a.k.t ` =.y . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F i.i k.. . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", - ". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . ; l.. . . . . . . . . . . . . . . . . . . . . . . . 1 < . . . . . . . ( x . . ", - ". . . . . . . . . - % e e e e e e e e e e e e e e e e e e e e e e e e m.n.e e e e e e e e e e e e e e e e e e e e e e e e ^ &.e e e e e e e &.~ o.=.", - ". . . . . . . . . . K n n n n n n n n n n n n n n n n n n n n n n n n p.m.n n n n n n n n n n n n n n n n n n n n n n n n q.7 n n n n n n n r.s.( . ", - ". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : ; . . . . . . . . . . . . . . . . . . . . . . . . + t.. . . . . . . . . . . ", - ". . . . %.= &.% u.v.. . . . . . . . . . . . . . . . . . . . . . . . . . w.| . . . . . . . . . . . . . . . . . . . . . =.4.{ e 7 ( . . . . . . . . . ", - ". . . . 4.x.y.l z.~ f . . . . . . . . . . . . . . . . . . . . . . 6 ` l.~ A.. . . . . . . . . . . . . . . . . . . . . B.r.v.5 5./ 8.. . . . . . . . ", - ". . . l % ` . . + % n . . . . . . . . . . . . . . . . . . . . . . ( ] e % t.. . . . . . . . . . . . . . . . . . . . . _ . . . ` % l . . . . . . . . ", - ". . . C.d . . . - % n . . . . . . . . . . . . . . . . . . . . . . . . , &.. . . . . . . . . . . . . . . . . . . . . . . . . . D.~ 8.. . . . . . . . ", - ". . . ^ * . . . =.% =.. . . . . . . . . . . . . . . . . . . . . . . . 7 E.. . . . . . . . . . . . . . . . . . . . . . . . . + &.C.. . . . . . . . . ", - ". . f % ` . . . 5 F.F . . . . . . . . . . . . . . . . . . . . . . . %.n.w.. . . . . . . . . . . . . . . . . . . . . . . . f d # F . . . . . . . . . ", - ". . K % w . . . E.B.. . . . . . . . . . . . . . . . . . . . . . . . l % =.. . . . . . . . . . . . . . . . . . . . . . . j x.G.: . . . . . . . . . . ", - ". . n % - . . 8./ | . . . . . . . . . . . . . . . . . . . . . . . . 5 / k . . . . . . . . . . . . . . . . . . . . . . v.F.(.%.. . . . . . . . . . . ", - ". . & % ( . %.q.H.F . . . . . . . . . . . . . . . . . . . . . . . . 8 I.. . . . . . . . . . . . . . . . . . . . . 2.r.u.n . . . . . . . . . . . . . ", - ". . @ 7.&.] d x.l . . . . . . . . . . . . . . . . . . . . . . @ , , &.# , K . . . . . . . . . . . . . . . . . . . J.% G.4.4.4.4.K.. . . . . . . . . ", - ". . . _ D., 5 : . . . . . . . . . . . . . . . . . . . . . . . 2., , , , , j . . . . . . . . . . . . . . . . . . . 9., , , , , , 8.. . . . . . . . . " }; +{ "74 77 168 2", " c None", ". c #FFFFFF", "+ c #E0E0E0", +"@ c #FAFAFA", "# c #363636", "$ c #ABABAB", "% c #000000", +"& c #BDBDBD", "* c #737373", "= c #858585", "- c #E6E6E6", +"; c #C9C9C9", "> c #939493", ", c #808080", "' c #878787", +") c #D6D6D6", "! c #969696", "~ c #030303", "{ c #383838", +"] c #4C4C4C", "^ c #1A1A1A", "/ c #080808", "( c #C2C2C2", +"_ c #EBEBEB", ": c #F0F0F0", "< c #8C8C8C", "[ c #7A7A7A", +"} c #A3A3A3", "| c #999999", "1 c #A1A1A1", "2 c #FFE6E6", +"3 c #FFF0F0", "4 c #828282", "5 c #949494", "6 c #F2F2F2", +"7 c #474747", "8 c #545454", "9 c #FF8080", "0 c #FFB2B2", +"a c #0F0F0F", "b c #B5B5B5", "c c #CFCFCF", "d c #262626", +"e c #333333", "f c #DEDEDE", "g c #FDFDFD", "h c #D7D7D7", +"i c #B7B7B7", "j c #C4C4C4", "k c #F7F7F7", "l c #CCCCCC", +"m c #2E2E2E", "n c #B2B2B2", "o c #DFDFDF", "p c #ACACAC", +"q c #ADADAD", "r c #D3D3D3", "s c #CDCDCD", "t c #AAAAAA", +"u c #D4D4D4", "v c #A9A9A9", "w c #DBDBDB", "x c #E3E3E3", +"y c #E5E5E5", "z c #B1B1B1", "A c #D2D2D2", "B c #EAEAEA", +"C c #E2E2E2", "D c #C8C8C8", "E c #AFAFAF", "F c #F5F5F5", +"G c #E9E9E9", "H c #B6B6B6", "I c #B9B9B9", "J c #F9F9F9", +"K c #B8B8B8", "L c #C0C0C0", "M c #B4B4B4", "N c #EFD9D9", +"O c #AAA8A8", "P c #F2DBDB", "Q c #EED6D6", "R c #ABA8A8", +"S c #EED8D8", "T c #BCB1B1", "U c #C4B6B6", "V c #C5B7B7", +"W c #B6ADAD", "X c #EEEEEE", "Y c #DADADA", "Z c #BEBEBE", +"` c #B0B0B0", " . c #FBFBFB", ".. c #C6C6C6", "+. c #C5C5C5", +"@. c #BABABA", "#. c #AEAEAE", "$. c #D0D0D0", "%. c #FCFCFC", +"&. c #141414", "*. c #D8D8D8", "=. c #C7C7C7", "-. c #575757", +";. c #3D3D3D", ">. c #C3C3C3", ",. c #5E5E5E", "'. c #7D6E6E", +"). c #FF9999", "!. c #B39D9D", "~. c #E69292", "{. c #F09393", +"]. c #ADA2A2", "^. c #F49999", "/. c #FFC2C2", "(. c #757575", +"_. c #918787", ":. c #F7AEAE", "<. c #ABA6A6", "[. c #FCB2B2", +"}. c #C3A0A0", "|. c #C7A4A4", "1. c #FFD1D1", "2. c #EDEDED", +"3. c #B3B3B3", "4. c #666666", "5. c #2B2B2B", "6. c #BBBBBB", +"7. c #292929", "8. c #E8E8E8", "9. c #9C9C9C", "0. c #E4E4E4", +"a. c #E7E7E7", "b. c #CACACA", "c. c #E4A7A7", "d. c #B59F9F", +"e. c #E6A7A7", "f. c #B0A3A3", "g. c #C19E9E", "h. c #F9B0B0", +"i. c #CBCBCB", "j. c #F4F4F4", "k. c #BCBCBC", "l. c #707070", +"m. c #242424", "n. c #0A0A0A", "o. c #454545", "p. c #7D7D7D", +"q. c #595959", "r. c #525252", "s. c #5C5C5C", "t. c #D9D9D9", +"u. c #121212", "v. c #919191", "w. c #8A8A8A", "x. c #171717", +"y. c #A8A8A8", "z. c #696969", "A. c #9E9E9E", "B. c #404040", +"C. c #616161", "D. c #8F8F8F", "E. c #4F4F4F", "F. c #050505", +"G. c #4A4A4A", "H. c #212121", "I. c #3B3B3B", "J. c #636363", +"K. c #D1D1D1", +". . . . . . . . . . + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . @ # . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . $ % & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . * % = . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . ; > , ' ) . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . ! ~ { ] ^ / ; - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . ( - . . _ % , - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . : % < - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . [ / + - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . } ~ | @ < % 1 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 2 2 2 3 . . . ", +". . . . 4 ~ 5 . 6 7 % 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 0 . . . ", +". . 6 8 a b . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". c d e f . . . . - % . . . . . . . . . . . . . . . . . g h i i i j k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +"l / m $ n n n c . - % . . . . . . . . . . . . . . . . o p q ; r s n t u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +"} e e e e e e ! . - % . . . . . . . . . . . . . . . l v ) . . . . . h t w . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . x t y . . . . . . . 6 z ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . q A . . . . . . . . . B t C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . D E . . . . . . . . . . . ) $ k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . F t G . . . . . . . . . . . . & H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . c I . . . . . . . . . . . . . F $ ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . : p B . . . . . . . . . . . . . . C t J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . K L . . . . . . . . . . . . . . . . M j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % 2 2 2 2 2 2 2 2 2 2 N O P 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Q R S 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 3 . . . ", +". . . . . . . . . - % 2 2 2 2 2 2 2 2 2 2 T U 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 V W 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 3 . . . ", +". . . . . . . . . - % . . . . . . . . . . t X . . . . . . . . . . . . . . . . . . J v k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . Y q . . . . . . . . . . . . . . . . . . . . Z ` .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . M ... . . . . . . . . . . . . . . . . . . . . z ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . : v J . . . . . . . . . . . . . . . . . . . . . + p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . +.@.. . . . . . . . . . . . . . . . . . . . . . . #.r . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . q Y . . . . . . . . . . . . . . . . . . . . . . . ) p . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . j ( . - % . . . . . . . + p g . . . . . . . . . . . . . . . . . . . . . . . . p $.. . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . %.& &.< . - % . . . . . . . i +.. . . . . . . . . . . . . . . . . . . . . . . . . *.p . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . b % % % =.. - % . . . . . . . t B . . . . . . . . . . . . . . . . . . . . . . . . . . E ; . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . 5 / @ . - % . . . . . . o q . . . . . . . . . . . . . . . . . . . . . . . . . . . h q g . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . -.;.. . - % . . . . . . Z Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . n >.. . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . ^ [ . F ,.% '.).).).).).!.~.).).).).).).).).).).).).).).).).).).).).).).).).).).).).{.].^.).).).).).).).).).).).).).).).).).).).)./.. . . ", +". . . . + % n . k (.% _.0 0 0 0 :.<.[.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 }.|.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.. . . ", +". . . . } % 2.. . - % . . . . . $.3.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . k p y . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . 4.5.. . . - % . . . . . 6.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ; z . . . . . . . . . . . . . . . . . . . . . . . ", +". . l l 7.] l + . - % . . . . . 3.u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .p $.. . . . . . . . . . . . . . . . . . . . . . ", +". 8.e e e e e 9.. - % . . . . . t X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x t 0.. . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . $.q . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . a.p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ` 6.. . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . >.I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J q b.. . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . i A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X $ l . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . p x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X t ) . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . v J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + t ) . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . F t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C t A . . . . . . . . . . . . . . . ", +". . . . . . . . . - % 0 0 0 c.d.0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 e.f.g.h.0 0 0 0 0 0 0 0 0 1.. . . ", +". . . . . . . . . - % . . . Y z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . J 3.#.x . . . . . . . . . . . . ", +". . . . . . . . . - % . . . D 6.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i.p D F . . . . . . . . . . ", +". . . . . . . . . - % . . . Y $.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j.L t K 6 . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a.k.t ` =.y . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F i.i k.. . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . - % . . . . . . . . . . . . . . . . . . . . . . . . ; l.. . . . . . . . . . . . . . . . . . . . . . . . 1 < . . . . . . . ( x . . ", +". . . . . . . . . - % e e e e e e e e e e e e e e e e e e e e e e e e m.n.e e e e e e e e e e e e e e e e e e e e e e e e ^ &.e e e e e e e &.~ o.=.", +". . . . . . . . . . K n n n n n n n n n n n n n n n n n n n n n n n n p.m.n n n n n n n n n n n n n n n n n n n n n n n n q.7 n n n n n n n r.s.( . ", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . : ; . . . . . . . . . . . . . . . . . . . . . . . . + t.. . . . . . . . . . . ", +". . . . %.= &.% u.v.. . . . . . . . . . . . . . . . . . . . . . . . . . w.| . . . . . . . . . . . . . . . . . . . . . =.4.{ e 7 ( . . . . . . . . . ", +". . . . 4.x.y.l z.~ f . . . . . . . . . . . . . . . . . . . . . . 6 ` l.~ A.. . . . . . . . . . . . . . . . . . . . . B.r.v.5 5./ 8.. . . . . . . . ", +". . . l % ` . . + % n . . . . . . . . . . . . . . . . . . . . . . ( ] e % t.. . . . . . . . . . . . . . . . . . . . . _ . . . ` % l . . . . . . . . ", +". . . C.d . . . - % n . . . . . . . . . . . . . . . . . . . . . . . . , &.. . . . . . . . . . . . . . . . . . . . . . . . . . D.~ 8.. . . . . . . . ", +". . . ^ * . . . =.% =.. . . . . . . . . . . . . . . . . . . . . . . . 7 E.. . . . . . . . . . . . . . . . . . . . . . . . . + &.C.. . . . . . . . . ", +". . f % ` . . . 5 F.F . . . . . . . . . . . . . . . . . . . . . . . %.n.w.. . . . . . . . . . . . . . . . . . . . . . . . f d # F . . . . . . . . . ", +". . K % w . . . E.B.. . . . . . . . . . . . . . . . . . . . . . . . l % =.. . . . . . . . . . . . . . . . . . . . . . . j x.G.: . . . . . . . . . . ", +". . n % - . . 8./ | . . . . . . . . . . . . . . . . . . . . . . . . 5 / k . . . . . . . . . . . . . . . . . . . . . . v.F.(.%.. . . . . . . . . . . ", +". . & % ( . %.q.H.F . . . . . . . . . . . . . . . . . . . . . . . . 8 I.. . . . . . . . . . . . . . . . . . . . . 2.r.u.n . . . . . . . . . . . . . ", +". . @ 7.&.] d x.l . . . . . . . . . . . . . . . . . . . . . . @ , , &.# , K . . . . . . . . . . . . . . . . . . . J.% G.4.4.4.4.K.. . . . . . . . . ", +". . . _ D., 5 : . . . . . . . . . . . . . . . . . . . . . . . 2., , , , , j . . . . . . . . . . . . . . . . . . . 9., , , , , , 8.. . . . . . . . . " }; static const char* image4_data[] = - { "35 32 4 1", "# c #000000", "a c #bfbfbf", "b c #ff0000", ". c #ffffff", - "...................................", - ".........#.....#.....#.....#.......", - ".....#.#.#.#.#.#.#.#.#.#.#.#.......", - ".....#.#.#.#.#.#.#.#.#.#.#.#.......", - "....##########################.....", - "....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", - "..###aaaaaaaaaaaaaaaaaaaaaaaa###...", - "....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", - "..###aaaaaaaaaaaaaaaaaaaaaaaa###...", - "....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", - ".####aaaaaaaaaaaaaaaa#aaaaaaa####..", - "....#aaaaaaaaaaaaaaa#a#aaaaaa#.....", - "..###aaaaaaaaaaaaaaa#a#aaaaaa###...", - "....#aaaaaaaaaaaaaa#aaa#aaaaa#.....", - "..###aaaaaaa#aaaaaa#aaa#aaaaa###...", - "....#aaaaaa#a#aaaa#aaaaa#aaaa#.....", - ".####aaaaaa#a#aaaa#aaaaa#aaaa####..", - "....#aaaaa#aaa#aa#aaaaaaa#aaa#.....", - "..###aaaaa#aaa###aaaaaaaaa######...", - "....#aaaa#aaaaa#aaaaaaaaaaaaa#.....", - "..###aaaa#aaaaa#aaaaaaaaaaaaa###...", - "....#aaa#aaaaaaa#aaaaaaaaaaaa#.....", - ".#######aaaaaaaaa#####aaaaaaa####..", - "....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", - "..###aaaaaaaaaaaaaaaaaaaaaaaa###...", - "....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", - "....bbbbbbbbbbbbbbbbbbbbbbbbbb.....", - "....bbbbbbbbbbbbbbbbbbbbbbbbbb.....", - ".....b.b.b.b.b.b.b.b.b.b.b.b.......", - ".....b.b.b.b.b.b.b.b.b.b.b.b.......", - ".........b.....b.....b.....b.......", - "..................................." }; +{ "35 32 4 1", "# c #000000", "a c #bfbfbf", "b c #ff0000", ". c #ffffff", +"...................................", +".........#.....#.....#.....#.......", +".....#.#.#.#.#.#.#.#.#.#.#.#.......", +".....#.#.#.#.#.#.#.#.#.#.#.#.......", +"....##########################.....", +"....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", +"..###aaaaaaaaaaaaaaaaaaaaaaaa###...", +"....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", +"..###aaaaaaaaaaaaaaaaaaaaaaaa###...", +"....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", +".####aaaaaaaaaaaaaaaa#aaaaaaa####..", +"....#aaaaaaaaaaaaaaa#a#aaaaaa#.....", +"..###aaaaaaaaaaaaaaa#a#aaaaaa###...", +"....#aaaaaaaaaaaaaa#aaa#aaaaa#.....", +"..###aaaaaaa#aaaaaa#aaa#aaaaa###...", +"....#aaaaaa#a#aaaa#aaaaa#aaaa#.....", +".####aaaaaa#a#aaaa#aaaaa#aaaa####..", +"....#aaaaa#aaa#aa#aaaaaaa#aaa#.....", +"..###aaaaa#aaa###aaaaaaaaa######...", +"....#aaaa#aaaaa#aaaaaaaaaaaaa#.....", +"..###aaaa#aaaaa#aaaaaaaaaaaaa###...", +"....#aaa#aaaaaaa#aaaaaaaaaaaa#.....", +".#######aaaaaaaaa#####aaaaaaa####..", +"....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", +"..###aaaaaaaaaaaaaaaaaaaaaaaa###...", +"....#aaaaaaaaaaaaaaaaaaaaaaaa#.....", +"....bbbbbbbbbbbbbbbbbbbbbbbbbb.....", +"....bbbbbbbbbbbbbbbbbbbbbbbbbb.....", +".....b.b.b.b.b.b.b.b.b.b.b.b.......", +".....b.b.b.b.b.b.b.b.b.b.b.b.......", +".........b.....b.....b.....b.......", +"..................................." }; static const char* image5_data[] = { "33 32 4 1", "# c #000000", "b c #bfbfbf", - "a c #ff0000", ". c #ffffff", ".................................", - ".........#.....#.....#.....#.....", ".....#.#.#.#.#.#.#.#.#.#.#.#.....", - ".....#.#.#.#.#.#.#.#.#.#.#.#.....", "....aa########################...", - "....aabbbbbbbbbbbbbbbbbbbbbbb#...", "..aaaabbbbbbbbbbbbbbbbbbbbbbb###.", - "....aabbbbbbbbbbbbbbbbbbbbbbb#...", "..aaaabbbbbbbbbbbbbbbbbbbbbbb###.", - "....aabbbbbbbbbbbbbbbbbbbbbbb#...", ".aaaaabbbbbbbbbbbbbbb#bbbbbbb####", - "....aabbbbbbbbbbbbbb#b#bbbbbb#...", "..aaaabbbbbbbbbbbbbb#b#bbbbbb###.", - "....aabbbbbbbbbbbbb#bbb#bbbbb#...", "..aaaabbbbbb#bbbbbb#bbb#bbbbb###.", - "....aabbbbb#b#bbbb#bbbbb#bbbb#...", ".aaaaabbbbb#b#bbbb#bbbbb#bbbb####", - "....aabbbb#bbb#bb#bbbbbbb#bbb#...", "..aaaabbbb#bbb###bbbbbbbbb######.", - "....aabbb#bbbbb#bbbbbbbbbbbbb#...", "..aaaabbb#bbbbb#bbbbbbbbbbbbb###.", - "....aabb#bbbbbbb#bbbbbbbbbbbb#...", ".aaaaa##bbbbbbbbb#####bbbbbbb####", - "....aabbbbbbbbbbbbbbbbbbbbbbb#...", "..aaaabbbbbbbbbbbbbbbbbbbbbbb###.", - "....aabbbbbbbbbbbbbbbbbbbbbbb#...", "....aabbbbbbbbbbbbbbbbbbbbbbb#...", - "....aa########################...", ".....#.#.#.#.#.#.#.#.#.#.#.#.....", - ".....#.#.#.#.#.#.#.#.#.#.#.#.....", ".........#.....#.....#.....#.....", - "................................." }; + "a c #ff0000", ". c #ffffff", ".................................", + ".........#.....#.....#.....#.....", ".....#.#.#.#.#.#.#.#.#.#.#.#.....", + ".....#.#.#.#.#.#.#.#.#.#.#.#.....", "....aa########################...", + "....aabbbbbbbbbbbbbbbbbbbbbbb#...", "..aaaabbbbbbbbbbbbbbbbbbbbbbb###.", + "....aabbbbbbbbbbbbbbbbbbbbbbb#...", "..aaaabbbbbbbbbbbbbbbbbbbbbbb###.", + "....aabbbbbbbbbbbbbbbbbbbbbbb#...", ".aaaaabbbbbbbbbbbbbbb#bbbbbbb####", + "....aabbbbbbbbbbbbbb#b#bbbbbb#...", "..aaaabbbbbbbbbbbbbb#b#bbbbbb###.", + "....aabbbbbbbbbbbbb#bbb#bbbbb#...", "..aaaabbbbbb#bbbbbb#bbb#bbbbb###.", + "....aabbbbb#b#bbbb#bbbbb#bbbb#...", ".aaaaabbbbb#b#bbbb#bbbbb#bbbb####", + "....aabbbb#bbb#bb#bbbbbbb#bbb#...", "..aaaabbbb#bbb###bbbbbbbbb######.", + "....aabbb#bbbbb#bbbbbbbbbbbbb#...", "..aaaabbb#bbbbb#bbbbbbbbbbbbb###.", + "....aabb#bbbbbbb#bbbbbbbbbbbb#...", ".aaaaa##bbbbbbbbb#####bbbbbbb####", + "....aabbbbbbbbbbbbbbbbbbbbbbb#...", "..aaaabbbbbbbbbbbbbbbbbbbbbbb###.", + "....aabbbbbbbbbbbbbbbbbbbbbbb#...", "....aabbbbbbbbbbbbbbbbbbbbbbb#...", + "....aa########################...", ".....#.#.#.#.#.#.#.#.#.#.#.#.....", + ".....#.#.#.#.#.#.#.#.#.#.#.#.....", ".........#.....#.....#.....#.....", + "................................." }; static const char* image6_data[] = { "34 34 4 1", "a c #000000", "b c #bfbfbf", - "# c #ff0000", ". c #ffffff", "..................................", - "..................................", ".........#.....#.....#.....#......", - ".....#.#.#.#.#.#.#.#.#.#.#.#......", ".....#.#.#.#.#.#.#.#.#.#.#.#......", - "....##########################....", "....##########################....", - "..aaabbbbbbbbbbbbbbbbbbbbbbbbaaa..", "....abbbbbbbbbbbbbbbbbbbbbbbba....", - "..aaabbbbbbbbbbbbbbbbbbbbbbbbaaa..", "....abbbbbbbbbbbbbbbbbbbbbbbba....", - ".aaaabbbbbbbbbbbbbbbbabbbbbbbaaaa.", "....abbbbbbbbbbbbbbbababbbbbba....", - "..aaabbbbbbbbbbbbbbbababbbbbbaaa..", "....abbbbbbbbbbbbbbabbbabbbbba....", - "..aaabbbbbbbabbbbbbabbbabbbbbaaa..", "....abbbbbbababbbbabbbbbabbbba....", - ".aaaabbbbbbababbbbabbbbbabbbbaaaa.", "....abbbbbabbbabbabbbbbbbabbba....", - "..aaabbbbbabbbaaabbbbbbbbbaaaaaa..", "....abbbbabbbbbabbbbbbbbbbbbba....", - "..aaabbbbabbbbbabbbbbbbbbbbbbaaa..", "....abbbabbbbbbbabbbbbbbbbbbba....", - ".aaaaaaabbbbbbbbbaaaaabbbbbbbaaaa.", "....abbbbbbbbbbbbbbbbbbbbbbbba....", - "..aaabbbbbbbbbbbbbbbbbbbbbbbbaaa..", "....abbbbbbbbbbbbbbbbbbbbbbbba....", - "....abbbbbbbbbbbbbbbbbbbbbbbba....", "....aaaaaaaaaaaaaaaaaaaaaaaaaa....", - ".....a.a.a.a.a.a.a.a.a.a.a.a......", ".....a.a.a.a.a.a.a.a.a.a.a.a......", - ".........a.....a.....a.....a......", "..................................", - ".................................." }; + "# c #ff0000", ". c #ffffff", "..................................", + "..................................", ".........#.....#.....#.....#......", + ".....#.#.#.#.#.#.#.#.#.#.#.#......", ".....#.#.#.#.#.#.#.#.#.#.#.#......", + "....##########################....", "....##########################....", + "..aaabbbbbbbbbbbbbbbbbbbbbbbbaaa..", "....abbbbbbbbbbbbbbbbbbbbbbbba....", + "..aaabbbbbbbbbbbbbbbbbbbbbbbbaaa..", "....abbbbbbbbbbbbbbbbbbbbbbbba....", + ".aaaabbbbbbbbbbbbbbbbabbbbbbbaaaa.", "....abbbbbbbbbbbbbbbababbbbbba....", + "..aaabbbbbbbbbbbbbbbababbbbbbaaa..", "....abbbbbbbbbbbbbbabbbabbbbba....", + "..aaabbbbbbbabbbbbbabbbabbbbbaaa..", "....abbbbbbababbbbabbbbbabbbba....", + ".aaaabbbbbbababbbbabbbbbabbbbaaaa.", "....abbbbbabbbabbabbbbbbbabbba....", + "..aaabbbbbabbbaaabbbbbbbbbaaaaaa..", "....abbbbabbbbbabbbbbbbbbbbbba....", + "..aaabbbbabbbbbabbbbbbbbbbbbbaaa..", "....abbbabbbbbbbabbbbbbbbbbbba....", + ".aaaaaaabbbbbbbbbaaaaabbbbbbbaaaa.", "....abbbbbbbbbbbbbbbbbbbbbbbba....", + "..aaabbbbbbbbbbbbbbbbbbbbbbbbaaa..", "....abbbbbbbbbbbbbbbbbbbbbbbba....", + "....abbbbbbbbbbbbbbbbbbbbbbbba....", "....aaaaaaaaaaaaaaaaaaaaaaaaaa....", + ".....a.a.a.a.a.a.a.a.a.a.a.a......", ".....a.a.a.a.a.a.a.a.a.a.a.a......", + ".........a.....a.....a.....a......", "..................................", + ".................................." }; static const char* image7_data[] = { "32 32 4 1", "# c #000000", "b c #bfbfbf", - "a c #ff0000", ". c #ffffff", "................................", - "........#.....#.....#.....#.....", "....#.#.#.#.#.#.#.#.#.#.#.#.....", - "....#.#.#.#.#.#.#.#.#.#.#.#.....", "...########################aa...", - "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", ".###bbbbbbbbbbbbbbbbbbbbbbbaaaa.", - "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", ".###bbbbbbbbbbbbbbbbbbbbbbbaaaa.", - "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", "####bbbbbbbbbbbbbbbb#bbbbbbaaaaa", - "...#bbbbbbbbbbbbbbb#b#bbbbbaa...", ".###bbbbbbbbbbbbbbb#b#bbbbbaaaa.", - "...#bbbbbbbbbbbbbb#bbb#bbbbaa...", ".###bbbbbbb#bbbbbb#bbb#bbbbaaaa.", - "...#bbbbbb#b#bbbb#bbbbb#bbbaa...", "####bbbbbb#b#bbbb#bbbbb#bbbaaaaa", - "...#bbbbb#bbb#bb#bbbbbbb#bbaa...", ".###bbbbb#bbb###bbbbbbbbb##aaaa.", - "...#bbbb#bbbbb#bbbbbbbbbbbbaa...", ".###bbbb#bbbbb#bbbbbbbbbbbbaaaa.", - "...#bbb#bbbbbbb#bbbbbbbbbbbaa...", "#######bbbbbbbbb#####bbbbbbaaaaa", - "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", ".###bbbbbbbbbbbbbbbbbbbbbbbaaaa.", - "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", - "...########################aa...", "....#.#.#.#.#.#.#.#.#.#.#.#.....", - "....#.#.#.#.#.#.#.#.#.#.#.#.....", "........#.....#.....#.....#.....", - "................................" }; + "a c #ff0000", ". c #ffffff", "................................", + "........#.....#.....#.....#.....", "....#.#.#.#.#.#.#.#.#.#.#.#.....", + "....#.#.#.#.#.#.#.#.#.#.#.#.....", "...########################aa...", + "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", ".###bbbbbbbbbbbbbbbbbbbbbbbaaaa.", + "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", ".###bbbbbbbbbbbbbbbbbbbbbbbaaaa.", + "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", "####bbbbbbbbbbbbbbbb#bbbbbbaaaaa", + "...#bbbbbbbbbbbbbbb#b#bbbbbaa...", ".###bbbbbbbbbbbbbbb#b#bbbbbaaaa.", + "...#bbbbbbbbbbbbbb#bbb#bbbbaa...", ".###bbbbbbb#bbbbbb#bbb#bbbbaaaa.", + "...#bbbbbb#b#bbbb#bbbbb#bbbaa...", "####bbbbbb#b#bbbb#bbbbb#bbbaaaaa", + "...#bbbbb#bbb#bb#bbbbbbb#bbaa...", ".###bbbbb#bbb###bbbbbbbbb##aaaa.", + "...#bbbb#bbbbb#bbbbbbbbbbbbaa...", ".###bbbb#bbbbb#bbbbbbbbbbbbaaaa.", + "...#bbb#bbbbbbb#bbbbbbbbbbbaa...", "#######bbbbbbbbb#####bbbbbbaaaaa", + "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", ".###bbbbbbbbbbbbbbbbbbbbbbbaaaa.", + "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", "...#bbbbbbbbbbbbbbbbbbbbbbbaa...", + "...########################aa...", "....#.#.#.#.#.#.#.#.#.#.#.#.....", + "....#.#.#.#.#.#.#.#.#.#.#.#.....", "........#.....#.....#.....#.....", + "................................" }; #ifndef M_PI #define M_PI 3.141592653589793238462643 @@ -629,7 +629,7 @@ static const char* image7_data[] = { "32 32 4 1", "# c #000000", "b c #bfbfbf", /////////////////// AxesDialog::AxesDialog(ApplicationWindow* app, Graph* g, Qt::WFlags fl) : - QDialog(g, fl), d_app(app), d_graph(NULL), m_updatePlot(false) + QDialog(g, fl), d_app(app), d_graph(NULL), m_updatePlot(false) { QPixmap image4((const char**) image4_data); QPixmap image5((const char**) image5_data); @@ -672,7 +672,12 @@ AxesDialog::AxesDialog(ApplicationWindow* app, Graph* g, Qt::WFlags fl) : connect(buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() )); connect(buttonApply, SIGNAL( clicked() ), this, SLOT(apply() )); connect(generalDialog, SIGNAL( currentChanged ( QWidget * ) ), this, - SLOT(pageChanged ( QWidget * ) )); + SLOT(pageChanged ( QWidget * ) )); +} + +AxesDialog::~AxesDialog() +{ + } void AxesDialog::showAxesPage() @@ -708,18 +713,18 @@ void AxesDialog::setCurrentScale(int axisPos) int axis = -1; switch (axisPos) { - case QwtScaleDraw::LeftScale: - axis = 1; - break; - case QwtScaleDraw::BottomScale: - axis = 0; - break; - case QwtScaleDraw::RightScale: - axis = 3; - break; - case QwtScaleDraw::TopScale: - axis = 2; - break; + case QwtScaleDraw::LeftScale: + axis = 1; + break; + case QwtScaleDraw::BottomScale: + axis = 0; + break; + case QwtScaleDraw::RightScale: + axis = 3; + break; + case QwtScaleDraw::TopScale: + axis = 2; + break; } if (generalDialog->currentPage() == dynamic_cast<QWidget*>(scalesPage)) axesList->setCurrentRow(axis); @@ -748,10 +753,10 @@ void AxesDialog::initScalesPage() QListWidgetItem* listTop = new QListWidgetItem(image2, tr("Top")); QListWidgetItem* listRight = new QListWidgetItem(image3, tr("Right")); - ScaleAxisDetails* prefsBottom = new ScaleAxisDetails(d_app, d_graph, QwtPlot::xBottom); - ScaleAxisDetails* prefsLeft = new ScaleAxisDetails(d_app, d_graph, QwtPlot::yLeft); - ScaleAxisDetails* prefsTop = new ScaleAxisDetails(d_app, d_graph, QwtPlot::xTop); - ScaleAxisDetails* prefsRight = new ScaleAxisDetails(d_app, d_graph, QwtPlot::yRight); + ScaleDetails* prefsBottom = new ScaleDetails(d_app, d_graph, QwtPlot::xBottom); + ScaleDetails* prefsLeft = new ScaleDetails(d_app, d_graph, QwtPlot::yLeft); + ScaleDetails* prefsTop = new ScaleDetails(d_app, d_graph, QwtPlot::xTop); + ScaleDetails* prefsRight = new ScaleDetails(d_app, d_graph, QwtPlot::yRight); scalePrefsArea->addWidget(prefsBottom); scalePrefsArea->addWidget(prefsLeft); @@ -763,10 +768,10 @@ void AxesDialog::initScalesPage() axesList->addItem(listTop); axesList->addItem(listRight); - m_Scale_map.insert(listBottom,prefsBottom); - m_Scale_map.insert(listLeft,prefsLeft); - m_Scale_map.insert(listTop,prefsTop); - m_Scale_map.insert(listRight,prefsRight); + m_Scale_list.append(prefsBottom); + m_Scale_list.append(prefsLeft); + m_Scale_list.append(prefsTop); + m_Scale_list.append(prefsRight); axesList->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding)); axesList->setIconSize(image0.size()); @@ -797,99 +802,15 @@ void AxesDialog::initScalesPage() void AxesDialog::initGridPage() { + Grid *grd = dynamic_cast<Grid *>(d_graph->plotWidget()->grid()); + if (!grd) + { + return; + } gridPage = new QWidget(); + QVBoxLayout* gridPageLayout = new QVBoxLayout(gridPage); QGroupBox * rightBox = new QGroupBox(QString()); - QGridLayout * rightLayout = new QGridLayout(rightBox); - - boxMajorGrid = new QCheckBox(); - boxMajorGrid->setText(tr("Major Grids")); - boxMajorGrid->setChecked(true); - rightLayout->addWidget(boxMajorGrid, 0, 1); - - boxMinorGrid = new QCheckBox(); - boxMinorGrid->setText(tr("Minor Grids")); - boxMinorGrid->setChecked(false); - rightLayout->addWidget(boxMinorGrid, 0, 2); - - rightLayout->addWidget(new QLabel(tr("Line Color")), 1, 0); - - boxColorMajor = new ColorBox(0); - rightLayout->addWidget(boxColorMajor, 1, 1); - - boxColorMinor = new ColorBox(0); - boxColorMinor->setDisabled(true); - rightLayout->addWidget(boxColorMinor, 1, 2); - - rightLayout->addWidget(new QLabel(tr("Line Type")), 2, 0); - - boxTypeMajor = new QComboBox(); - boxTypeMajor->addItem("_____"); - boxTypeMajor->addItem("- - -"); - boxTypeMajor->addItem("....."); - boxTypeMajor->addItem("_._._"); - boxTypeMajor->addItem("_.._.."); - rightLayout->addWidget(boxTypeMajor, 2, 1); - - boxTypeMinor = new QComboBox(); - boxTypeMinor->addItem("_____"); - boxTypeMinor->addItem("- - -"); - boxTypeMinor->addItem("....."); - boxTypeMinor->addItem("_._._"); - boxTypeMinor->addItem("_.._.."); - boxTypeMinor->setDisabled(true); - rightLayout->addWidget(boxTypeMinor, 2, 2); - - rightLayout->addWidget(new QLabel(tr("Thickness")), 3, 0); - - boxWidthMajor = new DoubleSpinBox('f'); - boxWidthMajor->setLocale(d_app->locale()); - boxWidthMajor->setSingleStep(0.1); - boxWidthMajor->setRange(0.1, 20); - boxWidthMajor->setValue(1); - rightLayout->addWidget(boxWidthMajor, 3, 1); - - boxWidthMinor = new DoubleSpinBox('f'); - boxWidthMinor->setLocale(d_app->locale()); - boxWidthMinor->setSingleStep(0.1); - boxWidthMinor->setRange(0.1, 20); - boxWidthMinor->setValue(1); - boxWidthMinor->setDisabled(true); - rightLayout->addWidget(boxWidthMinor, 3, 2); - - rightLayout->addWidget(new QLabel(tr("Axes")), 4, 0); - - boxGridXAxis = new QComboBox(); - boxGridXAxis->insertItem(tr("Bottom")); - boxGridXAxis->insertItem(tr("Top")); - rightLayout->addWidget(boxGridXAxis, 4, 1); - - boxGridYAxis = new QComboBox(); - boxGridYAxis->insertItem(tr("Left")); - boxGridYAxis->insertItem(tr("Right")); - rightLayout->addWidget(boxGridYAxis, 4, 2); - - rightLayout->addWidget(new QLabel(tr("Additional lines")), 5, 0); - - boxXLine = new QCheckBox(tr("X=0")); - boxXLine->setDisabled(true); - rightLayout->addWidget(boxXLine, 5, 1); - - boxYLine = new QCheckBox(tr("Y=0")); - rightLayout->addWidget(boxYLine, 5, 2); - - rightLayout->addWidget(new QLabel(tr("Apply To")), 6, 0); - boxApplyGridFormat = new QComboBox(); - boxApplyGridFormat->insertItem(tr("This Layer")); - boxApplyGridFormat->insertItem(tr("This Window")); - boxApplyGridFormat->insertItem(tr("All Windows")); - rightLayout->addWidget(boxApplyGridFormat, 6, 1); - - boxAntialiseGrid = new QCheckBox(tr("An&tialised")); - rightLayout->addWidget(boxAntialiseGrid, 6, 2); - - rightLayout->setRowStretch(7, 1); - rightLayout->setColumnStretch(4, 1); QPixmap image2((const char**) image2_data); QPixmap image3((const char**) image3_data); @@ -899,49 +820,61 @@ void AxesDialog::initGridPage() axesGridList->addItem(new QListWidgetItem(image2, tr("Vertical"))); axesGridList->setIconSize(image3.size()); //axesGridList->setCurrentRow(0); - // calculate a sensible width for the items list // (default QListWidget size is 256 which looks too big) QFontMetrics fm(axesGridList->font()); int width = 32, i; for (i = 0; i < axesGridList->count(); i++) + { if (fm.width(axesGridList->item(i)->text()) > width) + { width = fm.width(axesGridList->item(i)->text()); + } + } axesGridList->setMaximumWidth(axesGridList->iconSize().width() + width + 50); // resize the list to the maximum width axesGridList->resize(axesGridList->maximumWidth(), axesGridList->height()); - QHBoxLayout* mainLayout2 = new QHBoxLayout(gridPage); - mainLayout2->addWidget(axesGridList); - mainLayout2->addWidget(rightBox); + gridPrefsArea = new QStackedLayout(rightBox); + + GridDetails* prefsHor = new GridDetails(d_app, d_graph, 0); + GridDetails* prefsVert = new GridDetails(d_app, d_graph, 1); + + gridPrefsArea->addWidget(prefsHor); + gridPrefsArea->addWidget(prefsVert); + + m_Grid_list.append(prefsHor); + m_Grid_list.append(prefsVert); + + QGridLayout* bottombox = new QGridLayout(); + + bottombox->addWidget(new QLabel(tr("Apply To")), 0, 0, Qt::AlignRight); + boxApplyGridFormat = new QComboBox(); + boxApplyGridFormat->insertItem(tr("This Layer")); + boxApplyGridFormat->insertItem(tr("This Window")); + boxApplyGridFormat->insertItem(tr("All Windows")); + bottombox->addWidget(boxApplyGridFormat, 0, 1, Qt::AlignLeft); + + boxAntialiseGrid = new QCheckBox(tr("An&tialised")); + bottombox->addWidget(boxAntialiseGrid, 0, 2, Qt::AlignLeft); + boxAntialiseGrid->setChecked(grd->testRenderHint(QwtPlotItem::RenderAntialiased)); + + QHBoxLayout* topBox = new QHBoxLayout(); + topBox->addWidget(axesGridList); + topBox->addWidget(rightBox); + + gridPageLayout->addLayout(topBox); + gridPageLayout->addLayout(bottombox); generalDialog->addTab(gridPage, tr("Grid")); - showGridOptions(axesGridList->currentRow()); + //showGridOptions(axesGridList->currentRow()); //grid page slot connections - connect(axesGridList, SIGNAL(currentRowChanged(int)), this, - SLOT(showGridOptions(int))); - - //these bypass apply() - /* - connect(boxMajorGrid, SIGNAL(toggled(bool)), this, - SLOT(majorGridEnabled(bool))); - connect(boxMinorGrid, SIGNAL(toggled(bool)), this, - SLOT(minorGridEnabled(bool))); - connect(boxAntialiseGrid, SIGNAL(toggled(bool)), this, SLOT(updateGrid())); - connect(boxColorMajor, SIGNAL(activated(int)), this, SLOT(updateGrid())); - connect(boxColorMinor, SIGNAL(activated(int)), this, SLOT(updateGrid())); - connect(boxTypeMajor, SIGNAL(activated(int)), this, SLOT(updateGrid())); - connect(boxTypeMinor, SIGNAL(activated(int)), this, SLOT(updateGrid())); - connect(boxWidthMajor, SIGNAL(valueChanged(double)), this, - SLOT(updateGrid())); - connect(boxWidthMinor, SIGNAL(valueChanged(double)), this, - SLOT(updateGrid())); - connect(boxXLine, SIGNAL(clicked()), this, SLOT(apply())); - connect(boxYLine, SIGNAL(clicked()), this, SLOT(apply())); - */ + connect(axesGridList, SIGNAL(currentRowChanged(int)), gridPrefsArea, SLOT(setCurrentIndex(int))); + connect(boxAntialiseGrid, SIGNAL(clicked()),prefsHor,SLOT(setModified())); + connect(boxAntialiseGrid, SIGNAL(clicked()),prefsVert,SLOT(setModified())); } void AxesDialog::initAxesPage() @@ -961,10 +894,10 @@ void AxesDialog::initAxesPage() QListWidgetItem* listTop = new QListWidgetItem(image6, tr("Top")); QListWidgetItem* listRight = new QListWidgetItem(image7, tr("Right")); - AxisAxisDetails* prefsBottom = new AxisAxisDetails(d_app, d_graph, QwtPlot::xBottom); - AxisAxisDetails* prefsLeft = new AxisAxisDetails(d_app, d_graph, QwtPlot::yLeft); - AxisAxisDetails* prefsTop = new AxisAxisDetails(d_app, d_graph, QwtPlot::xTop); - AxisAxisDetails* prefsRight = new AxisAxisDetails(d_app, d_graph, QwtPlot::yRight); + AxisDetails* prefsBottom = new AxisDetails(d_app, d_graph, QwtPlot::xBottom); + AxisDetails* prefsLeft = new AxisDetails(d_app, d_graph, QwtPlot::yLeft); + AxisDetails* prefsTop = new AxisDetails(d_app, d_graph, QwtPlot::xTop); + AxisDetails* prefsRight = new AxisDetails(d_app, d_graph, QwtPlot::yRight); axesPrefsArea->addWidget(prefsBottom); axesPrefsArea->addWidget(prefsLeft); @@ -976,14 +909,14 @@ void AxesDialog::initAxesPage() axesTitlesList->addItem(listTop); axesTitlesList->addItem(listRight); - m_Axis_map.insert(listBottom,prefsBottom); - m_Axis_map.insert(listLeft,prefsLeft); - m_Axis_map.insert(listTop,prefsTop); - m_Axis_map.insert(listRight,prefsRight); + m_Axis_list.append(prefsBottom); + m_Axis_list.append(prefsLeft); + m_Axis_list.append(prefsTop); + m_Axis_list.append(prefsRight); axesTitlesList->setIconSize(image6.size()); axesTitlesList->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding)); - + // calculate a sensible width for the items list // (default QListWidget size is 256 which looks too big) QFontMetrics fm(axesTitlesList->font()); @@ -1072,19 +1005,19 @@ void AxesDialog::initGeneralPage() /* //All of these bypass apply() connect(boxFrameColor, SIGNAL(colorChanged()), this, - SLOT(pickCanvasFrameColor())); + SLOT(pickCanvasFrameColor())); connect(boxBackbones, SIGNAL(toggled(bool)), this, - SLOT(drawAxesBackbones(bool))); + SLOT(drawAxesBackbones(bool))); connect(boxFramed, SIGNAL(toggled(bool)), this, SLOT(drawFrame(bool))); connect(boxFrameWidth, SIGNAL(valueChanged (int)), this, - SLOT(updateFrame(int))); + SLOT(updateFrame(int))); connect(boxAxesLinewidth, SIGNAL(valueChanged (int)), this, - SLOT(changeAxesLinewidth(int))); + SLOT(changeAxesLinewidth(int))); connect(boxMajorTicksLength, SIGNAL(valueChanged (int)), this, - SLOT(changeMajorTicksLength(int))); + SLOT(changeMajorTicksLength(int))); connect(boxMinorTicksLength, SIGNAL(valueChanged (int)), this, - SLOT(changeMinorTicksLength(int))); - */ + SLOT(changeMinorTicksLength(int))); + */ } void AxesDialog::accept() @@ -1093,96 +1026,6 @@ void AxesDialog::accept() close(); } -void AxesDialog::showGridOptions(int axis) -{ - Grid *grd = dynamic_cast<Grid *>(d_graph->plotWidget()->grid()); - if (!grd) - return; - - boxMajorGrid->blockSignals(true); - boxMinorGrid->blockSignals(true); - boxWidthMajor->blockSignals(true); - boxWidthMinor->blockSignals(true); - boxColorMajor->blockSignals(true); - boxColorMinor->blockSignals(true); - boxTypeMajor->blockSignals(true); - boxTypeMinor->blockSignals(true); - boxAntialiseGrid->blockSignals(true); - - if (axis == 1) - { - boxMajorGrid->setChecked(grd->xEnabled()); - boxMinorGrid->setChecked(grd->xMinEnabled()); - - boxXLine->setEnabled(true); - boxYLine->setDisabled(true); - - boxGridXAxis->setEnabled(true); - boxGridYAxis->setDisabled(true); - - QPen majPenX = grd->majPenX(); - boxTypeMajor->setCurrentIndex(majPenX.style() - 1); - boxColorMajor->setColor(majPenX.color()); - boxWidthMajor->setValue(majPenX.widthF()); - - QPen minPenX = grd->minPenX(); - boxTypeMinor->setCurrentItem(minPenX.style() - 1); - boxColorMinor->setColor(minPenX.color()); - boxWidthMinor->setValue(minPenX.widthF()); - } - else if (axis == 0) - { - boxMajorGrid->setChecked(grd->yEnabled()); - boxMinorGrid->setChecked(grd->yMinEnabled()); - - boxXLine->setDisabled(true); - boxYLine->setEnabled(true); - - boxGridXAxis->setDisabled(true); - boxGridYAxis->setEnabled(true); - - QPen majPenY = grd->majPenY(); - boxTypeMajor->setCurrentIndex(majPenY.style() - 1); - boxColorMajor->setColor(majPenY.color()); - boxWidthMajor->setValue(majPenY.widthF()); - - QPen minPenY = grd->minPenY(); - boxTypeMinor->setCurrentItem(minPenY.style() - 1); - boxColorMinor->setColor(minPenY.color()); - boxWidthMinor->setValue(minPenY.widthF()); - } - - bool majorOn = boxMajorGrid->isChecked(); - boxTypeMajor->setEnabled(majorOn); - boxColorMajor->setEnabled(majorOn); - boxWidthMajor->setEnabled(majorOn); - - bool minorOn = boxMinorGrid->isChecked(); - boxTypeMinor->setEnabled(minorOn); - boxColorMinor->setEnabled(minorOn); - boxWidthMinor->setEnabled(minorOn); - - boxGridXAxis->setCurrentIndex(grd->xAxis() - 2); - boxGridYAxis->setCurrentIndex(grd->yAxis()); - - boxXLine->setChecked(grd->xZeroLineEnabled()); - boxYLine->setChecked(grd->yZeroLineEnabled()); - - boxAntialiseGrid->setChecked( - grd->testRenderHint(QwtPlotItem::RenderAntialiased)); - - boxAntialiseGrid->blockSignals(false); - boxWidthMajor->blockSignals(false); - boxWidthMinor->blockSignals(false); - boxColorMajor->blockSignals(false); - boxColorMinor->blockSignals(false); - boxTypeMajor->blockSignals(false); - boxTypeMinor->blockSignals(false); - boxMajorGrid->blockSignals(false); - boxMinorGrid->blockSignals(false); -} - - void AxesDialog::setGraph(Graph *g) { if (!d_app) @@ -1206,18 +1049,18 @@ int AxesDialog::mapToQwtAxis(int axis) int a = -1; switch (axis) { - case 0: - a = QwtPlot::xBottom; - break; - case 1: - a = QwtPlot::yLeft; - break; - case 2: - a = QwtPlot::xTop; - break; - case 3: - a = QwtPlot::yRight; - break; + case 0: + a = QwtPlot::xBottom; + break; + case 1: + a = QwtPlot::yLeft; + break; + case 2: + a = QwtPlot::xTop; + break; + case 3: + a = QwtPlot::yRight; + break; } return a; } @@ -1227,7 +1070,7 @@ void AxesDialog::updateScale() //QList<QListWidgetItem*> selection = axesList->selectedItems(); //if (selection.isEmpty()) - //return; + //return; // Remove the current widget if one exists in the scroll area //if( scalePrefsArea->widget() ) scalePrefsArea->takeWidget(); @@ -1241,31 +1084,31 @@ void AxesDialog::updateScale() std::cerr << "Return from takeat() - " << takereturn << std::endl; if (takereturn) { - auto returnwidget = takereturn->widget(); - std::cerr << "Return from widget() - " << returnwidget << std::endl; - m_Scale_map.value[axesList->item(oldaxis)] = takereturn->widget(); + auto returnwidget = takereturn->widget(); + std::cerr << "Return from widget() - " << returnwidget << std::endl; + m_Scale_list.value[axesList->item(oldaxis)] = takereturn->widget(); } int testrow = axesList->currentRow(); std::cerr << "Return from currentRow() - " << testrow << std::endl; QListWidgetItem *item = axesList->currentItem(); std::cerr << "Return from axesList->currentItem() address of list item - " << item << std::endl; - ScaleAxisDetails *obj = NULL; + ScaleDetails *obj = NULL; std::cerr << "Address of obj NULL - " << obj << std::endl; - if (m_Scale_map.contains(item)) + if (m_Scale_list.contains(item)) { - obj = m_Scale_map.value(item); - obj->initWidgets(); - std::cerr << "Address of obj from map - " << obj << std::endl; - std::cerr << "Contents of dspnStart - " << obj->testreturn() << std::endl; + obj = m_Scale_list.value(item); + obj->initWidgets(); + std::cerr << "Address of obj from map - " << obj << std::endl; + std::cerr << "Contents of dspnStart - " << obj->testreturn() << std::endl; } else { - obj = new ScaleAxisDetails(d_app, d_graph, - mapToQwtAxis(axesList->currentRow())); - m_Scale_map.insert(item, obj); - obj->initWidgets(); - std::cerr << "Address of obj from map - " << obj << std::endl; + obj = new ScaleDetails(d_app, d_graph, + mapToQwtAxis(axesList->currentRow())); + m_Scale_list.insert(item, obj); + obj->initWidgets(); + std::cerr << "Address of obj from map - " << obj << std::endl; } //Set it as the currently displayed widget @@ -1278,153 +1121,153 @@ void AxesDialog::updateScale() /* - int axis = axesList->currentRow(); - boxStart->clear(); - boxEnd->clear(); - boxStep->clear(); - boxUnit->hide(); - boxUnit->clear(); - - Plot *d_plot = d_graph->plotWidget(); - int a = mapToQwtAxis(axis); - const QwtScaleDiv *scDiv = d_plot->axisScaleDiv(a); - double start = QMIN(scDiv->lBound(), scDiv->hBound()); - double end = QMAX(scDiv->lBound(), scDiv->hBound()); - ScaleDraw::ScaleType type = d_graph->axisType(a); - if (type == ScaleDraw::Date){ - ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_plot->axisScaleDraw(a)); - QDateTime origin = sclDraw->dateTimeOrigin(); - - boxStart->hide(); - boxStartTime->hide(); - boxStartDateTime->show(); - boxStartDateTime->setDisplayFormat(sclDraw->format()); - boxStartDateTime->setDateTime(origin.addSecs((int)start)); - - boxEnd->hide(); - boxEndTime->hide(); - boxEndDateTime->show(); - boxEndDateTime->setDisplayFormat(sclDraw->format()); - boxEndDateTime->setDateTime(origin.addSecs((int)end)); - - boxUnit->show(); - boxUnit->insertItem(tr("days")); - boxUnit->insertItem(tr("weeks")); - boxStep->setValue(d_graph->axisStep(a)/86400.0); - boxStep->setSingleStep(1); - } else if (type == ScaleDraw::Time){ - ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_plot->axisScaleDraw(a)); - QTime origin = sclDraw->dateTimeOrigin().time(); - - boxStart->hide(); - boxStartDateTime->hide(); - boxStartTime->show(); - boxStartTime->setDisplayFormat(sclDraw->format()); - boxStartTime->setTime(origin.addMSecs((int)start)); - - boxEnd->hide(); - boxEndDateTime->hide(); - boxEndTime->show(); - boxEndTime->setDisplayFormat(sclDraw->format()); - boxEndTime->setTime(origin.addMSecs((int)end)); - - boxUnit->show(); - boxUnit->insertItem(tr("millisec.")); - boxUnit->insertItem(tr("sec.")); - boxUnit->insertItem(tr("min.")); - boxUnit->insertItem(tr("hours")); - boxUnit->setCurrentIndex(1); - boxStep->setValue(d_graph->axisStep(a)/1e3); - boxStep->setSingleStep(1000); - } else { - boxStart->show(); - boxStart->setValue(start); - boxStartTime->hide(); - boxStartDateTime->hide(); - boxEnd->show(); - boxEnd->setValue(end); - boxEndTime->hide(); - boxEndDateTime->hide(); - boxStep->setValue(d_graph->axisStep(a)); - boxStep->setSingleStep(0.1); - } - - double range = fabs(scDiv->range()); - QwtScaleEngine *qwtsc_engine = d_plot->axisScaleEngine(a); - ScaleEngine* sc_engine=dynamic_cast<ScaleEngine*>(qwtsc_engine); - if(sc_engine) - { - if (sc_engine->axisBreakLeft() > -DBL_MAX) - boxBreakStart->setValue(sc_engine->axisBreakLeft()); - else - boxBreakStart->setValue(start + 0.25*range); - - if (sc_engine->axisBreakRight() < DBL_MAX) - boxBreakEnd->setValue(sc_engine->axisBreakRight()); - else - boxBreakEnd->setValue(start + 0.75*range); - - boxAxesBreaks->setChecked(sc_engine->hasBreak()); - - boxBreakPosition->setValue(sc_engine->breakPosition()); - boxBreakWidth->setValue(sc_engine->breakWidth()); - boxStepBeforeBreak->setValue(sc_engine->stepBeforeBreak()); - boxStepAfterBreak->setValue(sc_engine->stepAfterBreak()); - - QwtScaleTransformation::Type scale_type = sc_engine->type(); - boxMinorTicksBeforeBreak->clear(); - if (scale_type == QwtScaleTransformation::Log10) - boxMinorTicksBeforeBreak->addItems(QStringList()<<"0"<<"2"<<"4"<<"8"); - else - boxMinorTicksBeforeBreak->addItems(QStringList()<<"0"<<"1"<<"4"<<"9"<<"14"<<"19"); - boxMinorTicksBeforeBreak->setEditText(QString::number(sc_engine->minTicksBeforeBreak())); - - - boxMinorTicksAfterBreak->setEditText(QString::number(sc_engine->minTicksAfterBreak())); - boxLog10AfterBreak->setChecked(sc_engine->log10ScaleAfterBreak()); - boxBreakDecoration->setChecked(sc_engine->hasBreakDecoration()); - btnInvert->setChecked(sc_engine->testAttribute(QwtScaleEngine::Inverted)); - boxScaleType->setCurrentItem(scale_type); - boxMinorValue->clear(); - if (scale_type == QwtScaleTransformation::Log10) - boxMinorValue->addItems(QStringList()<<"0"<<"2"<<"4"<<"8"); - else - boxMinorValue->addItems(QStringList()<<"0"<<"1"<<"4"<<"9"<<"14"<<"19"); - - boxMinorValue->setEditText(QString::number(d_plot->axisMaxMinor(a))); - - bool isColorMap = d_graph->isColorBarEnabled(mapToQwtAxis(axis)); - boxAxesBreaks->setEnabled (!isColorMap); - if (isColorMap) - { - boxAxesBreaks->setChecked (false); - } - - } - else - { - boxAxesBreaks->setChecked(false); - boxAxesBreaks->setEnabled (false); - } - - QwtValueList lst = scDiv->ticks (QwtScaleDiv::MajorTick); - boxMajorValue->setValue(lst.count()); - - if (d_graph->axisStep(a) != 0.0){ - btnStep->setChecked(true); - boxStep->setEnabled(true); - boxUnit->setEnabled(true); - - btnMajor->setChecked(false); - boxMajorValue->setEnabled(false); - } else{ - btnStep->setChecked(false); - boxStep->setEnabled(false); - boxUnit->setEnabled(false); - btnMajor->setChecked(true); - boxMajorValue->setEnabled(true); - } - */ + int axis = axesList->currentRow(); + boxStart->clear(); + boxEnd->clear(); + boxStep->clear(); + boxUnit->hide(); + boxUnit->clear(); + + Plot *d_plot = d_graph->plotWidget(); + int a = mapToQwtAxis(axis); + const QwtScaleDiv *scDiv = d_plot->axisScaleDiv(a); + double start = QMIN(scDiv->lBound(), scDiv->hBound()); + double end = QMAX(scDiv->lBound(), scDiv->hBound()); + ScaleDraw::ScaleType type = d_graph->axisType(a); + if (type == ScaleDraw::Date){ + ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_plot->axisScaleDraw(a)); + QDateTime origin = sclDraw->dateTimeOrigin(); + + boxStart->hide(); + boxStartTime->hide(); + boxStartDateTime->show(); + boxStartDateTime->setDisplayFormat(sclDraw->format()); + boxStartDateTime->setDateTime(origin.addSecs((int)start)); + + boxEnd->hide(); + boxEndTime->hide(); + boxEndDateTime->show(); + boxEndDateTime->setDisplayFormat(sclDraw->format()); + boxEndDateTime->setDateTime(origin.addSecs((int)end)); + + boxUnit->show(); + boxUnit->insertItem(tr("days")); + boxUnit->insertItem(tr("weeks")); + boxStep->setValue(d_graph->axisStep(a)/86400.0); + boxStep->setSingleStep(1); + } else if (type == ScaleDraw::Time){ + ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_plot->axisScaleDraw(a)); + QTime origin = sclDraw->dateTimeOrigin().time(); + + boxStart->hide(); + boxStartDateTime->hide(); + boxStartTime->show(); + boxStartTime->setDisplayFormat(sclDraw->format()); + boxStartTime->setTime(origin.addMSecs((int)start)); + + boxEnd->hide(); + boxEndDateTime->hide(); + boxEndTime->show(); + boxEndTime->setDisplayFormat(sclDraw->format()); + boxEndTime->setTime(origin.addMSecs((int)end)); + + boxUnit->show(); + boxUnit->insertItem(tr("millisec.")); + boxUnit->insertItem(tr("sec.")); + boxUnit->insertItem(tr("min.")); + boxUnit->insertItem(tr("hours")); + boxUnit->setCurrentIndex(1); + boxStep->setValue(d_graph->axisStep(a)/1e3); + boxStep->setSingleStep(1000); + } else { + boxStart->show(); + boxStart->setValue(start); + boxStartTime->hide(); + boxStartDateTime->hide(); + boxEnd->show(); + boxEnd->setValue(end); + boxEndTime->hide(); + boxEndDateTime->hide(); + boxStep->setValue(d_graph->axisStep(a)); + boxStep->setSingleStep(0.1); + } + + double range = fabs(scDiv->range()); + QwtScaleEngine *qwtsc_engine = d_plot->axisScaleEngine(a); + ScaleEngine* sc_engine=dynamic_cast<ScaleEngine*>(qwtsc_engine); + if(sc_engine) + { + if (sc_engine->axisBreakLeft() > -DBL_MAX) + boxBreakStart->setValue(sc_engine->axisBreakLeft()); + else + boxBreakStart->setValue(start + 0.25*range); + + if (sc_engine->axisBreakRight() < DBL_MAX) + boxBreakEnd->setValue(sc_engine->axisBreakRight()); + else + boxBreakEnd->setValue(start + 0.75*range); + + boxAxesBreaks->setChecked(sc_engine->hasBreak()); + + boxBreakPosition->setValue(sc_engine->breakPosition()); + boxBreakWidth->setValue(sc_engine->breakWidth()); + boxStepBeforeBreak->setValue(sc_engine->stepBeforeBreak()); + boxStepAfterBreak->setValue(sc_engine->stepAfterBreak()); + + QwtScaleTransformation::Type scale_type = sc_engine->type(); + boxMinorTicksBeforeBreak->clear(); + if (scale_type == QwtScaleTransformation::Log10) + boxMinorTicksBeforeBreak->addItems(QStringList()<<"0"<<"2"<<"4"<<"8"); + else + boxMinorTicksBeforeBreak->addItems(QStringList()<<"0"<<"1"<<"4"<<"9"<<"14"<<"19"); + boxMinorTicksBeforeBreak->setEditText(QString::number(sc_engine->minTicksBeforeBreak())); + + + boxMinorTicksAfterBreak->setEditText(QString::number(sc_engine->minTicksAfterBreak())); + boxLog10AfterBreak->setChecked(sc_engine->log10ScaleAfterBreak()); + boxBreakDecoration->setChecked(sc_engine->hasBreakDecoration()); + btnInvert->setChecked(sc_engine->testAttribute(QwtScaleEngine::Inverted)); + boxScaleType->setCurrentItem(scale_type); + boxMinorValue->clear(); + if (scale_type == QwtScaleTransformation::Log10) + boxMinorValue->addItems(QStringList()<<"0"<<"2"<<"4"<<"8"); + else + boxMinorValue->addItems(QStringList()<<"0"<<"1"<<"4"<<"9"<<"14"<<"19"); + + boxMinorValue->setEditText(QString::number(d_plot->axisMaxMinor(a))); + + bool isColorMap = d_graph->isColorBarEnabled(mapToQwtAxis(axis)); + boxAxesBreaks->setEnabled (!isColorMap); + if (isColorMap) + { + boxAxesBreaks->setChecked (false); + } + + } + else + { + boxAxesBreaks->setChecked(false); + boxAxesBreaks->setEnabled (false); + } + + QwtValueList lst = scDiv->ticks (QwtScaleDiv::MajorTick); + boxMajorValue->setValue(lst.count()); + + if (d_graph->axisStep(a) != 0.0){ + btnStep->setChecked(true); + boxStep->setEnabled(true); + boxUnit->setEnabled(true); + + btnMajor->setChecked(false); + boxMajorValue->setEnabled(false); + } else{ + btnStep->setChecked(false); + boxStep->setEnabled(false); + boxUnit->setEnabled(false); + btnMajor->setChecked(true); + boxMajorValue->setEnabled(true); + } + */ } void AxesDialog::pageChanged(QWidget *page) @@ -1443,104 +1286,129 @@ void AxesDialog::pageChanged(QWidget *page) void AxesDialog::updateGrid() { - if (generalDialog->currentWidget() != gridPage) - return; - + bool antiAlias = boxAntialiseGrid->isChecked(); switch (boxApplyGridFormat->currentIndex()) { - case 0: + case 0: { - applyChangesToGrid(d_graph->plotWidget()->grid()); - d_graph->replot(); - d_graph->notifyChanges(); - } + for (auto gridItr = m_Grid_list.begin(); gridItr != m_Grid_list.end(); gridItr++) + { + if ((*gridItr)->modified()) + { + (*gridItr)->apply(d_graph->plotWidget()->grid(),antiAlias); + d_graph->replot(); + d_graph->notifyChanges(); + } + } break; + } - case 1: + case 1: { MultiLayer *plot = d_graph->multiLayer(); if (!plot) + { return; - - QList<Graph *> layers = plot->layersList(); - foreach(Graph *g, layers) + } + for (auto gridItr = m_Grid_list.begin(); gridItr != m_Grid_list.end(); gridItr++) { - if (g->isPiePlot()) - continue; - - applyChangesToGrid(g->plotWidget()->grid()); - g->replot(); + if ((*gridItr)->modified()) + { + QList<Graph *> layers = plot->layersList(); + foreach(Graph *g, layers) + { + if (g->isPiePlot()) + { + continue; + } + (*gridItr)->apply(g->plotWidget()->grid(),antiAlias); + g->replot(); + } + } } plot->applicationWindow()->modifiedProject(); - } break; + } - case 2: + case 2: { if (!d_app) + { return; + } - QList<MdiSubWindow *> windows = d_app->windowsList(); - foreach(MdiSubWindow *w, windows) + for (auto gridItr = m_Grid_list.begin(); gridItr != m_Grid_list.end(); gridItr++) { - if (w->isA("MultiLayer")) + if ((*gridItr)->modified()) { - QList<Graph *> layers = (dynamic_cast<MultiLayer*>(w))->layersList(); - foreach(Graph *g, layers) + QList<MdiSubWindow *> windows = d_app->windowsList(); + for (auto gridItr = m_Grid_list.begin(); gridItr != m_Grid_list.end(); gridItr++) { - if (g->isPiePlot()) - continue; - applyChangesToGrid(g->plotWidget()->grid()); - g->replot(); + foreach(MdiSubWindow *w, windows) + { + if (w->isA("MultiLayer")) + { + QList<Graph *> layers = (dynamic_cast<MultiLayer*>(w))->layersList(); + foreach(Graph *g, layers) + { + if (g->isPiePlot()) + { + continue; + } + (*gridItr)->apply(g->plotWidget()->grid(),antiAlias); + g->replot(); + } + } + } } } } d_app->modifiedProject(); - } break; + } } } -void AxesDialog::applyChangesToGrid(Grid *grid) -{ - if (!grid) - return; - - if (axesGridList->currentRow() == 1) - { - grid->enableX(boxMajorGrid->isChecked()); - grid->enableXMin(boxMinorGrid->isChecked()); - - grid->setMajPenX( - QPen(ColorBox::color(boxColorMajor->currentIndex()), - boxWidthMajor->value(), - Graph::getPenStyle(boxTypeMajor->currentIndex()))); - grid->setMinPenX( - QPen(ColorBox::color(boxColorMinor->currentIndex()), - boxWidthMinor->value(), - Graph::getPenStyle(boxTypeMinor->currentIndex()))); - } - else - { - grid->enableY(boxMajorGrid->isChecked()); - grid->enableYMin(boxMinorGrid->isChecked()); - - grid->setMajPenY( - QPen(ColorBox::color(boxColorMajor->currentIndex()), - boxWidthMajor->value(), - Graph::getPenStyle(boxTypeMajor->currentIndex()))); - grid->setMinPenY( - QPen(ColorBox::color(boxColorMinor->currentIndex()), - boxWidthMinor->value(), - Graph::getPenStyle(boxTypeMinor->currentIndex()))); - } - - grid->enableZeroLineX(boxXLine->isChecked()); - grid->enableZeroLineY(boxYLine->isChecked()); - grid->setAxis(boxGridXAxis->currentIndex() + 2, boxGridYAxis->currentIndex()); - grid->setRenderHint(QwtPlotItem::RenderAntialiased, - boxAntialiseGrid->isChecked()); -} +//void AxesDialog::applyChangesToGrid(Grid *grid) +//{ +// if (!grid) +// return; +// +// if (axesGridList->currentRow() == 1) +// { +// grid->enableX(boxMajorGrid->isChecked()); +// grid->enableXMin(boxMinorGrid->isChecked()); +// +// grid->setMajPenX( +// QPen(ColorBox::color(boxColorMajor->currentIndex()), +// boxWidthMajor->value(), +// Graph::getPenStyle(boxTypeMajor->currentIndex()))); +// grid->setMinPenX( +// QPen(ColorBox::color(boxColorMinor->currentIndex()), +// boxWidthMinor->value(), +// Graph::getPenStyle(boxTypeMinor->currentIndex()))); +// } +// else +// { +// grid->enableY(boxMajorGrid->isChecked()); +// grid->enableYMin(boxMinorGrid->isChecked()); +// +// grid->setMajPenY( +// QPen(ColorBox::color(boxColorMajor->currentIndex()), +// boxWidthMajor->value(), +// Graph::getPenStyle(boxTypeMajor->currentIndex()))); +// grid->setMinPenY( +// QPen(ColorBox::color(boxColorMinor->currentIndex()), +// boxWidthMinor->value(), +// Graph::getPenStyle(boxTypeMinor->currentIndex()))); +// } +// +// grid->enableZeroLineX(boxXLine->isChecked()); +// grid->enableZeroLineY(boxYLine->isChecked()); +// grid->setAxis(boxGridXAxis->currentIndex() + 2, boxGridYAxis->currentIndex()); +// grid->setRenderHint(QwtPlotItem::RenderAntialiased, +// boxAntialiseGrid->isChecked()); +//} void AxesDialog::changeMinorTicksLength(int minLength) @@ -1601,193 +1469,197 @@ void AxesDialog::pickCanvasFrameColor() d_graph->setCanvasFrame(boxFrameWidth->value(), boxFrameColor->color()); } -void AxesDialog::majorGridEnabled(bool on) -{ - boxTypeMajor->setEnabled(on); - boxColorMajor->setEnabled(on); - boxWidthMajor->setEnabled(on); - - updateGrid(); -} - -void AxesDialog::minorGridEnabled(bool on) -{ - boxTypeMinor->setEnabled(on); - boxColorMinor->setEnabled(on); - boxWidthMinor->setEnabled(on); - - updateGrid(); -} +//void AxesDialog::majorGridEnabled(bool on) +//{ +// boxTypeMajor->setEnabled(on); +// boxColorMajor->setEnabled(on); +// boxWidthMajor->setEnabled(on); +// +// updateGrid(); +//} +// +//void AxesDialog::minorGridEnabled(bool on) +//{ +// boxTypeMinor->setEnabled(on); +// boxColorMinor->setEnabled(on); +// boxWidthMinor->setEnabled(on); +// +// updateGrid(); +//} bool AxesDialog::apply() { -/* -auto anaxis = axesPrefsArea->itemAt(mapToQwtAxis(axesTitlesList->currentRow())); -auto awidget = anaxis->widget(); + /* + auto anaxis = axesPrefsArea->itemAt(mapToQwtAxis(axesTitlesList->currentRow())); + auto awidget = anaxis->widget(); - if (axesPrefsArea->currentWidget()==dynamic_cast<AxisAxisDetails*>(awidget)) + if (axesPrefsArea->currentWidget()==dynamic_cast<AxisDetails*>(awidget)) { - AxisAxisDetails *currentaxis = dynamic_cast<AxisAxisDetails*>(awidget); + AxisDetails *currentaxis = dynamic_cast<AxisDetails*>(awidget); } */ - for (auto axisItr = m_Axis_map.begin(); axisItr != m_Axis_map.end(); axisItr++) + updateGrid(); + for (auto axisItr = m_Axis_list.begin(); axisItr != m_Axis_list.end(); axisItr++) + { + (*axisItr)->apply(); + } + for (auto scaleItr = m_Scale_list.begin(); scaleItr != m_Scale_list.end(); scaleItr++) { - AxisAxisDetails *axis = axisItr.value(); - axis->apply(); + (*scaleItr)->apply(); } -//this is gettign rewritten to check and press ALL tabs when apply or ok is pressed + //this is gettign rewritten to check and press ALL tabs when apply or ok is pressed /* if (generalDialog->currentWidget()==dynamic_cast<QWidget*>(scalesPage)) { - int a = mapToQwtAxis(axesList->currentRow()); - ScaleDraw::ScaleType type = d_graph->axisType(a); - - double start = 0.0, end = 0.0; - if (type == ScaleDraw::Date){ - ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_graph->plotWidget()->axisScaleDraw(a)); - QDateTime origin = sclDraw->dateTimeOrigin(); - start = (double)origin.secsTo(boxStartDateTime->dateTime()); - end = (double)origin.secsTo(boxEndDateTime->dateTime()); - } else if (type == ScaleDraw::Time){ - ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_graph->plotWidget()->axisScaleDraw(a)); - QTime origin = sclDraw->dateTimeOrigin().time(); - start = (double)origin.msecsTo(boxStartTime->time()); - end = (double)origin.msecsTo(boxEndTime->time()); - } else { - start = boxStart->value(); - end = boxEnd->value(); - } + int a = mapToQwtAxis(axesList->currentRow()); + ScaleDraw::ScaleType type = d_graph->axisType(a); + + double start = 0.0, end = 0.0; + if (type == ScaleDraw::Date){ + ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_graph->plotWidget()->axisScaleDraw(a)); + QDateTime origin = sclDraw->dateTimeOrigin(); + start = (double)origin.secsTo(boxStartDateTime->dateTime()); + end = (double)origin.secsTo(boxEndDateTime->dateTime()); + } else if (type == ScaleDraw::Time){ + ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_graph->plotWidget()->axisScaleDraw(a)); + QTime origin = sclDraw->dateTimeOrigin().time(); + start = (double)origin.msecsTo(boxStartTime->time()); + end = (double)origin.msecsTo(boxEndTime->time()); + } else { + start = boxStart->value(); + end = boxEnd->value(); + } - if (start >= end){ - QMessageBox::warning(this,tr("MantidPlot - Error"), - "Invalid option to set the 'From' greater than 'To' for the scale settings.\nOperation aborted! "); - return false; - } + if (start >= end){ + QMessageBox::warning(this,tr("MantidPlot - Error"), + "Invalid option to set the 'From' greater than 'To' for the scale settings.\nOperation aborted! "); + return false; + } - double step = 0.0; - if (btnStep->isChecked()){ - step = boxStep->value(); - if (type == ScaleDraw::Time){ - switch (boxUnit->currentIndex()) - { - case 0: - break; - case 1: - step *= 1e3; - break; - case 2: - step *= 6e4; - break; - case 3: - step *= 36e5; - break; - } - } else if (type == ScaleDraw::Date){ - switch (boxUnit->currentIndex()) - { - case 0: - step *= 86400; - break; - case 1: - step *= 604800; - break; - } - } - } + double step = 0.0; + if (btnStep->isChecked()){ + step = boxStep->value(); + if (type == ScaleDraw::Time){ + switch (boxUnit->currentIndex()) + { + case 0: + break; + case 1: + step *= 1e3; + break; + case 2: + step *= 6e4; + break; + case 3: + step *= 36e5; + break; + } + } else if (type == ScaleDraw::Date){ + switch (boxUnit->currentIndex()) + { + case 0: + step *= 86400; + break; + case 1: + step *= 604800; + break; + } + } + } - double breakLeft = -DBL_MAX, breakRight = DBL_MAX; - if (boxAxesBreaks->isChecked()){ - breakLeft = qMin(boxBreakStart->value(), boxBreakEnd->value()); - breakRight = qMax(boxBreakStart->value(), boxBreakEnd->value()); - } - d_graph->setScale(a, start, end, step, boxMajorValue->value(), boxMinorValue->currentText().toInt(), - boxScaleType->currentIndex(), btnInvert->isChecked(), breakLeft, breakRight, - boxBreakPosition->value(), boxStepBeforeBreak->value(), boxStepAfterBreak->value(), - boxMinorTicksBeforeBreak->currentText().toInt(), boxMinorTicksAfterBreak->currentText().toInt(), - boxLog10AfterBreak->isChecked(), boxBreakWidth->value(), boxBreakDecoration->isChecked()); - d_graph->notifyChanges(); + double breakLeft = -DBL_MAX, breakRight = DBL_MAX; + if (boxAxesBreaks->isChecked()){ + breakLeft = qMin(boxBreakStart->value(), boxBreakEnd->value()); + breakRight = qMax(boxBreakStart->value(), boxBreakEnd->value()); + } + d_graph->setScale(a, start, end, step, boxMajorValue->value(), boxMinorValue->currentText().toInt(), + boxScaleType->currentIndex(), btnInvert->isChecked(), breakLeft, breakRight, + boxBreakPosition->value(), boxStepBeforeBreak->value(), boxStepAfterBreak->value(), + boxMinorTicksBeforeBreak->currentText().toInt(), boxMinorTicksAfterBreak->currentText().toInt(), + boxLog10AfterBreak->isChecked(), boxBreakWidth->value(), boxBreakDecoration->isChecked()); + d_graph->notifyChanges(); } else if (generalDialog->currentWidget() == gridPage) - updateGrid(); + updateGrid(); else if (generalDialog->currentWidget() == dynamic_cast<QWidget*>(axesPage)) { - int axis = mapToQwtAxisId(); - int format = cmbAxisType->currentIndex(); + int axis = mapToQwtAxisId(); + int format = cmbAxisType->currentIndex(); - int baseline = spnBaseline->value(); - axesBaseline[axis] = baseline; + int baseline = spnBaseline->value(); + axesBaseline[axis] = baseline; - QString formatInfo = QString::null; - if (format == ScaleDraw::Numeric) - { - if (boxShowFormula->isChecked()) - { - QString formula = txtFormula->text().lower(); - try - { - double value = 1.0; - MyParser parser; - if (formula.contains("x")) - parser.DefineVar("x", &value); - else if (formula.contains("y")) - parser.DefineVar("y", &value); - parser.SetExpr(formula.ascii()); - parser.Eval(); - } - catch(mu::ParserError &e) - { - QMessageBox::critical(this, tr("MantidPlot - Formula input error"), QString::fromStdString(e.GetMsg())+"\n"+ - tr("Valid variables are 'x' for Top/Bottom axes and 'y' for Left/Right axes!")); - txtFormula->setFocus(); - m_updatePlot=false; - return m_updatePlot; - //return false; - } - } - } else if (format == ScaleDraw::Time || format == ScaleDraw::Date){ - QStringList lst = d_graph->axisFormatInfo(axis).split(";", QString::KeepEmptyParts); - if ((int)lst.count() >= 2) - lst[1] = cmbFormat->currentText(); - formatInfo = lst.join(";"); - } else if (format == ScaleDraw::Day || format == ScaleDraw::Month) - formatInfo = QString::number(cmbFormat->currentIndex()); - else if (format == ScaleDraw::ColHeader) - formatInfo = cmbTableName->currentText(); - else - formatInfo = cmbColName->currentText(); - - if (d_graph->axisTitle(axis) != txtTitle->text()) - d_graph->setAxisTitle(axis, txtTitle->text()); - - if (axis == QwtPlot::xBottom) - xBottomLabelsRotation=spnAngle->value(); - else if (axis == QwtPlot::xTop) - xTopLabelsRotation=spnAngle->value(); - - QString formula = txtFormula->text(); - if (!boxShowFormula->isChecked()) - formula = QString(); - showAxis(axis, format, formatInfo, boxShowAxis->isChecked(), cmbMajorTicksType->currentIndex(), cmbMinorTicksType->currentIndex(), - grpShowLabels->isChecked(), cbtnAxisColor->color(), cmbFormat->currentIndex(), - spnPrecision->value(), spnAngle->value(), baseline, formula, cbtnAxisNumColor->color()); + QString formatInfo = QString::null; + if (format == ScaleDraw::Numeric) + { + if (boxShowFormula->isChecked()) + { + QString formula = txtFormula->text().lower(); + try + { + double value = 1.0; + MyParser parser; + if (formula.contains("x")) + parser.DefineVar("x", &value); + else if (formula.contains("y")) + parser.DefineVar("y", &value); + parser.SetExpr(formula.ascii()); + parser.Eval(); + } + catch(mu::ParserError &e) + { + QMessageBox::critical(this, tr("MantidPlot - Formula input error"), QString::fromStdString(e.GetMsg())+"\n"+ + tr("Valid variables are 'x' for Top/Bottom axes and 'y' for Left/Right axes!")); + txtFormula->setFocus(); + m_updatePlot=false; + return m_updatePlot; + //return false; + } + } + } else if (format == ScaleDraw::Time || format == ScaleDraw::Date){ + QStringList lst = d_graph->axisFormatInfo(axis).split(";", QString::KeepEmptyParts); + if ((int)lst.count() >= 2) + lst[1] = cmbFormat->currentText(); + formatInfo = lst.join(";"); + } else if (format == ScaleDraw::Day || format == ScaleDraw::Month) + formatInfo = QString::number(cmbFormat->currentIndex()); + else if (format == ScaleDraw::ColHeader) + formatInfo = cmbTableName->currentText(); + else + formatInfo = cmbColName->currentText(); + + if (d_graph->axisTitle(axis) != txtTitle->text()) + d_graph->setAxisTitle(axis, txtTitle->text()); + + if (axis == QwtPlot::xBottom) + xBottomLabelsRotation=spnAngle->value(); + else if (axis == QwtPlot::xTop) + xTopLabelsRotation=spnAngle->value(); + + QString formula = txtFormula->text(); + if (!boxShowFormula->isChecked()) + formula = QString(); + showAxis(axis, format, formatInfo, boxShowAxis->isChecked(), cmbMajorTicksType->currentIndex(), cmbMinorTicksType->currentIndex(), + grpShowLabels->isChecked(), cbtnAxisColor->color(), cmbFormat->currentIndex(), + spnPrecision->value(), spnAngle->value(), baseline, formula, cbtnAxisNumColor->color()); } else if (generalDialog->currentWidget()==dynamic_cast<QWidget*>(generalPage)){ - d_graph->setAxesLinewidth(boxAxesLinewidth->value()); - d_graph->changeTicksLength(boxMinorTicksLength->value(), boxMajorTicksLength->value()); - if (boxFramed->isChecked()) - d_graph->setCanvasFrame(boxFrameWidth->value(), boxFrameColor->color()); - else - d_graph->setCanvasFrame(0); - d_graph->drawAxesBackbones(boxBackbones->isChecked()); - d_graph->replot(); + d_graph->setAxesLinewidth(boxAxesLinewidth->value()); + d_graph->changeTicksLength(boxMinorTicksLength->value(), boxMajorTicksLength->value()); + if (boxFramed->isChecked()) + d_graph->setCanvasFrame(boxFrameWidth->value(), boxFrameColor->color()); + else + d_graph->setCanvasFrame(0); + d_graph->drawAxesBackbones(boxBackbones->isChecked()); + d_graph->replot(); } m_updatePlot=true; return m_updatePlot; //return true; - */ + */ //Disablign this code for now as it needs rewriting and probably renaming return true; } \ No newline at end of file diff --git a/Code/Mantid/MantidPlot/src/AxesDialog.h b/Code/Mantid/MantidPlot/src/AxesDialog.h index f6004898be56dee23f4b29fb673830f4a9c5b73b..d5b371c98e0e0955c1ac3db3d886c8871d16ebb9 100644 --- a/Code/Mantid/MantidPlot/src/AxesDialog.h +++ b/Code/Mantid/MantidPlot/src/AxesDialog.h @@ -33,8 +33,9 @@ #include <QLabel> #include <QList> #include <QTextEdit> -#include "AxisAxisDetails.h" -#include "ScaleAxisDetails.h" +#include "AxisDetails.h" +#include "ScaleDetails.h" +#include "GridDetails.h" //#include "MantidKernel/Logger.h" class QTimeEdit; @@ -77,7 +78,7 @@ class AxesDialog: public QDialog * @param fl :: window flags */ AxesDialog(ApplicationWindow* app, Graph* g, Qt::WFlags fl = 0); - + virtual ~AxesDialog(); public slots: void setCurrentScale(int axisPos); void showGeneralPage(); @@ -95,9 +96,9 @@ class AxesDialog: public QDialog private slots: bool apply(); void updateScale(); - void majorGridEnabled(bool on); - void minorGridEnabled(bool on); - void showGridOptions(int axis); + //void majorGridEnabled(bool on); + //void minorGridEnabled(bool on); + //void showGridOptions(int axis); void accept(); void drawFrame(bool framed); int mapToQwtAxis(int axis); @@ -121,13 +122,13 @@ class AxesDialog: public QDialog //! generate UI for the general page void initGeneralPage(); //! Modifies the grid - void applyChangesToGrid(Grid *grid); + //void applyChangesToGrid(Grid *grid); void setGraph(Graph *g); ApplicationWindow* d_app; Graph *d_graph; //QFrame *scalePrefsArea, *axesPrefsArea; - QStackedLayout *scalePrefsArea, *axesPrefsArea; + QStackedLayout *scalePrefsArea, *axesPrefsArea, *gridPrefsArea; //common widgets QPushButton* buttonApply, *buttonOk, *buttonCancel; QTabWidget* generalDialog; @@ -135,28 +136,15 @@ class AxesDialog: public QDialog QHBoxLayout *scalesLayout, *axesLayout; QListWidget* axesList; - QCheckBox* boxMajorGrid; - QCheckBox* boxMinorGrid; - QComboBox* boxTypeMajor; - ColorBox* boxColorMinor; - ColorBox* boxColorMajor; ColorButton *boxCanvasColor; - DoubleSpinBox* boxWidthMajor; - QComboBox* boxTypeMinor; - DoubleSpinBox* boxWidthMinor; - QCheckBox* boxXLine; - QCheckBox* boxYLine; QListWidget* axesGridList; QListWidget* axesTitlesList; QSpinBox *boxFrameWidth, *boxAxesLinewidth; - QCheckBox *boxBackbones; + QCheckBox *boxBackbones, *boxAntialiseGrid; QGroupBox *boxFramed; QSpinBox *boxMajorTicksLength, *boxMinorTicksLength, *boxBorderWidth; - QComboBox *boxGridXAxis, *boxGridYAxis; ColorButton *boxFrameColor; - - QCheckBox *boxAntialiseGrid; QComboBox *boxApplyGridFormat; //! Last selected tab QWidget* lastPage; @@ -167,9 +155,11 @@ class AxesDialog: public QDialog private: ///A map of QListWidgetItem objects to their Axis details objects - QMap<QListWidgetItem*, AxisAxisDetails*> m_Axis_map; + QList<AxisDetails*> m_Axis_list; + ///A map of QListWidgetItem objects to their Scale details objects + QList<ScaleDetails*> m_Scale_list; ///A map of QListWidgetItem objects to their Scale details objects - QMap<QListWidgetItem*, ScaleAxisDetails*> m_Scale_map; + QList<GridDetails*> m_Grid_list; int oldaxis; }; diff --git a/Code/Mantid/MantidPlot/src/AxisAxisDetails.cpp b/Code/Mantid/MantidPlot/src/AxisDetails.cpp similarity index 84% rename from Code/Mantid/MantidPlot/src/AxisAxisDetails.cpp rename to Code/Mantid/MantidPlot/src/AxisDetails.cpp index 54dcac6139f065675cf5e33f24c0be47f155de43..49c722a5ccd5c4b1d252180e0d999dd2c88d4781 100644 --- a/Code/Mantid/MantidPlot/src/AxisAxisDetails.cpp +++ b/Code/Mantid/MantidPlot/src/AxisDetails.cpp @@ -2,7 +2,7 @@ // Includes //-------------------------- -#include "AxisAxisDetails.h" +#include "AxisDetails.h" #include "ApplicationWindow.h" #include "DoubleSpinBox.h" #include <qwt_scale_widget.h> @@ -13,8 +13,8 @@ #include <QWidget> #include <QSpinBox> -#include <QCheckBox> #include <QRadioButton> +#include <QCheckBox> #include <QGroupBox> #include <QComboBox> #include <QLabel> @@ -33,7 +33,7 @@ #include <ColorButton.h> #include <QFontDialog> -AxisAxisDetails::AxisAxisDetails(ApplicationWindow* app, Graph* graph, int mappedaxis, QWidget *parent) : QWidget(parent) +AxisDetails::AxisDetails(ApplicationWindow* app, Graph* graph, int mappedaxis, QWidget *parent) : QWidget(parent) { d_app = app; d_graph = graph; @@ -43,7 +43,6 @@ AxisAxisDetails::AxisAxisDetails(ApplicationWindow* app, Graph* graph, int mappe QHBoxLayout * topLayout = new QHBoxLayout(); chkShowAxis = new QCheckBox(tr("Show")); - //chkShowAxis->setChecked(true); topLayout->addWidget(chkShowAxis); grpTitle = new QGroupBox(tr("Title")); @@ -195,12 +194,12 @@ AxisAxisDetails::AxisAxisDetails(ApplicationWindow* app, Graph* graph, int mappe initWidgets(); } -AxisAxisDetails::~AxisAxisDetails() +AxisDetails::~AxisDetails() { } -void AxisAxisDetails::initWidgets() +void AxisDetails::initWidgets() { if (m_initialised) { @@ -277,20 +276,17 @@ void AxisAxisDetails::initWidgets() QString formula = d_graph->axisFormula(m_mappedaxis); txtFormula->setFixedWidth(150); - //change this, txtFormula should always be visible if it's numeric, but disabled if the checkbox is out and shouldn't clear + if (!formula.isEmpty()) { chkShowFormula->setChecked(true); txtFormula->setEnabled(true); - //txtFormula->show(); txtFormula->setText(formula); } else { chkShowFormula->setChecked(false); txtFormula->setEnabled(false); - //txtFormula->clear(); - //txtFormula->hide(); } showAxis(); @@ -326,18 +322,87 @@ void AxisAxisDetails::initWidgets() } } -void AxisAxisDetails::setLabelFont() +void AxisDetails::setModified() { - bool okF; - QFont oldFont = d_graph->axisTitleFont(m_mappedaxis); - QFont fnt = QFontDialog::getFont(&okF, oldFont, this); - if (okF && fnt != oldFont) + m_modified = true; +} + +bool AxisDetails::valid() +{ + Table *w = d_app->table(cmbColName->currentText()); + return m_initialised && d_app && d_graph && !((cmbAxisType->currentIndex() == ScaleDraw::Text || cmbAxisType->currentIndex() == ScaleDraw::ColHeader) && !w); +} + +void AxisDetails::apply() +{ + if (m_modified && valid()) { - m_labelFont = fnt; + Table *w = d_app->table(cmbColName->currentText()); + + QString formula = txtFormula->text(); + if (!chkShowFormula->isChecked()) + { + formula = QString(); + } + + int type = cmbAxisType->currentIndex(); + QString formatInfo = cmbColName->currentText(); + if (type == ScaleDraw::Day || type == ScaleDraw::Month) + { + formatInfo = QString::number(cmbFormat->currentIndex()); + } + else if (type == ScaleDraw::Time || type == ScaleDraw::Date) + { + QStringList lst = d_graph->axisFormatInfo(m_mappedaxis).split(";", QString::SkipEmptyParts); + lst[1] = cmbFormat->currentText(); + formatInfo = lst.join(";"); + } + + d_graph->showAxis(m_mappedaxis, cmbAxisType->currentIndex(), formatInfo, w, chkShowAxis->isChecked(), cmbMajorTicksType->currentIndex(), + cmbMinorTicksType->currentIndex(), grpShowLabels->isChecked(), cbtnAxisColor->color(), cmbFormat->currentIndex(), spnPrecision->value(), spnAngle->value(), spnBaseline->value(), formula, + cbtnAxisNumColor->color()); + d_graph->setAxisTitle(m_mappedaxis, txtTitle->text()); + d_graph->setAxisFont(m_mappedaxis, m_scaleFont); + d_graph->setAxisTitleFont(m_mappedaxis, m_labelFont); + m_modified = false; + } +} + +void AxisDetails::showAxis() +{ + bool shown = chkShowAxis->isChecked(); + bool labels = grpShowLabels->isChecked(); + + grpShowLabels->setEnabled(shown); + grpAxisDisplay->setEnabled(shown); + grpTitle->setEnabled(shown); + + if (shown) + { + cmbFormat->setEnabled(labels); + cmbColName->setEnabled(labels); + chkShowFormula->setEnabled(labels); + txtFormula->setEnabled(labels); + + //this should so the work of the below IF but on one line and slightly more efficently as i assume setDisabled negates that given to it + spnAngle->setEnabled((m_mappedaxis == QwtPlot::xBottom || m_mappedaxis == QwtPlot::xTop) && labels); + /* + if (m_mappedaxis == QwtPlot::xBottom || m_mappedaxis == QwtPlot::xTop) + { + spnAngle->setEnabled(labels); + } + else + { + spnAngle->setDisabled(true); + } + */ + spnPrecision->setEnabled(labels && (cmbAxisType->currentIndex() == ScaleDraw::Numeric) && (cmbFormat->currentIndex() != 0)); + + enableFormulaBox(); } } -void AxisAxisDetails::setAxisFormatOptions(int type) +void AxisDetails::setAxisFormatOptions(int type) { cmbFormat->clear(); cmbFormat->setEditable(false); @@ -464,133 +529,36 @@ void AxisAxisDetails::setAxisFormatOptions(int type) } } -void AxisAxisDetails::showAxis() -{ - //this is needed - bool shown = chkShowAxis->isChecked(); - bool labels = grpShowLabels->isChecked(); - - //this needs reducing and the parenting feature can take care of most of this - - //it should jsut need these three - grpShowLabels->setEnabled(shown); - grpAxisDisplay->setEnabled(shown); - grpTitle->setEnabled(shown); - - /* - txtTitle->setEnabled(shown); - cbtnAxisColor->setEnabled(shown); - cbtnAxisNumColor->setEnabled(shown); - btnAxesFont->setEnabled(shown); - cmbMajorTicksType->setEnabled(shown); - cmbMinorTicksType->setEnabled(shown); - cmbAxisType->setEnabled(shown); - spnBaseline->setEnabled(shown); - */ - - if (shown) - { - //all of these previously relied on shown - cmbFormat->setEnabled(labels); - cmbColName->setEnabled(labels); - chkShowFormula->setEnabled(labels); - txtFormula->setEnabled(labels); - - //this should so the work of the below IF but on one line and slightly more efficently as i assume setDisabled negates that given to it - spnAngle->setEnabled((m_mappedaxis == QwtPlot::xBottom || m_mappedaxis == QwtPlot::xTop) && labels); - /* - if (m_mappedaxis == QwtPlot::xBottom || m_mappedaxis == QwtPlot::xTop) - { - spnAngle->setEnabled(labels); - } - else - { - spnAngle->setDisabled(true); - } - */ - spnPrecision->setEnabled(labels && (cmbAxisType->currentIndex() == ScaleDraw::Numeric) && (cmbFormat->currentIndex() != 0)); - - if (chkShowFormula->isChecked()) - { - txtFormula->setEnabled(true); - //txtFormula->show(); - } - else - { - txtFormula->setEnabled(false); - //txtFormula->hide(); - } - } -} - -void AxisAxisDetails::enableFormulaBox() +void AxisDetails::enableFormulaBox() { if (chkShowFormula->isChecked()) { txtFormula->setEnabled(true); - //txtFormula->show(); } else { txtFormula->setEnabled(false); - //txtFormula->hide(); } } -void AxisAxisDetails::setScaleFont() +void AxisDetails::setLabelFont() { bool okF; - QFont oldFont = d_graph->axisFont(m_mappedaxis); + QFont oldFont = d_graph->axisTitleFont(m_mappedaxis); QFont fnt = QFontDialog::getFont(&okF, oldFont, this); if (okF && fnt != oldFont) { - m_scaleFont = fnt; - } -} - -void AxisAxisDetails::setModified() -{ - m_modified = true; -} - -//to be merged into an apply method -bool AxisAxisDetails::valid() -{ - Table *w = d_app->table(cmbColName->currentText()); - return !((cmbAxisType->currentIndex() == ScaleDraw::Text || cmbAxisType->currentIndex() == ScaleDraw::ColHeader) && !w); + m_labelFont = fnt; + } } -void AxisAxisDetails::apply() +void AxisDetails::setScaleFont() { - if (!(d_app && d_graph && valid()) || !m_modified) - return; - - Table *w = d_app->table(cmbColName->currentText()); - - QString formula = txtFormula->text(); - if (!chkShowFormula->isChecked()) - { - formula = QString(); - } - - int type = cmbAxisType->currentIndex(); - QString formatInfo = cmbColName->currentText(); - if (type == ScaleDraw::Day || type == ScaleDraw::Month) - { - formatInfo = QString::number(cmbFormat->currentIndex()); - } - else if (type == ScaleDraw::Time || type == ScaleDraw::Date) + bool okF; + QFont oldFont = d_graph->axisFont(m_mappedaxis); + QFont fnt = QFontDialog::getFont(&okF, oldFont, this); + if (okF && fnt != oldFont) { - QStringList lst = d_graph->axisFormatInfo(m_mappedaxis).split(";", QString::SkipEmptyParts); - lst[1] = cmbFormat->currentText(); - formatInfo = lst.join(";"); - } - - d_graph->showAxis(m_mappedaxis, cmbAxisType->currentIndex(), formatInfo, w, chkShowAxis->isChecked(), cmbMajorTicksType->currentIndex(), - cmbMinorTicksType->currentIndex(), grpShowLabels->isChecked(), cbtnAxisColor->color(), cmbFormat->currentIndex(), spnPrecision->value(), spnAngle->value(), spnBaseline->value(), formula, - cbtnAxisNumColor->color()); - d_graph->setAxisTitle(m_mappedaxis, txtTitle->text()); - d_graph->setAxisFont(m_mappedaxis, m_scaleFont); - d_graph->setAxisTitleFont(m_mappedaxis, m_labelFont); - m_modified = false; + m_scaleFont = fnt; + } } \ No newline at end of file diff --git a/Code/Mantid/MantidPlot/src/AxisAxisDetails.h b/Code/Mantid/MantidPlot/src/AxisDetails.h similarity index 91% rename from Code/Mantid/MantidPlot/src/AxisAxisDetails.h rename to Code/Mantid/MantidPlot/src/AxisDetails.h index 2fe3370e7d0ed947563ac9b91b6f8ddafa4d8980..9d868c33f457819d36c39c1233b6dc686e9b3d91 100644 --- a/Code/Mantid/MantidPlot/src/AxisAxisDetails.h +++ b/Code/Mantid/MantidPlot/src/AxisDetails.h @@ -25,8 +25,8 @@ File change history is stored at: <https://github.com/mantidproject/mantid> Code Documentation is available at: <http://doxygen.mantidproject.org> */ -#ifndef AXISAXISDETAILS_H_ -#define AXISAXISDETAILS_H_ +#ifndef AXISDETAILS_H_ +#define AXISDETAILS_H_ #include <QWidget> #include <QList> @@ -48,15 +48,15 @@ class Graph; class TextFormatButtons; class ColorButton; -class AxisAxisDetails: public QWidget +class AxisDetails: public QWidget { Q_OBJECT //details for each axis in the Axis tab public: - AxisAxisDetails(ApplicationWindow* app, Graph* graph, int mappedaxis, QWidget *parent = 0); // populate and fill in with existing data - virtual ~AxisAxisDetails(); + AxisDetails(ApplicationWindow* app, Graph* graph, int mappedaxis, QWidget *parent = 0); // populate and fill in with existing data + virtual ~AxisDetails(); void initWidgets(); - bool modified(); + bool modified(){return m_modified;} void apply(); bool valid(); @@ -110,4 +110,4 @@ QFont m_labelFont, m_scaleFont; void updateLabelsFormat(int); void setBaselineDist(int); }; -#endif /* AXISAXISDETAILS_H_ */ \ No newline at end of file +#endif /* AxisDetails_H_ */ \ No newline at end of file diff --git a/Code/Mantid/MantidPlot/src/GridDetails.cpp b/Code/Mantid/MantidPlot/src/GridDetails.cpp index 0fb65e1546fc84059401b9f10e9c945d2ce202ca..1689fbbe621a297459dd77590c45188bae2070c1 100644 --- a/Code/Mantid/MantidPlot/src/GridDetails.cpp +++ b/Code/Mantid/MantidPlot/src/GridDetails.cpp @@ -9,14 +9,103 @@ #include "qwt_compat.h" #include "Plot.h" #include "plot2D/ScaleEngine.h" +#include "DoubleSpinBox.h" #include <QWidget> +#include <QCheckBox> +#include <QComboBox> +#include <QLabel> +#include <QGridLayout> +#include <ColorBox.h> +#include <Grid.h> -GridDetails::GridDetails(ApplicationWindow* app, Graph* graph, QWidget *parent) : QWidget(parent) +GridDetails::GridDetails(ApplicationWindow* app, Graph* graph, int alignment, QWidget *parent) : QWidget(parent) { d_app = app; d_graph = graph; m_initialised = false; + m_alignment = alignment; + + QGridLayout * rightLayout = new QGridLayout(this); + + boxMajorGrid = new QCheckBox(); + boxMajorGrid->setText(tr("Major Grids")); + boxMajorGrid->setChecked(true); + rightLayout->addWidget(boxMajorGrid, 0, 1); + + boxMinorGrid = new QCheckBox(); + boxMinorGrid->setText(tr("Minor Grids")); + boxMinorGrid->setChecked(false); + rightLayout->addWidget(boxMinorGrid, 0, 2); + + rightLayout->addWidget(new QLabel(tr("Line Color")), 1, 0); + + boxColorMajor = new ColorBox(0); + rightLayout->addWidget(boxColorMajor, 1, 1); + + boxColorMinor = new ColorBox(0); + boxColorMinor->setDisabled(true); + rightLayout->addWidget(boxColorMinor, 1, 2); + + rightLayout->addWidget(new QLabel(tr("Line Type")), 2, 0); + + boxTypeMajor = new QComboBox(); + boxTypeMajor->addItem("_____"); + boxTypeMajor->addItem("- - -"); + boxTypeMajor->addItem("....."); + boxTypeMajor->addItem("_._._"); + boxTypeMajor->addItem("_.._.."); + rightLayout->addWidget(boxTypeMajor, 2, 1); + + boxTypeMinor = new QComboBox(); + boxTypeMinor->addItem("_____"); + boxTypeMinor->addItem("- - -"); + boxTypeMinor->addItem("....."); + boxTypeMinor->addItem("_._._"); + boxTypeMinor->addItem("_.._.."); + boxTypeMinor->setDisabled(true); + rightLayout->addWidget(boxTypeMinor, 2, 2); + + rightLayout->addWidget(new QLabel(tr("Thickness")), 3, 0); + + boxWidthMajor = new DoubleSpinBox('f'); + boxWidthMajor->setLocale(d_app->locale()); + boxWidthMajor->setSingleStep(0.1); + boxWidthMajor->setRange(0.1, 20); + boxWidthMajor->setValue(1); + rightLayout->addWidget(boxWidthMajor, 3, 1); + + boxWidthMinor = new DoubleSpinBox('f'); + boxWidthMinor->setLocale(d_app->locale()); + boxWidthMinor->setSingleStep(0.1); + boxWidthMinor->setRange(0.1, 20); + boxWidthMinor->setValue(1); + boxWidthMinor->setDisabled(true); + rightLayout->addWidget(boxWidthMinor, 3, 2); + + rightLayout->addWidget(new QLabel(tr("Axis")), 4, 0); + + boxGridAxis = new QComboBox(); + if (m_alignment == 1) + { + boxGridAxis->insertItem(tr("Bottom")); + boxGridAxis->insertItem(tr("Top")); + boxZeroLine = new QCheckBox(tr("X=0")); + } + else + { + boxGridAxis->insertItem(tr("Left")); + boxGridAxis->insertItem(tr("Right")); + boxZeroLine = new QCheckBox(tr("Y=0")); + } + rightLayout->addWidget(boxGridAxis, 4, 1); + + rightLayout->addWidget(new QLabel(tr("Additional lines")), 5, 0); + + rightLayout->addWidget(boxZeroLine, 5, 1); + + rightLayout->setRowStretch(7, 1); + rightLayout->setColumnStretch(4, 1); initWidgets(); } @@ -35,8 +124,68 @@ void GridDetails::initWidgets() else { Plot *p = d_graph->plotWidget(); - + Grid *grd = dynamic_cast<Grid *>(d_graph->plotWidget()->grid()); + if (!grd) + { + return; + } + + if (m_alignment == 1) + { + boxMajorGrid->setChecked(grd->xEnabled()); + boxMinorGrid->setChecked(grd->xMinEnabled()); + + QPen majPenX = grd->majPenX(); + boxTypeMajor->setCurrentIndex(majPenX.style() - 1); + boxColorMajor->setColor(majPenX.color()); + boxWidthMajor->setValue(majPenX.widthF()); + + QPen minPenX = grd->minPenX(); + boxTypeMinor->setCurrentItem(minPenX.style() - 1); + boxColorMinor->setColor(minPenX.color()); + boxWidthMinor->setValue(minPenX.widthF()); + + boxGridAxis->setCurrentIndex(grd->xAxis() - 2); + boxZeroLine->setChecked(grd->xZeroLineEnabled()); + } + else + { + boxMajorGrid->setChecked(grd->yEnabled()); + boxMinorGrid->setChecked(grd->yMinEnabled()); + + QPen majPenY = grd->majPenY(); + boxTypeMajor->setCurrentIndex(majPenY.style() - 1); + boxColorMajor->setColor(majPenY.color()); + boxWidthMajor->setValue(majPenY.widthF()); + + QPen minPenY = grd->minPenY(); + boxTypeMinor->setCurrentItem(minPenY.style() - 1); + boxColorMinor->setColor(minPenY.color()); + boxWidthMinor->setValue(minPenY.widthF()); + + boxGridAxis->setCurrentIndex(grd->yAxis()); + boxZeroLine->setChecked(grd->yZeroLineEnabled()); + } + + bool majorOn = boxMajorGrid->isChecked(); + majorGridEnabled(majorOn); + + bool minorOn = boxMinorGrid->isChecked(); + minorGridEnabled(minorOn); + connect(boxMajorGrid, SIGNAL(toggled(bool)), this, SLOT(majorGridEnabled(bool))); + connect(boxMinorGrid, SIGNAL(toggled(bool)), this, SLOT(minorGridEnabled(bool))); + + connect(boxMajorGrid, SIGNAL(clicked()), this, SLOT(setModified())); + connect(boxMinorGrid, SIGNAL(clicked()), this, SLOT(setModified())); + connect(boxZeroLine, SIGNAL(clicked()), this, SLOT(setModified())); + connect(boxColorMinor, SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(boxColorMajor, SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(boxTypeMajor, SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(boxTypeMinor, SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(boxGridAxis, SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(boxWidthMajor, SIGNAL(valueChanged(double)), this, SLOT(setModified())); + connect(boxWidthMinor, SIGNAL(valueChanged(double)), this, SLOT(setModified())); m_modified = false; m_initialised = true; @@ -48,15 +197,46 @@ void GridDetails::setModified() m_modified = true; } -bool GridDetails::valid() +void GridDetails::apply(Grid *grid, bool antialias) { - return true; + if (m_modified && grid) + { + if (m_alignment == 1) + { + grid->enableX(boxMajorGrid->isChecked()); + grid->enableXMin(boxMinorGrid->isChecked()); + grid->setXAxis(boxGridAxis->currentIndex() + 2); + + grid->setMajPenX(QPen(ColorBox::color(boxColorMajor->currentIndex()), boxWidthMajor->value(), Graph::getPenStyle(boxTypeMajor->currentIndex()))); + grid->setMinPenX(QPen(ColorBox::color(boxColorMinor->currentIndex()), boxWidthMinor->value(), Graph::getPenStyle(boxTypeMinor->currentIndex()))); + grid->enableZeroLineX(boxZeroLine->isChecked()); + } + else + { + grid->enableY(boxMajorGrid->isChecked()); + grid->enableYMin(boxMinorGrid->isChecked()); + grid->setYAxis(boxGridAxis->currentIndex()); + + grid->setMajPenY(QPen(ColorBox::color(boxColorMajor->currentIndex()), boxWidthMajor->value(), Graph::getPenStyle(boxTypeMajor->currentIndex()))); + grid->setMinPenY(QPen(ColorBox::color(boxColorMinor->currentIndex()), boxWidthMinor->value(), Graph::getPenStyle(boxTypeMinor->currentIndex()))); + grid->enableZeroLineY(boxZeroLine->isChecked()); + } + + grid->setRenderHint(QwtPlotItem::RenderAntialiased, antialias); + m_modified = false; + } } -void GridDetails::apply() +void GridDetails::majorGridEnabled(bool on) { - if (!(d_app && d_graph && valid()) || !m_modified) - return; + boxTypeMajor->setEnabled(on); + boxColorMajor->setEnabled(on); + boxWidthMajor->setEnabled(on); +} - m_modified = false; +void GridDetails::minorGridEnabled(bool on) +{ + boxTypeMinor->setEnabled(on); + boxColorMinor->setEnabled(on); + boxWidthMinor->setEnabled(on); } \ No newline at end of file diff --git a/Code/Mantid/MantidPlot/src/GridDetails.h b/Code/Mantid/MantidPlot/src/GridDetails.h index 9b73d18a877d5bd5d77fe317fe0e2ed858a96ae3..f54a8a164ce889923502345287bf2d774c9438d4 100644 --- a/Code/Mantid/MantidPlot/src/GridDetails.h +++ b/Code/Mantid/MantidPlot/src/GridDetails.h @@ -30,28 +30,40 @@ Code Documentation is available at: <http://doxygen.mantidproject.org> #include <QWidget> #include <QList> +#include <DoubleSpinBox.h> class ApplicationWindow; class Graph; +class QCheckBox; +class ColorBox; +class QComboBox; +class DoubleSpinBox; +class Grid; //The grid tab class GridDetails: public QWidget { Q_OBJECT public: - GridDetails(ApplicationWindow* app, Graph* graph, QWidget *parent = 0); // populate and fill in with existing data + GridDetails(ApplicationWindow* app, Graph* graph, int alignment, QWidget *parent = 0); // populate and fill in with existing data virtual ~GridDetails(); void initWidgets(); - bool modified(){return m_modified;}; - void apply(); - bool valid(); + bool modified(){return m_modified;} + void apply(Grid *grid, bool antialias); public slots: + void setModified(); private slots: - void setModified(); + void majorGridEnabled(bool on); + void minorGridEnabled(bool on); private: bool m_modified, m_initialised; + QCheckBox *boxMajorGrid, *boxMinorGrid, *boxZeroLine; + ColorBox *boxColorMinor, *boxColorMajor; + QComboBox *boxTypeMajor, *boxTypeMinor, *boxGridAxis; + DoubleSpinBox *boxWidthMajor, *boxWidthMinor; ApplicationWindow* d_app; Graph* d_graph; + int m_alignment; //0 = horzontal, 1 = vertical, anything else sets this to 0; }; #endif /* GRIDDETAILS_H_ */ \ No newline at end of file diff --git a/Code/Mantid/MantidPlot/src/ScaleAxisDetails.cpp b/Code/Mantid/MantidPlot/src/ScaleDetails.cpp similarity index 63% rename from Code/Mantid/MantidPlot/src/ScaleAxisDetails.cpp rename to Code/Mantid/MantidPlot/src/ScaleDetails.cpp index 9a8bfdbd4226118520fe780a02bc3aa977efb055..c2ac05f2e25b1f661df343a8c08f4d4d03b2a7ea 100644 --- a/Code/Mantid/MantidPlot/src/ScaleAxisDetails.cpp +++ b/Code/Mantid/MantidPlot/src/ScaleDetails.cpp @@ -2,7 +2,7 @@ // Includes //-------------------------- -#include "ScaleAxisDetails.h" +#include "ScaleDetails.h" #include "ApplicationWindow.h" #include "DoubleSpinBox.h" #include <qwt_scale_widget.h> @@ -14,9 +14,9 @@ #include <QWidget> #include <QSpinBox> #include <QCheckBox> -#include <QRadioButton> -#include <QGroupBox> #include <QComboBox> +#include <QGroupBox> +#include <QRadioButton> #include <QLabel> #include <QDateTimeEdit> #include <QTimeEdit> @@ -33,12 +33,14 @@ #include <ColorButton.h> #include <QFontDialog> -ScaleAxisDetails::ScaleAxisDetails(ApplicationWindow* app, Graph* graph, int mappedaxis, QWidget *parent) : QWidget(parent) +ScaleDetails::ScaleDetails(ApplicationWindow* app, Graph* graph, int mappedaxis, QWidget *parent) : QWidget(parent) { d_app = app; d_graph = graph; m_mappedaxis = mappedaxis; m_initialised = false; + m_modified = false; + QGroupBox * middleBox = new QGroupBox(QString()); QGridLayout * middleLayout = new QGridLayout(middleBox); @@ -197,73 +199,18 @@ ScaleAxisDetails::ScaleAxisDetails(ApplicationWindow* app, Graph* graph, int map vl->addLayout(hl); vl->addWidget(grpAxesBreaks); - //// these bypass Apply() - //connect(chkInvert,SIGNAL(clicked()), this, SLOT(updatePlot())); - //connect(cmbScaleType,SIGNAL(activated(int)), this, SLOT(updateMinorTicksList(int))); - //connect(dspnEnd, SIGNAL(valueChanged(double)), this, SLOT(endvalueChanged(double))); - //connect(dspnStart, SIGNAL(valueChanged(double)), this, SLOT(startvalueChanged(double))); - //// connect(radStep, SIGNAL(clicked()), this, SLOT(radiosSwitched())); connect(radMajor, SIGNAL(clicked()), this, SLOT(radiosSwitched())); + initWidgets(); } -ScaleAxisDetails::~ScaleAxisDetails() -{ -} -void ScaleAxisDetails::setModified() +ScaleDetails::~ScaleDetails() { - m_modified = true; -} -void ScaleAxisDetails::radiosSwitched() -{ - if (radStep->isChecked()) - { - dspnStep->setEnabled(true); - spnMajorValue->setEnabled(false); - } - else if (radStep->isChecked()) - { - - dspnStep->setEnabled(false); - spnMajorValue->setEnabled(true); - } - else - { - radStep->setChecked(true); - dspnStep->setEnabled(true); - spnMajorValue->setEnabled(false); - } -} - -/** -slot called when the To spinbox value changed -*/ -/* -void ScaleAxisDetails::endvalueChanged(double endVal) -{ -//these bypass apply -(void) endVal; -if(d_graph) -d_graph->changeIntensity( true); } -void ScaleAxisDetails::startvalueChanged(double startVal) -{ -//is this even doing anything? -(void) startVal; -if(d_graph) -d_graph->changeIntensity( true); -} -void ScaleAxisDetails::updateMinorTicksList(int scaleType) -{ -//is this even doing anything? -(void) scaleType; -} -*/ - -void ScaleAxisDetails::initWidgets() +void ScaleDetails::initWidgets() { if (m_initialised) { @@ -278,8 +225,7 @@ void ScaleAxisDetails::initWidgets() ScaleDraw::ScaleType type = d_graph->axisType(m_mappedaxis); if (type == ScaleDraw::Date) { - ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_plot->axisScaleDraw( - m_mappedaxis)); + ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_plot->axisScaleDraw(m_mappedaxis)); QDateTime origin = sclDraw->dateTimeOrigin(); dspnStart->hide(); @@ -302,8 +248,7 @@ void ScaleAxisDetails::initWidgets() } else if (type == ScaleDraw::Time) { - ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_plot->axisScaleDraw( - m_mappedaxis)); + ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_plot->axisScaleDraw(m_mappedaxis)); QTime origin = sclDraw->dateTimeOrigin().time(); dspnStart->hide(); @@ -347,15 +292,22 @@ void ScaleAxisDetails::initWidgets() if (sc_engine) { if (sc_engine->axisBreakLeft() > -DBL_MAX) + { dspnBreakStart->setValue(sc_engine->axisBreakLeft()); + } else + { dspnBreakStart->setValue(start + 0.25 * range); + } if (sc_engine->axisBreakRight() < DBL_MAX) + { dspnBreakEnd->setValue(sc_engine->axisBreakRight()); + } else + { dspnBreakEnd->setValue(start + 0.75 * range); - + } grpAxesBreaks->setChecked(sc_engine->hasBreak()); spnBreakPosition->setValue(sc_engine->breakPosition()); @@ -366,29 +318,30 @@ void ScaleAxisDetails::initWidgets() QwtScaleTransformation::Type scale_type = sc_engine->type(); cmbMinorTicksBeforeBreak->clear(); if (scale_type == QwtScaleTransformation::Log10) - cmbMinorTicksBeforeBreak->addItems( - QStringList() << "0" << "2" << "4" << "8"); + { + cmbMinorTicksBeforeBreak->addItems(QStringList() << "0" << "2" << "4" << "8"); + } else - cmbMinorTicksBeforeBreak->addItems( - QStringList() << "0" << "1" << "4" << "9" << "14" << "19"); - cmbMinorTicksBeforeBreak->setEditText( - QString::number(sc_engine->minTicksBeforeBreak())); + { + cmbMinorTicksBeforeBreak->addItems(QStringList() << "0" << "1" << "4" << "9" << "14" << "19"); + } + cmbMinorTicksBeforeBreak->setEditText(QString::number(sc_engine->minTicksBeforeBreak())); - cmbMinorTicksAfterBreak->setEditText( - QString::number(sc_engine->minTicksAfterBreak())); + cmbMinorTicksAfterBreak->setEditText(QString::number(sc_engine->minTicksAfterBreak())); chkLog10AfterBreak->setChecked(sc_engine->log10ScaleAfterBreak()); chkBreakDecoration->setChecked(sc_engine->hasBreakDecoration()); chkInvert->setChecked(sc_engine->testAttribute(QwtScaleEngine::Inverted)); cmbScaleType->setCurrentItem(scale_type); cmbMinorValue->clear(); if (scale_type == QwtScaleTransformation::Log10) + { cmbMinorValue->addItems(QStringList() << "0" << "2" << "4" << "8"); + } else - cmbMinorValue->addItems( - QStringList() << "0" << "1" << "4" << "9" << "14" << "19"); - - cmbMinorValue->setEditText( - QString::number(d_plot->axisMaxMinor(m_mappedaxis))); + { + cmbMinorValue->addItems(QStringList() << "0" << "1" << "4" << "9" << "14" << "19"); + } + cmbMinorValue->setEditText(QString::number(d_plot->axisMaxMinor(m_mappedaxis))); bool isColorMap = d_graph->isColorBarEnabled(m_mappedaxis); grpAxesBreaks->setEnabled(!isColorMap); @@ -396,7 +349,6 @@ void ScaleAxisDetails::initWidgets() { grpAxesBreaks->setChecked(false); } - } else { @@ -408,115 +360,174 @@ void ScaleAxisDetails::initWidgets() spnMajorValue->setValue(lst.count()); checkstep(); + + connect(grpAxesBreaks,SIGNAL(clicked()), this, SLOT(setModified())); + connect(chkInvert,SIGNAL(clicked()), this, SLOT(setModified())); + connect(chkLog10AfterBreak,SIGNAL(clicked()), this, SLOT(setModified())); + connect(chkBreakDecoration,SIGNAL(clicked()), this, SLOT(setModified())); + connect(radStep,SIGNAL(clicked()), this, SLOT(setModified())); + connect(radMajor,SIGNAL(clicked()), this, SLOT(setModified())); + connect(cmbMinorTicksBeforeBreak,SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(cmbMinorTicksAfterBreak,SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(cmbMinorValue,SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(cmbUnit,SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(cmbScaleType,SIGNAL(currentIndexChanged(int)), this, SLOT(setModified())); + connect(dspnEnd, SIGNAL(valueChanged(double)), this, SLOT(setModified())); + connect(dspnStart, SIGNAL(valueChanged(double)), this, SLOT(setModified())); + connect(dspnStep, SIGNAL(valueChanged(double)), this, SLOT(setModified())); + connect(dspnBreakStart, SIGNAL(valueChanged(double)), this, SLOT(setModified())); + connect(dspnStepBeforeBreak, SIGNAL(valueChanged(double)), this, SLOT(setModified())); + connect(dspnStepAfterBreak, SIGNAL(valueChanged(double)), this, SLOT(setModified())); + connect(dspnBreakEnd, SIGNAL(valueChanged(double)), this, SLOT(setModified())); + connect(spnMajorValue, SIGNAL(valueChanged(int)), this, SLOT(setModified())); + connect(spnBreakPosition, SIGNAL(valueChanged(int)), this, SLOT(setModified())); + connect(spnBreakWidth, SIGNAL(valueChanged(int)), this, SLOT(setModified())); + connect(dteStartDateTime, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(setModified())); + connect(dteStartDateTime, SIGNAL(dateChanged(QDate)), this, SLOT(setModified())); + connect(dteStartDateTime, SIGNAL(timeChanged(QTime)), this, SLOT(setModified())); + connect(dteEndDateTime, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(setModified())); + connect(dteEndDateTime, SIGNAL(dateChanged(QDate)), this, SLOT(setModified())); + connect(dteEndDateTime, SIGNAL(timeChanged(QTime)), this, SLOT(setModified())); + connect(timStartTime, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(setModified())); + connect(timStartTime, SIGNAL(dateChanged(QDate)), this, SLOT(setModified())); + connect(timStartTime, SIGNAL(timeChanged(QTime)), this, SLOT(setModified())); + connect(timEndTime, SIGNAL(dateTimeChanged(QDateTime)), this, SLOT(setModified())); + connect(timEndTime, SIGNAL(dateChanged(QDate)), this, SLOT(setModified())); + connect(timEndTime, SIGNAL(timeChanged(QTime)), this, SLOT(setModified())); + m_initialised = true; } } -void ScaleAxisDetails::checkstep() +bool ScaleDetails::valid() { - if (dspnStep->value() != 0.0) - { - radStep->setChecked(true); - dspnStep->setEnabled(true); - cmbUnit->setEnabled(true); - - radMajor->setChecked(false); - spnMajorValue->setEnabled(false); - } - else - { - radStep->setChecked(false); - dspnStep->setEnabled(false); - cmbUnit->setEnabled(false); - radMajor->setChecked(true); - spnMajorValue->setEnabled(true); - } + // QMessageBox::warning(this,tr("MantidPlot - Error"), "Invalid option to set the 'From' greater than 'To' for the scale settings.\nOperation aborted! "); + return m_initialised && d_app && d_graph && !(dspnStart->value() >= dspnEnd->value()); } -void ScaleAxisDetails::apply() +void ScaleDetails::apply() { - ScaleDraw::ScaleType type = d_graph->axisType(m_mappedaxis); - - double start = 0.0, end = 0.0; - if (type == ScaleDraw::Date) - { - ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_graph->plotWidget()->axisScaleDraw(m_mappedaxis)); - QDateTime origin = sclDraw->dateTimeOrigin(); - start = (double)origin.secsTo(dteStartDateTime->dateTime()); - end = (double)origin.secsTo(dteEndDateTime->dateTime()); - } - else if (type == ScaleDraw::Time) - { - ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_graph->plotWidget()->axisScaleDraw(m_mappedaxis)); - QTime origin = sclDraw->dateTimeOrigin().time(); - start = (double)origin.msecsTo(timStartTime->time()); - end = (double)origin.msecsTo(timEndTime->time()); - } - else + if (m_modified && valid()) { - start = dspnStart->value(); - end = dspnEnd->value(); - } + //as the classes are separate now this may cause a problem as ideally i'd get this from the axis tab, + //but at the moment there's nothing to cause a problem as the only other cases that are used are Date + //and Time and Mantid doesn't support them in data yet i've been told + ScaleDraw::ScaleType type = d_graph->axisType(m_mappedaxis); - if (start >= end) - { - QMessageBox::warning(this,tr("MantidPlot - Error"), - "Invalid option to set the 'From' greater than 'To' for the scale settings.\nOperation aborted! "); - - //throw? validate? - return; - } + double start = 0.0, end = 0.0, step = 0.0, breakLeft = -DBL_MAX, breakRight = DBL_MAX; + if (type == ScaleDraw::Date) + { + ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_graph->plotWidget()->axisScaleDraw(m_mappedaxis)); + QDateTime origin = sclDraw->dateTimeOrigin(); + start = (double)origin.secsTo(dteStartDateTime->dateTime()); + end = (double)origin.secsTo(dteEndDateTime->dateTime()); + } + else if (type == ScaleDraw::Time) + { + ScaleDraw *sclDraw = dynamic_cast<ScaleDraw *>(d_graph->plotWidget()->axisScaleDraw(m_mappedaxis)); + QTime origin = sclDraw->dateTimeOrigin().time(); + start = (double)origin.msecsTo(timStartTime->time()); + end = (double)origin.msecsTo(timEndTime->time()); + } + else + { + start = dspnStart->value(); + end = dspnEnd->value(); + } - double step = 0.0; - if (radStep->isChecked()) - { - step = dspnStep->value(); - if (type == ScaleDraw::Time) + if (radStep->isChecked()) { - switch (cmbUnit->currentIndex()) + step = dspnStep->value(); + if (type == ScaleDraw::Time) { - case 0: - break; - case 1: - step *= 1e3; - break; - case 2: - step *= 6e4; - break; - case 3: - step *= 36e5; - break; + switch (cmbUnit->currentIndex()) + { + case 0: + break; + case 1: + step *= 1e3; + break; + case 2: + step *= 6e4; + break; + case 3: + step *= 36e5; + break; + } } - } - else if (type == ScaleDraw::Date) - { - switch (cmbUnit->currentIndex()) + else if (type == ScaleDraw::Date) { - case 0: - step *= 86400; - break; - case 1: - step *= 604800; - break; + switch (cmbUnit->currentIndex()) + { + case 0: + step *= 86400; + break; + case 1: + step *= 604800; + break; + } } } + + if (grpAxesBreaks->isChecked()) + { + breakLeft = qMin(dspnBreakStart->value(), dspnBreakEnd->value()); + breakRight = qMax(dspnBreakStart->value(), dspnBreakEnd->value()); + } + d_graph->setScale(m_mappedaxis, start, end, step, spnMajorValue->value(), cmbMinorValue->currentText().toInt(), + cmbScaleType->currentIndex(), chkInvert->isChecked(), breakLeft, breakRight, spnBreakPosition->value(), + dspnStepBeforeBreak->value(),dspnStepAfterBreak->value(), cmbMinorTicksBeforeBreak->currentText().toInt(), + cmbMinorTicksAfterBreak->currentText().toInt(), chkLog10AfterBreak->isChecked(), spnBreakWidth->value(), chkBreakDecoration->isChecked()); + d_graph->changeIntensity(true); + d_graph->notifyChanges(); + m_modified = false; } +} + +void ScaleDetails::setModified() +{ + m_modified = true; +} - double breakLeft = -DBL_MAX, breakRight = DBL_MAX; - if (grpAxesBreaks->isChecked()) +void ScaleDetails::radiosSwitched() +{ + if (radStep->isChecked()) { - breakLeft = qMin(dspnBreakStart->value(), dspnBreakEnd->value()); - breakRight = qMax(dspnBreakStart->value(), dspnBreakEnd->value()); + dspnStep->setEnabled(true); + spnMajorValue->setEnabled(false); } + else if (radStep->isChecked()) + { - d_graph->setScale(m_mappedaxis, start, end, step, spnMajorValue->value(), cmbMinorValue->currentText().toInt(), - cmbScaleType->currentIndex(), chkInvert->isChecked(), breakLeft, breakRight, spnBreakPosition->value(), - dspnStepBeforeBreak->value(),dspnStepAfterBreak->value(), cmbMinorTicksBeforeBreak->currentText().toInt(), - cmbMinorTicksAfterBreak->currentText().toInt(), chkLog10AfterBreak->isChecked(), spnBreakWidth->value(), chkBreakDecoration->isChecked()); - d_graph->notifyChanges(); + dspnStep->setEnabled(false); + spnMajorValue->setEnabled(true); + } + else + { + radStep->setChecked(true); + dspnStep->setEnabled(true); + spnMajorValue->setEnabled(false); + } } -bool ScaleAxisDetails::valid() +void ScaleDetails::checkstep() { -return true; -} \ No newline at end of file + if (dspnStep->value() != 0.0) + { + radStep->setChecked(true); + dspnStep->setEnabled(true); + cmbUnit->setEnabled(true); + + radMajor->setChecked(false); + spnMajorValue->setEnabled(false); + } + else + { + radStep->setChecked(false); + dspnStep->setEnabled(false); + cmbUnit->setEnabled(false); + radMajor->setChecked(true); + spnMajorValue->setEnabled(true); + } +} + diff --git a/Code/Mantid/MantidPlot/src/ScaleAxisDetails.h b/Code/Mantid/MantidPlot/src/ScaleDetails.h similarity index 90% rename from Code/Mantid/MantidPlot/src/ScaleAxisDetails.h rename to Code/Mantid/MantidPlot/src/ScaleDetails.h index 75d5a0cf164141c1322d5a6811cc227673423d8a..a9ab056f043fa8a2e9693f8f132b8f75d6673097 100644 --- a/Code/Mantid/MantidPlot/src/ScaleAxisDetails.h +++ b/Code/Mantid/MantidPlot/src/ScaleDetails.h @@ -25,8 +25,8 @@ File change history is stored at: <https://github.com/mantidproject/mantid> Code Documentation is available at: <http://doxygen.mantidproject.org> */ -#ifndef SCALEAXISDETAILS_H_ -#define SCALEAXISDETAILS_H_ +#ifndef SCALEDETAILS_H_ +#define SCALEDETAILS_H_ #include <QWidget> #include <QList> @@ -48,15 +48,15 @@ class Graph; class TextFormatButtons; class ColorButton; -class ScaleAxisDetails: public QWidget +class ScaleDetails: public QWidget { Q_OBJECT //details for each axis in the Scale Tab public: - ScaleAxisDetails(ApplicationWindow* app, Graph* graph, int mappedaxis, QWidget *parent = 0); // populate and fill in with existing data - virtual ~ScaleAxisDetails(); + ScaleDetails(ApplicationWindow* app, Graph* graph, int mappedaxis, QWidget *parent = 0); // populate and fill in with existing data + virtual ~ScaleDetails(); void initWidgets(); - bool modified(); + bool modified(){return m_modified;} void apply(); bool valid(); @@ -95,4 +95,4 @@ private: void checkstep(); }; -#endif /* SCALEAXISDETAILS_H_ */ +#endif /* ScaleDetails_H_ */