<html> <head> <link rel="stylesheet" href="page.css" type="text/css"> <title>fox-toolkit.org - Documentation</title> </head> <body bgcolor=#ffffff link=#990033 vlink=#990033 alink=#990033 text=#000000> <font face='verdana,sans-serif' size=2 > <!---- TOPIC TITLE WITH LOGO---> <table border=0 cellpadding= cellspacing=2 width=100% ><tr><td><a href='http://www.fox-toolkit.org/doc.html'><img src='../art/foxlogo_small.jpg' border=0></a></td><td width=100% valign=bottom><font face='verdana,sans-serif' size=2 ><b> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <br><img src='../art/line.gif' width=100% height=1></b></font></td></tr></table> <p> <!--- TOPIC TITLE WITH LOGO ---> <!-- Generated by Doxygen 1.3.3 --> <h1>FXSlider.h</h1><div class="fragment"><pre>00001 <span class="comment">/********************************************************************************</span> 00002 <span class="comment">* *</span> 00003 <span class="comment">* S l i d e r W i d g e t *</span> 00004 <span class="comment">* *</span> 00005 <span class="comment">*********************************************************************************</span> 00006 <span class="comment">* Copyright (C) 1997,2004 by Jeroen van der Zijp. All Rights Reserved. *</span> 00007 <span class="comment">*********************************************************************************</span> 00008 <span class="comment">* This library is free software; you can redistribute it and/or *</span> 00009 <span class="comment">* modify it under the terms of the GNU Lesser General Public *</span> 00010 <span class="comment">* License as published by the Free Software Foundation; either *</span> 00011 <span class="comment">* version 2.1 of the License, or (at your option) any later version. *</span> 00012 <span class="comment">* *</span> 00013 <span class="comment">* This library is distributed in the hope that it will be useful, *</span> 00014 <span class="comment">* but WITHOUT ANY WARRANTY; without even the implied warranty of *</span> 00015 <span class="comment">* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *</span> 00016 <span class="comment">* Lesser General Public License for more details. *</span> 00017 <span class="comment">* *</span> 00018 <span class="comment">* You should have received a copy of the GNU Lesser General Public *</span> 00019 <span class="comment">* License along with this library; if not, write to the Free Software *</span> 00020 <span class="comment">* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *</span> 00021 <span class="comment">*********************************************************************************</span> 00022 <span class="comment">* $Id: FXSlider.h,v 1.35 2004/02/08 17:17:34 fox Exp $ *</span> 00023 <span class="comment">********************************************************************************/</span> 00024 <span class="preprocessor">#ifndef FXSLIDER_H</span> 00025 <span class="preprocessor"></span><span class="preprocessor">#define FXSLIDER_H</span> 00026 <span class="preprocessor"></span> 00027 <span class="preprocessor">#ifndef FXFRAME_H</span> 00028 <span class="preprocessor"></span><span class="preprocessor">#include "FXFrame.h"</span> 00029 <span class="preprocessor">#endif</span> 00030 <span class="preprocessor"></span> 00031 <span class="keyword">namespace </span>FX { 00032 00033 00034 <span class="comment"></span> 00035 <span class="comment">/// Slider Control styles</span> 00036 <span class="comment"></span><span class="keyword">enum</span> { 00037 <a class="code" href="group__FXSlider__0.html#a0a1994">SLIDER_HORIZONTAL</a> = 0, <span class="comment">/// Slider shown horizontally</span> 00038 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a1995">SLIDER_VERTICAL</a> = 0x00008000, <span class="comment">/// Slider shown vertically</span> 00039 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a1996">SLIDER_ARROW_UP</a> = 0x00010000, <span class="comment">/// Slider has arrow head pointing up</span> 00040 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a1997">SLIDER_ARROW_DOWN</a> = 0x00020000, <span class="comment">/// Slider has arrow head pointing down</span> 00041 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a1998">SLIDER_ARROW_LEFT</a> = <a class="code" href="group__FXSlider__0.html#a0a1996">SLIDER_ARROW_UP</a>, <span class="comment">/// Slider has arrow head pointing left</span> 00042 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a1999">SLIDER_ARROW_RIGHT</a> = <a class="code" href="group__FXSlider__0.html#a0a1997">SLIDER_ARROW_DOWN</a>, <span class="comment">/// Slider has arrow head pointing right</span> 00043 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a2000">SLIDER_INSIDE_BAR</a> = 0x00040000, <span class="comment">/// Slider is inside the slot rather than overhanging</span> 00044 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a2001">SLIDER_TICKS_TOP</a> = 0x00080000, <span class="comment">/// Ticks on the top of horizontal slider</span> 00045 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a2002">SLIDER_TICKS_BOTTOM</a> = 0x00100000, <span class="comment">/// Ticks on the bottom of horizontal slider</span> 00046 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a2003">SLIDER_TICKS_LEFT</a> = <a class="code" href="group__FXSlider__0.html#a0a2001">SLIDER_TICKS_TOP</a>, <span class="comment">/// Ticks on the left of vertical slider</span> 00047 <span class="comment"></span> <a class="code" href="group__FXSlider__0.html#a0a2004">SLIDER_TICKS_RIGHT</a> = <a class="code" href="group__FXSlider__0.html#a0a2002">SLIDER_TICKS_BOTTOM</a>, <span class="comment">/// Ticks on the right of vertical slider</span> 00048 <span class="comment"></span> SLIDER_NORMAL = <a class="code" href="group__FXSlider__0.html#a0a1994">SLIDER_HORIZONTAL</a> 00049 }; 00050 00051 00052 <span class="comment"></span> 00053 <span class="comment">/**</span> 00054 <span class="comment">* The slider widget is a valuator widget which provides simple linear value range.</span> 00055 <span class="comment">* Two visual appearances are supported:- the sunken look, which is enabled with</span> 00056 <span class="comment">* the SLIDER_INSIDE_BAR option and the regular look. The latter may have optional</span> 00057 <span class="comment">* arrows on the slider thumb.</span> 00058 <span class="comment">* While being moved, the slider sends a SEL_CHANGED message to its target;</span> 00059 <span class="comment">* at the end of the interaction, a SEL_COMMAND message is sent.</span> 00060 <span class="comment">* The message data represents the current slider value, of type FXint.</span> 00061 <span class="comment">*/</span> 00062 <span class="keyword">class </span>FXAPI FXSlider : <span class="keyword">public</span> FXFrame { 00063 FXDECLARE(FXSlider) 00064 <span class="keyword">protected</span>: 00065 FXint range[2]; <span class="comment">// Reported data range</span> 00066 FXint pos; <span class="comment">// Reported data position</span> 00067 FXint incr; <span class="comment">// Increment when auto-sliding</span> 00068 FXint delta; <span class="comment">// Interval between ticks</span> <a name="l00069"></a><a class="code" href="classFX_1_1FXSlider.html">00069</a> FXint headpos; <span class="comment">// Head position</span> 00070 FXint headsize; <span class="comment">// Head size</span> 00071 FXint slotsize; <span class="comment">// Slot size</span> 00072 FXColor slotColor; <span class="comment">// Color of slot the head moves in</span> 00073 FXint dragpoint; <span class="comment">// Where the head is grabbed</span> 00074 <a class="code" href="classFX_1_1FXString.html">FXString</a> help; <span class="comment">// Help string</span> 00075 <a class="code" href="classFX_1_1FXString.html">FXString</a> tip; <span class="comment">// Tip string</span> 00076 <span class="keyword">protected</span>: 00077 FXSlider(); 00078 FXint headPos(FXint v) <span class="keyword">const</span>; 00079 FXint headVal(FXint p) <span class="keyword">const</span>; 00080 <span class="keywordtype">void</span> drawSliderHead(<a class="code" href="classFX_1_1FXDCWindow.html">FXDCWindow</a>& dc,FXint x,FXint y,FXint w,FXint h); 00081 <span class="keywordtype">void</span> drawHorzTicks(<a class="code" href="classFX_1_1FXDCWindow.html">FXDCWindow</a>& dc,FXint x,FXint y,FXint w,FXint h); 00082 <span class="keywordtype">void</span> drawVertTicks(<a class="code" href="classFX_1_1FXDCWindow.html">FXDCWindow</a>& dc,FXint x,FXint y,FXint w,FXint h); 00083 <span class="keyword">private</span>: 00084 FXSlider(<span class="keyword">const</span> FXSlider&); 00085 FXSlider &operator=(<span class="keyword">const</span> FXSlider&); 00086 <span class="keyword">public</span>: 00087 <span class="keywordtype">long</span> onPaint(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00088 <span class="keywordtype">long</span> onLeftBtnPress(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00089 <span class="keywordtype">long</span> onLeftBtnRelease(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00090 <span class="keywordtype">long</span> onMiddleBtnPress(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00091 <span class="keywordtype">long</span> onMiddleBtnRelease(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00092 <span class="keywordtype">long</span> onUngrabbed(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00093 <span class="keywordtype">long</span> onMotion(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00094 <span class="keywordtype">long</span> onAutoSlide(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00095 <span class="keywordtype">long</span> onCmdSetValue(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00096 <span class="keywordtype">long</span> onCmdSetIntValue(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00097 <span class="keywordtype">long</span> onCmdGetIntValue(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00098 <span class="keywordtype">long</span> onCmdSetRealValue(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00099 <span class="keywordtype">long</span> onCmdGetRealValue(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00100 <span class="keywordtype">long</span> onCmdSetIntRange(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00101 <span class="keywordtype">long</span> onCmdGetIntRange(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00102 <span class="keywordtype">long</span> onCmdSetRealRange(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00103 <span class="keywordtype">long</span> onCmdGetRealRange(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00104 <span class="keywordtype">long</span> onCmdSetHelp(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00105 <span class="keywordtype">long</span> onCmdGetHelp(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00106 <span class="keywordtype">long</span> onCmdSetTip(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00107 <span class="keywordtype">long</span> onCmdGetTip(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00108 <span class="keywordtype">long</span> onQueryHelp(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00109 <span class="keywordtype">long</span> onQueryTip(<a class="code" href="classFX_1_1FXObject.html">FXObject</a>*,FXSelector,<span class="keywordtype">void</span>*); 00110 <span class="keyword">public</span>: 00111 <span class="keyword">enum</span>{ 00112 ID_AUTOSLIDE=FXFrame::ID_LAST, 00113 ID_LAST 00114 }; 00115 <span class="keyword">public</span>: 00116 <span class="comment"></span> 00117 <span class="comment"> /// Construct a slider widget</span> 00118 <span class="comment"></span> FXSlider(FXComposite* p,FXObject* tgt=NULL,FXSelector sel=0,FXuint opts=SLIDER_NORMAL,FXint x=0,FXint y=0,FXint w=0,FXint h=0,FXint pl=0,FXint pr=0,FXint pt=0,FXint pb=0); 00119 <span class="comment"></span> 00120 <span class="comment"> /// Return default width</span> 00121 <span class="comment"></span> <span class="keyword">virtual</span> FXint getDefaultWidth(); 00122 <span class="comment"></span> 00123 <span class="comment"> /// Return default height</span> <a name="l00124"></a><a class="code" href="classFX_1_1FXSlider.html#a7">00124</a> <span class="comment"></span> <span class="keyword">virtual</span> FXint getDefaultHeight(); 00125 <span class="comment"></span> 00126 <span class="comment"> /// Perform layout</span> 00127 <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> layout(); 00128 <span class="comment"></span> 00129 <span class="comment"> /// Enable the slider</span> <a name="l00130"></a><a class="code" href="classFX_1_1FXSlider.html#a9">00130</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> enable(); 00131 <span class="comment"></span> 00132 <span class="comment"> /// Disable the slider</span> 00133 <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> disable(); 00134 <span class="comment"></span> 00135 <span class="comment"> /// Change slider value</span> 00136 <span class="comment"></span> <span class="keywordtype">void</span> setValue(FXint value); 00137 <span class="comment"></span> 00138 <span class="comment"> /// Return slider value</span> <a name="l00139"></a><a class="code" href="classFX_1_1FXSlider.html#a12">00139</a> <span class="comment"></span> FXint getValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> pos; } 00140 <span class="comment"></span> 00141 <span class="comment"> /// Change the slider's range</span> 00142 <span class="comment"></span> <span class="keywordtype">void</span> setRange(FXint lo,FXint hi); 00143 <span class="comment"></span> 00144 <span class="comment"> /// Get the slider's current range</span> <a name="l00145"></a><a class="code" href="classFX_1_1FXSlider.html#a14">00145</a> <span class="comment"></span> <span class="keywordtype">void</span> getRange(FXint& lo,FXint& hi)<span class="keyword"> const </span>{ lo=range[0]; hi=range[1]; } 00146 <span class="comment"></span> 00147 <span class="comment"> /// Change the slider style</span> 00148 <span class="comment"></span> FXuint getSliderStyle() <span class="keyword">const</span>; 00149 <span class="comment"></span> 00150 <span class="comment"> /// Get the current slider style</span> <a name="l00151"></a><a class="code" href="classFX_1_1FXSlider.html#a16">00151</a> <span class="comment"></span> <span class="keywordtype">void</span> setSliderStyle(FXuint style); 00152 <span class="comment"></span> 00153 <span class="comment"> /// Get the slider's head size</span> 00154 <span class="comment"></span> FXint getHeadSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> headsize; } 00155 <span class="comment"></span> 00156 <span class="comment"> /// Change the slider's head size</span> 00157 <span class="comment"></span> <span class="keywordtype">void</span> setHeadSize(FXint hs); 00158 <span class="comment"></span> 00159 <span class="comment"> /// Get the slider's current slot size</span> <a name="l00160"></a><a class="code" href="classFX_1_1FXSlider.html#a19">00160</a> <span class="comment"></span> FXint getSlotSize()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> slotsize; } 00161 <span class="comment"></span> 00162 <span class="comment"> /// Change the slider's slot size</span> 00163 <span class="comment"></span> <span class="keywordtype">void</span> setSlotSize(FXint bs); 00164 <span class="comment"></span> 00165 <span class="comment"> /// Get the slider's auto-increment/decrement value</span> <a name="l00166"></a><a class="code" href="classFX_1_1FXSlider.html#a21">00166</a> <span class="comment"></span> FXint getIncrement()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> incr; } 00167 <span class="comment"></span> 00168 <span class="comment"> /// Change the slider's auto-increment/decrement value</span> 00169 <span class="comment"></span> <span class="keywordtype">void</span> setIncrement(FXint inc); 00170 <span class="comment"></span> 00171 <span class="comment"> /// Change the delta between ticks</span> <a name="l00172"></a><a class="code" href="classFX_1_1FXSlider.html#a23">00172</a> <span class="comment"></span> <span class="keywordtype">void</span> setTickDelta(FXint dist); 00173 <span class="comment"></span> 00174 <span class="comment"> /// Get delta between ticks</span> 00175 <span class="comment"></span> FXint getTickDelta()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> delta; } 00176 <span class="comment"></span> 00177 <span class="comment"> /// Change the color of the slot the slider head moves in</span> <a name="l00178"></a><a class="code" href="classFX_1_1FXSlider.html#a25">00178</a> <span class="comment"></span> <span class="keywordtype">void</span> setSlotColor(FXColor clr); 00179 <span class="comment"></span> 00180 <span class="comment"> /// Get the current slot color</span> 00181 <span class="comment"></span> FXColor getSlotColor()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> slotColor; } 00182 <span class="comment"></span> 00183 <span class="comment"> /// Set the help text to be displayed on the status line</span> 00184 <span class="comment"></span> <span class="keywordtype">void</span> setHelpText(<span class="keyword">const</span> FXString& text); 00185 <span class="comment"></span> 00186 <span class="comment"> /// Get the current help text</span> 00187 <span class="comment"></span> FXString getHelpText()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> help; } 00188 <span class="comment"></span> 00189 <span class="comment"> /// Set the tip text to be displayed in the tooltip</span> 00190 <span class="comment"></span> <span class="keywordtype">void</span> setTipText(<span class="keyword">const</span> FXString& text); 00191 <span class="comment"></span> 00192 <span class="comment"> /// Get the current tooltip text value</span> 00193 <span class="comment"></span> FXString getTipText()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> tip; } 00194 <span class="comment"></span> 00195 <span class="comment"> /// Save to stream</span> 00196 <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> save(FXStream& store) <span class="keyword">const</span>; 00197 <span class="comment"></span> 00198 <span class="comment"> /// Load from stream</span> 00199 <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> load(FXStream& store); 00200 <span class="comment"></span> 00201 <span class="comment"> /// Destroy the slider</span> 00202 <span class="comment"></span> <span class="keyword">virtual</span> ~FXSlider(); 00203 }; 00204 00205 } 00206 00207 <span class="preprocessor">#endif</span> </pre></div></font> <!--- COPYRIGHT --> <p> <table width=100% cellpadding=0 cellspacing=0><tr><td width=100% valign=top id=HEADLINE align=right> <img src='../art/line.gif' width=100% height=1><font size=-1> Copyright © 1997-2004 Jeroen van der Zijp</font> </td></tr></table> </p> <!--- COPYRIGHT --> </body> </html>