xref: /trunk/main/toolkit/inc/layout/layout.hxx (revision 5e0f18e3)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _LAYOUT_HXX
25 #define _LAYOUT_HXX
26 
27 #include <com/sun/star/awt/XLayoutContainer.hpp>
28 #include <com/sun/star/uno/XInterface.hpp>
29 #include <com/sun/star/util/Color.hpp>
30 #include <i18npool/lang.h>
31 #include <toolkit/dllapi.h>
32 #include <tools/gen.hxx>
33 #include <tools/link.hxx>
34 #include <tools/string.hxx>
35 #include <vcl/bitmap.hxx>
36 #include <vcl/combobox.h>
37 #include <tools/fldunit.hxx>
38 #include <vcl/lstbox.h>
39 #include <tools/wintypes.hxx>
40 
41 class Button;
42 class ComboBox;
43 class Color;
44 class Control;
45 class Dialog;
46 class Edit;
47 class Font;
48 class Image;
49 class ListBox;
50 class MapMode;
51 class MultiListBox;
52 class NotifyEvent;
53 class Pointer;
54 class PushButton;
55 class RadioButton;
56 class ResId;
57 struct SfxChildWinInfo;
58 //class SvxFontListBox;
59 //class SvxLanguageBox;
60 class TabControl;
61 class TabPage;
62 class VCLXRadioButton;
63 class VCLXWindow;
64 class Window;
65 
66 namespace layoutimpl
67 {
68 class VCLXTabControl;
69 }
70 
71 class VCLXTabControl;
72 
73 namespace com { namespace sun { namespace star { namespace awt { class XWindow; } } } }
74 
75 namespace layout
76 {
77 
78 namespace css = ::com::sun::star;
79 
80 typedef css::uno::Reference< css::uno::XInterface > PeerHandle;
81 class ContextImpl;
82 class TOOLKIT_DLLPUBLIC Context
83 {
84     ContextImpl *pImpl;
85 public:
86     Context( char const* pPath );
87     virtual ~Context();
88     PeerHandle GetPeerHandle( char const* id, sal_uInt32 nId = 0 ) const;
89     void setToplevel( PeerHandle xToplevel );
90     PeerHandle getToplevel();
91     PeerHandle getRoot();
92 };
93 
94 // make declaring wrappers easier ...
95 #define DECL_CONSTRUCTORS(t,par,defaultWinBit) \
96     protected:                                 \
97         explicit t( WindowImpl *pImpl ) : \
98             par( pImpl ) {} \
99         char const* GetUnoName() const; \
100     public: \
101         t( Context *context, char const* id, sal_uInt32 nId = 0 ); \
102         t( Window *parent, WinBits nStyle = defaultWinBit ); \
103         t (Window *parent, ResId const &res)
104 #define DECL_GET_IMPL(t) \
105         inline t##Impl *getImpl() const
106 
107 #define DECL_GET_WINDOW( cls ) ::cls* Get##cls() const
108 #define IMPL_GET_WINDOW( cls ) ::cls* cls::Get##cls() const { return dynamic_cast< ::cls*>( GetWindow() ); }
109 
110 #define DECL_GET_VCLXWINDOW( cls ) ::VCLX##cls* GetVCLX##cls() const
111 #define IMPL_GET_VCLXWINDOW( cls ) ::VCLX##cls* cls::Get##VCLX##cls() const { return dynamic_cast< ::VCLX##cls*>( GetVCLXWindow() ); }
112 
113 #define DECL_GET_LAYOUT_VCLXWINDOW( cls ) ::layoutimpl::VCLX##cls* GetVCLX##cls() const
114 #define IMPL_GET_LAYOUT_VCLXWINDOW( cls ) ::layoutimpl::VCLX##cls* cls::Get##VCLX##cls() const { return dynamic_cast< ::layoutimpl::VCLX##cls*>( GetVCLXWindow() ); }
115 
116 // follows the VCL inheritance hierarchy ...
117 
118 class WindowImpl;
119 class TOOLKIT_DLLPUBLIC Window
120 {
121 protected:
122     friend class WindowImpl;
123     WindowImpl *mpImpl;
124     static PeerHandle CreatePeer( Window *parent, WinBits nStyle,
125                                   char const* pName);
126 
127     virtual void setRes (ResId const& res);
128 
129 public:
130     DECL_GET_IMPL( Window );
131     explicit Window( WindowImpl *pImpl );
132     virtual ~Window();
133 
134     PeerHandle GetPeer() const;
135     Context *getContext();
136 
137     void Enable( bool bEnable = true );
Disable()138     inline void Disable() { Enable( false ); }
139     void Show( bool bVisible = true );
Hide()140     inline void Hide() { Show( false ); }
141     void GrabFocus();
FreeResource()142     void FreeResource() {}
143 
144     void SetParent( ::Window *parent );
145     virtual void ParentSet (Window *window);
146     void SetParent( Window *parent );
147 
148     css::uno::Reference<css::awt::XWindow> GetRef() const;
149     VCLXWindow* GetVCLXWindow() const;
150     ::Window* GetWindow() const;
151     ::Window* GetParent() const;
152 
153     void SetPointer( Pointer const& pointer );
154     Pointer const& GetPointer() const;
155     WinBits GetStyle();
156     void SetText( rtl::OUString const& str );
157     String GetText() const;
158     void SetStyle( WinBits style );
159     void SetUpdateMode( bool mode );
160     void SetHelpId( const rtl::OString& id );
161     const rtl::OString& GetHelpId() const;
162     void EnterWait ();
163     void LeaveWait ();
164     bool IsWait () const;
165     //void Enable (bool enable=true, bool child=true);
166     //void Disable (bool child=true);
167     bool IsEnabled () const;
168     void EnableInput (bool enable=true, bool child=true);
169     bool IsInputEnabled () const;
170 
171     bool IsVisible () const;
172     bool HasChildPathFocus (bool systemWindow=false) const;
173     void SetPosPixel (Point const&);
174     Point GetPosPixel () const;
175     void SetSizePixel (Size const&);
176     Size GetSizePixel () const;
177     void SetPosSizePixel (Point const&, Size const&);
178     sal_Int32 GetCtrlTextWidth (rtl::OUString const& str) const;
179     sal_Int32 GetTextHeight () const;
180 
181     Size LogicToPixel( Size const& size ) const;
182     Size LogicToPixel( Size const& size, MapMode const& mapMode ) const;
183 
184     bool HasFocus () const;
185     Font& GetFont () const;
186     void SetFont (Font const& font);
187     virtual void Invalidate (sal_uInt8 flags=0);
188 };
189 
190 class ControlImpl;
191 class TOOLKIT_DLLPUBLIC Control : public Window
192 {
193     DECL_GET_IMPL( Control );
194     DECL_CONSTRUCTORS( Control, Window, 0 );
195 
196 public:
197     ~Control ();
198     void SetGetFocusHdl (Link const& link);
199     Link& GetGetFocusHdl ();
200     void SetLoseFocusHdl (Link const& link);
201     Link& GetLoseFocusHdl ();
202 };
203 
204 class FixedLineImpl;
205 class TOOLKIT_DLLPUBLIC FixedLine : public Control
206 {
207     DECL_GET_IMPL( FixedLine );
208     DECL_CONSTRUCTORS( FixedLine, Control, WB_HORZ );
209 
210 public:
211     bool IsEnabled() const;
212 };
213 
214 class FixedTextImpl;
215 class TOOLKIT_DLLPUBLIC FixedText : public Control
216 {
217     DECL_GET_IMPL( FixedText );
218     DECL_CONSTRUCTORS( FixedText, Control, 0 );
219 
220 public:
221     ~FixedText ();
222     void SetText( rtl::OUString const& rStr );
223 };
224 
225 class FixedImageImpl;
226 class TOOLKIT_DLLPUBLIC FixedImage : public Control
227 {
228     DECL_GET_IMPL( FixedImage );
229     DECL_CONSTRUCTORS( FixedImage, Control, 0 );
230 public:
231     void setImage( ::Image const& );
232 };
233 
234 class FixedInfoImpl;
235 class TOOLKIT_DLLPUBLIC FixedInfo : public FixedText
236 {
237     DECL_GET_IMPL( FixedInfo );
238     DECL_CONSTRUCTORS( FixedInfo, FixedText, 0 );
239 };
240 
241 class ImageImpl;
242 class TOOLKIT_DLLPUBLIC Image
243 {
244     ImageImpl *pImpl;
245 public:
246     Image( char const* pName );
247     ~Image();
getImpl() const248     ImageImpl &getImpl() const { return *pImpl; }
249 };
250 
251 class ButtonImpl;
252 class TOOLKIT_DLLPUBLIC Button : public Control
253 {
254     DECL_GET_IMPL( Button );
255     DECL_CONSTRUCTORS( Button, Control, 0 );
256     DECL_GET_WINDOW (Button);
257 
258 public:
259     ~Button ();
260     static String GetStandardText (sal_uInt16 button_type);
261     void SetText( rtl::OUString const& rStr );
262     bool SetModeImage (Image const& image);
263     bool SetModeImage (::Image const& image, BmpColorMode mode=BMP_COLOR_NORMAL);
264     void SetImageAlign( ImageAlign eAlign );
265 
266     void SetClickHdl( Link const& rLink );
267     virtual void Click() /* pure virtual? */;
268     Link& GetClickHdl ();
269 };
270 
271 class PushButtonImpl;
272 class TOOLKIT_DLLPUBLIC PushButton : public Button
273 {
274     DECL_GET_IMPL( PushButton );
275     DECL_CONSTRUCTORS( PushButton, Button, 0 );
276     DECL_GET_WINDOW (PushButton);
277 
278 public:
279     ~PushButton ();
280     void Check( bool bCheck=true );
281     bool IsChecked() const;
282 
283     void Toggle();
284     void SetToggleHdl( Link const& rLink );
285 };
286 
287 class TOOLKIT_DLLPUBLIC OKButton : public PushButton
288 {
289     DECL_CONSTRUCTORS( OKButton, PushButton, WB_DEFBUTTON );
290 };
291 class TOOLKIT_DLLPUBLIC CancelButton : public PushButton
292 {
293     DECL_CONSTRUCTORS( CancelButton, PushButton, 0 );
294 };
295 class TOOLKIT_DLLPUBLIC YesButton : public PushButton
296 {
297     DECL_CONSTRUCTORS( YesButton, PushButton, WB_DEFBUTTON );
298 };
299 class TOOLKIT_DLLPUBLIC NoButton : public PushButton
300 {
301     DECL_CONSTRUCTORS( NoButton, PushButton, 0 );
302 };
303 class TOOLKIT_DLLPUBLIC RetryButton : public PushButton
304 {
305     DECL_CONSTRUCTORS( RetryButton, PushButton, 0 );
306 };
307 class TOOLKIT_DLLPUBLIC IgnoreButton : public PushButton
308 {
309     DECL_CONSTRUCTORS( IgnoreButton, PushButton, 0 );
310 };
311 class TOOLKIT_DLLPUBLIC ResetButton : public PushButton
312 {
313     DECL_CONSTRUCTORS( ResetButton, PushButton, 0 );
314 };
315 class TOOLKIT_DLLPUBLIC ApplyButton : public PushButton
316 {
317     DECL_CONSTRUCTORS( ApplyButton, PushButton, 0 );
318 };
319 class TOOLKIT_DLLPUBLIC HelpButton : public PushButton
320 {
321     DECL_CONSTRUCTORS( HelpButton, PushButton, 0 );
322 };
323 class TOOLKIT_DLLPUBLIC ImageButton : public PushButton
324 {
325     DECL_CONSTRUCTORS( ImageButton, PushButton, 0 );
326 };
327 
328 class AdvancedButtonImpl;
329 class TOOLKIT_DLLPUBLIC AdvancedButton : public PushButton
330 {
331     DECL_CONSTRUCTORS( AdvancedButton, PushButton, 0 );
332     DECL_GET_IMPL( AdvancedButton );
333 
334     void AddAdvanced( Window* w );
335     void AddSimple( Window* w );
336     void RemoveAdvanced( Window* w );
337     void RemoveSimple( Window* w );
338 
339     void SetAdvancedText (rtl::OUString const& text);
340     void SetSimpleText (rtl::OUString const& text);
341     rtl::OUString GetAdvancedText () const;
342     rtl::OUString GetSimpleText () const;
343     void SetDelta (int);
344 };
345 
346 class MoreButtonImpl;
347 class TOOLKIT_DLLPUBLIC MoreButton : public AdvancedButton
348 {
349     DECL_CONSTRUCTORS( MoreButton, AdvancedButton, 0 );
350     DECL_GET_IMPL( MoreButton );
351     void AddWindow( Window* w );
352     void RemoveWindow( Window* w );
353 
354     void SetMoreText (rtl::OUString const& text);
355     void SetLessText (rtl::OUString const& text);
356     rtl::OUString GetMoreText () const;
357     rtl::OUString GetLessText () const;
358 };
359 
360 class RadioButtonImpl;
361 class TOOLKIT_DLLPUBLIC RadioButton : public Button
362 {
363     DECL_GET_IMPL( RadioButton );
364     DECL_CONSTRUCTORS( RadioButton, Button, 0 );
365     DECL_GET_WINDOW( RadioButton );
366     DECL_GET_VCLXWINDOW( RadioButton );
367 public:
368     ~RadioButton ();
369     void Check( bool bCheck=true );
370     bool IsChecked() const;
371 
372     void Toggle();
373     void SetToggleHdl( Link const& rLink );
374 };
375 
376 class CheckBoxImpl;
377 class TOOLKIT_DLLPUBLIC CheckBox : public Button
378 {
379     DECL_GET_IMPL( CheckBox );
380     DECL_CONSTRUCTORS( CheckBox, Button, 0 );
381 
382 public:
383     ~CheckBox ();
384     void Check( bool bCheck=true );
385     bool IsChecked() const;
386 
387     void Toggle();
388     void SetToggleHdl( Link const& rLink );
389 };
390 
391 class EditImpl;
392 class TOOLKIT_DLLPUBLIC Edit : public Control
393 {
394     DECL_GET_IMPL( Edit );
395     DECL_CONSTRUCTORS( Edit, Control, WB_BORDER );
396     DECL_GET_WINDOW (Edit);
397 
398 public:
399     ~Edit ();
400     void SetText( rtl::OUString const& rStr );
401     String GetText() const;
402     void SetModifyHdl( Link const& rLink );
403     void SetSelection( Selection const& rSelection );
404 };
405 
406 class MultiLineEditImpl;
407 class TOOLKIT_DLLPUBLIC MultiLineEdit : public Edit
408 {
409     DECL_GET_IMPL( MultiLineEdit );
410     DECL_CONSTRUCTORS( MultiLineEdit, Edit, WB_LEFT|WB_BORDER );
411 };
412 
413 class SpinFieldImpl;
414 class TOOLKIT_DLLPUBLIC SpinField : public Edit
415 {
416     DECL_GET_IMPL( SpinField );
417     DECL_CONSTRUCTORS( SpinField, Edit, 0 );
418 };
419 
420 class FormatterBaseImpl;
421 class TOOLKIT_DLLPUBLIC FormatterBase
422 {
423 protected:
424     FormatterBaseImpl *mpFormatImpl;
425     FormatterBase( FormatterBaseImpl *pFormatImpl );
426 };
427 
428 class NumericFormatterImpl;
429 class TOOLKIT_DLLPUBLIC NumericFormatter : public FormatterBase
430 {
431 protected:
432     explicit NumericFormatter( FormatterBaseImpl *pImpl );
433     NumericFormatterImpl &getFormatImpl() const;
434 public:
435     void SetMin( sal_Int64 nNewMin );
436     void SetMax( sal_Int64 nNewMax );
437     void SetFirst( sal_Int64 nNewFirst );
438     void SetLast( sal_Int64 nNewLast );
439     void SetSpinSize( sal_Int64 nNewSize );
440 
441     void SetValue( sal_Int64 nNewValue );
442     sal_Int64 GetValue() const;
443 };
444 
445 class NumericFieldImpl;
446 class TOOLKIT_DLLPUBLIC NumericField : public SpinField, public NumericFormatter
447 {
448     DECL_GET_IMPL( NumericField );
449 public:
450     NumericField( Context *context, char const* id, sal_uInt32 nId=0 );
451     NumericField( Window *parent, WinBits nStyle );
452 };
453 
454 class MetricFormatterImpl;
455 // Different inheritance to save code
456 class TOOLKIT_DLLPUBLIC MetricFormatter : public FormatterBase
457 {
458   protected:
459     explicit MetricFormatter( FormatterBaseImpl *pImpl );
460     MetricFormatterImpl &getFormatImpl() const;
461 public:
462     void SetMin( sal_Int64 nNewMin, FieldUnit nUnit=FUNIT_NONE );
463     void SetMax( sal_Int64 nNewMax, FieldUnit nUnit=FUNIT_NONE );
464     void SetFirst( sal_Int64 nNewFirst, FieldUnit nUnit=FUNIT_NONE );
465     void SetLast( sal_Int64 nNewLast, FieldUnit nUnit=FUNIT_NONE );
466     void SetValue( sal_Int64 nNewValue, FieldUnit nUnit=FUNIT_NONE );
467     sal_Int64 GetValue( FieldUnit nUnit=FUNIT_NONE ) const;
468 
469     void SetSpinSize( sal_Int64 nNewSize );
470 };
471 
472 class MetricFieldImpl;
473 class TOOLKIT_DLLPUBLIC MetricField : public SpinField, public MetricFormatter
474 {
475     DECL_GET_IMPL( MetricField );
476 public:
477     MetricField( Context *context, char const* id, sal_uInt32 nId=0 );
478     MetricField( Window *parent, WinBits nStyle );
479 };
480 
481 class ComboBoxImpl;
482 class TOOLKIT_DLLPUBLIC ComboBox : public Edit
483 {
484     DECL_GET_IMPL( ComboBox );
485     DECL_GET_WINDOW (ComboBox );
486     DECL_CONSTRUCTORS( ComboBox, Edit, 0 );
487 
488 public:
489     ~ComboBox ();
490     sal_uInt16 InsertEntry( String const& rStr, sal_uInt16 nPos=COMBOBOX_APPEND );
491     void RemoveEntry( String const& rStr );
492     void RemoveEntry( sal_uInt16 nPos );
493     void Clear();
494 
495     sal_uInt16 GetEntryPos( String const& rStr ) const;
496     String GetEntry( sal_uInt16 nPos ) const;
497     sal_uInt16 GetEntryCount() const;
498 
499     void SetClickHdl( Link const& rLink );
500     void SetSelectHdl( Link const& rLink );
501     void EnableAutocomplete (bool enable, bool matchCase=false );
502 };
503 
504 class ListBoxImpl;
505 class TOOLKIT_DLLPUBLIC ListBox : public Control
506 {
507     DECL_GET_IMPL( ListBox );
508     DECL_CONSTRUCTORS( ListBox, Control, WB_BORDER );
509     DECL_GET_WINDOW (ListBox);
510 
511 public:
512     ~ListBox ();
513     sal_uInt16 InsertEntry( String const& rStr, sal_uInt16 nPos=LISTBOX_APPEND );
514 
515     void RemoveEntry( String const& rStr );
516     void RemoveEntry( sal_uInt16 nPos );
517     void Clear();
518 
519     sal_uInt16 GetEntryPos( String const& rStr ) const;
520     String GetEntry( sal_uInt16 nPos ) const;
521     sal_uInt16 GetEntryCount() const;
522 
523     void SelectEntry( String const& rStr, bool bSelect=true );
524     void SelectEntryPos( sal_uInt16 nPos, bool bSelect=true );
525 
526     sal_uInt16 GetSelectEntryCount() const;
527     String GetSelectEntry( sal_uInt16 nSelIndex=0 ) const;
528     sal_uInt16 GetSelectEntryPos( sal_uInt16 nSelIndex=0 ) const;
529 
530     void SetSelectHdl (Link const& link);
531     Link& GetSelectHdl ();
532 
533     void SetClickHdl (Link const& link);
534     Link& GetClickHdl ();
535 
536     void SetDoubleClickHdl (Link const& link);
537     Link& GetDoubleClickHdl ();
538 
539     void SetEntryData (sal_uInt16 pos, void* data);
540     void* GetEntryData (sal_uInt16 pos) const;
541 
542 	virtual void SetNoSelection ();
543 };
544 
545 class MultiListBoxImpl;
546 class TOOLKIT_DLLPUBLIC MultiListBox : public ListBox
547 {
548     DECL_GET_IMPL( MultiListBox );
549     DECL_CONSTRUCTORS( MultiListBox, ListBox, 0 );
550     DECL_GET_WINDOW( MultiListBox );
551 };
552 
553 class DialogImpl;
554 class TOOLKIT_DLLPUBLIC Dialog : public Context, public Window
555 {
556     DECL_GET_WINDOW (Dialog);
557 
558 public:
559     DECL_GET_IMPL (Dialog);
560     Dialog( Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0 );
561     Dialog( ::Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0 );
562     ~Dialog ();
563     virtual short Execute();
564     void EndDialog( long nResult=0 );
565     void SetText( rtl::OUString const& rStr );
566     void SetTitle (rtl::OUString const& rStr );
567     bool Close ();
568     long Notify (NotifyEvent & event);
569 
570     // Sxf*Dialog
571     bool bConstruct;
572 	void Initialize (SfxChildWinInfo*);
573 };
574 
575 #define DECL_MESSAGE_BOX_CTORS(Name)\
576     public:\
577     Name##Box (::Window *parent, char const* message,\
578                char const* yes=0, char const* no=0, const rtl::OString& help_id=rtl::OString(),\
579                char const* xml_file="message-box.xml", char const* id="message-box");\
580     Name##Box (::Window *parent, rtl::OUString const& message,\
581                rtl::OUString yes=String (),\
582                rtl::OUString no=String (),\
583                const rtl::OString& help_id=rtl::OString(),\
584                char const* xml_file="message-box.xml", char const* id="message-box");\
585     Name##Box (::Window *parent, WinBits, char const* message,\
586                char const* yes=0, char const* no=0, const rtl::OString& help_id=rtl::OString(),\
587                char const* xml_file="message-box.xml", char const* id="message-box");\
588     Name##Box (::Window *parent, WinBits, rtl::OUString const& message,\
589                rtl::OUString yes=String (),\
590                rtl::OUString no=String (),\
591                const rtl::OString& help_id=rtl::OString(),\
592                char const* xml_file="message-box.xml", char const* id="message-box")\
593 
594 class TOOLKIT_DLLPUBLIC MessageBox : public Dialog
595 {
596     DECL_MESSAGE_BOX_CTORS(Message);
597 
598 protected:
599     FixedImage imageError;
600     FixedImage imageInfo;
601     FixedImage imageQuery;
602     FixedImage imageWarning;
603     FixedText messageText;
604     CancelButton cancelButton;
605     HelpButton helpButton;
606     IgnoreButton ignoreButton;
607     NoButton noButton;
608     RetryButton retryButton;
609     YesButton yesButton;
610 
611     void bits_init (WinBits bits, rtl::OUString const& message,
612                     rtl::OUString yes, rtl::OUString, const rtl::OString& help_id);
613     void init (rtl::OUString const& message,
614                rtl::OUString const& yes, rtl::OUString const& no, const rtl::OString& help_id);
615     void init (char const* message, char const* yes, char const* no, const rtl::OString& help_id);
616 };
617 
618 #define CLASS_MESSAGE_BOX(Name)\
619     class TOOLKIT_DLLPUBLIC Name##Box : public MessageBox\
620     {\
621         DECL_MESSAGE_BOX_CTORS (Name);\
622     }
623 
624 //CLASS_MESSAGE_BOX (Mess);
625 typedef MessageBox MessBox;
626 CLASS_MESSAGE_BOX (Error);
627 CLASS_MESSAGE_BOX (Info);
628 CLASS_MESSAGE_BOX (Query);
629 CLASS_MESSAGE_BOX (Warning);
630 
631 #undef CLASS_MESSAGE_BOX
632 
633 #undef TAB_APPEND
634 
635 class TabControlImpl;
636 class TOOLKIT_DLLPUBLIC TabControl : public Control
637 {
638 //#ifndef TAB_APPEND
639 #define TAB_APPEND 0xFFFF
640 //#endif /* !TAB_APPEND */
641 
642     DECL_GET_IMPL (TabControl);
643     DECL_CONSTRUCTORS (TabControl, Control, 0);
644     DECL_GET_WINDOW (TabControl);
645     DECL_GET_LAYOUT_VCLXWINDOW (TabControl);
646 
647 public:
648     ~TabControl ();
649     void InsertPage (sal_uInt16 id, rtl::OUString const& title, sal_uInt16 pos=TAB_APPEND);
650     void RemovePage (sal_uInt16 id);
651     sal_uInt16 GetPageCount () const;
652     sal_uInt16 GetPageId (sal_uInt16 pos) const;
653     sal_uInt16 GetPagePos (sal_uInt16 id) const;
654     void SetCurPageId (sal_uInt16 id);
655     sal_uInt16 GetCurPageId () const;
656     void SetTabPage (sal_uInt16 id, ::TabPage* page);
657     ::TabPage* GetTabPage (sal_uInt16 id) const;
658     void SetActivatePageHdl (Link const& link);
659     Link& GetActivatePageHdl () const;
660     void SetDeactivatePageHdl (Link const& link);
661     Link& GetDeactivatePageHdl () const;
662     void SetTabPageSizePixel (Size const& size);
663     Size GetTabPageSizePixel () const;
664 };
665 
666 class TabPageImpl;
667 class TOOLKIT_DLLPUBLIC TabPage : public Context, public Window
668 {
669     DECL_GET_IMPL( TabPage );
670 public:
671     static ::Window* global_parent;
672     static TabControl* global_tabcontrol;
673 
674     TabPage( Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0 );
675     TabPage( ::Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0 );
676     ~TabPage();
677     DECL_GET_WINDOW( TabPage );
678     virtual void ActivatePage();
679     virtual void DeactivatePage();
680 };
681 
682 class ProgressBarImpl;
683 class TOOLKIT_DLLPUBLIC ProgressBar : public Control
684 {
685     DECL_GET_IMPL( ProgressBar );
686     DECL_CONSTRUCTORS( ProgressBar, Control, WB_BORDER );
687 public:
688     void SetForegroundColor( css::util::Color color );
689     void SetBackgroundColor( css::util::Color color );
690     void SetValue( sal_Int32 i );
691     void SetRange( sal_Int32 min, sal_Int32 max );
692     sal_Int32 GetValue();
693 };
694 
695 // -----------------------------------------------------------------
696 //                 layout container / helper wrappers
697 // -----------------------------------------------------------------
698 
699 class TOOLKIT_DLLPUBLIC Container
700 {
701 protected:
702     css::uno::Reference< css::awt::XLayoutContainer > mxContainer;
703     Container( rtl::OUString const& rName, sal_Int32 nBorder );
704 public:
705     Container( Context const* context, char const* id );
706 
707     void Add( Window *pWindow );
708     void Add( Container *pContainer );
709 
710     void Remove( Window *pWindow );
711     void Remove( Container *pContainer );
712     void Clear();
713     // we can't really do a GetChildren() as they don't have a common class,
714     // besides we would need to keep track of children, uh
715 
716     void ShowAll( bool bVisible );
717     void Show();
718     void Hide();
719 
getImpl()720     css::uno::Reference< css::awt::XLayoutContainer > getImpl()
721     { return mxContainer; }
722 };
723 
724 class TOOLKIT_DLLPUBLIC Table : public Container
725 {
726 protected:
727     Table( sal_Int32 nBorder, sal_Int32 nColumns );
728 public:
729     Table( Context const* context, char const* id );
730     void Add( Window *pWindow, bool bXExpand, bool bYExpand,
731               sal_Int32 nXSpan=1, sal_Int32 nYSpan=1 );
732     void Add( Container *pContainer, bool bXExpand, bool bYExpand,
733               sal_Int32 nXSpan=1, sal_Int32 nYSpan=1 );
734 
735 private:
736     void setProps( css::uno::Reference< css::awt::XLayoutConstrains > xChild,
737                    bool bXExpand, bool bYExpand, sal_Int32 nXSpan, sal_Int32 nYSpan );
738 };
739 
740 class TOOLKIT_DLLPUBLIC Box : public Container
741 {
742 protected:
743     Box( rtl::OUString const& rName, sal_Int32 nBorder, bool bHomogeneous );
744 public:
745     Box( Context const* context, char const* id );
746     void Add( Window *pWindow, bool bExpand, bool bFill, sal_Int32 nPadding);
747     void Add( Container *pContainer, bool bExpand, bool bFill, sal_Int32 nPadding);
748 
749 private:
750     void setProps( css::uno::Reference< css::awt::XLayoutConstrains > xChild,
751                    bool bXExpand, bool bYExpand, sal_Int32 nPadding );
752 };
753 
754 class TOOLKIT_DLLPUBLIC HBox : public Box
755 {
756 public:
757     HBox( Context const* context, char const* id );
758     HBox( sal_Int32 nBorder, bool bHomogeneous );
759 };
760 class TOOLKIT_DLLPUBLIC VBox : public Box
761 {
762 public:
763     VBox( Context const* context, char const* id );
764     VBox( sal_Int32 nBorder, bool bHomogeneous );
765 };
766 
767 class PluginImpl;
768 class TOOLKIT_DLLPUBLIC Plugin : public Control
769 {
770     DECL_GET_IMPL( Plugin );
771     //DECL_CONSTRUCTORS( Plugin, Control, 0 );
772 public:
773     ::Control *mpPlugin;
774     Plugin( Context *context, char const* id, ::Control *plugin );
775 };
776 
777 class LocalizedStringImpl;
778 class TOOLKIT_DLLPUBLIC LocalizedString : public Window
779 {
780     DECL_GET_IMPL( LocalizedString );
781 
782 public:
783     LocalizedString( Context *context, char const* id );
784 
785     rtl::OUString operator= (rtl::OUString const&);
786     rtl::OUString operator+= (sal_Unicode );
787     rtl::OUString operator+= (rtl::OUString const&);
788 
789     operator rtl::OUString ();
790     operator rtl::OUString const& ();
791     operator String();
792     String getString ();
793     rtl::OUString getOUString ();
794     String GetToken (sal_uInt16 i, sal_Char c);
795 };
796 
797 class InPlugImpl;
798 class TOOLKIT_DLLPUBLIC InPlug : public Context, public Window
799 {
800     DECL_GET_IMPL (InPlug);
801 
802 public:
803     InPlug ( Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0);
804     InPlug ( ::Window *parent, char const* xml_file, char const* id, sal_uInt32 nId=0);
805 
806     void ParentSet (Window *window);
807 };
808 
809 } // end namespace layout
810 
811 #if ENABLE_LAYOUT
812 #define LAYOUT_NS layout::
813 #define LAYOUT_DIALOG_PARENT\
814     VCLXWindow::GetImplementation( uno::Reference <awt::XWindow> ( GetPeer(), uno::UNO_QUERY ) )->GetWindow()
815 #define LAYOUT_THIS_WINDOW( this ) this->GetWindow ()
816 #else /* !ENABLE_LAYOUT */
817 #define LAYOUT_NS
818 #define LAYOUT_DIALOG_PARENT this
819 #define LAYOUT_THIS_WINDOW( this ) this
820 #endif /* !ENABLE_LAYOUT */
821 
822 #endif /* _LAYOUT_HXX */
823