diff options
Diffstat (limited to 'svtools/workben')
-rw-r--r-- | svtools/workben/browser.cxx | 810 | ||||
-rw-r--r-- | svtools/workben/cui/loadlib.cxx | 89 | ||||
-rw-r--r-- | svtools/workben/stest.cxx | 186 | ||||
-rw-r--r-- | svtools/workben/svdem.cxx | 1125 | ||||
-rwxr-xr-x | svtools/workben/toolpanel/toolpaneltest.cxx | 880 | ||||
-rw-r--r-- | svtools/workben/treecontrol/treetest.cxx | 396 | ||||
-rw-r--r-- | svtools/workben/unodialog/roadmapskeleton.cxx | 113 | ||||
-rw-r--r-- | svtools/workben/unodialog/roadmapskeleton.hrc | 41 | ||||
-rw-r--r-- | svtools/workben/unodialog/roadmapskeleton.hxx | 65 | ||||
-rw-r--r-- | svtools/workben/unodialog/roadmapskeleton.src | 89 | ||||
-rw-r--r-- | svtools/workben/unodialog/roadmapskeletonpages.cxx | 114 | ||||
-rw-r--r-- | svtools/workben/unodialog/roadmapskeletonpages.hxx | 104 | ||||
-rw-r--r-- | svtools/workben/unodialog/udlg_global.hrc | 54 | ||||
-rw-r--r-- | svtools/workben/unodialog/udlg_module.cxx | 42 | ||||
-rw-r--r-- | svtools/workben/unodialog/udlg_module.hxx | 45 | ||||
-rw-r--r-- | svtools/workben/unodialog/udlg_services.cxx | 58 | ||||
-rw-r--r-- | svtools/workben/unodialog/unodialogsample.cxx | 214 | ||||
-rw-r--r-- | svtools/workben/urange.cxx | 220 |
18 files changed, 4645 insertions, 0 deletions
diff --git a/svtools/workben/browser.cxx b/svtools/workben/browser.cxx new file mode 100644 index 000000000000..f69eaa76e401 --- /dev/null +++ b/svtools/workben/browser.cxx @@ -0,0 +1,810 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_svtools.hxx" +#include <vcl/svapp.hxx> +#include <vcl/sound.hxx> +#include <vcl/msgbox.hxx> +#include <vcl/floatwin.hxx> +#include <vcl/menu.hxx> +#include <vcl/wrkwin.hxx> +#include <vcl/edit.hxx> +#include <svtools/brwbox.hxx> +#include <vcl/group.hxx> + +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <vcl/dialog.hxx> + +#define MID_BROWSER 10 +#define MID_MODE 11 +#define MID_EVENTVIEW 12 +#define MID_INVALIDATE 13 +#define MID_CLEAR 14 +#define MID_ROW 20 +#define MID_INSERTROW_BEFORE 21 +#define MID_INSERTROW_AT 22 +#define MID_INSERTROW_BEHIND 23 +#define MID_REMOVEROW_BEFORE 24 +#define MID_REMOVEROW_AT 25 +#define MID_REMOVEROW_BEHIND 26 +#define MID_MODIFYROW_BEFORE 27 +#define MID_MODIFYROW_AT 28 +#define MID_MODIFYROW_BEHIND 29 +#define MID_COL 30 +#define MID_INSERTCOL 31 +#define MID_REMOVECOL 32 +#define MID_MOVECOLLEFT 33 +#define MID_MOVECOLRIGHT 34 +#define MID_SELECTIONS 60 +#define MID_SELECTROW 61 +#define MID_SELECTALL 62 +#define MID_SELECTNONE 63 +#define MID_INVERSE 64 +#define MID_EXTRAS 70 +#define MID_STARMONEY_1 71 + +//================================================================== + +class BrowseModeDialog: public ModalDialog +{ + RadioButton aSingleSel; + RadioButton aMultiSel; + GroupBox aSelGroup; + + CheckBox aKeepHighlight; + CheckBox aColumnCursor; + CheckBox aThumbDragging; + GroupBox aOptGroup; + + RadioButton aNoHLines; + RadioButton aDottedHLines; + RadioButton aFullHLines; + GroupBox aHLinGroup; + + RadioButton aNoVLines; + RadioButton aDottedVLines; + RadioButton aFullVLines; + GroupBox aVLinGroup; + + OKButton aOKButton; + CancelButton aCancelButton; + +public: + BrowseModeDialog( Window *pParent ); + + void SetMode( BrowserMode eMode ); + BrowserMode GetMode() const; +}; + +//================================================================== + +DECLARE_LIST(DataList,long); + +class Browser: public BrowseBox +{ +friend class AppWindow; + + DataList aRows; + sal_Bool bInverse; + Edit* pEdit; + +protected: + virtual long GetRowCount() const; + virtual sal_Bool SeekRow( long nRow ); + virtual void PaintField( OutputDevice& rDev, const Rectangle& rRect, + sal_uInt16 nColumnId ) const; + + virtual void Select(); + virtual void DoubleClick(); + virtual void CursorMoved(); + virtual void StartScroll(); + virtual void EndScroll(); + virtual void Command( const CommandEvent &eEvt ); + + virtual sal_Bool StartDragging( Pointer& rMovePtr, + Pointer& rCopyPtr ); + virtual void EndDragging( const DropAction &rAction ); + virtual void MouseButtonDown( const BrowserMouseEvent &rEvt ); + +public: + Browser( AppWindow* pParent, BrowserMode eMode ); + ~Browser(); + + void SetInverseSelection( sal_Bool bInverseSel ) + { bInverse = bInverseSel; } +}; + +//------------------------------------------------------------------ + +class AppWindow: public WorkWindow +{ + MenuBar aMenu; + PopupMenu aBrwMenu, aRowMenu, aColMenu, aSelMenu, aExtMenu; + Edit aEdit; + Browser aBrowser; + BrowserMode eCurMode; + FloatingWindow *pEventView; + sal_uLong nNewRowNo; + +private: + DECL_LINK( Modify, void * ); + DECL_LINK( MenuSelect, Menu * ); + +protected: + void Resize(); + void Activate(); + +public: + AppWindow(); + ~AppWindow(); + + void Event( const String &rEvent ); +}; + +//------------------------------------------------------------------ + +class App: public Application +{ +protected: + void Main(); + +public: + App(); + ~App(); +}; + +//================================================================== + +App aApp; + +//================================================================== + +BrowseModeDialog::BrowseModeDialog( Window *pParent ): + ModalDialog( pParent, WinBits( WB_MOVEABLE | WB_CLOSEABLE | WB_3DLOOK ) ), + + aSingleSel( this ), + aMultiSel( this ), + aSelGroup( this ), + + aKeepHighlight( this ), + aColumnCursor( this ), + aThumbDragging( this ), + aOptGroup( this ), + + aNoHLines( this ), + aDottedHLines( this ), + aFullHLines( this ), + aHLinGroup( this ), + + aNoVLines( this, WinBits( WB_GROUP ) ), + aDottedVLines( this ), + aFullVLines( this ), + aVLinGroup( this ), + + aOKButton( this ), + aCancelButton( this ) +{ + SetOutputSizePixel( Size( 290, 220 ) ); + SetText( String( "Browse Mode", RTL_TEXTENCODING_IBM_850 ) ); + + aSingleSel.SetText( String( "single", RTL_TEXTENCODING_IBM_850 ) ); + aMultiSel.SetText( String( "multi", RTL_TEXTENCODING_IBM_850 ) ); + aSelGroup.SetText( String( " Selection ", RTL_TEXTENCODING_IBM_850 ) ); + + aKeepHighlight.SetText( String( "keep highlight", RTL_TEXTENCODING_IBM_850 ) ); + aColumnCursor.SetText( String( "column cursor", RTL_TEXTENCODING_IBM_850 ) ); + aThumbDragging.SetText( String( "thumb dragging", RTL_TEXTENCODING_IBM_850 ) ); + aOptGroup.SetText( String( " Options ", RTL_TEXTENCODING_IBM_850 ) ); + + aNoHLines.SetText( String( "none", RTL_TEXTENCODING_IBM_850 ) ); + aDottedHLines.SetText( String( "dotted", RTL_TEXTENCODING_IBM_850 ) ); + aFullHLines.SetText( String( "full", RTL_TEXTENCODING_IBM_850 ) ); + aHLinGroup.SetText( String( " Horizontal ", RTL_TEXTENCODING_IBM_850 ) ); + + aNoVLines.SetText( String( "none", RTL_TEXTENCODING_IBM_850 ) ); + aDottedVLines.SetText( String( "dotted", RTL_TEXTENCODING_IBM_850 ) ); + aFullVLines.SetText( String( "full", RTL_TEXTENCODING_IBM_850 ) ); + aVLinGroup.SetText( String( " Vertical ", RTL_TEXTENCODING_IBM_850 ) ); + + aSingleSel.SetPosSizePixel( Point( 20, 30 ), Size( 80, 14 ) ); + aMultiSel.SetPosSizePixel( Point( 20, 70 ), Size( 80, 14 ) ); + aSelGroup.SetPosSizePixel( Point( 10, 10 ), Size( 100, 80 ) ); + aSelGroup.SetText( String( " Selection ", RTL_TEXTENCODING_IBM_850 ) ); + + aKeepHighlight.SetPosSizePixel( Point( 130, 30 ), Size( 140, 14 ) ); + aColumnCursor.SetPosSizePixel( Point( 130, 50 ), Size( 140, 14 ) ); + aThumbDragging.SetPosSizePixel( Point( 130, 70 ), Size( 140, 14 ) ); + aOptGroup.SetPosSizePixel( Point( 120, 10 ), Size( 160, 80 ) ); + aOptGroup.SetText( String( " Options ", RTL_TEXTENCODING_IBM_850 ) ); + + aNoHLines.SetPosSizePixel( Point( 20, 120 ), Size( 80, 14 ) ); + aDottedHLines.SetPosSizePixel( Point( 20, 140 ), Size( 80, 14 ) ); + aFullHLines.SetPosSizePixel( Point( 20, 160 ), Size( 80, 14 ) ); + aHLinGroup.SetPosSizePixel( Point( 10, 100 ), Size( 100, 80 ) ); + aHLinGroup.SetText( String( " horizontal ", RTL_TEXTENCODING_IBM_850 ) ); + + aNoVLines.SetPosSizePixel( Point( 130, 120 ), Size( 80, 14 ) ); + aDottedVLines.SetPosSizePixel( Point( 130, 140 ), Size( 80, 14 ) ); + aFullVLines.SetPosSizePixel( Point( 130, 160 ), Size( 80, 14 ) ); + aVLinGroup.SetPosSizePixel( Point( 120, 100 ), Size( 100, 80 ) ); + aVLinGroup.SetText( String( " vertical ", RTL_TEXTENCODING_IBM_850 ) ); + + aOKButton.SetPosSizePixel( Point( 10, 190 ), Size( 100, 22 ) ); + aCancelButton.SetPosSizePixel( Point( 120, 190 ), Size( 100, 22 ) ); + + aSingleSel.Check(); + aNoHLines.Check(); + aNoVLines.Check(); + + aSingleSel.Show(); + aMultiSel.Show(); + aSelGroup.Show(); + + aKeepHighlight.Show(); + aColumnCursor.Show(); + aThumbDragging.Show(); + aOptGroup.Show(); + + aNoHLines.Show(); + aDottedHLines.Show(); + aFullHLines.Show(); + aHLinGroup.Show(); + + aNoVLines.Show(); + aDottedVLines.Show(); + aFullVLines.Show(); + aVLinGroup.Show(); + + aOKButton.Show(); + aCancelButton.Show(); +} + +//------------------------------------------------------------------ + +void BrowseModeDialog::SetMode( BrowserMode eMode ) +{ + if ( ( eMode & BROWSER_COLUMNSELECTION ) == BROWSER_COLUMNSELECTION ) + aColumnCursor.Check(); + if ( ( eMode & BROWSER_MULTISELECTION ) == BROWSER_MULTISELECTION ) + aMultiSel.Check(); + if ( ( eMode & BROWSER_THUMBDRAGGING ) == BROWSER_THUMBDRAGGING ) + aThumbDragging.Check(); + if ( ( eMode & BROWSER_KEEPHIGHLIGHT ) == BROWSER_KEEPHIGHLIGHT ) + aKeepHighlight.Check(); + if ( ( eMode & BROWSER_HLINESFULL ) == BROWSER_HLINESFULL ) + aFullHLines.Check(); + if ( ( eMode & BROWSER_VLINESFULL ) == BROWSER_VLINESFULL ) + aFullVLines.Check(); + if ( ( eMode & BROWSER_HLINESDOTS ) == BROWSER_HLINESDOTS ) + aDottedHLines.Check(); + if ( ( eMode & BROWSER_VLINESDOTS ) == BROWSER_VLINESDOTS ) + aDottedVLines.Check(); +} + +//------------------------------------------------------------------ + +BrowserMode BrowseModeDialog::GetMode() const +{ + BrowserMode eMode = 0; + + if ( aColumnCursor.IsChecked() ) + eMode |= BROWSER_COLUMNSELECTION; + if ( aMultiSel.IsChecked() ) + eMode |= BROWSER_MULTISELECTION; + + if ( aKeepHighlight.IsChecked() ) + eMode |= BROWSER_KEEPHIGHLIGHT; + if ( aThumbDragging.IsChecked() ) + eMode |= BROWSER_THUMBDRAGGING; + + if ( aDottedHLines.IsChecked() ) + eMode |= BROWSER_HLINESDOTS; + if ( aFullHLines.IsChecked() ) + eMode |= BROWSER_HLINESFULL; + + if ( aDottedVLines.IsChecked() ) + eMode |= BROWSER_VLINESDOTS; + if ( aFullVLines.IsChecked() ) + eMode |= BROWSER_VLINESFULL; + + return eMode; +} + +//================================================================== + +Browser::Browser( AppWindow* pParent, BrowserMode eMode ): + BrowseBox( pParent, WinBits(WB_DRAG), eMode ), + bInverse(sal_False), + pEdit( 0 ) +{ + for ( long n = 0; n < 100; ++n ) + aRows.Insert( n, LIST_APPEND ); + + //InsertHandleColumn( 30 ); + InsertDataColumn( 1, String( "eins", RTL_TEXTENCODING_IBM_850 ), 85 ); // FreezeColumn( 1 ); + InsertDataColumn( 2, String( "zwei", RTL_TEXTENCODING_IBM_850 ), 85 ); // FreezeColumn( 2 ); + InsertDataColumn( 3, String( "drei", RTL_TEXTENCODING_IBM_850 ), 85 ); + InsertDataColumn( 4, String( "vier", RTL_TEXTENCODING_IBM_850 ), 85 ); + InsertDataColumn( 5, String( "fuenf", RTL_TEXTENCODING_IBM_850 ), 85 ); + InsertDataColumn( 6, String( "sechs", RTL_TEXTENCODING_IBM_850 ), 85 ); + InsertDataColumn( 7, String( "sieben", RTL_TEXTENCODING_IBM_850 ), 85 ); + InsertDataColumn( 8, String( "acht", RTL_TEXTENCODING_IBM_850 ), 85 ); + InsertDataColumn( 9, String( "neun", RTL_TEXTENCODING_IBM_850 ), 85 ); + InsertDataColumn(10, String( "zehn", RTL_TEXTENCODING_IBM_850 ), 85 ); +} + +//------------------------------------------------------------------ + +Browser::~Browser() +{ + delete pEdit; +} + +//------------------------------------------------------------------ + +sal_Bool Browser::StartDragging( Pointer& rMovePtr, Pointer& rCopyPtr ) +{ + rMovePtr = Pointer( POINTER_MOVEDATA ); + rCopyPtr = Pointer( POINTER_COPYDATA ); + return sal_True; +} + +//------------------------------------------------------------------ + +void Browser::MouseButtonDown( const BrowserMouseEvent &rEvt ) +{ + if ( 3 == rEvt.GetClicks() ) + InfoBox( 0, String( GetColumnAtXPosPixel(rEvt.GetPosPixel().X() ) ) ).Execute(); + else + BrowseBox::MouseButtonDown( rEvt ); +} + +//------------------------------------------------------------------ + +void Browser::EndDragging( const DropAction &rAction ) +{ +} + +//------------------------------------------------------------------ + +void Browser::StartScroll() +{ + ( (AppWindow*) GetParent() )->Event( String( "StartScroll", RTL_TEXTENCODING_IBM_850 ) ); + if ( pEdit ) + pEdit->Hide(); + BrowseBox::StartScroll(); +} + +//------------------------------------------------------------------ + +void Browser::EndScroll() +{ + BrowseBox::EndScroll(); + ( (AppWindow*) GetParent() )->Event( String( "EndScroll", RTL_TEXTENCODING_IBM_850 ) ); + if ( pEdit ) + pEdit->Show(); +} +//------------------------------------------------------------------ + +void Browser::Command( const CommandEvent &rEvt ) +{ + String aEvent( String( "Command at ", RTL_TEXTENCODING_IBM_850 ) ); + aEvent += rEvt.GetMousePosPixel().X(); + aEvent += String( ":", RTL_TEXTENCODING_IBM_850 ); + aEvent += rEvt.GetMousePosPixel().Y(); + ( (AppWindow*) GetParent() )->Event( aEvent ); + BrowseBox::Command(rEvt); +} + +//------------------------------------------------------------------ + +void Browser::Select() +{ + String aEvent( String( "Select: ", RTL_TEXTENCODING_IBM_850 ) ); + DELETEZ(pEdit); + for ( long nRow = FirstSelectedRow(bInverse); nRow >= 0; nRow = NextSelectedRow() ) + { + if ( bInverse ) + aEvent += String( String( "~", RTL_TEXTENCODING_IBM_850 ) ); + aEvent += String( nRow ); + aEvent += String( ", ", RTL_TEXTENCODING_IBM_850 ); + } + aEvent.Erase( aEvent.Len() - 2 ); + + ( (AppWindow*) GetParent() )->Event( aEvent ); +} + +//------------------------------------------------------------------ + +void Browser::DoubleClick() +{ + String aEvent( String( "DoubleClick: ", RTL_TEXTENCODING_IBM_850 ) ); + aEvent += String( GetCurRow() ); + aEvent += String( String( ", ", RTL_TEXTENCODING_IBM_850 ) ); + aEvent += String( FirstSelectedRow() ); + ( (AppWindow*) GetParent() )->Event( aEvent ); + + SetNoSelection(); + if ( !pEdit ) + pEdit = new Edit( &GetDataWindow() ); + Rectangle aRect( GetFieldRect( GetCurColumnId() ) ); + pEdit->SetPosSizePixel( aRect.TopLeft(), aRect.GetSize() ); + pEdit->Show(); + pEdit->GrabFocus(); +} + +//------------------------------------------------------------------ + +void Browser::CursorMoved() +{ + String aEvent( String( "Cursor: ", RTL_TEXTENCODING_IBM_850 ) ); + aEvent += String( GetCurRow() ); + aEvent += String( ":", RTL_TEXTENCODING_IBM_850 ); + aEvent += String( GetCurColumnId() ); + ( (AppWindow*) GetParent() )->Event( aEvent ); + if ( IsFieldVisible( GetCurRow(), GetCurColumnId(), sal_True ) ) + ( (AppWindow*) GetParent() )->Event( String( "completely visible", RTL_TEXTENCODING_IBM_850 ) ); + else if ( IsFieldVisible( 1, GetCurColumnId(), sal_False) ) + ( (AppWindow*) GetParent() )->Event( String( "partly visible", RTL_TEXTENCODING_IBM_850 ) ); + else + ( (AppWindow*) GetParent() )->Event( String( "not visible", RTL_TEXTENCODING_IBM_850 ) ); + + DELETEZ(pEdit); +} + +//------------------------------------------------------------------ + +long Browser::GetRowCount() const +{ + return aRows.Count(); +} + +//------------------------------------------------------------------ + +sal_Bool Browser::SeekRow( long nRow ) +{ + if ( nRow >= 0 && nRow < (long) aRows.Count() ) + { + aRows.Seek(nRow); + return sal_True; + } + return sal_False; +} + +//------------------------------------------------------------------ + +void Browser::PaintField( OutputDevice& rDev, const Rectangle& rRect, + sal_uInt16 nColumnId ) const +{ + rDev.SetClipRegion( rRect ); + String aText( aRows.GetCurObject() ); + aText += String( ".", RTL_TEXTENCODING_IBM_850 ); + aText += String( nColumnId ); + rDev.DrawText( rRect.TopLeft(), aText ); +} + +//================================================================== + +AppWindow::AppWindow(): + WorkWindow( 0, WinBits(WB_APP|WB_STDWORK) ), + aEdit( this, WinBits( WB_BORDER ) ), + aBrowser( this, 0 ), + eCurMode( 0 ), + pEventView( 0 ), + nNewRowNo( 2000L ) +{ + SetText( String( "BrowseBox Testframe", RTL_TEXTENCODING_IBM_850 ) ); + + aMenu.InsertItem( MID_BROWSER, String( "~Browser", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.SetPopupMenu( MID_BROWSER, &aBrwMenu ); + aBrwMenu.InsertItem( MID_MODE, String( "~Mode...", RTL_TEXTENCODING_IBM_850 ) ); + aBrwMenu.InsertItem( MID_EVENTVIEW, String( "~Event-Viewer", RTL_TEXTENCODING_IBM_850 ) ); + aBrwMenu.InsertSeparator(); + aBrwMenu.InsertItem( MID_INVALIDATE, String( "~Invalidate", RTL_TEXTENCODING_IBM_850 ) ); + aBrwMenu.InsertItem( MID_CLEAR, String( "~Clear", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.InsertItem( MID_ROW, String( "~Row", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.SetPopupMenu( MID_ROW, &aRowMenu ); + aRowMenu.InsertItem( MID_INSERTROW_BEFORE, String( "Insert before current", RTL_TEXTENCODING_IBM_850 ) ); + aRowMenu.InsertItem( MID_INSERTROW_AT, String( "~Insert at current", RTL_TEXTENCODING_IBM_850 ) ); + aRowMenu.InsertItem( MID_INSERTROW_BEHIND, String( "~Insert behind current", RTL_TEXTENCODING_IBM_850 ) ); + aRowMenu.InsertSeparator(); + aRowMenu.InsertItem( MID_REMOVEROW_BEFORE, String( "Remove before current", RTL_TEXTENCODING_IBM_850 ) ); + aRowMenu.InsertItem( MID_REMOVEROW_AT, String( "~Remove at current", RTL_TEXTENCODING_IBM_850 ) ); + aRowMenu.InsertItem( MID_REMOVEROW_BEHIND, String( "~Remove behind current", RTL_TEXTENCODING_IBM_850 ) ); + aRowMenu.InsertSeparator(); + aRowMenu.InsertItem( MID_MODIFYROW_BEFORE, String( "Modify before current", RTL_TEXTENCODING_IBM_850 ) ); + aRowMenu.InsertItem( MID_MODIFYROW_AT, String( "~Modify at current", RTL_TEXTENCODING_IBM_850 ) ); + aRowMenu.InsertItem( MID_MODIFYROW_BEHIND, String( "~Modify behind current", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.InsertItem( MID_COL, String( "~Column", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.SetPopupMenu( MID_COL, &aColMenu ); + aColMenu.InsertItem( MID_INSERTCOL, String( "~Insert", RTL_TEXTENCODING_IBM_850 ) ); + aColMenu.InsertItem( MID_REMOVECOL, String( "Re~move", RTL_TEXTENCODING_IBM_850 ) ); + aColMenu.InsertItem( MID_MOVECOLLEFT, String( "Move ~Left", RTL_TEXTENCODING_IBM_850 ) ); + aColMenu.InsertItem( MID_MOVECOLRIGHT, String( "Move ~Right", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.InsertItem( MID_SELECTIONS, String( "Selections", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.SetPopupMenu( MID_SELECTIONS, &aSelMenu ); + aSelMenu.InsertItem( MID_SELECTROW, String( "Row", RTL_TEXTENCODING_IBM_850 ) ); + aSelMenu.InsertItem( MID_SELECTALL, String( "All", RTL_TEXTENCODING_IBM_850 ) ); + aSelMenu.InsertItem( MID_SELECTNONE, String( "None", RTL_TEXTENCODING_IBM_850 ) ); + aSelMenu.InsertItem( MID_INVERSE, String( "Inverse", RTL_TEXTENCODING_IBM_850 ), MENU_APPEND, MIB_CHECKABLE ); + aMenu.InsertItem( MID_EXTRAS, String( "Extras", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.SetPopupMenu( MID_EXTRAS, &aExtMenu ); + aExtMenu.InsertItem( MID_STARMONEY_1, String( "StarMoney: SelectRow(+1)+DeleteRow", RTL_TEXTENCODING_IBM_850 ) ); + aMenu.PushSelectHdl( LINK(this, AppWindow, MenuSelect) ); + + aEdit.SetModifyHdl( LINK(this,AppWindow,Modify) ); + + aEdit.Show(); + aBrowser.Show(); + Show(); +} + +//------------------------------------------------------------------ + +AppWindow::~AppWindow() +{ + GetpApp()->SetAppMenu( 0 ); + if ( pEventView ) + delete pEventView; +} + +//------------------------------------------------------------------ + +IMPL_LINK_INLINE_START( AppWindow, Modify, void *, pCaller ) +{ + Edit *pEdit = (Edit*) pCaller; + aBrowser.GoToRow( pEdit->GetText().ToInt32() ); + aBrowser.GrabFocus(); + + return sal_True; +} +IMPL_LINK_INLINE_END( AppWindow, Modify, void *, pCaller ) + +//------------------------------------------------------------------ + +IMPL_LINK( AppWindow, MenuSelect, Menu *, pMenu ) +{ + sal_uLong nPos; + + switch ( pMenu->GetCurItemId() ) + { + case MID_MODE: + { + BrowseModeDialog *pDlg = new BrowseModeDialog( this ); + pDlg->SetMode( eCurMode ); + if ( pDlg->Execute() == RET_OK ) + { + eCurMode = pDlg->GetMode(); + aBrowser.SetMode( eCurMode | BROWSER_AUTOSIZE_LASTCOL ); + } + delete pDlg; + break; + } + + case MID_INVALIDATE: + aBrowser.Invalidate(); + break; + + case MID_INSERTROW_BEFORE: + if ( aBrowser.GetCurRow() == 0 ) + { + Sound::Beep(); + break; + } + nPos = aBrowser.GetCurRow() - 1; + aBrowser.aRows.Insert( nNewRowNo++, nPos ); + aBrowser.RowInserted( aBrowser.GetCurRow()-1 ); + break; + + case MID_INSERTROW_AT: + nPos = aBrowser.GetCurRow(); + if ( nPos == BROWSER_ENDOFSELECTION ) + nPos = 0; + aBrowser.aRows.Insert( nNewRowNo++, nPos ); + aBrowser.RowInserted( nPos ); + break; + + case MID_INSERTROW_BEHIND: + nPos = aBrowser.GetCurRow() + 1; + aBrowser.aRows.Insert( nNewRowNo++, nPos ); + aBrowser.RowInserted( nPos ); + break; + + case MID_REMOVEROW_BEFORE: + if ( aBrowser.GetCurRow() == 0 ) + { + Sound::Beep(); + break; + } + nPos = aBrowser.GetCurRow() - 1; + aBrowser.aRows.Remove( nPos ); + aBrowser.RowRemoved( nPos ); + break; + + case MID_REMOVEROW_AT: + nPos = aBrowser.GetCurRow(); + aBrowser.aRows.Remove( nPos ); + aBrowser.RowRemoved( nPos ); + break; + + case MID_REMOVEROW_BEHIND: + if ( (aBrowser.GetCurRow()+1) >= aBrowser.GetRowCount() ) + { + Sound::Beep(); + break; + } + nPos = aBrowser.GetCurRow() + 1; + aBrowser.aRows.Remove( nPos ); + aBrowser.RowRemoved( nPos ); + break; + + case MID_MODIFYROW_BEFORE: + if ( aBrowser.GetCurRow() == 0 ) + { + Sound::Beep(); + break; + } + nPos = aBrowser.GetCurRow() - 1; + aBrowser.aRows.Replace( nNewRowNo++, nPos ); + aBrowser.RowModified( nPos ); + break; + + case MID_MODIFYROW_AT: + nPos = aBrowser.GetCurRow(); + aBrowser.aRows.Replace( nNewRowNo++, nPos ); + aBrowser.RowModified( nPos ); + break; + + case MID_MODIFYROW_BEHIND: + if ( (aBrowser.GetCurRow()+1) >= aBrowser.GetRowCount() ) + { + Sound::Beep(); + break; + } + nPos = aBrowser.GetCurRow() + 1; + aBrowser.aRows.Replace( nNewRowNo++, nPos ); + aBrowser.RowModified( nPos ); + break; + + case MID_EVENTVIEW: + if ( pEventView ) + { + delete pEventView; + pEventView = 0; + } + else + { + pEventView = new FloatingWindow( this ); + pEventView->SetPosPixel( Point( 100, 100 ) ); + pEventView->SetOutputSizePixel( + Size( 320, 8*GetTextHeight() ) ); + pEventView->Show(); + aBrowser.CursorMoved(); + aBrowser.Select(); + } + break; + + case MID_SELECTROW: + aBrowser.SelectRow( aBrowser.GetCurRow(), + !aBrowser.IsRowSelected( aBrowser.GetCurRow() ) ); + break; + + case MID_SELECTALL: + aBrowser.SelectAll(); + break; + + case MID_SELECTNONE: + aBrowser.SetNoSelection(); + break; + + case MID_INVERSE: + { + sal_Bool bChecked = pMenu->IsItemChecked( MID_INVERSE ); + pMenu->CheckItem( MID_INVERSE, !bChecked ); + aBrowser.SetInverseSelection( !bChecked ); + break; + } + + case MID_CLEAR: + aBrowser.Clear(); + break; + + case MID_STARMONEY_1: + { + nPos = aBrowser.GetCurRow(); + aBrowser.SelectRow( nPos + 1, sal_True ); + aBrowser.aRows.Remove( nPos ); + aBrowser.RowRemoved( nPos ); + break; + } + } + + return sal_True; +} + +//------------------------------------------------------------------ + +void AppWindow::Resize() +{ + Size aOutSz( GetOutputSizePixel() ); + + aEdit.SetPosSizePixel( + Point( 0, 0 ), + Size( aOutSz.Width(), 24 ) ); + + aBrowser.SetPosSizePixel( + Point( 0, aEdit.GetSizePixel().Height() ), + Size( aOutSz.Width(), aOutSz.Height() - 24 ) ); +} + +//------------------------------------------------------------------ + +void AppWindow::Activate() +{ + GetpApp()->SetAppMenu( &aMenu ); + aBrowser.GrabFocus(); +} + +//------------------------------------------------------------------ + +void AppWindow::Event( const String &rEvent ) +{ + if ( pEventView ) + { + pEventView->Scroll( 0, -GetTextHeight() ); + pEventView->Update(); + pEventView->DrawText( Point(0, 7*GetTextHeight() ), rEvent ); + } +} + +//================================================================== + +App::App() +{ +} + +//------------------------------------------------------------------ + +App::~App() +{ +} + +//------------------------------------------------------------------ + +void App::Main( ) +{ + EnableSVLook(); + + AppWindow aAppWin; + + + Execute(); +} + diff --git a/svtools/workben/cui/loadlib.cxx b/svtools/workben/cui/loadlib.cxx new file mode 100644 index 000000000000..85869e25cb97 --- /dev/null +++ b/svtools/workben/cui/loadlib.cxx @@ -0,0 +1,89 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_svtools.hxx" + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +#include <tools/string.hxx> +#include <osl/module.h> +#include <rtl/ustring.hxx> + +using namespace rtl; + +extern "C" { +struct VersionInfo +{ + const char* pTime; + const char* pDate; + const char* pUpd; + const char* pMinor; + const char* pBuild; + const char* pInpath; +}; + +typedef VersionInfo*(__LOADONCALLAPI *GetVersionInfo)(void); +} + +int __LOADONCALLAPI main( int argc, char **argv ) +{ + VersionInfo *pInfo = NULL; + + if ( argc != 2 ) + { + fprintf( stderr, "USAGE: %s DllName \n", argv[0] ); + exit(0); + } + OUString aLib = OUString::createFromAscii(argv[1]); + oslModule aLibrary = osl_loadModule( aLib.pData, SAL_LOADMODULE_DEFAULT ); + if ( aLibrary ) + { + void* pFunc = osl_getSymbol( aLibrary, OUString::createFromAscii( "GetVersionInfo" ).pData ); + if ( pFunc ) + pInfo = (*(GetVersionInfo)pFunc)(); + } + if ( pInfo ) + { + fprintf( stdout, "Date : %s\n", pInfo->pDate ); + fprintf( stdout, "Time : %s\n", pInfo->pTime ); + fprintf( stdout, "UPD : %s\n", pInfo->pUpd ); + fprintf( stdout, "Minor : %s\n", pInfo->pMinor ); + fprintf( stdout, "Build : %s\n", pInfo->pBuild ); + fprintf( stdout, "Inpath : %s\n", pInfo->pInpath ); + } + else + fprintf( stderr, "VersionInfo not Found !\n" ); + + if ( aLibrary ) + osl_unloadModule( aLibrary ); + + return 0; +} + diff --git a/svtools/workben/stest.cxx b/svtools/workben/stest.cxx new file mode 100644 index 000000000000..ca6c8a757734 --- /dev/null +++ b/svtools/workben/stest.cxx @@ -0,0 +1,186 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_svtools.hxx" +#include <svtools/svmedit.hxx> +#include <txtcmp.hxx> + +#ifndef _SV_BUTTON_HXX //autogen +#include <vcl/button.hxx> +#endif +#include <vcl/wrkwin.hxx> +#include <vcl/fixed.hxx> +#include <vcl/svapp.hxx> + +class MyApp : public Application +{ +public: + virtual void Main( ); +}; + +class SearchWindow : public WorkWindow +{ + PushButton aPB; + FixedText aFT1, aFT2, aFT3; + MultiLineEdit aEText, aESrch; + RadioButton aModeN, aModeR, aModeL; + SearchParam aParam; + +public: + SearchWindow(); + + DECL_LINK( ClickHdl, Button * ); +}; + +// --- SearchWindow::SearchWindow() ------------------------------------ + +SearchWindow::SearchWindow() : + WorkWindow( NULL, WinBits( WB_APP | WB_STDWORK )), + aPB( this, WinBits( 0 )), + aFT1( this, WinBits( 0 )), + aFT2( this, WinBits( 0 )), + aFT3( this, WinBits( 0 )), + aEText( this, WinBits( WB_BORDER )), + aESrch( this, WinBits( WB_BORDER )), + aModeN( this, WinBits( 0 )), + aModeR( this, WinBits( 0 )), + aModeL( this, WinBits( 0 )), + aParam( "" ) +{ + aPB.SetClickHdl( LINK( this, SearchWindow, ClickHdl )); + aModeN.SetClickHdl( LINK( this, SearchWindow, ClickHdl )); + aModeR.SetClickHdl( LINK( this, SearchWindow, ClickHdl )); + aModeL.SetClickHdl( LINK( this, SearchWindow, ClickHdl )); + + SetMapMode( MapMode( MAP_APPFONT )); + SetSizePixel( LogicToPixel( Size( 300, 180 ) ) ); + + aEText.SetPosSizePixel( LogicToPixel( Point( 0, 22 )), LogicToPixel(Size( 270, 32 )) ); + aFT1.SetPosSizePixel( LogicToPixel( Point( 0, 10 )), LogicToPixel(Size( 18, 11 )) ); + aFT2.SetPosSizePixel( LogicToPixel( Point( 0, 60 )), LogicToPixel(Size( 24, 10 )) ); + aESrch.SetPosSizePixel( LogicToPixel( Point( 0, 70 )), LogicToPixel(Size( 270, 24 )) ); + aPB.SetPosSizePixel( LogicToPixel( Point( 223, 139 )), LogicToPixel(Size( 48, 12 )) ); + aFT3.SetPosSizePixel( LogicToPixel( Point( 0, 104 )), LogicToPixel(Size( 270, 15 )) ); + aModeN.SetPosSizePixel( LogicToPixel( Point( 5, 116 ) ), LogicToPixel( Size( 40, 12 ) ) ); + aModeR.SetPosSizePixel( LogicToPixel( Point( 5, 126 ) ), LogicToPixel( Size( 40, 12 ) ) ); + aModeL.SetPosSizePixel( LogicToPixel( Point( 5, 136 ) ), LogicToPixel( Size( 40, 12 ) ) ); + + aEText.Show(); + aFT1.Show(); + aFT2.Show(); + aESrch.Show(); + aPB.Show(); + aFT3.Show(); + aModeN.Show(); + aModeR.Show(); + aModeL.Show(); + + aFT3.SetText( "gefunden:" ); + aFT1.SetText( "Text:" ); + aFT2.SetText( "Suche:" ); + aPB.SetText( "starte Suche" ); + aModeN.SetText( "normal" ); + aModeR.SetText( "RegExp" ); + aModeL.SetText( "LevDis" ); + + SetText( "Such-Demo" ); +} + + +// --- SearchWindow::SearchSelectHdl() --------------------------------- + +IMPL_LINK( SearchWindow, ClickHdl, Button *, pButton ) +{ + if( pButton == &aPB ) + { + String sText( aEText.GetText() ); + String sSrch( aESrch.GetText() ); + +/* InfoBox( this, String( "T: " ) + sText + + String( "\nS: " ) + sSrch ).Execute(); +*/ + sal_Bool bRet = sal_False; + sal_uInt16 nStt = 0, nEnd = sText.Len(); + + { + aParam.SetSrchStr( sSrch ); + SearchText aSrchText( aParam, GetpApp()->GetAppInternational() ); + bRet = aSrchText.SearchFrwrd( sText, &nStt, &nEnd ); + +// sal_Bool SearchBkwrd( const String &rStr, sal_uInt16* pStart, sal_uInt16* pEnde ); + } + + String sFound( "gefunden" ); + if( !bRet ) + sFound.Insert( "nicht ", 0 ); + + sFound += ": S<"; + sFound += nStt; + sFound += "> E<"; + sFound += nEnd; + sFound += '>'; + + if( bRet ) + { + sFound += '<'; + sFound += sText.Copy( nStt, nEnd - nStt +1 ); + sFound += '>'; + } + + aFT3.SetText( sFound ); + } + else if( pButton == &aModeN ) + { + aParam.SetSrchType( SearchParam::SRCH_NORMAL ); + } + else if( pButton == &aModeR ) + { + aParam.SetSrchType( SearchParam::SRCH_REGEXP ); + } + else if( pButton == &aModeL ) + { + aParam.SetSrchType( SearchParam::SRCH_LEVDIST ); + } + return 0; +} + + +// --- MyApp::Main() ----------------------------------------------- + +void MyApp::Main( ) +{ + SearchWindow* pSearchWindow = new SearchWindow; + pSearchWindow->Show(); + Execute(); + delete pSearchWindow; + +} + +// --- aMyApp ------------------------------------------------------ + +MyApp aMyApp; diff --git a/svtools/workben/svdem.cxx b/svtools/workben/svdem.cxx new file mode 100644 index 000000000000..fe3afcc20ea5 --- /dev/null +++ b/svtools/workben/svdem.cxx @@ -0,0 +1,1125 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_svtools.hxx" +#include <stdio.h> +#include <cppuhelper/servicefactory.hxx> +#include <comphelper/processfactory.hxx> + +#include <unotools/calendarwrapper.hxx> +#include <unotools/localedatawrapper.hxx> + +#include <vcl/wrkwin.hxx> +#include <vcl/dialog.hxx> +#include <vcl/msgbox.hxx> +#include <vcl/print.hxx> +#include <vcl/svapp.hxx> +#include <vcl/help.hxx> +#include <vcl/fixed.hxx> +#include <vcl/button.hxx> +#include <vcl/scrbar.hxx> +#include <vcl/slider.hxx> +#include <vcl/group.hxx> +#include <vcl/toolbox.hxx> +#include <vcl/status.hxx> +#include <stdmenu.hxx> +#include <ctrltool.hxx> +#include <ctrlbox.hxx> +#include <tabbar.hxx> +#include <svtools/valueset.hxx> +#include <svtools/headbar.hxx> +#include <prgsbar.hxx> +#include <calendar.hxx> +#include <svtools/prnsetup.hxx> +#include <svtools/printdlg.hxx> + +using namespace ::com::sun::star; + +// ----------------------------------------------------------------------- + +class MyApp : public Application +{ +public: + void Main(); +}; + +// ----------------------------------------------------------------------- + +class ShowBitmap : public WorkWindow +{ + Bitmap aBmp; + +public: + ShowBitmap( Window* pParent, const Bitmap& rBmp ); + + virtual void Paint( const Rectangle& ); + virtual sal_Bool Close(); +}; + +// ----------------------------------------------------------------------- + +class ShowFont : public Control +{ +public: + ShowFont( Window* pParent ); + + virtual void Paint( const Rectangle& ); + void SetFont( const Font& rFont ) + { Invalidate(); Control::SetFont( rFont ); } +}; + +// --- class OrientSlider ------------------------------------------------ + +class OrientSlider : public Slider +{ +public: + OrientSlider( Window* pParent ); + + short GetOrientation() const { return (short)GetThumbPos(); } +}; + +// ----------------------------------------------------------------------- + +OrientSlider::OrientSlider( Window* pParent ) : + Slider( pParent, WB_HORZ | WB_DRAG ) +{ + SetThumbPos( 0 ); + SetLineSize( 10 ); + SetPageSize( 100 ); + SetRange( Range( 0, 3600 ) ); +} + +// ----------------------------------------------------------------------- + +class MyFontDialog : public ModalDialog +{ +private: + FontList* pList; + Font aCurFont; + Printer aPrinter; + FontNameBox aFontBox; + FontStyleBox aStyleBox; + FontSizeBox aSizeBox; + ListBox aUnderlineBox; + ListBox aStrikeoutBox; + CheckBox aWordLineBox; + CheckBox aShadowBox; + CheckBox aOutlineBox; + ColorListBox aColorBox; + GroupBox aEffectBox; + OrientSlider aLineOrientSlider; + ShowFont aShowFont; + GroupBox aSampleBox; + FixedText aMapText; + OKButton aOKBtn; + CancelButton aCancelBtn; + +public: + MyFontDialog( Window* pParent ); + + DECL_LINK( SelectFont, ComboBox* ); + DECL_LINK( SelectStyle, ComboBox* ); + DECL_LINK( AttrHdl, Window * ); + void SetAttr(); + short Execute(); +}; + +// ----------------------------------------------------------------------- + +class MyTabBar : public TabBar +{ +public: + MyTabBar( Window* pParent, + WinBits nWinStyle = WB_STDTABBAR ) : + TabBar( pParent, nWinStyle ) {} + + virtual long DeactivatePage(); + virtual long AllowRenaming(); + virtual void Split(); +}; + +// ----------------------------------------------------------------------- + +class MyCalendar : public WorkWindow +{ + MenuBar aMenuBar; + PopupMenu aWeekStartMenu; + PopupMenu aWeekCountMenu; + Calendar aCalendar; + Color aInfoColor; + Color aHolidayColor; + Color aFrameColor; + +public: + MyCalendar( Window* pParent ); + ~MyCalendar(); + + DECL_LINK( RequestDateInfoHdl, Calendar* ); + DECL_LINK( DoubleClickHdl, Calendar* ); + DECL_LINK( MenuSelectHdl, Menu* ); + + void Resize(); +}; + +// ----------------------------------------------------------------------- + +class MyWin : public WorkWindow +{ +private: + Printer aPrn; + ToolBox aBox; + StatusBar aBar; + HeaderBar aHeadBar; + ColorListBox aColorList; + LineListBox aLineList; + ValueSet aValueSet; + CalendarField aCalendarField; + CalendarField aCalendarField2; + MyTabBar aTabBar; + ProgressBar aPrgsBar; + PushButton aFontBtn; + PushButton aCalendarBtn; + PushButton aPrnSetupBtn; + PushButton aPrnDlgBtn; + Size aBoxSize; + MyCalendar* pCalendar; + PopupMenu* pMenu; + FontNameMenu* pNameMenu; + FontStyleMenu* pStyleMenu; + FontSizeMenu* pSizeMenu; + +public: + MyWin( Window* pParent, WinBits aWinStyle ); + ~MyWin(); + + DECL_LINK( Test, PushButton* ); + DECL_LINK( SelectHdl, Window* ); + DECL_LINK( CalSelectHdl, CalendarField* ); + void ContextMenu( const Point& rPos ); + + void Command( const CommandEvent& rCEvt ); + void MouseButtonDown( const MouseEvent& rMEvt ); + void KeyInput( const KeyEvent& rKEvt ); + void Paint( const Rectangle& rRect ); + void Resize(); +}; + +// ----------------------------------------------------------------------- + +void MyApp::Main() +{ + try + { + ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > + xMSF = cppu::createRegistryServiceFactory( + rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "applicat.rdb" ) ), sal_True ); + + ::comphelper::setProcessServiceFactory( xMSF ); + + Help aHelp; + SetHelp( &aHelp ); + Help::EnableContextHelp(); + Help::EnableExtHelp(); + Help::EnableBalloonHelp(); + Help::EnableQuickHelp(); + + MyWin aMainWin( NULL, WinBits( WB_APP | WB_STDWORK | WB_CLIPCHILDREN ) ); + aMainWin.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "SVTOOLS - Workbench" ) ) ); + aMainWin.GrabFocus(); + aMainWin.Show(); + + Execute(); + } + catch ( com::sun::star::uno::Exception & e ) + { + fprintf( stderr, "Error during bootstrapping servicemanager: %s\n" , + rtl::OUStringToOString( e.Message, RTL_TEXTENCODING_ASCII_US ).getStr() ); + } +} + +// ----------------------------------------------------------------------- + +ShowBitmap::ShowBitmap( Window* pParent, const Bitmap& rBmp ) : + WorkWindow( pParent, WB_STDWORK ), + aBmp( rBmp ) +{ + SetOutputSizePixel( rBmp.GetSizePixel() ); + SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Bitmap-Viewer" ) ) ); + Show(); +} + +// ----------------------------------------------------------------------- + +void ShowBitmap::Paint( const Rectangle& ) +{ + DrawBitmap( Point(), GetOutputSizePixel(), aBmp ); +} + +// ----------------------------------------------------------------------- + +sal_Bool ShowBitmap::Close() +{ + Hide(); + delete this; + return sal_True; +} + +// ----------------------------------------------------------------------- + +ShowFont::ShowFont( Window* pParent ) : + Control( pParent, WB_BORDER ) +{ + SetMapMode( MapMode( MAP_POINT, Point(), + Fraction( 1, 10 ), Fraction( 1, 10 ) ) ); + SetBackground( Wallpaper( Color( COL_WHITE ) ) ); +} + +// ----------------------------------------------------------------------- + +void ShowFont::Paint( const Rectangle& ) +{ + const Font& rFont = GetFont(); + String aText; + Size aWindowSize( GetOutputSize() ); + long x,y; + + if ( rFont.GetOrientation() ) + { + aText.Append( String::CreateFromInt32( rFont.GetOrientation()/10 ) ); + aText.AppendAscii( " degree." ); + + x = aWindowSize.Width()/2; + y = aWindowSize.Height()/2; + } + else + { + aText = rFont.GetName(); + if ( !aText.Len() ) + aText.AssignAscii( "Sample" ); + + x = aWindowSize.Width()/2 - GetTextWidth( aText )/2; + y = aWindowSize.Height()/2 - GetTextHeight()/2; + } + + DrawText( Point( x, y ), aText ); +} + +// ----------------------------------------------------------------------- + +MyFontDialog::MyFontDialog( Window* pParent ) : + ModalDialog( pParent, WB_3DLOOK | WB_STDMODAL ), + aFontBox( this ), + aStyleBox( this ), + aSizeBox( this ), + aUnderlineBox( this, WB_DROPDOWN ), + aStrikeoutBox( this, WB_DROPDOWN ), + aWordLineBox( this ), + aShadowBox( this ), + aOutlineBox( this ), + aColorBox( this, WB_DROPDOWN ), + aEffectBox( this ), + aLineOrientSlider( this ), + aShowFont( this ), + aSampleBox( this ), + aMapText( this, WB_LEFT | WB_WORDBREAK ), + aOKBtn( this, WB_DEFBUTTON ), + aCancelBtn( this ) +{ + pList = NULL; + + aFontBox.EnableWYSIWYG( sal_True ); + aFontBox.EnableSymbols( sal_True ); + aFontBox.SetPosSizePixel( Point( 10, 10 ), Size( 140, 140 ) ); + aFontBox.SetSelectHdl( LINK( this, MyFontDialog, SelectFont ) ); + aFontBox.SetLoseFocusHdl( LINK( this, MyFontDialog, SelectFont ) ); + aFontBox.Show(); + + aStyleBox.SetPosSizePixel( Point( 160, 10 ), Size( 100, 140 ) ); + aStyleBox.SetSelectHdl( LINK( this, MyFontDialog, SelectStyle ) ); + aStyleBox.SetLoseFocusHdl( LINK( this, MyFontDialog, SelectStyle ) ); + aStyleBox.Show(); + + aSizeBox.SetPosSizePixel( Point( 270, 10 ), Size( 60, 140 ) ); + aSizeBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aSizeBox.SetLoseFocusHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aSizeBox.Show(); + + aUnderlineBox.SetPosSizePixel( Point( 15, 180 ), Size( 130, 100 ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_NONE" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_SINGLE" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOUBLE" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOTTED" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DONTKNOW" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASH" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_LONGDASH" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASHDOT" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DASHDOTDOT" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_SMALLWAVE" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_WAVE" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_DOUBLEWAVE" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLD" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDOTTED" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASH" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDLONGDASH" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASHDOT" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDDASHDOTDOT" ) ) ); + aUnderlineBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "UNDERLINE_BOLDWAVE" ) ) ); + aUnderlineBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aUnderlineBox.Show(); + + aStrikeoutBox.SetPosSizePixel( Point( 15, 210 ), Size( 130, 100 ) ); + aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_NONE" ) ) ); + aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_SINGLE" ) ) ); + aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_DOUBLE" ) ) ); + aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_DONTKNOW" ) ) ); + aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_BOLD" ) ) ); + aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_SLASH" ) ) ); + aStrikeoutBox.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "STRIKEOUT_X" ) ) ); + aStrikeoutBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aStrikeoutBox.Show(); + + aWordLineBox.SetPosSizePixel( Point( 15, 240 ), Size( 130, 19 ) ); + aWordLineBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Only ~Words" ) ) ); + aWordLineBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aWordLineBox.Show(); + + aShadowBox.SetPosSizePixel( Point( 15, 260 ), Size( 130, 19 ) ); + aShadowBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "~Shadow" ) ) ); + aShadowBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aShadowBox.Show(); + + aOutlineBox.SetPosSizePixel( Point( 15, 280 ), Size( 130, 19 ) ); + aOutlineBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "~Outline" ) ) ); + aOutlineBox.SetClickHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aOutlineBox.Show(); + + { + aColorBox.SetPosSizePixel( Point( 15, 305 ), Size( 130, 100 ) ); + aColorBox.SetSelectHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aColorBox.SetUpdateMode( sal_False ); + aColorBox.InsertEntry( Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) ); + aColorBox.InsertEntry( Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) ); + aColorBox.InsertEntry( Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) ); + aColorBox.InsertEntry( Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) ); + aColorBox.InsertEntry( Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) ); + aColorBox.InsertEntry( Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) ); + aColorBox.InsertEntry( Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) ); + aColorBox.InsertEntry( Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) ); + aColorBox.InsertEntry( Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) ); + aColorBox.InsertEntry( Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) ); + aColorBox.InsertEntry( Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) ); + aColorBox.InsertEntry( Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) ); + aColorBox.InsertEntry( Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) ); + aColorBox.InsertEntry( Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) ); + aColorBox.InsertEntry( Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) ); + aColorBox.InsertEntry( Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) ); + aColorBox.SetUpdateMode( sal_True ); + aColorBox.Show(); + } + + aEffectBox.SetPosSizePixel( Point( 10, 160 ), Size( 140, 175 ) ); + aEffectBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Effects" ) ) ); + aEffectBox.Show(); + + Size aSliderSize = aLineOrientSlider.GetSizePixel(); + aLineOrientSlider.SetPosSizePixel( Point( 160, 335-aSliderSize.Height() ), + Size( 250, aSliderSize.Height() ) ); + aLineOrientSlider.SetSlideHdl( LINK( this, MyFontDialog, AttrHdl ) ); + aLineOrientSlider.Show(); + + aShowFont.SetPosSizePixel( Point( 165, 180 ), Size( 240, 70 ) ); + aShowFont.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Sample" ) ) ); + aShowFont.Show(); + + aSampleBox.SetPosSizePixel( Point( 160, 160 ), Size( 250, 100 ) ); + aSampleBox.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Sample" ) ) ); + aSampleBox.Show(); + + aMapText.SetPosSizePixel( Point( 160, 270 ), Size( 250, 35 ) ); + aMapText.Show(); + + aOKBtn.SetPosSizePixel( Point( 340, 10 ), Size( 70, 25 ) ); + aOKBtn.Show(); + + aCancelBtn.SetPosSizePixel( Point( 340, 40 ), Size( 70, 25 ) ); + aCancelBtn.Show(); + + SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "FontDialog" ) ) ); + SetOutputSizePixel( Size( 420, 345 ) ); +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyFontDialog, SelectFont, ComboBox*, EMPTYARG ) +{ + aStyleBox.Fill( aFontBox.GetText(), pList ); + FontInfo aInfo = pList->Get( aFontBox.GetText(), aStyleBox.GetText() ); + aSizeBox.Fill( &aInfo, pList ); + SetAttr(); + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyFontDialog, SelectStyle, ComboBox*, EMPTYARG ) +{ + FontInfo aInfo = pList->Get( aFontBox.GetText(), aStyleBox.GetText() ); + aSizeBox.Fill( &aInfo, pList ); + SetAttr(); + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyFontDialog, AttrHdl, Window*, EMPTYARG ) +{ + SetAttr(); + return 0; +} + +// ----------------------------------------------------------------------- + +void MyFontDialog::SetAttr() +{ + FontInfo aFont( pList->Get( aFontBox.GetText(), aStyleBox.GetText() ) ); + aFont.SetSize( Size( 0, aSizeBox.GetValue() ) ); + aFont.SetUnderline( (FontUnderline)aUnderlineBox.GetSelectEntryPos() ); + aFont.SetStrikeout( (FontStrikeout)aStrikeoutBox.GetSelectEntryPos() ); + aFont.SetColor( Color( (ColorData)aColorBox.GetSelectEntryPos() ) ); + aFont.SetWordLineMode( aWordLineBox.IsChecked() ); + aFont.SetShadow( aShadowBox.IsChecked() ); + aFont.SetOutline( aOutlineBox.IsChecked() ); + aFont.SetOrientation( aLineOrientSlider.GetOrientation() ); + aFont.SetTransparent( sal_True ); + aMapText.SetText( pList->GetFontMapText( aFont ) ); + aShowFont.SetFont( aFont ); +} + +// ----------------------------------------------------------------------- + +short MyFontDialog::Execute() +{ + pList = new FontList( &aPrinter, this ); + aFontBox.Fill( pList ); + aSizeBox.SetValue( 120 ); + aUnderlineBox.SelectEntryPos( 0 ); + aStrikeoutBox.SelectEntryPos( 0 ); + aColorBox.SelectEntryPos( 0 ); + SelectFont( &aFontBox ); + short nRet = ModalDialog::Execute(); + delete pList; + return nRet; +} + +// ----------------------------------------------------------------------- + +long MyTabBar::DeactivatePage() +{ + if ( GetCurPageId() == 6 ) + { + QueryBox aQueryBox( this, WB_YES_NO | WB_DEF_YES, + XubString( RTL_CONSTASCII_USTRINGPARAM( "Deactivate" ) ) ); + if ( aQueryBox.Execute() == RET_YES ) + return sal_True; + else + return sal_False; + } + else + return sal_True; +} + +// ----------------------------------------------------------------------- + +long MyTabBar::AllowRenaming() +{ + XubString aStr( RTL_CONSTASCII_USTRINGPARAM( "Allow renaming: " ) ); + aStr += GetEditText(); + QueryBox aQueryBox( this, WB_YES_NO_CANCEL | WB_DEF_YES, aStr ); + long nRet = aQueryBox.Execute(); + if ( nRet == RET_YES ) + return TAB_RENAMING_YES; + else if ( nRet == RET_NO ) + return TAB_RENAMING_NO; + else // ( nRet == RET_CANCEL ) + return TAB_RENAMING_CANCEL; +} + +// ----------------------------------------------------------------------- + +void MyTabBar::Split() +{ + Size aSize = GetSizePixel(); + long nWidth = GetSplitSize(); + long nMaxWidth = GetParent()->GetOutputSizePixel().Width()-50; + if ( nWidth < GetMinSize() ) + nWidth = GetMinSize(); + else if ( nWidth > nMaxWidth ) + nWidth = nMaxWidth; + SetSizePixel( Size( nWidth, aSize.Height() ) ); +} + +// ----------------------------------------------------------------------- + +MyCalendar::MyCalendar( Window* pParent ) : + WorkWindow( pParent, WB_STDWORK ), + aCalendar( this, WB_TABSTOP | WB_WEEKNUMBER | WB_BOLDTEXT | WB_FRAMEINFO | WB_MULTISELECT ), + aInfoColor( COL_LIGHTBLUE ), + aHolidayColor( COL_LIGHTRED ), + aFrameColor( COL_LIGHTRED ) +{ + const CalendarWrapper& rCal = aCalendar.GetCalendarWrapper(); + aMenuBar.InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Wochen~anfang" ) ) ); + aMenuBar.InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Erste Woche" ) ) ); + aMenuBar.SetPopupMenu( 1, &aWeekStartMenu ); + aMenuBar.SetPopupMenu( 2, &aWeekCountMenu ); + sal_Int16 nDays = rCal.getNumberOfDaysInWeek(); + uno::Sequence< i18n::CalendarItem> xItems = rCal.getDays(); + const i18n::CalendarItem* pArr = xItems.getArray(); + for ( sal_Int16 i = 0; i < nDays; i++ ) + aWeekStartMenu.InsertItem( 10+(sal_uInt16)i, pArr[i].FullName, MIB_AUTOCHECK | MIB_RADIOCHECK ); + aWeekStartMenu.CheckItem( 10+(sal_uInt16)rCal.getFirstDayOfWeek() ); + aWeekCountMenu.InsertItem( 20, XubString( RTL_CONSTASCII_USTRINGPARAM( "~1. Januar" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); + aWeekCountMenu.InsertItem( 21, XubString( RTL_CONSTASCII_USTRINGPARAM( "~2 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); + aWeekCountMenu.InsertItem( 22, XubString( RTL_CONSTASCII_USTRINGPARAM( "~3 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); + aWeekCountMenu.InsertItem( 23, XubString( RTL_CONSTASCII_USTRINGPARAM( "Erste 4 ~Tage-Woche" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); + aWeekCountMenu.InsertItem( 24, XubString( RTL_CONSTASCII_USTRINGPARAM( "~5 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); + aWeekCountMenu.InsertItem( 25, XubString( RTL_CONSTASCII_USTRINGPARAM( "~6 days" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); + aWeekCountMenu.InsertItem( 26, XubString( RTL_CONSTASCII_USTRINGPARAM( "Erste ~volle Woche" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK ); + //was: one of 0, 1, 2; aWeekCountMenu.CheckItem( 20+(sal_uInt16)rIntn.GetWeekCountStart() ); + aWeekCountMenu.CheckItem( 20+(sal_uInt16)rCal.getMinimumNumberOfDaysForFirstWeek() ); + aMenuBar.SetSelectHdl( LINK( this, MyCalendar, MenuSelectHdl ) ); + SetMenuBar( &aMenuBar ); + + Date aCurDate = aCalendar.GetCurDate(); + aCalendar.SetRequestDateInfoHdl( LINK( this, MyCalendar, RequestDateInfoHdl ) ); + aCalendar.SetDoubleClickHdl( LINK( this, MyCalendar, DoubleClickHdl ) ); + aCalendar.SetSaturdayColor( Color( COL_LIGHTGREEN ) ); + aCalendar.SetSundayColor( aHolidayColor ); + aCalendar.AddDateInfo( Date( 1, 1, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Neujahr" ) ), &aHolidayColor, NULL ); + aCalendar.AddDateInfo( Date( 24, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Heiligabend" ) ), &aInfoColor, NULL ); + aCalendar.AddDateInfo( Date( 25, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "1. Weihnachttag" ) ), &aHolidayColor, NULL ); + aCalendar.AddDateInfo( Date( 26, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "2. Weihnachttag" ) ), &aHolidayColor, NULL ); + aCalendar.AddDateInfo( Date( 31, 12, 0 ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Silvester" ) ), &aInfoColor, NULL ); + aCalendar.SetPosPixel( Point() ); + aCalendar.SetFirstDate( Date( 1, 1, aCurDate.GetYear() ) ); + aCalendar.Show(); + + SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Calendar" ) ) ); + SetOutputSizePixel( aCalendar.CalcWindowSizePixel( 3, 4 ) ); +} + +// ----------------------------------------------------------------------- + +MyCalendar::~MyCalendar() +{ + SetMenuBar( NULL ); + aMenuBar.SetPopupMenu( 1, NULL ); + aMenuBar.SetPopupMenu( 2, NULL ); +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyCalendar, RequestDateInfoHdl, Calendar*, EMPTYARG ) +{ + sal_uInt16 nRequestYear = aCalendar.GetRequestYear(); + if ( (nRequestYear >= 1954) && (nRequestYear <= 1989) ) + aCalendar.AddDateInfo( Date( 17, 6, nRequestYear ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Tag der deutschen Einheit" ) ), &aHolidayColor, NULL ); + else if ( nRequestYear >= 1990 ) + aCalendar.AddDateInfo( Date( 3, 10, nRequestYear ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Tag der deutschen Einheit" ) ), &aHolidayColor, NULL ); + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyCalendar, DoubleClickHdl, Calendar*, EMPTYARG ) +{ + Date aDate = aCalendar.GetCurDate(); + String aStr( RTL_CONSTASCII_USTRINGPARAM( "Info: " ) ); + aStr += Application::GetAppLocaleDataWrapper().getDate( aDate ); + aCalendar.AddDateInfo( aDate, aStr, NULL, &aFrameColor, DIB_BOLD ); + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyCalendar, MenuSelectHdl, Menu*, pMenu ) +{ + sal_uInt16 nItemId = pMenu->GetCurItemId(); + + if ( (nItemId >= 10) && (nItemId <= 19) ) + aCalendar.SetWeekStart( nItemId-10 ); + else if ( (nItemId >= 20) && (nItemId <= 29) ) + aCalendar.SetMinimumNumberOfDaysInWeek( nItemId-20 ); + + return 0; +} + +// ----------------------------------------------------------------------- + +void MyCalendar::Resize() +{ + aCalendar.SetSizePixel( GetOutputSizePixel() ); +} + +// ----------------------------------------------------------------------- + +MyWin::MyWin( Window* pParent, WinBits aWinStyle ) : + WorkWindow(pParent, aWinStyle | WB_3DLOOK ), + aBox( this, WB_BORDER | WB_3DLOOK ), + aBar( this, WB_BORDER | WB_3DLOOK | WB_RIGHT ), + aHeadBar( this, WB_BORDER | WB_3DLOOK | WB_DRAG | WB_BUTTONSTYLE ), + aColorList( this ), + aLineList( this ), + aValueSet( this, WB_TABSTOP | WB_NAMEFIELD | WB_NONEFIELD | WB_BORDER | WB_ITEMBORDER | WB_VSCROLL /* | WB_FLATVALUESET */ ), + aCalendarField( this, WB_TABSTOP | WB_SPIN | WB_REPEAT | WB_DROPDOWN | WB_BORDER ), + aCalendarField2( this, WB_TABSTOP | WB_SPIN | WB_REPEAT | WB_DROPDOWN | WB_BORDER ), + aTabBar( this, WB_BORDER | WB_MULTISELECT | WB_SCROLL | WB_SIZEABLE | WB_DRAG ), + aPrgsBar( this ), + aFontBtn( this ), + aCalendarBtn( this ), + aPrnSetupBtn( this ), + aPrnDlgBtn( this ) +{ + SetBackground( Wallpaper( GetSettings().GetStyleSettings().GetFaceColor() ) ); + + pCalendar = NULL; + pMenu = NULL; + + Bitmap aBmp; + aBox.InsertItem( 1, aBmp ); + aBox.InsertItem( 2, aBmp ); + aBox.InsertItem( 3, aBmp ); + aBox.InsertItem( 4, aBmp ); + aBox.InsertSeparator(); + aBox.InsertItem( 5, aBmp ); + aBox.InsertItem( 6, aBmp ); + aBox.InsertItem( 7, aBmp ); + aBox.InsertItem( 8, aBmp ); + aBox.InsertSpace(); + aBox.InsertItem( 9, aBmp ); + aBox.SetPosPixel( Point( 0, 0 ) ); + aBoxSize = aBox.GetSizePixel(); + aBox.Show(); + + aBar.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Ready" ) ) ); + aBar.InsertItem( 1, 35 ); + aBar.InsertItem( 2, 55 ); + aBar.InsertItem( 3, 55 ); + aBar.SetItemText( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Text" ) ) ); + aBar.SetItemText( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "21.01.93" ) ) ); + aBar.SetItemText( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "12:00:00" ) ) ); + aBar.Show(); + + long nY = aBox.GetSizePixel().Height()+10; + { + aHeadBar.SetPosPixel( Point( 0, nY ) ); + aHeadBar.InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Sender" ) ), 150 ); + aHeadBar.InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Subject" ) ), 150, HIB_CENTER | HIB_VCENTER | HIB_CLICKABLE ); + aHeadBar.InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Date" ) ), 75 ); + aHeadBar.InsertItem( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "Size" ) ), 60, HIB_RIGHT | HIB_VCENTER | HIB_CLICKABLE ); + aHeadBar.InsertItem( 9999, String(), HEADERBAR_FULLSIZE, HIB_RIGHT | HIB_VCENTER | HIB_FIXEDPOS ); + aHeadBar.SetSelectHdl( LINK( this, MyWin, SelectHdl ) ); + aHeadBar.Show(); + nY += aHeadBar.GetSizePixel().Height() += 10; + } + + { + aColorList.SetPosSizePixel( Point( 10, nY ), Size( 130, 180 ) ); + aColorList.SetUpdateMode( sal_False ); + aColorList.InsertEntry( Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) ); + aColorList.InsertEntry( Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) ); + aColorList.InsertEntry( Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) ); + aColorList.InsertEntry( Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) ); + aColorList.InsertEntry( Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) ); + aColorList.InsertEntry( Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) ); + aColorList.InsertEntry( Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) ); + aColorList.InsertEntry( Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) ); + aColorList.InsertEntry( Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) ); + aColorList.InsertEntry( Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) ); + aColorList.InsertEntry( Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) ); + aColorList.InsertEntry( Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) ); + aColorList.InsertEntry( Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) ); + aColorList.InsertEntry( Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) ); + aColorList.InsertEntry( Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) ); + aColorList.InsertEntry( Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) ); + aColorList.SetUpdateMode( sal_True ); + aColorList.SetSelectHdl( LINK( this, MyWin, SelectHdl ) ); + aColorList.Show(); + } + + { + aLineList.SetPosSizePixel( Point( 150, nY ), Size( 130, 180 ) ); + aLineList.SetUnit( FUNIT_POINT ); + aLineList.SetSourceUnit( FUNIT_TWIP ); + aLineList.InsertEntry( XubString( RTL_CONSTASCII_USTRINGPARAM( "Hairline" ) ) ); + aLineList.InsertEntry( 1500 ); + aLineList.InsertEntry( 3000 ); + aLineList.InsertEntry( 4500 ); + aLineList.InsertEntry( 6000 ); + aLineList.InsertEntry( 7500 ); + aLineList.InsertEntry( 9000 ); + aLineList.InsertEntry( 1500, 1500, 1500 ); + aLineList.InsertEntry( 3000, 1500, 1500 ); + aLineList.InsertEntry( 4500, 1500, 1500 ); + aLineList.InsertEntry( 3000, 3000, 1500 ); + aLineList.InsertEntry( 4500, 3000, 1500 ); + aLineList.InsertEntry( 4500, 4500, 1500 ); + aLineList.Show(); + } + + { + aValueSet.SetPosSizePixel( Point( 290, nY ), Size( 130, 180 ) ); + aValueSet.InsertItem( 9, Color( COL_BLACK ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) ); + aValueSet.InsertItem( 10, Color( COL_BLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) ); + aValueSet.InsertItem( 11, Color( COL_GREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) ); + aValueSet.InsertItem( 12, Color( COL_CYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) ); + aValueSet.InsertItem( 13, Color( COL_RED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) ); + aValueSet.InsertItem( 14, Color( COL_MAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) ); + aValueSet.InsertItem( 15, Color( COL_BROWN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) ); + aValueSet.InsertItem( 16, Color( COL_GRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) ); + aValueSet.InsertItem( 17, Color( COL_LIGHTGRAY ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGray" ) ) ); + aValueSet.InsertItem( 18, Color( COL_LIGHTBLUE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightBlue" ) ) ); + aValueSet.InsertItem( 19, Color( COL_LIGHTGREEN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightGreen" ) ) ); + aValueSet.InsertItem( 20, Color( COL_LIGHTCYAN ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightCyan" ) ) ); + aValueSet.InsertItem( 21, Color( COL_LIGHTRED ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightRed" ) ) ); + aValueSet.InsertItem( 22, Color( COL_LIGHTMAGENTA ), XubString( RTL_CONSTASCII_USTRINGPARAM( "LightMagenta" ) ) ); + aValueSet.InsertItem( 23, Color( COL_YELLOW ), XubString( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) ); + aValueSet.InsertItem( 24, Color( COL_WHITE ), XubString( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) ); + aValueSet.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "None" ) ) ); + aValueSet.SetColCount( 4 ); + aValueSet.SetLineCount( 4 ); + aValueSet.SetSelectHdl( LINK( this, MyWin, SelectHdl ) ); + aValueSet.Show(); + } + + { + aCalendarField.EnableEmptyFieldValue( sal_True ); + aCalendarField.SetCalendarStyle( aCalendarField.GetCalendarStyle() | WB_RANGESELECT ); + aCalendarField.SetSelectHdl( LINK( this, MyWin, CalSelectHdl ) ); +// aCalendarField.SetDate( Date() ); + aCalendarField.SetEmptyDate(); + aCalendarField.EnableToday(); + aCalendarField.EnableNone(); + aCalendarField.SetPosSizePixel( Point( 430, nY ), Size( 130, 20 ) ); + aCalendarField.Show(); + } + + { + aCalendarField2.SetDate( Date() ); + aCalendarField2.SetPosSizePixel( Point( 570, nY ), Size( 130, 20 ) ); + aCalendarField2.Show(); + } + + nY += 200; + { + aTabBar.SetPosSizePixel( Point( 10, nY ), + Size( 300, aTabBar.GetSizePixel().Height() ) ); + aTabBar.InsertPage( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 1" ) ) ); + aTabBar.InsertPage( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 2" ) ) ); + aTabBar.InsertPage( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 3" ) ) ); + aTabBar.InsertPage( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 4" ) ) ); + aTabBar.InsertPage( 5, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 5" ) ) ); + aTabBar.InsertPage( 6, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 6" ) ) ); + aTabBar.InsertPage( 7, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 7" ) ) ); + aTabBar.InsertPage( 8, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 8" ) ) ); + aTabBar.InsertPage( 9, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 9" ) ) ); + aTabBar.InsertPage( 10, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 10" ) ) ); + aTabBar.InsertPage( 11, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 11" ) ) ); + aTabBar.InsertPage( 12, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 12" ) ) ); + aTabBar.InsertPage( 13, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 13" ) ) ); + aTabBar.InsertPage( 14, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 14" ) ) ); + aTabBar.InsertPage( 15, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 15" ) ) ); + aTabBar.InsertPage( 16, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 16" ) ) ); + aTabBar.InsertPage( 17, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 17" ) ) ); + aTabBar.InsertPage( 18, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 18" ) ) ); + aTabBar.InsertPage( 19, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 19" ) ) ); + aTabBar.InsertPage( 20, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 20" ) ) ); + aTabBar.InsertPage( 21, XubString( RTL_CONSTASCII_USTRINGPARAM( "This is a long Page Text" ) ) ); + aTabBar.InsertPage( 22, XubString( RTL_CONSTASCII_USTRINGPARAM( "Short Text" ) ) ); + aTabBar.InsertPage( 23, XubString( RTL_CONSTASCII_USTRINGPARAM( "And now a very very long Page Text" ) ) ); + aTabBar.InsertPage( 24, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 24" ) ) ); + aTabBar.InsertPage( 25, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 25" ) ) ); + aTabBar.InsertPage( 26, XubString( RTL_CONSTASCII_USTRINGPARAM( "And now a very long Page Text" ) ) ); + aTabBar.InsertPage( 27, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 27" ) ) ); + aTabBar.InsertPage( 28, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 28" ) ) ); + aTabBar.InsertPage( 29, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 29" ) ) ); + aTabBar.InsertPage( 30, XubString( RTL_CONSTASCII_USTRINGPARAM( "Page 30" ) ) ); + aTabBar.EnableEditMode(); + aTabBar.Show(); + } + + nY += 35; + { + aPrgsBar.SetPosPixel( Point( 10, nY ) ); + aPrgsBar.Show(); + } + + nY += 40; + { + aFontBtn.SetPosSizePixel( Point( 10, nY ), Size( 100, 30 ) ); + aFontBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Font..." ) ) ); + aFontBtn.SetClickHdl( LINK( this, MyWin, Test ) ); + aFontBtn.Show(); + + aCalendarBtn.SetPosSizePixel( Point( 120, nY ), Size( 100, 30 ) ); + aCalendarBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Calendar" ) ) ); + aCalendarBtn.SetClickHdl( LINK( this, MyWin, Test ) ); + aCalendarBtn.Show(); + + aPrnSetupBtn.SetPosSizePixel( Point( 230, nY ), Size( 100, 30 ) ); + aPrnSetupBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "PrnSetup..." ) ) ); + aPrnSetupBtn.SetClickHdl( LINK( this, MyWin, Test ) ); + aPrnSetupBtn.Show(); + + aPrnDlgBtn.SetPosSizePixel( Point( 340, nY ), Size( 100, 30 ) ); + aPrnDlgBtn.SetText( XubString( RTL_CONSTASCII_USTRINGPARAM( "Print...." ) ) ); + aPrnDlgBtn.SetClickHdl( LINK( this, MyWin, Test ) ); + aPrnDlgBtn.Show(); + } +} + +// ----------------------------------------------------------------------- + +MyWin::~MyWin() +{ + if ( pCalendar ) + delete pCalendar; + + if ( pMenu ) + { + delete pMenu; + delete pNameMenu; + delete pStyleMenu; + delete pSizeMenu; + } +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyWin, Test, PushButton*, pBtn ) +{ + if ( pBtn == &aFontBtn ) + { + MyFontDialog* pDlg = new MyFontDialog( this ); + pDlg->Execute(); + delete pDlg; + } + else if ( pBtn == &aCalendarBtn ) + { + if ( !pCalendar ) + pCalendar = new MyCalendar( this ); + pCalendar->ToTop(); + pCalendar->Show(); + } + else if ( pBtn == &aPrnSetupBtn ) + { + PrinterSetupDialog* pDlg = new PrinterSetupDialog( this ); + pDlg->SetPrinter( &aPrn ); + pDlg->Execute(); + delete pDlg; + } + else if ( pBtn == &aPrnDlgBtn ) + { + PrintDialog* pDlg = new PrintDialog( this, false ); + pDlg->SetPrinter( &aPrn ); + pDlg->EnableRange( PRINTDIALOG_ALL ); + pDlg->EnableRange( PRINTDIALOG_RANGE ); + pDlg->Execute(); + delete pDlg; + } + + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyWin, SelectHdl, Window*, pCtrl ) +{ + if ( pCtrl == &aColorList ) + { + Color aColor = aColorList.GetSelectEntryColor(); + aValueSet.SetColor( aColor ); + aLineList.SetColor( aColor ); + } + else if ( pCtrl == &aValueSet ) + { + sal_uInt16 nId = aValueSet.GetSelectItemId(); + if ( nId > 8 ) + { + Color aColor = aValueSet.GetItemColor( nId ); + aValueSet.SetFillColor( aColor ); + } + } + else if ( pCtrl == &aHeadBar ) + { + sal_uInt16 nCurItemId = aHeadBar.GetCurItemId(); + for ( sal_uInt16 i = 0; i < aHeadBar.GetItemCount(); i++ ) + { + sal_uInt16 nItemId = aHeadBar.GetItemId( i ); + HeaderBarItemBits nBits = aHeadBar.GetItemBits( nItemId ); + if ( nItemId == nCurItemId ) + { + HeaderBarItemBits nOldBits = nBits; + nBits &= ~(HIB_DOWNARROW | HIB_UPARROW); + if ( nOldBits & HIB_DOWNARROW ) + nBits |= HIB_UPARROW; + else + nBits |= HIB_DOWNARROW; + } + else + nBits &= ~(HIB_DOWNARROW | HIB_UPARROW); + aHeadBar.SetItemBits( nItemId, nBits ); + } + } + + return 0; +} + +// ----------------------------------------------------------------------- + +IMPL_LINK( MyWin, CalSelectHdl, CalendarField*, pCtrl ) +{ + if ( pCtrl == &aCalendarField ) + { + Calendar* l_pCalendar = pCtrl->GetCalendar(); + aCalendarField2.SetDate( l_pCalendar->GetSelectDate( l_pCalendar->GetSelectDateCount()-1 ) ); + } + + return 0; +} + +// ----------------------------------------------------------------------- + +void MyWin::ContextMenu( const Point& rPos ) +{ + FontList aList( this ); + + if ( !pMenu ) + { + pMenu = new PopupMenu; + pNameMenu = new FontNameMenu; + pStyleMenu = new FontStyleMenu; + pSizeMenu = new FontSizeMenu; + + pMenu->InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "Font" ) ) ); + pMenu->InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Attribute" ) ) ); + pMenu->InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "Height" ) ) ); + pMenu->SetPopupMenu( 1, pNameMenu ); + pMenu->SetPopupMenu( 2, pStyleMenu ); + pMenu->SetPopupMenu( 3, pSizeMenu ); + + pNameMenu->Fill( &aList ); + pNameMenu->SetCurName( aList.GetFontName( 0 ).GetName() ); + + pStyleMenu->InsertSeparator(); + pStyleMenu->InsertItem( 1, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Underline" ) ), MIB_CHECKABLE | MIB_AUTOCHECK ); + pStyleMenu->InsertItem( 2, XubString( RTL_CONSTASCII_USTRINGPARAM( "Stri~keout" ) ), MIB_CHECKABLE | MIB_AUTOCHECK ); + pStyleMenu->InsertItem( 3, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Shadow" ) ), MIB_CHECKABLE | MIB_AUTOCHECK ); + pStyleMenu->InsertItem( 4, XubString( RTL_CONSTASCII_USTRINGPARAM( "~Outline" ) ), MIB_CHECKABLE | MIB_AUTOCHECK ); + } + + pStyleMenu->Fill( pNameMenu->GetCurName(), &aList ); + pSizeMenu->Fill( aList.Get( pNameMenu->GetCurName(), + pStyleMenu->GetCurStyle() ), &aList ); + + pMenu->Execute( this, rPos ); +} + +// ----------------------------------------------------------------------- + +void MyWin::Command( const CommandEvent& rCEvt ) +{ + if ( rCEvt.GetCommand() == COMMAND_CONTEXTMENU ) + ContextMenu( OutputToScreenPixel( rCEvt.GetMousePosPixel() ) ); +} + +// ----------------------------------------------------------------------- + +void MyWin::MouseButtonDown( const MouseEvent& rMEvt ) +{ + aValueSet.StartSelection(); + WorkWindow::MouseButtonDown( rMEvt ); +} + +// ----------------------------------------------------------------------- + +void MyWin::KeyInput( const KeyEvent& rKEvt ) +{ + if ( rKEvt.GetKeyCode().GetCode() == KEY_P ) + { + for ( sal_uInt16 i = 0; i <= 130; i += 2 ) + { + for ( sal_uInt16 j = 0; j < 6000; j++ ) + { + aPrgsBar.SetValue( i ); + Application::Reschedule(); + } + } + } + else if ( rKEvt.GetCharCode() == '+' ) + aHeadBar.SetOffset( aHeadBar.GetOffset()+1 ); + else if ( rKEvt.GetCharCode() == '-' ) + aHeadBar.SetOffset( aHeadBar.GetOffset()-1 ); + + WorkWindow::KeyInput( rKEvt ); +} + +// ----------------------------------------------------------------------- + +void MyWin::Paint( const Rectangle& rRect ) +{ + WorkWindow::Paint( rRect ); +} + +// ----------------------------------------------------------------------- + +void MyWin::Resize() +{ + Size aWinSize = GetOutputSizePixel(); + + aBox.SetSizePixel( Size( aWinSize.Width(), aBoxSize.Height() ) ); + + Size aSize = aBar.GetSizePixel(); + aBar.SetPosSizePixel( Point( 0, aWinSize.Height()-aSize.Height() ), + Size( aWinSize.Width(), aSize.Height() ) ); + + Size aBarSize = aSize; + Point aPos = aHeadBar.GetPosPixel(); + aSize = aHeadBar.GetSizePixel(); + aHeadBar.SetSizePixel( Size( aWinSize.Width(), aSize.Height() ) ); + aHeadBar.SetDragSize( aWinSize.Height() - aSize.Height() - aPos.Y() - aBarSize.Height() ); + + aPos = aPrgsBar.GetPosPixel(); + aSize = aPrgsBar.GetSizePixel(); + if ( aPos.X() < aWinSize.Width()-10 ) + aPrgsBar.SetSizePixel( Size( aWinSize.Width()-aPos.X()-10, aSize.Height() ) ); +} + +// ----------------------------------------------------------------------- + +MyApp aMyApp; diff --git a/svtools/workben/toolpanel/toolpaneltest.cxx b/svtools/workben/toolpanel/toolpaneltest.cxx new file mode 100755 index 000000000000..d7656b105fc9 --- /dev/null +++ b/svtools/workben/toolpanel/toolpaneltest.cxx @@ -0,0 +1,880 @@ +/************************************************************************* +* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +* +* Copyright 2009 by Sun Microsystems, Inc. +* +* OpenOffice.org - a multi-platform office productivity suite +* +* This file is part of OpenOffice.org. +* +* OpenOffice.org is free software: you can redistribute it and/or modify +* it under the terms of the GNU Lesser General Public License version 3 +* only, as published by the Free Software Foundation. +* +* OpenOffice.org 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 Lesser General Public License version 3 for more details +* (a copy is included in the LICENSE file that accompanied this code). +* +* You should have received a copy of the GNU Lesser General Public License +* version 3 along with OpenOffice.org. If not, see +* <http://www.openoffice.org/license.html> +* for a copy of the LGPLv3 License. +************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_svtools.hxx" + +#include "ctrlbox.hxx" +#include "svtools/toolpanel/toolpaneldeck.hxx" +#include "svtools/toolpanel/tablayouter.hxx" + +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> + +#include <comphelper/processfactory.hxx> +#include <cppuhelper/bootstrap.hxx> +#include <cppuhelper/servicefactory.hxx> +#include <tools/diagnose_ex.h> +#include <ucbhelper/contentbroker.hxx> +#include <vcl/button.hxx> +#include <vcl/edit.hxx> +#include <vcl/fixed.hxx> +#include <vcl/help.hxx> +#include <vcl/lstbox.hxx> +#include <vcl/svapp.hxx> +#include <vcl/tabctrl.hxx> +#include <vcl/taskpanelist.hxx> +#include <vcl/wrkwin.hxx> + +namespace svt { namespace toolpanel +{ + +using ::com::sun::star::uno::Reference; +using ::com::sun::star::uno::Sequence; +using ::com::sun::star::uno::Any; +using ::com::sun::star::lang::XMultiServiceFactory; +using ::com::sun::star::uno::XComponentContext; +using ::com::sun::star::accessibility::XAccessible; + +//============================================================================= +//= PanelDemo +//============================================================================= +class PanelDemo : public Application +{ +public: + virtual void Main(); + +private: + static Reference< XMultiServiceFactory > createApplicationServiceManager(); +}; + +//============================================================================= +//= ColoredPanelWindow +//============================================================================= +class ColoredPanelWindow : public Window +{ +public: + ColoredPanelWindow( Window& i_rParent, const Color& i_rColor, const String& i_rTitle ) + :Window( &i_rParent ) + ,m_aEdit( this, WB_BORDER ) + ,m_aTabControl( this ) + ,m_sTitle( i_rTitle ) + { + SetLineColor(); + SetFillColor( i_rColor ); + + m_aEdit.Show(); + m_aTabControl.Show(); + + const sal_Char* pTabTitles[] = + { + "This", "is a", "Tab", "Control", "intended", "for", "comparison" + }; + for ( size_t i=0; i < sizeof( pTabTitles ) / sizeof( pTabTitles[0] ); ++i ) + { + String sText( String::CreateFromAscii( pTabTitles[i] ) ); + m_aTabControl.InsertPage( i + 1, sText ); + } + } + + virtual void Paint( const Rectangle& /*i_rRect*/ ) + { + const Size aOutputSize( GetOutputSizePixel() ); + const Rectangle aTitleRect( Point( 10, 10 ), Size( aOutputSize.Width() - 20, 20 ) ); + DrawRect( aTitleRect ); + SetTextColor( GetFillColor().IsDark() ? COL_WHITE : COL_BLACK ); + DrawText( aTitleRect, m_sTitle, TEXT_DRAW_CENTER | TEXT_DRAW_VCENTER ); + } + + virtual void GetFocus() + { + m_aEdit.GrabFocus(); + } + + virtual void Resize() + { + const Size aOutputSize( GetOutputSizePixel() ); + m_aEdit.SetPosSizePixel( + Point( 20, 40 ), + Size( aOutputSize.Width() - 40, 20 ) + ); + m_aTabControl.SetPosSizePixel( + Point( 20, 70 ), + Size( aOutputSize.Width() - 40, 150 ) + ); + } + +private: + Edit m_aEdit; + TabControl m_aTabControl; + String m_sTitle; +}; + +//============================================================================= +//= ColoredPanel +//============================================================================= +class ColoredPanel : public IToolPanel +{ +public: + ColoredPanel( Window& i_rParent, const Color& i_rColor, const sal_Char* i_pAsciiPanelName ); + ColoredPanel( Window& i_rParent, const Color& i_rColor, const String& i_rPanelName ); + ~ColoredPanel(); + + // IToolPanel + virtual ::rtl::OUString GetDisplayName() const; + virtual Image GetImage() const; + virtual rtl::OString GetHelpID() const; + virtual void Activate( Window& i_rParentWindow ); + virtual void Deactivate(); + virtual void SetSizePixel( const Size& i_rPanelWindowSize ); + virtual void GrabFocus(); + virtual void Dispose(); + virtual Reference< XAccessible > CreatePanelAccessible( const Reference< XAccessible >& i_rParentAccessible ); + + // IReference + virtual oslInterlockedCount SAL_CALL acquire(); + virtual oslInterlockedCount SAL_CALL release(); + +private: + oslInterlockedCount m_refCount; + ::std::auto_ptr< ColoredPanelWindow > + m_pWindow; + ::rtl::OUString m_aPanelName; + BitmapEx m_aPanelIcon; +}; + +//============================================================================= +//= ColoredPanel +//============================================================================= +//----------------------------------------------------------------------------- +ColoredPanel::ColoredPanel( Window& i_rParent, const Color& i_rColor, const sal_Char* i_pAsciiPanelName ) + :m_refCount(0) + ,m_pWindow( new ColoredPanelWindow( i_rParent, i_rColor, ::rtl::OUString::createFromAscii( i_pAsciiPanelName ) ) ) + ,m_aPanelName( ::rtl::OUString::createFromAscii( i_pAsciiPanelName ) ) + ,m_aPanelIcon() +{ + Bitmap aBitmap( Size( 16, 16 ), 8 ); + m_aPanelIcon = BitmapEx( aBitmap ); + m_aPanelIcon.Erase( i_rColor ); +} + +//----------------------------------------------------------------------------- +ColoredPanel::ColoredPanel( Window& i_rParent, const Color& i_rColor, const String& i_rPanelName ) + :m_refCount(0) + ,m_pWindow( new ColoredPanelWindow( i_rParent, i_rColor, i_rPanelName ) ) + ,m_aPanelName( i_rPanelName ) + ,m_aPanelIcon() +{ + Bitmap aBitmap( Size( 16, 16 ), 8 ); + m_aPanelIcon = BitmapEx( aBitmap ); + m_aPanelIcon.Erase( i_rColor ); +} + +//----------------------------------------------------------------------------- +ColoredPanel::~ColoredPanel() +{ +} + +//----------------------------------------------------------------------------- +oslInterlockedCount SAL_CALL ColoredPanel::acquire() +{ + return osl_incrementInterlockedCount( &m_refCount ); +} + +//----------------------------------------------------------------------------- +oslInterlockedCount SAL_CALL ColoredPanel::release() +{ + oslInterlockedCount newCount = osl_decrementInterlockedCount( &m_refCount ); + if ( 0 == newCount ) + delete this; + return newCount; +} + +//----------------------------------------------------------------------------- +void ColoredPanel::Activate( Window& i_rParentWindow ) +{ + ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" ); + OSL_ENSURE( &i_rParentWindow == m_pWindow->GetParent(), "ColoredPanel::Activate: unexpected new parent window!" ); + // the documentation of IToolPanel::Activate says it is guaranteed that the parent window is + // always the same ... + m_pWindow->SetPosSizePixel( Point(), i_rParentWindow.GetSizePixel() ); + m_pWindow->Show(); +} + +//----------------------------------------------------------------------------- +void ColoredPanel::Deactivate() +{ + ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" ); + m_pWindow->Hide(); +} + +//----------------------------------------------------------------------------- +void ColoredPanel::SetSizePixel( const Size& i_rPanelWindowSize ) +{ + ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" ); + m_pWindow->SetSizePixel( i_rPanelWindowSize ); +} + +//----------------------------------------------------------------------------- +void ColoredPanel::GrabFocus() +{ + ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" ); + m_pWindow->GrabFocus(); +} + +//----------------------------------------------------------------------------- +void ColoredPanel::Dispose() +{ + ENSURE_OR_RETURN_VOID( m_pWindow.get(), "disposed!" ); + m_pWindow.reset(); +} + +//----------------------------------------------------------------------------- +Reference< XAccessible > ColoredPanel::CreatePanelAccessible( const Reference< XAccessible >& i_rParentAccessible ) +{ + ENSURE_OR_RETURN( m_pWindow.get(), "disposed!", NULL ); + (void)i_rParentAccessible; + return m_pWindow->GetAccessible(); +} + +//----------------------------------------------------------------------------- +::rtl::OUString ColoredPanel::GetDisplayName() const +{ + return m_aPanelName; +} + +//----------------------------------------------------------------------------- +Image ColoredPanel::GetImage() const +{ + return Image( m_aPanelIcon ); +} + +//----------------------------------------------------------------------------- +rtl::OString ColoredPanel::GetHelpID() const +{ + return rtl::OString(); +} + +//============================================================================= +//= OptionsWindow +//============================================================================= +class PanelDemoMainWindow; +class OptionsWindow :public Window + ,public ::svt::IToolPanelDeckListener +{ +public: + OptionsWindow( PanelDemoMainWindow& i_rParent ); + ~OptionsWindow(); + + // Window overridables + virtual void Resize(); + virtual void GetFocus(); + virtual void StateChanged( StateChangedType i_nStateChange ); + + // IToolPanelDeckListener + virtual void PanelInserted( const PToolPanel& i_pPanel, const size_t i_nPosition ); + virtual void PanelRemoved( const size_t i_nPosition ); + virtual void ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive ); + virtual void LayouterChanged( const PDeckLayouter& i_rNewLayouter ); + virtual void Dying(); + +private: + DECL_LINK( OnRadioToggled, RadioButton* ); + DECL_LINK( OnListEntrySelected, ListBox* ); + DECL_LINK( OnListEntryDoubleClicked, ListBox* ); + DECL_LINK( OnButtonClicked, PushButton* ); + DECL_LINK( OnEditModified, Edit* ); + + void impl_initPanelList(); + void impl_updateRemoveButton(); + void impl_updateInsertButton(); + +private: + FixedLine m_aAlignmentHeader; + RadioButton m_aAlignLeft; + RadioButton m_aAlignRight; + RadioButton m_aAlignTop; + RadioButton m_aAlignBottom; + FixedLine m_aTabItemContent; + RadioButton m_aImagesAndText; + RadioButton m_aImagesOnly; + RadioButton m_aTextOnly; + RadioButton m_aAutomaticContent; + + FixedLine m_aPanelsHeader; + ListBox m_aPanelList; + PushButton m_aRemovePanel; + ColorListBox m_aColors; + Edit m_aNewPanelName; + PushButton m_aInsertPanel; +}; + +//============================================================================= +//= PanelDemoMainWindow +//============================================================================= +class PanelDemoMainWindow : public WorkWindow +{ +public: + PanelDemoMainWindow(); + ~PanelDemoMainWindow(); + + // window overridables + virtual void Resize(); + +public: + // operations + void AlignTabs( const ::svt::TabAlignment i_eAlignment ); + void SetTabItemContent( const TabItemContent i_eItemContent ); + + // member access + IToolPanelDeck& GetToolPanelDeck(); + PToolPanel CreateToolPanel( const Color& i_rColor, const String& i_rPanelName ); + +protected: + virtual void GetFocus(); + +private: + ToolPanelDeck m_aToolPanelDeck; + OptionsWindow m_aDemoOptions; +}; + +//============================================================================= +//= PanelDemoMainWindow - implementation +//============================================================================= +//----------------------------------------------------------------------------- +OptionsWindow::OptionsWindow( PanelDemoMainWindow& i_rParent ) + :Window( &i_rParent, WB_BORDER | WB_DIALOGCONTROL ) + ,m_aAlignmentHeader( this ) + ,m_aAlignLeft( this, WB_GROUP ) + ,m_aAlignRight( this, 0 ) + ,m_aAlignTop( this, 0 ) + ,m_aAlignBottom( this, 0 ) + ,m_aTabItemContent( this ) + ,m_aImagesAndText( this ) + ,m_aImagesOnly( this ) + ,m_aTextOnly( this ) + ,m_aAutomaticContent( this ) + ,m_aPanelsHeader( this ) + ,m_aPanelList( this ) + ,m_aRemovePanel( this ) + ,m_aColors( this, WB_DROPDOWN ) + ,m_aNewPanelName( this, WB_BORDER ) + ,m_aInsertPanel( this ) +{ + SetBorderStyle( WINDOW_BORDER_MONO ); + + m_aColors.InsertEntry( Color( COL_BLACK ), String( RTL_CONSTASCII_USTRINGPARAM( "Black" ) ) ); + m_aColors.InsertEntry( Color( COL_BLUE ), String( RTL_CONSTASCII_USTRINGPARAM( "Blue" ) ) ); + m_aColors.InsertEntry( Color( COL_GREEN ), String( RTL_CONSTASCII_USTRINGPARAM( "Green" ) ) ); + m_aColors.InsertEntry( Color( COL_CYAN ), String( RTL_CONSTASCII_USTRINGPARAM( "Cyan" ) ) ); + m_aColors.InsertEntry( Color( COL_RED ), String( RTL_CONSTASCII_USTRINGPARAM( "Red" ) ) ); + m_aColors.InsertEntry( Color( COL_MAGENTA ), String( RTL_CONSTASCII_USTRINGPARAM( "Magenta" ) ) ); + m_aColors.InsertEntry( Color( COL_BROWN ), String( RTL_CONSTASCII_USTRINGPARAM( "Brown" ) ) ); + m_aColors.InsertEntry( Color( COL_GRAY ), String( RTL_CONSTASCII_USTRINGPARAM( "Gray" ) ) ); + m_aColors.InsertEntry( Color( COL_LIGHTGRAY ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Gray" ) ) ); + m_aColors.InsertEntry( Color( COL_LIGHTBLUE ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Blue" ) ) ); + m_aColors.InsertEntry( Color( COL_LIGHTGREEN ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Green" ) ) ); + m_aColors.InsertEntry( Color( COL_LIGHTCYAN ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Cyan" ) ) ); + m_aColors.InsertEntry( Color( COL_LIGHTRED ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Red" ) ) ); + m_aColors.InsertEntry( Color( COL_LIGHTMAGENTA ), String( RTL_CONSTASCII_USTRINGPARAM( "Light Magenta" ) ) ); + m_aColors.InsertEntry( Color( COL_YELLOW ), String( RTL_CONSTASCII_USTRINGPARAM( "Yellow" ) ) ); + m_aColors.InsertEntry( Color( COL_WHITE ), String( RTL_CONSTASCII_USTRINGPARAM( "White" ) ) ); + m_aColors.SetDropDownLineCount( 16 ); + + Window* pControls[] = + { + &m_aAlignmentHeader, &m_aAlignLeft, &m_aAlignRight, &m_aAlignTop, &m_aAlignBottom, &m_aTabItemContent, + &m_aImagesAndText, &m_aImagesOnly, &m_aTextOnly, &m_aAutomaticContent, &m_aPanelsHeader, &m_aPanelList, + &m_aRemovePanel, &m_aColors, &m_aNewPanelName, &m_aInsertPanel + }; + const sal_Char* pTexts[] = + { + "Tab Bar Alignment", "Left", "Right", "Top", "Bottom", "Tab Items", "Images and Text", "Images only", + "Text only", "Automatic", "Panels", "", "Remove Panel", "", "", "Insert Panel" + }; + for ( size_t i=0; i < sizeof( pControls ) / sizeof( pControls[0] ); ++i ) + { + const WindowType eWindowType = pControls[i]->GetType(); + + pControls[i]->SetText( String::CreateFromAscii( pTexts[i] ) ); + pControls[i]->Show(); + + if ( eWindowType == WINDOW_RADIOBUTTON ) + static_cast< RadioButton* >( pControls[i] )->SetToggleHdl( LINK( this, OptionsWindow, OnRadioToggled ) ); + + if ( eWindowType == WINDOW_LISTBOX ) + { + static_cast< ListBox* >( pControls[i] )->SetSelectHdl( LINK( this, OptionsWindow, OnListEntrySelected ) ); + static_cast< ListBox* >( pControls[i] )->SetDoubleClickHdl( LINK( this, OptionsWindow, OnListEntryDoubleClicked ) ); + } + + if ( eWindowType == WINDOW_PUSHBUTTON ) + { + static_cast< PushButton* >( pControls[i] )->SetClickHdl( LINK( this, OptionsWindow, OnButtonClicked ) ); + } + + if ( eWindowType == WINDOW_EDIT ) + { + static_cast< Edit* >( pControls[i] )->SetModifyHdl( LINK( this, OptionsWindow, OnEditModified ) ); + } + } + + m_aAlignRight.Check(); + m_aImagesAndText.Check(); + + Show(); +} + +//----------------------------------------------------------------------------- +OptionsWindow::~OptionsWindow() +{ +} + +//----------------------------------------------------------------------------- +void OptionsWindow::impl_updateInsertButton() +{ + m_aInsertPanel.Enable( ( m_aColors.GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND ) && ( m_aNewPanelName.GetText().Len() > 0 ) ); +} + +//----------------------------------------------------------------------------- +void OptionsWindow::impl_updateRemoveButton() +{ + m_aRemovePanel.Enable( m_aPanelList.GetSelectEntryCount() > 0 ); +} + +//----------------------------------------------------------------------------- +void OptionsWindow::impl_initPanelList() +{ + m_aPanelList.Clear(); + + PanelDemoMainWindow& rController( dynamic_cast< PanelDemoMainWindow& >( *GetParent() ) ); + IToolPanelDeck& rPanelDeck( rController.GetToolPanelDeck() ); + + for ( size_t i=0; i<rPanelDeck.GetPanelCount(); ++i ) + { + PToolPanel pPanel = rPanelDeck.GetPanel( i ); + m_aPanelList.InsertEntry( pPanel->GetDisplayName(), pPanel->GetImage() ); + } + ActivePanelChanged( ::boost::optional< size_t >(), rPanelDeck.GetActivePanel() ); + + impl_updateRemoveButton(); + impl_updateInsertButton(); + + rPanelDeck.AddListener( *this ); +} + +//----------------------------------------------------------------------------- +void OptionsWindow::StateChanged( StateChangedType i_nStateChange ) +{ + Window::StateChanged( i_nStateChange ); + + if ( i_nStateChange == STATE_CHANGE_INITSHOW ) + { + impl_initPanelList(); + } +} + +//----------------------------------------------------------------------------- +void OptionsWindow::GetFocus() +{ + Window::GetFocus(); + RadioButton* pRadios[] = + { + &m_aAlignLeft, &m_aAlignRight, &m_aAlignTop, &m_aAlignBottom + }; + for ( size_t i=0; i < sizeof( pRadios ) / sizeof( pRadios[0] ); ++i ) + { + if ( pRadios[i]->IsChecked() ) + { + pRadios[i]->GrabFocus(); + break; + } + } +} + +//----------------------------------------------------------------------------- +void OptionsWindow::Resize() +{ + Window::Resize(); + + const Size aOutputSize( GetOutputSizePixel() ); + + const Size aSpacing( LogicToPixel( Size( 3, 3 ), MAP_APPFONT ) ); + const long nIndent( LogicToPixel( Size( 6, 9 ), MAP_APPFONT ).Width() ); + const long nFixedLineHeight( LogicToPixel( Size( 0, 8 ), MAP_APPFONT ).Height() ); + const long nEditLineHeight( LogicToPixel( Size( 0, 12 ), MAP_APPFONT ).Height() ); + const long nButtonLineHeight( LogicToPixel( Size( 0, 14 ), MAP_APPFONT ).Height() ); + + const long nSuperordinateWidth = aOutputSize.Width() - 2 * aSpacing.Width(); + const long nSuperordinateX = aSpacing.Width(); + + const long nSubordinateWidth = aOutputSize.Width() - 2 * aSpacing.Width() - nIndent; + const long nSubordinateX = aSpacing.Width() + nIndent; + + Point aItemPos( nSuperordinateX, aSpacing.Height() ); + + struct ControlRow + { + Window* pWindow; + bool bSubordinate; + size_t nRows; + + ControlRow( Window& i_rWindow, const bool i_bSubordinate, const size_t i_nRows = 1 ) + :pWindow( &i_rWindow ) + ,bSubordinate( i_bSubordinate ) + ,nRows( i_nRows ) + { + } + }; + ControlRow aControlRows[] = + { + ControlRow( m_aAlignmentHeader, false ), + ControlRow( m_aAlignLeft, true ), + ControlRow( m_aAlignRight, true ), + ControlRow( m_aAlignTop, true ), + ControlRow( m_aAlignBottom, true ), + ControlRow( m_aTabItemContent, false ), + ControlRow( m_aImagesAndText, true ), + ControlRow( m_aImagesOnly, true ), + ControlRow( m_aTextOnly, true ), + ControlRow( m_aAutomaticContent, true ), + ControlRow( m_aPanelsHeader, false ), + ControlRow( m_aPanelList, true, 6 ), + ControlRow( m_aRemovePanel, true ), + ControlRow( m_aColors, true ), + ControlRow( m_aNewPanelName, true ), + ControlRow( m_aInsertPanel, true ) + }; + bool bPreviousWasSubordinate = false; + for ( size_t i=0; i < sizeof( aControlRows ) / sizeof( aControlRows[0] ); ++i ) + { + aItemPos.X() = ( aControlRows[i].bSubordinate ) ? nSubordinateX : nSuperordinateX; + + if ( bPreviousWasSubordinate && !aControlRows[i].bSubordinate ) + aItemPos.Y() += aSpacing.Height(); + bPreviousWasSubordinate = aControlRows[i].bSubordinate; + + // height depends on the window type + const WindowType eWindowType = aControlRows[i].pWindow->GetType(); + long nControlHeight( nFixedLineHeight ); + if ( ( eWindowType == WINDOW_EDIT ) + || ( eWindowType == WINDOW_LISTBOX ) + ) + { + nControlHeight = nEditLineHeight; + } + else + if ( ( eWindowType == WINDOW_PUSHBUTTON ) + ) + { + nControlHeight = nButtonLineHeight; + } + + Size aControlSize( + aControlRows[i].bSubordinate ? nSubordinateWidth : nSuperordinateWidth, + nControlHeight * aControlRows[i].nRows + ); + aControlRows[i].pWindow->SetPosSizePixel( aItemPos, aControlSize ); + + aItemPos.Move( 0, aControlSize.Height() + aSpacing.Height() ); + } +} + +//----------------------------------------------------------------------------- +void OptionsWindow::PanelInserted( const PToolPanel& i_pPanel, const size_t i_nPosition ) +{ + m_aPanelList.InsertEntry( i_pPanel->GetDisplayName(), i_pPanel->GetImage(), sal_uInt16( i_nPosition ) ); +} + +//----------------------------------------------------------------------------- +void OptionsWindow::PanelRemoved( const size_t i_nPosition ) +{ + m_aPanelList.RemoveEntry( sal_uInt16( i_nPosition ) ); + impl_updateRemoveButton(); +} + +//----------------------------------------------------------------------------- +void OptionsWindow::ActivePanelChanged( const ::boost::optional< size_t >& i_rOldActive, const ::boost::optional< size_t >& i_rNewActive ) +{ + (void)i_rOldActive; + + if ( !i_rNewActive ) + m_aPanelList.SetNoSelection(); + else + m_aPanelList.SelectEntryPos( sal_uInt16( *i_rNewActive ) ); +} + +//----------------------------------------------------------------------------- +void OptionsWindow::LayouterChanged( const PDeckLayouter& i_rNewLayouter ) +{ + (void)i_rNewLayouter; + // not interested in +} + +//----------------------------------------------------------------------------- +void OptionsWindow::Dying() +{ + // not interested in +} + +//----------------------------------------------------------------------------- +IMPL_LINK( OptionsWindow, OnListEntrySelected, ListBox*, i_pListBox ) +{ + if ( i_pListBox == &m_aColors ) + { + m_aNewPanelName.SetText( m_aColors.GetEntry( m_aColors.GetSelectEntryPos() ) ); + impl_updateInsertButton(); + } + else if ( i_pListBox == &m_aPanelList ) + { + impl_updateRemoveButton(); + } + return 0L; +} + +//----------------------------------------------------------------------------- +IMPL_LINK( OptionsWindow, OnListEntryDoubleClicked, ListBox*, i_pListBox ) +{ + PanelDemoMainWindow& rController( dynamic_cast< PanelDemoMainWindow& >( *GetParent() ) ); + + if ( i_pListBox == &m_aPanelList ) + { + size_t nActivatePanel = size_t( m_aPanelList.GetSelectEntryPos() ); + rController.GetToolPanelDeck().ActivatePanel( nActivatePanel ); + } + + return 0L; +} + +//----------------------------------------------------------------------------- +IMPL_LINK( OptionsWindow, OnEditModified, Edit*, i_pEdit ) +{ + if ( i_pEdit && &m_aNewPanelName ) + { + impl_updateInsertButton(); + } + + return 0L; +} + +//----------------------------------------------------------------------------- +IMPL_LINK( OptionsWindow, OnButtonClicked, PushButton*, i_pPushButton ) +{ + PanelDemoMainWindow& rController( dynamic_cast< PanelDemoMainWindow& >( *GetParent() ) ); + + if ( i_pPushButton == &m_aRemovePanel ) + { + rController.GetToolPanelDeck().RemovePanel( size_t( m_aPanelList.GetSelectEntryPos() ) ); + } + else if ( i_pPushButton == &m_aInsertPanel ) + { + PToolPanel pNewPanel( rController.CreateToolPanel( m_aColors.GetEntryColor( m_aColors.GetSelectEntryPos() ), m_aNewPanelName.GetText() ) ); + + ::boost::optional< size_t > aActivePanel( rController.GetToolPanelDeck().GetActivePanel() ); + size_t nNewPanelPos = !aActivePanel ? rController.GetToolPanelDeck().GetPanelCount() : *aActivePanel + 1; + + rController.GetToolPanelDeck().InsertPanel( pNewPanel, nNewPanelPos ); + } + return 0L; +} + +//----------------------------------------------------------------------------- +IMPL_LINK( OptionsWindow, OnRadioToggled, RadioButton*, i_pRadioButton ) +{ + PanelDemoMainWindow& rController( dynamic_cast< PanelDemoMainWindow& >( *GetParent() ) ); + + if ( i_pRadioButton->IsChecked() ) + { + if ( i_pRadioButton == &m_aAlignLeft ) + { + rController.AlignTabs( TABS_LEFT ); + } + else if ( i_pRadioButton == &m_aAlignRight ) + { + rController.AlignTabs( TABS_RIGHT ); + } + else if ( i_pRadioButton == &m_aAlignTop ) + { + rController.AlignTabs( TABS_TOP ); + } + else if ( i_pRadioButton == &m_aAlignBottom ) + { + rController.AlignTabs( TABS_BOTTOM ); + } + else if ( i_pRadioButton == &m_aImagesAndText ) + { + rController.SetTabItemContent( TABITEM_IMAGE_AND_TEXT ); + } + else if ( i_pRadioButton == &m_aImagesOnly ) + { + rController.SetTabItemContent( TABITEM_IMAGE_ONLY ); + } + else if ( i_pRadioButton == &m_aTextOnly ) + { + rController.SetTabItemContent( TABITEM_TEXT_ONLY ); + } + else if ( i_pRadioButton == &m_aAutomaticContent ) + { + rController.SetTabItemContent( TABITEM_AUTO ); + } + } + return 0L; +} +//============================================================================= +//= PanelDemoMainWindow - implementation +//============================================================================= +//----------------------------------------------------------------------------- +PanelDemoMainWindow::PanelDemoMainWindow() + :WorkWindow( NULL, WB_APP | WB_STDWORK | WB_CLIPCHILDREN ) + ,m_aToolPanelDeck( *this, WB_BORDER ) + ,m_aDemoOptions( *this ) +{ + m_aToolPanelDeck.SetPosSizePixel( Point( 20, 20 ), Size( 500, 300 ) ); + m_aToolPanelDeck.SetBorderStyle( WINDOW_BORDER_MONO ); + + m_aToolPanelDeck.InsertPanel( PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), Color( COL_RED ), "Red" ) ), m_aToolPanelDeck.GetPanelCount() ); + m_aToolPanelDeck.InsertPanel( PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), Color( COL_GREEN ), "Some flavor of Green" ) ), m_aToolPanelDeck.GetPanelCount() ); + m_aToolPanelDeck.InsertPanel( PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), RGB_COLORDATA( 255, 255, 0 ), "Yellow is ugly" ) ), m_aToolPanelDeck.GetPanelCount() ); + m_aToolPanelDeck.InsertPanel( PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), RGB_COLORDATA( 0, 0, 128 ), "Blue is the Color" ) ), m_aToolPanelDeck.GetPanelCount() ); + + m_aToolPanelDeck.ActivatePanel( size_t( 0 ) ); + m_aToolPanelDeck.Show(); + + SetText( String::CreateFromAscii( "ToolPanelDeck Demo Application" ) ); + Show(); + + Help::EnableQuickHelp(); + + GetSystemWindow()->GetTaskPaneList()->AddWindow( &m_aToolPanelDeck ); + GetSystemWindow()->GetTaskPaneList()->AddWindow( &m_aDemoOptions ); +} + +//----------------------------------------------------------------------------- +PanelDemoMainWindow::~PanelDemoMainWindow() +{ + GetSystemWindow()->GetTaskPaneList()->RemoveWindow( &m_aDemoOptions ); + GetSystemWindow()->GetTaskPaneList()->RemoveWindow( &m_aToolPanelDeck ); +} + +//----------------------------------------------------------------------------- +void PanelDemoMainWindow::GetFocus() +{ + WorkWindow::GetFocus(); + m_aToolPanelDeck.GrabFocus(); +} + +//----------------------------------------------------------------------------- +void PanelDemoMainWindow::Resize() +{ + WorkWindow::Resize(); + Size aSize( GetOutputSizePixel() ); + aSize.Width() -= 240; + aSize.Height() -= 40; + m_aToolPanelDeck.SetPosSizePixel( Point( 20, 20 ), aSize ); + + m_aDemoOptions.SetPosSizePixel( + Point( 20 + aSize.Width(), 20 ), + Size( 200, aSize.Height() ) + ); +} + +//----------------------------------------------------------------------------- +void PanelDemoMainWindow::AlignTabs( const ::svt::TabAlignment i_eAlignment ) +{ + TabItemContent eCurrentItemContent( TABITEM_IMAGE_AND_TEXT ); + TabDeckLayouter* pLayouter = dynamic_cast< TabDeckLayouter* >( m_aToolPanelDeck.GetLayouter().get() ); + OSL_ENSURE( pLayouter, "PanelDemoMainWindow::AlignTabs: wrong layouter!" ); + if ( pLayouter ) + eCurrentItemContent = pLayouter->GetTabItemContent(); + + m_aToolPanelDeck.SetLayouter( PDeckLayouter( new TabDeckLayouter( m_aToolPanelDeck, m_aToolPanelDeck, i_eAlignment, eCurrentItemContent ) ) ); +} + +//----------------------------------------------------------------------------- +void PanelDemoMainWindow::SetTabItemContent( const TabItemContent i_eItemContent ) +{ + TabDeckLayouter* pLayouter = dynamic_cast< TabDeckLayouter* >( m_aToolPanelDeck.GetLayouter().get() ); + OSL_ENSURE( pLayouter, "PanelDemoMainWindow::SetTabItemContent: wrong layouter!" ); + // we currently use tab layouters only ... + if ( !pLayouter ) + return; + + pLayouter->SetTabItemContent( i_eItemContent ); +} + +//----------------------------------------------------------------------------- +IToolPanelDeck& PanelDemoMainWindow::GetToolPanelDeck() +{ + return m_aToolPanelDeck; +} + +//----------------------------------------------------------------------------- +PToolPanel PanelDemoMainWindow::CreateToolPanel( const Color& i_rColor, const String& i_rPanelName ) +{ + return PToolPanel( new ColoredPanel( m_aToolPanelDeck.GetPanelWindowAnchor(), i_rColor, i_rPanelName ) ); +} + +//============================================================================= +//= PanelDemo +//============================================================================= +//----------------------------------------------------------------------------- +Reference< XMultiServiceFactory > PanelDemo::createApplicationServiceManager() +{ + Reference< XMultiServiceFactory > xMS; + try + { + Reference< XComponentContext > xComponentContext = ::cppu::defaultBootstrap_InitialComponentContext(); + if ( xComponentContext.is() ) + xMS = xMS.query( xComponentContext->getServiceManager() ); + } + catch( const ::com::sun::star::uno::Exception& ) + { + DBG_UNHANDLED_EXCEPTION(); + } + + return xMS; +} + +//----------------------------------------------------------------------------- +void __EXPORT PanelDemo::Main() +{ + // create service factory + Reference< XMultiServiceFactory > xSMgr = createApplicationServiceManager(); + ::comphelper::setProcessServiceFactory( xSMgr ); + + // initialize the UCB + Sequence< Any > aArgs(2); + aArgs[0] <<= rtl::OUString::createFromAscii( "Local" ); + aArgs[1] <<= rtl::OUString::createFromAscii( "Office" ); + ::ucbhelper::ContentBroker::initialize( xSMgr, aArgs ); + + // run the application + PanelDemoMainWindow aWindow; + Execute(); +} + +PanelDemo aTheApplication; + +} } // namespace ::svt::toolpanel diff --git a/svtools/workben/treecontrol/treetest.cxx b/svtools/workben/treecontrol/treetest.cxx new file mode 100644 index 000000000000..f82c4ae388f5 --- /dev/null +++ b/svtools/workben/treecontrol/treetest.cxx @@ -0,0 +1,396 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include <stdio.h> +#include <wchar.h> + +#include <cppuhelper/bootstrap.hxx> + +#include <osl/file.hxx> +#include <osl/process.h> + +#include <com/sun/star/bridge/XUnoUrlResolver.hpp> +#include <com/sun/star/frame/XComponentLoader.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/awt/tree/XMutableTreeDataModel.hpp> +#include <com/sun/star/awt/tree/XTreeControl.hpp> +#include <com/sun/star/awt/tree/XTreeExpansionListener.hpp> +#include <com/sun/star/awt/tree/XTreeEditListener.hpp> +#include <com/sun/star/awt/XDialog.hpp> +#include <com/sun/star/awt/XControlModel.hpp> +#include <com/sun/star/container/XNameContainer.hpp> +#include <com/sun/star/awt/XControl.hpp> +#include <com/sun/star/awt/XControlContainer.hpp> +#include <com/sun/star/view/SelectionType.hpp> + +#include <tools/urlobj.hxx> +#include <vcl/image.hxx> +#include <vcl/graph.hxx> + +#include <cppuhelper/implbase2.hxx> + +#include <string.h> +#include <rtl/ref.hxx> + +#include "imagemgr.hxx" + +using rtl::OUString; +using namespace com::sun::star::uno; +using namespace com::sun::star::lang; +using namespace com::sun::star::beans; +using namespace com::sun::star::bridge; +using namespace com::sun::star::frame; +using namespace com::sun::star::registry; +using namespace com::sun::star::awt; +using namespace com::sun::star::awt::tree; +using namespace com::sun::star::container; +using namespace com::sun::star::view; +using namespace com::sun::star::util; + +class DirectoryTree : public ::cppu::WeakImplHelper2< XTreeExpansionListener, XTreeEditListener > +{ +public: + DirectoryTree( const Reference< XComponentContext >& xComponentContext ); + virtual ~DirectoryTree(); + + void fillNode( const Reference< XMutableTreeNode >& xNode ); + void display( const OUString& rURL ); + + // XTreeExpansionListener + virtual void SAL_CALL requestChildNodes( const TreeExpansionEvent& Event ) throw (RuntimeException); + virtual void SAL_CALL treeExpanding( const TreeExpansionEvent& Event ) throw (ExpandVetoException, RuntimeException); + virtual void SAL_CALL treeCollapsing( const TreeExpansionEvent& Event ) throw (ExpandVetoException, RuntimeException); + virtual void SAL_CALL treeExpanded( const TreeExpansionEvent& Event ) throw (RuntimeException); + virtual void SAL_CALL treeCollapsed( const TreeExpansionEvent& Event ) throw (RuntimeException); + + // XTreeEditListener + virtual void SAL_CALL nodeEditing( const Reference< XTreeNode >& Node ) throw (VetoException, RuntimeException); + virtual void SAL_CALL nodeEdited( const Reference< XTreeNode >& Node, const OUString& NewText ) throw (RuntimeException); + + // XEventListener + virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (RuntimeException); + + Reference< XMultiComponentFactory > mxMultiComponentFactoryServer; + Reference< XComponentContext > mxComponentContext; + Reference< XTreeControl > mxTreeControl; + Reference< XMutableTreeDataModel > mxTreeDataModel; +}; + +DirectoryTree::DirectoryTree( const Reference< XComponentContext >& xComponentContext ) +: mxComponentContext( xComponentContext ) +, mxMultiComponentFactoryServer( xComponentContext->getServiceManager() ) +{ +} + +DirectoryTree::~DirectoryTree() +{ +} + +void DirectoryTree::display( const OUString& rURL ) +{ + // some property names for later use + const OUString sPositionX( RTL_CONSTASCII_USTRINGPARAM( "PositionX" ) ); + const OUString sPositionY( RTL_CONSTASCII_USTRINGPARAM( "PositionY" ) ); + const OUString sWidth( RTL_CONSTASCII_USTRINGPARAM( "Width" ) ); + const OUString sHeight( RTL_CONSTASCII_USTRINGPARAM( "Height" ) ); + const OUString sDataModel( RTL_CONSTASCII_USTRINGPARAM( "DataModel" ) ); + const OUString sSelectionType( RTL_CONSTASCII_USTRINGPARAM( "SelectionType" ) ); + const OUString sShowsRootHandles( RTL_CONSTASCII_USTRINGPARAM( "ShowsRootHandles" ) ); + const OUString sShowsHandles( RTL_CONSTASCII_USTRINGPARAM( "ShowsHandles" ) ); + const OUString sRootDisplayed( RTL_CONSTASCII_USTRINGPARAM( "RootDisplayed" ) ); + const OUString sEditable( RTL_CONSTASCII_USTRINGPARAM( "Editable" ) ); + const OUString sTitle( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ); + const OUString sRowHeight( RTL_CONSTASCII_USTRINGPARAM( "RowHeight" ) ); + + // first create a data model for our tree control + mxTreeDataModel = Reference< XMutableTreeDataModel >( + mxMultiComponentFactoryServer->createInstanceWithContext( + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.tree.MutableTreeDataModel" ) ), + mxComponentContext ), UNO_QUERY_THROW ); + + // now fill it with some sample data + Reference< XMutableTreeNode > xNode( mxTreeDataModel->createNode( Any( rURL ), false ), UNO_QUERY_THROW ); + xNode->setDataValue( Any( rURL ) ); + xNode->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) ); + xNode->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) ); + + fillNode( xNode ); + mxTreeDataModel->setRoot( xNode ); + + // now create the dialog + Reference< XControlModel > xDialogModel( + mxMultiComponentFactoryServer->createInstanceWithContext( + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlDialogModel" ) ), + mxComponentContext ), UNO_QUERY_THROW ); + + Reference< XPropertySet > xDialogPropertySet( xDialogModel, UNO_QUERY_THROW ); + xDialogPropertySet->setPropertyValue( sPositionX, Any( sal_Int32(50) ) ); + xDialogPropertySet->setPropertyValue( sPositionY, Any( sal_Int32(50) ) ); + xDialogPropertySet->setPropertyValue( sWidth, Any( sal_Int32(256) ) ); + xDialogPropertySet->setPropertyValue( sHeight, Any( sal_Int32(256) ) ); + xDialogPropertySet->setPropertyValue( sTitle, Any( OUString( RTL_CONSTASCII_USTRINGPARAM( "Tree Control Test" ) ) ) ); + + Reference< XMultiServiceFactory > xDialogMSF( xDialogModel, UNO_QUERY_THROW ); + + // now create our tree control + Reference< XControlModel > xTreeControlModel( + xDialogMSF->createInstance( + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.tree.TreeControlModel" ) ) ), + UNO_QUERY_THROW ); + + Reference< XPropertySet > XTreeControlModelSet( xTreeControlModel, UNO_QUERY_THROW ); + + XTreeControlModelSet->setPropertyValue( sSelectionType, Any( SelectionType_NONE ) ); + XTreeControlModelSet->setPropertyValue( sPositionX, Any( sal_Int32(3) ) ); + XTreeControlModelSet->setPropertyValue( sPositionY, Any( sal_Int32(3) ) ); + XTreeControlModelSet->setPropertyValue( sWidth, Any( sal_Int32(253) ) ); + XTreeControlModelSet->setPropertyValue( sHeight, Any( sal_Int32(253) ) ); + XTreeControlModelSet->setPropertyValue( sDataModel, Any( mxTreeDataModel ) ); + XTreeControlModelSet->setPropertyValue( sShowsRootHandles,Any( sal_False ) ); + XTreeControlModelSet->setPropertyValue( sShowsHandles, Any( sal_False ) ); + XTreeControlModelSet->setPropertyValue( sRootDisplayed, Any( sal_True ) ); + XTreeControlModelSet->setPropertyValue( sEditable, Any( sal_True ) ); +// XTreeControlModelSet->setPropertyValue( sRowHeight, Any( sal_Int32( 12 ) ) ); + + Reference< XNameContainer > xDialogModelContainer( xDialogModel, UNO_QUERY_THROW ); + + const OUString sTreeControlName( RTL_CONSTASCII_USTRINGPARAM( "tree" ) ); + + xDialogModelContainer->insertByName( sTreeControlName, Any( xTreeControlModel ) ); + + // now create the peers + Reference< XControl > xDialogControl( + mxMultiComponentFactoryServer->createInstanceWithContext( + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlDialog" ) ), + mxComponentContext ), UNO_QUERY_THROW ); + + xDialogControl->setModel( xDialogModel ); + + Reference< XToolkit > xToolkit( + mxMultiComponentFactoryServer->createInstanceWithContext( + OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.Toolkit" ) ), + mxComponentContext ), UNO_QUERY_THROW ); + xDialogControl->createPeer( xToolkit, 0 ); + + // get the peers of the sub controls from the dialog peer container + Reference< XControlContainer > xDialogContainer( xDialogControl, UNO_QUERY_THROW ); + mxTreeControl = Reference< XTreeControl >( xDialogContainer->getControl( sTreeControlName ), UNO_QUERY_THROW ); + + Reference< XTreeExpansionListener > xListener( static_cast<XWeak*>(this), UNO_QUERY_THROW ); + mxTreeControl->addTreeExpansionListener( xListener ); + Reference< XDialog > xDialog( xDialogControl, UNO_QUERY_THROW ); + xDialog->execute(); +} + +void DirectoryTree::fillNode( const Reference< XMutableTreeNode >& xNode ) +{ + if( xNode->getChildCount() == 0 ) + { + OUString sParentPath; + xNode->getDataValue() >>= sParentPath; + + osl::Directory aDirectory( sParentPath ); + if( aDirectory.open() == osl::Directory::E_None ) + { + osl::DirectoryItem aItem; + osl::FileStatus fs( FileStatusMask_Type | FileStatusMask_FileURL); + while( aDirectory.getNextItem( aItem, 0xffffffff ) == osl::Directory::E_None ) + { + if (aItem.getFileStatus(fs) == osl::FileBase::E_None) + { + bool bDirectory = fs.getFileType() == osl::FileStatus::Directory; + Reference< XMutableTreeNode > xChildNode( mxTreeDataModel->createNode( Any( fs.getFileName() ), bDirectory ), UNO_QUERY_THROW ); + xChildNode->setDataValue( Any( fs.getFileURL() ) ); + if( bDirectory ) + { + xChildNode->setExpandedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_down.png" ) ) ); + xChildNode->setCollapsedGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM( "private:graphicrepository/sd/res/triangle_right.png" ) ) ); + } + else + { + xChildNode->setNodeGraphicURL( OUString( RTL_CONSTASCII_USTRINGPARAM("private:graphicrepository/sw/imglst/nc20010.png") ) ); + } + xNode->appendChild( xChildNode ); + } + } + } + } +} + +// XTreeExpansionListener +void SAL_CALL DirectoryTree::requestChildNodes( const TreeExpansionEvent& rEvent ) throw (RuntimeException) +{ + if( rEvent.Node.is() && rEvent.Node->hasChildsOnDemand() ) + { + Reference< XMutableTreeNode > xNode( rEvent.Node, UNO_QUERY ); + if( xNode.is() ) + { + fillNode( xNode ); + xNode->setHasChildsOnDemand( sal_False ); + } + } +} + +void SAL_CALL DirectoryTree::treeExpanding( const TreeExpansionEvent& /*rEvent*/ ) throw (ExpandVetoException, RuntimeException) +{ +} + +void SAL_CALL DirectoryTree::treeCollapsing( const TreeExpansionEvent& ) throw (ExpandVetoException, RuntimeException) +{ +} + +void SAL_CALL DirectoryTree::treeExpanded( const TreeExpansionEvent& ) throw (RuntimeException) +{ +} + +void SAL_CALL DirectoryTree::treeCollapsed( const TreeExpansionEvent& /*rEvent*/ ) throw (RuntimeException) +{ +/* + if( rEvent.Node != mxTreeDataModel->getRoot() ) + { + Reference< XMutableTreeNode > xNode( rEvent.Node, UNO_QUERY ); + if( xNode.is() ) + { + while( xNode->getChildCount() ) + xNode->removeChildByIndex(0); + xNode->setHasChildsOnDemand( sal_True ); + } + } +*/ +} + +// XTreeEditListener +void SAL_CALL DirectoryTree::nodeEditing( const Reference< XTreeNode >& ) throw (VetoException, RuntimeException) +{ +} + +void SAL_CALL DirectoryTree::nodeEdited( const Reference< XTreeNode >& , const OUString& ) throw (RuntimeException) +{ +} + +// XEventListener +void SAL_CALL DirectoryTree::disposing( const ::com::sun::star::lang::EventObject& ) throw (RuntimeException) +{ +} + +//============================================================================ +int SAL_CALL main( int argc, char **argv ) +{ + OUString sConnectionString(RTL_CONSTASCII_USTRINGPARAM("uno:socket,host=localhost,port=5678;urp;StarOffice.ServiceManager")); + + if (argc < 2) + { + printf("using: treetest <directory> [<uno_connection_url>]\n\n" +#ifdef WNT + "example: treetest \"c:\" \"uno:socket,host=localhost,port=5678;urp;StarOffice.ServiceManager\"\n"); +#else + "example: treetest \"/etc\" \"uno:socket,host=localhost,port=5678;urp;StarOffice.ServiceManager\"\n"); +#endif + exit(1); + } + if (argc == 3) + { + sConnectionString = OUString::createFromAscii(argv[2]); + } + + // Creates a simple registry service instance. + Reference< XSimpleRegistry > xSimpleRegistry(::cppu::createSimpleRegistry() ); + + // Connects the registry to a persistent data source represented by an URL. + xSimpleRegistry->open( + OUString( RTL_CONSTASCII_USTRINGPARAM("treetest.rdb") ), sal_True, sal_False ); + + /* Bootstraps an initial component context with service manager upon a given + registry. This includes insertion of initial services: + - (registry) service manager, shared lib loader, + - simple registry, nested registry, + - implementation registration + - registry typedescription provider, typedescription manager (also + installs it into cppu core) + */ + Reference< XComponentContext > xComponentContext( + ::cppu::bootstrap_InitialComponentContext( xSimpleRegistry ) ); + + /* Gets the service manager instance to be used (or null). This method has + been added for convenience, because the service manager is a often used + object. + */ + Reference< XMultiComponentFactory > xMultiComponentFactoryClient( + xComponentContext->getServiceManager() ); + + /* Creates an instance of a component which supports the services specified + by the factory. + */ + Reference< XInterface > xInterface = + xMultiComponentFactoryClient->createInstanceWithContext( + OUString::createFromAscii( "com.sun.star.bridge.UnoUrlResolver" ), + xComponentContext ); + + Reference< XUnoUrlResolver > resolver( xInterface, UNO_QUERY ); + + // Resolves the component context from the office, on the uno URL given by argv[1]. + try + { + xInterface = Reference< XInterface >( + resolver->resolve( sConnectionString ), UNO_QUERY ); + } + catch ( Exception& e ) + { + printf("Error: cannot establish a connection using '%s':\n %s\n", + OUStringToOString(sConnectionString, RTL_TEXTENCODING_ASCII_US).getStr(), + OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US).getStr()); + exit(1); + } + + // gets the server component context as property of the office component factory + Reference< XPropertySet > xPropSet( xInterface, UNO_QUERY ); + xPropSet->getPropertyValue( OUString::createFromAscii("DefaultContext") ) >>= xComponentContext; + + // gets the service manager from the office + Reference< XMultiComponentFactory > xMultiComponentFactoryServer( + xComponentContext->getServiceManager() ); + + try + { + OUString ustrFileURL; + osl::FileBase::getFileURLFromSystemPath( OUString::createFromAscii(argv[1]), ustrFileURL ); + + rtl::Reference< DirectoryTree >( + new DirectoryTree( xComponentContext ) )->display(ustrFileURL); + } + catch( Exception& e ) + { + printf("Error: exception caught during test:\n %s\n", + OUStringToOString(e.Message, RTL_TEXTENCODING_ASCII_US).getStr()); + exit(1); + } + + // dispose the local service manager + Reference< XComponent >::query( xMultiComponentFactoryClient )->dispose(); + + return 0; +} diff --git a/svtools/workben/unodialog/roadmapskeleton.cxx b/svtools/workben/unodialog/roadmapskeleton.cxx new file mode 100644 index 000000000000..e3ed06707f14 --- /dev/null +++ b/svtools/workben/unodialog/roadmapskeleton.cxx @@ -0,0 +1,113 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "udlg_module.hxx" +#include "udlg_global.hrc" +#include "roadmapskeleton.hrc" +#include "roadmapskeleton.hxx" +#include "roadmapskeletonpages.hxx" + +//........................................................................ +namespace udlg +{ +//........................................................................ + +#define STATE_WELCOME 0 +#define STATE_PREPARE 1 +#define STATE_SETUP 2 +#define STATE_FINISH 3 + +#define PATH_DEFAULT 1 + + //==================================================================== + //= RoadmapSkeletonDialog + //==================================================================== + //-------------------------------------------------------------------- + RoadmapSkeletonDialog::RoadmapSkeletonDialog( const ::comphelper::ComponentContext& _rContext, Window* _pParent ) + :RoadmapSkeletonDialog_Base( _pParent, UdlgResId( DLG_ROADMAP_SKELETON ) ) + ,m_aContext( _rContext ) + { + String sTitlePrepare( UdlgResId( STR_STATE_WELCOME ) ); + String sTitleStoreAs( UdlgResId( STR_STATE_PREPARE ) ); + String sTitleMigrate( UdlgResId( STR_STATE_SETUP ) ); + String sTitleSummary( UdlgResId( STR_STATE_FINISH ) ); + FreeResource(); + + describeState( STATE_WELCOME, sTitlePrepare, &WelcomePage::Create ); + describeState( STATE_PREPARE, sTitleStoreAs, &PreparationPage::Create ); + describeState( STATE_SETUP, sTitleMigrate, &SetupPage::Create ); + describeState( STATE_FINISH, sTitleSummary, &FinishPage::Create ); + + declarePath( PATH_DEFAULT, STATE_WELCOME, STATE_PREPARE, STATE_SETUP, STATE_FINISH, WZS_INVALID_STATE ); + + SetPageSizePixel( LogicToPixel( ::Size( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT ), MAP_APPFONT ) ); + ShowButtonFixedLine( true ); + SetRoadmapInteractive( true ); + enableAutomaticNextButtonState(); + defaultButton( WZB_NEXT ); + enableButtons( WZB_FINISH, true ); + ActivatePage(); + } + + //-------------------------------------------------------------------- + RoadmapSkeletonDialog::~RoadmapSkeletonDialog() + { + } + + //-------------------------------------------------------------------- + void RoadmapSkeletonDialog::enterState( WizardState _nState ) + { + RoadmapSkeletonDialog_Base::enterState( _nState ); + } + + //-------------------------------------------------------------------- + sal_Bool RoadmapSkeletonDialog::prepareLeaveCurrentState( CommitPageReason _eReason ) + { + return RoadmapSkeletonDialog_Base::prepareLeaveCurrentState( _eReason ); + } + + //-------------------------------------------------------------------- + sal_Bool RoadmapSkeletonDialog::leaveState( WizardState _nState ) + { + return RoadmapSkeletonDialog_Base::leaveState( _nState ); + } + + //-------------------------------------------------------------------- + RoadmapSkeletonDialog::WizardState RoadmapSkeletonDialog::determineNextState( WizardState _nCurrentState ) const + { + return RoadmapSkeletonDialog_Base::determineNextState( _nCurrentState ); + } + + //-------------------------------------------------------------------- + sal_Bool RoadmapSkeletonDialog::onFinish() + { + return RoadmapSkeletonDialog_Base::onFinish(); + } + +//........................................................................ +} // namespace udlg +//........................................................................ diff --git a/svtools/workben/unodialog/roadmapskeleton.hrc b/svtools/workben/unodialog/roadmapskeleton.hrc new file mode 100644 index 000000000000..9b704e4a8f11 --- /dev/null +++ b/svtools/workben/unodialog/roadmapskeleton.hrc @@ -0,0 +1,41 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SVTOOLS_ROADMAPSKELETON_HRC +#define SVTOOLS_ROADMAPSKELETON_HRC + +#define TAB_PAGE_WIDTH 280 +#define TAB_PAGE_HEIGHT 185 + +//... strings ............................................................ + +#define STR_STATE_WELCOME 1 +#define STR_STATE_PREPARE 2 +#define STR_STATE_SETUP 3 +#define STR_STATE_FINISH 4 + +#endif // SVTOOLS_ROADMAPSKELETON_HRC diff --git a/svtools/workben/unodialog/roadmapskeleton.hxx b/svtools/workben/unodialog/roadmapskeleton.hxx new file mode 100644 index 000000000000..8859390c4b58 --- /dev/null +++ b/svtools/workben/unodialog/roadmapskeleton.hxx @@ -0,0 +1,65 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SVTOOLS_ROADMAPSKELETONDIALOG_HXX +#define SVTOOLS_ROADMAPSKELETONDIALOG_HXX + +#include <comphelper/componentcontext.hxx> +#include <svtools/roadmapwizard.hxx> + +//........................................................................ +namespace udlg +{ +//........................................................................ + + //==================================================================== + //= RoadmapSkeletonDialog + //==================================================================== + typedef ::svt::RoadmapWizard RoadmapSkeletonDialog_Base; + class RoadmapSkeletonDialog : public RoadmapSkeletonDialog_Base + { + public: + RoadmapSkeletonDialog( const ::comphelper::ComponentContext& _rContext, Window* _pParent ); + virtual ~RoadmapSkeletonDialog(); + + protected: + // OWizardMachine overridables + virtual void enterState( WizardState _nState ); + virtual sal_Bool prepareLeaveCurrentState( CommitPageReason _eReason ); + virtual sal_Bool leaveState( WizardState _nState ); + virtual WizardState determineNextState( WizardState _nCurrentState ) const; + virtual sal_Bool onFinish(); + + private: + ::comphelper::ComponentContext m_aContext; + }; + +//........................................................................ +} // namespace udlg +//........................................................................ + +#endif // SVTOOLS_ROADMAPSKELETONDIALOG_HXX diff --git a/svtools/workben/unodialog/roadmapskeleton.src b/svtools/workben/unodialog/roadmapskeleton.src new file mode 100644 index 000000000000..33728c700df6 --- /dev/null +++ b/svtools/workben/unodialog/roadmapskeleton.src @@ -0,0 +1,89 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "udlg_global.hrc" +#include "roadmapskeleton.hrc" + +// ----------------------------------------------------------------------------- +ModalDialog DLG_ROADMAP_SKELETON +{ + HelpID = "svtools:ModalDialog:DLG_ROADMAP_SKELETON"; + OutputSize = TRUE ; + Moveable = TRUE; + Closeable = TRUE ; + Hide = TRUE; + + Text[ en-US ] = "Roadmap Skeleton Demo" ; + + String STR_STATE_WELCOME + { + Text [ en-US ] = "Welcome"; + }; + + String STR_STATE_PREPARE + { + Text [ en-US ] = "Prepare"; + }; + + String STR_STATE_SETUP + { + Text [ en-US ] = "Setup"; + }; + + String STR_STATE_FINISH + { + Text [ en-US ] = "Finish"; + }; +}; + +TabPage TP_WELCOME +{ + HelpID = "svtools:TabPage:TP_WELCOME"; + Size = MAP_APPFONT( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT ); + Hide = TRUE; +}; + +TabPage TP_PREPARE +{ + HelpID = "svtools:TabPage:TP_PREPARE"; + Size = MAP_APPFONT( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT ); + Hide = TRUE; +}; + +TabPage TP_SETUP +{ + HelpID = "svtools:TabPage:TP_SETUP"; + Size = MAP_APPFONT( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT ); + Hide = TRUE; +}; + +TabPage TP_FINISH +{ + HelpID = "svtools:TabPage:TP_FINISH"; + Size = MAP_APPFONT( TAB_PAGE_WIDTH, TAB_PAGE_HEIGHT ); + Hide = TRUE; +}; diff --git a/svtools/workben/unodialog/roadmapskeletonpages.cxx b/svtools/workben/unodialog/roadmapskeletonpages.cxx new file mode 100644 index 000000000000..9d9291f92da5 --- /dev/null +++ b/svtools/workben/unodialog/roadmapskeletonpages.cxx @@ -0,0 +1,114 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "udlg_module.hxx" +#include "udlg_global.hrc" +#include "roadmapskeletonpages.hxx" +#include "roadmapskeleton.hxx" + +//........................................................................ +namespace udlg +{ +//........................................................................ + + //==================================================================== + //= RoadmapSkeletonPage + //==================================================================== + //-------------------------------------------------------------------- + RoadmapSkeletonPage::RoadmapSkeletonPage( RoadmapSkeletonDialog& _rParentDialog, const ResId& _rRes ) + :RoadmapSkeletonPage_Base( &_rParentDialog, _rRes ) + { + } + + //-------------------------------------------------------------------- + RoadmapSkeletonPage::~RoadmapSkeletonPage() + { + } + + //==================================================================== + //= WelcomePage + //==================================================================== + //-------------------------------------------------------------------- + WelcomePage::WelcomePage( RoadmapSkeletonDialog& _rParentDialog ) + :RoadmapSkeletonPage( _rParentDialog, UdlgResId( TP_WELCOME ) ) + { + } + + //-------------------------------------------------------------------- + TabPage* WelcomePage::Create( ::svt::RoadmapWizard& _rParentDialog ) + { + return new WelcomePage( dynamic_cast< RoadmapSkeletonDialog& >( _rParentDialog ) ); + } + + //==================================================================== + //= PreparationPage + //==================================================================== + //-------------------------------------------------------------------- + PreparationPage::PreparationPage( RoadmapSkeletonDialog& _rParentDialog ) + :RoadmapSkeletonPage( _rParentDialog, UdlgResId( TP_PREPARE ) ) + { + } + + //-------------------------------------------------------------------- + TabPage* PreparationPage::Create( ::svt::RoadmapWizard& _rParentDialog ) + { + return new PreparationPage( dynamic_cast< RoadmapSkeletonDialog& >( _rParentDialog ) ); + } + + //==================================================================== + //= SetupPage + //==================================================================== + //-------------------------------------------------------------------- + SetupPage::SetupPage( RoadmapSkeletonDialog& _rParentDialog ) + :RoadmapSkeletonPage( _rParentDialog, UdlgResId( TP_SETUP ) ) + { + } + + //-------------------------------------------------------------------- + TabPage* SetupPage::Create( ::svt::RoadmapWizard& _rParentDialog ) + { + return new SetupPage( dynamic_cast< RoadmapSkeletonDialog& >( _rParentDialog ) ); + } + + //==================================================================== + //= FinishPage + //==================================================================== + //-------------------------------------------------------------------- + FinishPage::FinishPage( RoadmapSkeletonDialog& _rParentDialog ) + :RoadmapSkeletonPage( _rParentDialog, UdlgResId( TP_FINISH ) ) + { + } + + //-------------------------------------------------------------------- + TabPage* FinishPage::Create( ::svt::RoadmapWizard& _rParentDialog ) + { + return new FinishPage( dynamic_cast< RoadmapSkeletonDialog& >( _rParentDialog ) ); + } + +//........................................................................ +} // namespace udlg +//........................................................................ diff --git a/svtools/workben/unodialog/roadmapskeletonpages.hxx b/svtools/workben/unodialog/roadmapskeletonpages.hxx new file mode 100644 index 000000000000..6b1d9b01710d --- /dev/null +++ b/svtools/workben/unodialog/roadmapskeletonpages.hxx @@ -0,0 +1,104 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SVTOOLS_ROADMAPSKELETONPAGES_HXX +#define SVTOOLS_ROADMAPSKELETONPAGES_HXX + +#include <svtools/wizardmachine.hxx> + +namespace svt +{ + class RoadmapWizard; +} + +//........................................................................ +namespace udlg +{ +//........................................................................ + + class RoadmapSkeletonDialog; + + //==================================================================== + //= RoadmapSkeletonPage + //==================================================================== + typedef ::svt::OWizardPage RoadmapSkeletonPage_Base; + class RoadmapSkeletonPage : public RoadmapSkeletonPage_Base + { + public: + RoadmapSkeletonPage( RoadmapSkeletonDialog& _rParentDialog, const ResId& _rRes ); + ~RoadmapSkeletonPage(); + }; + + //==================================================================== + //= WelcomePage + //==================================================================== + class WelcomePage : public RoadmapSkeletonPage + { + public: + WelcomePage( RoadmapSkeletonDialog& _rParentDialog ); + + static TabPage* Create( ::svt::RoadmapWizard& _rParentDialog ); + }; + + //==================================================================== + //= PreparationPage + //==================================================================== + class PreparationPage : public RoadmapSkeletonPage + { + public: + PreparationPage( RoadmapSkeletonDialog& _rParentDialog ); + + static TabPage* Create( ::svt::RoadmapWizard& _rParentDialog ); + }; + + //==================================================================== + //= SetupPage + //==================================================================== + class SetupPage : public RoadmapSkeletonPage + { + public: + SetupPage( RoadmapSkeletonDialog& _rParentDialog ); + + static TabPage* Create( ::svt::RoadmapWizard& _rParentDialog ); + }; + + //==================================================================== + //= FinishPage + //==================================================================== + class FinishPage : public RoadmapSkeletonPage + { + public: + FinishPage( RoadmapSkeletonDialog& _rParentDialog ); + + static TabPage* Create( ::svt::RoadmapWizard& _rParentDialog ); + }; + +//........................................................................ +} // namespace udlg +//........................................................................ + +#endif // SVTOOLS_ROADMAPSKELETONPAGES_HXX diff --git a/svtools/workben/unodialog/udlg_global.hrc b/svtools/workben/unodialog/udlg_global.hrc new file mode 100644 index 000000000000..572de306f0df --- /dev/null +++ b/svtools/workben/unodialog/udlg_global.hrc @@ -0,0 +1,54 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SVTOOLS_UDLG_GLOBAL_HRC +#define SVTOOLS_UDLG_GLOBAL_HRC + +#include <svl/solar.hrc> + +//===================================================================== +//= bases +//===================================================================== +#define RID_UDLG_DIALOG_START RID_SVTOOLS_START + 0 +#define RID_UDLG_TAPPAGE_START RID_SVTOOLS_START + 0 + +//===================================================================== +//= dialogs +//===================================================================== + +#define DLG_ROADMAP_SKELETON RID_UDLG_DIALOG_START + 0 + +//===================================================================== +//= tab pages +//===================================================================== + +#define TP_WELCOME ( RID_UDLG_TAPPAGE_START + 0 ) +#define TP_PREPARE ( RID_UDLG_TAPPAGE_START + 1 ) +#define TP_SETUP ( RID_UDLG_TAPPAGE_START + 2 ) +#define TP_FINISH ( RID_UDLG_TAPPAGE_START + 3 ) + +#endif // SVTOOLS_UDLG_GLOBAL_HRC diff --git a/svtools/workben/unodialog/udlg_module.cxx b/svtools/workben/unodialog/udlg_module.cxx new file mode 100644 index 000000000000..da16bc5657ab --- /dev/null +++ b/svtools/workben/unodialog/udlg_module.cxx @@ -0,0 +1,42 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "udlg_module.hxx" + +#include <rtl/instance.hxx> + +//........................................................................ +namespace udlg +{ +//........................................................................ + + IMPLEMENT_MODULE( UdlgModule, "udlg" ); + +//........................................................................ +} // namespace udlg +//........................................................................ + diff --git a/svtools/workben/unodialog/udlg_module.hxx b/svtools/workben/unodialog/udlg_module.hxx new file mode 100644 index 000000000000..2f1b30d9afed --- /dev/null +++ b/svtools/workben/unodialog/udlg_module.hxx @@ -0,0 +1,45 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SVTOOLS_WORKBEN_UNODIALOG_MODULE_HXX +#define SVTOOLS_WORKBEN_UNODIALOG_MODULE_HXX + +#include <unotools/componentresmodule.hxx> + +//........................................................................ +namespace udlg +{ +//........................................................................ + + DEFINE_MODULE( UdlgModule, UdlgClient, UdlgResId ) + +//........................................................................ +} // namespace udlg +//........................................................................ + +#endif // SVTOOLS_WORKBEN_UNODIALOG_MODULE_HXX + diff --git a/svtools/workben/unodialog/udlg_services.cxx b/svtools/workben/unodialog/udlg_services.cxx new file mode 100644 index 000000000000..b71dceed5eba --- /dev/null +++ b/svtools/workben/unodialog/udlg_services.cxx @@ -0,0 +1,58 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +/** === begin UNO includes === **/ +/** === end UNO includes === **/ + +#include "udlg_module.hxx" + +//........................................................................ +namespace udlg +{ +//........................................................................ + + //-------------------------------------------------------------------- + extern void createRegistryInfo_UnoDialogSkeleton(); + + static void initializeModule() + { + static bool bInitialized( false ); + if ( !bInitialized ) + { + ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); + if ( !bInitialized ) + { + createRegistryInfo_UnoDialogSkeleton(); + } + } + } + +//........................................................................ +} // namespace udlg +//........................................................................ + +IMPLEMENT_COMPONENT_LIBRARY_API( ::udlg::UdlgModule, ::udlg::initializeModule ) diff --git a/svtools/workben/unodialog/unodialogsample.cxx b/svtools/workben/unodialog/unodialogsample.cxx new file mode 100644 index 000000000000..4eadc646fef5 --- /dev/null +++ b/svtools/workben/unodialog/unodialogsample.cxx @@ -0,0 +1,214 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "udlg_module.hxx" +#include "roadmapskeleton.hxx" + +/** === begin UNO includes === **/ +/** === end UNO includes === **/ + +#include <comphelper/componentcontext.hxx> +#include "svtools/genericunodialog.hxx" + +//........................................................................ +namespace udlg +{ +//........................................................................ + + /** === begin UNO using === **/ + using ::com::sun::star::uno::Reference; + using ::com::sun::star::uno::XInterface; + using ::com::sun::star::uno::UNO_QUERY; + using ::com::sun::star::uno::UNO_QUERY_THROW; + using ::com::sun::star::uno::UNO_SET_THROW; + using ::com::sun::star::uno::Exception; + using ::com::sun::star::uno::RuntimeException; + using ::com::sun::star::uno::Any; + using ::com::sun::star::uno::makeAny; + using ::com::sun::star::uno::XComponentContext; + using ::com::sun::star::uno::Sequence; + using ::com::sun::star::beans::XPropertySetInfo; + using ::com::sun::star::beans::Property; + /** === end UNO using === **/ + + //==================================================================== + //= UnoDialogSkeleton + //==================================================================== + class UnoDialogSkeleton; + typedef ::svt::OGenericUnoDialog UnoDialogSkeleton_Base; + typedef ::comphelper::OPropertyArrayUsageHelper< UnoDialogSkeleton > UnoDialogSkeleton_PBase; + + class UnoDialogSkeleton + :public UnoDialogSkeleton_Base + ,public UnoDialogSkeleton_PBase + ,public UdlgClient + { + public: + UnoDialogSkeleton( const Reference< XComponentContext >& _rxContext ); + + // XTypeProvider + virtual Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(RuntimeException); + + // XServiceInfo + virtual ::rtl::OUString SAL_CALL getImplementationName() throw(RuntimeException); + virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(RuntimeException); + + // XPropertySet + virtual Reference< XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(RuntimeException); + virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper(); + + // OPropertyArrayUsageHelper + virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const; + + // helper for factories + static Reference< XInterface > SAL_CALL Create( const Reference< XComponentContext >& _rxContext ); + static ::rtl::OUString SAL_CALL getImplementationName_static() throw(RuntimeException); + static Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames_static() throw(RuntimeException); + + protected: + ~UnoDialogSkeleton(); + + protected: + virtual Dialog* createDialog( Window* _pParent ); + virtual void destroyDialog(); + + private: + ::comphelper::ComponentContext m_aContext; + }; + + //==================================================================== + //= UnoDialogSkeleton + //==================================================================== + //-------------------------------------------------------------------- + UnoDialogSkeleton::UnoDialogSkeleton( const Reference< XComponentContext >& _rxContext ) + :UnoDialogSkeleton_Base( _rxContext ) + ,m_aContext( _rxContext ) + { + } + + //-------------------------------------------------------------------- + UnoDialogSkeleton::~UnoDialogSkeleton() + { + // we do this here cause the base class' call to destroyDialog won't reach us anymore : we're within an dtor, + // so this virtual-method-call the base class does does not work, we're already dead then ... + if ( m_pDialog ) + { + ::osl::MutexGuard aGuard( m_aMutex ); + if ( m_pDialog ) + destroyDialog(); + } + } + + //-------------------------------------------------------------------- + Reference< XInterface > SAL_CALL UnoDialogSkeleton::Create( const Reference< XComponentContext >& _rxContext ) + { + return *(new UnoDialogSkeleton( _rxContext ) ); + } + + //-------------------------------------------------------------------- + Dialog* UnoDialogSkeleton::createDialog( Window* _pParent ) + { + return new RoadmapSkeletonDialog( m_aContext, _pParent ); + } + + //-------------------------------------------------------------------- + void UnoDialogSkeleton::destroyDialog() + { + UnoDialogSkeleton_Base::destroyDialog(); + } + + //-------------------------------------------------------------------- + Sequence< sal_Int8 > SAL_CALL UnoDialogSkeleton::getImplementationId() throw(RuntimeException) + { + static ::cppu::OImplementationId* pId = NULL; + if ( !pId ) + { + ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() ); + if ( !pId ) + { + static ::cppu::OImplementationId aId; + pId = &aId; + } + } + return pId->getImplementationId(); + } + + //-------------------------------------------------------------------- + ::rtl::OUString SAL_CALL UnoDialogSkeleton::getImplementationName_static() throw(RuntimeException) + { + return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.svtools.workben.UnoDialogSkeleton" ) ); + } + + //-------------------------------------------------------------------- + Sequence< ::rtl::OUString > SAL_CALL UnoDialogSkeleton::getSupportedServiceNames_static() throw(RuntimeException) + { + Sequence< ::rtl::OUString > aServices(1); + aServices[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.example.UnoDialogSample" ) ); + return aServices; + } + + //-------------------------------------------------------------------- + ::rtl::OUString SAL_CALL UnoDialogSkeleton::getImplementationName() throw(RuntimeException) + { + return getImplementationName_static(); + } + + //-------------------------------------------------------------------- + Sequence< ::rtl::OUString > SAL_CALL UnoDialogSkeleton::getSupportedServiceNames() throw(RuntimeException) + { + return getSupportedServiceNames_static(); + } + + //-------------------------------------------------------------------- + Reference< XPropertySetInfo > SAL_CALL UnoDialogSkeleton::getPropertySetInfo() throw(RuntimeException) + { + return createPropertySetInfo( getInfoHelper() ); + } + + //-------------------------------------------------------------------- + ::cppu::IPropertyArrayHelper& SAL_CALL UnoDialogSkeleton::getInfoHelper() + { + return *const_cast< UnoDialogSkeleton* >( this )->getArrayHelper(); + } + + //-------------------------------------------------------------------- + ::cppu::IPropertyArrayHelper* UnoDialogSkeleton::createArrayHelper( ) const + { + Sequence< Property > aProps; + describeProperties( aProps ); + return new ::cppu::OPropertyArrayHelper( aProps ); + } + + //-------------------------------------------------------------------- + void createRegistryInfo_UnoDialogSkeleton() + { + static OAutoRegistration< UnoDialogSkeleton > aAutoRegistration; + } + +//........................................................................ +} // namespace udlg +//........................................................................ diff --git a/svtools/workben/urange.cxx b/svtools/workben/urange.cxx new file mode 100644 index 000000000000..089724966f48 --- /dev/null +++ b/svtools/workben/urange.cxx @@ -0,0 +1,220 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org 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 Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_svtools.hxx" + +/* Test the SfxUShortRanges class */ + +#ifndef _SFXITEMS_HXX +#include <sfxitems.hxx> +#endif + +sal_uInt16 nValues1[] = {340,472,482,4288,4374,4890,5026,5356,5724,6130,6186,6666,9222,9764,9908, + 10110,11302,11748,11946,12298,12344,12642,12958,13076,13410,13496,14462, + 14480,14592,16292,16788,17102,17792,17844,18182,18396,18522,18974,19292, + 19630,20336,21808,21972,22382,23568,25156,26978,27158,27730,28014,28280, + 28774,29258,30920,30938,31356,31582,32194,32734,32893,33757,33911,34013, + 34565,35283,38895,40273,41281,42157,44429,44553,45825,46367,48163,48417, + 49501,50499,52105,53035,53715,53899,54015,54131,54865,55155,55507,56325, + 57045,59243,59833,59859,59951,60361,61387,62453,62703,63155,63517,63621, + 63895,0}; + +sal_uInt16 nValues2[] = {2362,3100,3286,3548,4056,4224,5058,5198,5398,5990,6910,7034,7046,8574,8762, + 9360,9494,9720,11432,12900,12946,13626,13844,14344,15028,16306,16494,16972, + 17340,17504,17610,18270,18506,19832,19962,20356,20792,21146,21270,21722, + 22486,22752,23554,24148,24210,24910,25006,25500,26464,26952,27216,28394, + 28398,29602,31130,31642,31894,33343,34191,34593,34931,36221,36637,37287, + 37765,39853,41231,41711,41799,44213,44863,46491,47459,48707,48911,49353, + 49923,49997,50117,51357,51519,52043,52563,52727,53781,54065,54249,55333, + 56549,57361,57777,58165,58507,59229,59719,60379,60845,62697,63123,65169,0}; + +#include <sv.hxx> + +SfxUShortRanges aRanges1a( nValues1 ); +SfxUShortRanges aRanges1b( nValues1 ); +SfxUShortRanges aRanges1c( nValues1 ); +SfxUShortRanges aRanges2( nValues2 ); + + +String aStr1; +String aStr2; +String aStr3; + + +static String MakeString_Impl( SfxUShortRanges& aRanges ) +{ + String aStr; + + sal_uInt16 nPos = 0; + const sal_uInt16* pRanges = ( const sal_uInt16*)aRanges; + + while( pRanges[ nPos ] != 0 ) + { + aStr += pRanges[ nPos ]; + aStr += " - "; + aStr += pRanges[ nPos+1 ]; + aStr += ", "; + nPos += 2; + } + + + return aStr; +} + + +// ------------------------------------------------------------------------- + +class MyApp : public Application +{ +public: + void Main( int, char* [] ); +}; + +// ------------------------------------------------------------------------- + +class MyDialog : public ModalDialog +{ +private: + GroupBox aGroup1; + MultiLineEdit aEdit1; + GroupBox aGroup2; + MultiLineEdit aEdit2; + GroupBox aGroup3; + MultiLineEdit aEdit3; + OKButton aBtn1; + CancelButton aBtn2; + +public: + MyDialog( Window* pParent ); + + void MouseButtonDown( const MouseEvent& rMEvt ); +}; + +// ------------------------------------------------------------------------- + +MyDialog::MyDialog( Window* pParent ) : + ModalDialog( pParent, WB_STDMODAL | WB_3DLOOK ), + aGroup1( this ), + aEdit1( this, WB_BORDER | WB_READONLY ), + aGroup2( this ), + aEdit2( this, WB_BORDER | WB_READONLY ), + aGroup3( this ), + aEdit3( this, WB_BORDER | WB_READONLY ), + aBtn1( this, WB_DEFBUTTON ), + aBtn2( this ) +{ + aGroup1.SetText( "Union" ); + aGroup1.SetPosSizePixel( Point( 5, 5 ), Size( 330, 80 ) ); + aGroup1.Show(); + + aEdit1.SetPosSizePixel( Point ( 10, 20 ), Size( 320, 60 ) ); + aEdit1.SetText( aStr1 ); + aEdit1.Show(); + + aGroup2.SetText( "Difference" ); + aGroup2.SetPosSizePixel( Point( 5, 90 ), Size( 330, 80 ) ); + aGroup2.Show(); + + aEdit2.SetPosSizePixel( Point( 10, 105 ), Size( 320, 60 ) ); + aEdit2.SetText( aStr2 ); + aEdit2.Show(); + + aGroup3.SetText( "Intersection" ); + aGroup3.SetPosSizePixel( Point( 5, 175 ), Size( 330, 80 ) ); + aGroup3.Show(); + + aEdit3.SetPosSizePixel( Point( 10, 190 ), Size( 320, 60 ) ); + aEdit3.SetText( aStr3 ); + aEdit3.Show(); + + aBtn1.SetPosSizePixel( Point( 10, 310 ), Size( 100, 25 ) ); + aBtn1.Show(); + + aBtn2.SetPosSizePixel( Point( 120, 310 ), Size( 100, 25 ) ); + aBtn2.Show(); + + SetOutputSizePixel( Size( 340, 345 ) ); + SetText( "SfxUShortRanges Test" ); +} + +// ------------------------------------------------------------------------- + +void MyDialog::MouseButtonDown( const MouseEvent& rMEvt ) +{ +} + + +// ------------------------------------------------------------------------- + +class MyWin : public WorkWindow +{ +public: + MyWin( Window* pParent, WinBits aWinStyle ) : + WorkWindow( pParent, aWinStyle ) + {} + + void MouseButtonDown( const MouseEvent& ); +}; + + +// ------------------------------------------------------------------------- + +MyApp aMyApp; + +void MyApp::Main( int, char* [] ) +{ + EnableSVLook(); + SetAppFont( System::GetStandardFont( STDFONT_APP ) ); + + MyWin aMainWin( NULL, WB_APP | WB_STDWORK ); + aMainWin.SetText( "SfxUShortRanges - Test" ); + aMainWin.Show(); + + aRanges1a += aRanges2; + aRanges1b -= aRanges2; + aRanges1c /= aRanges2; + + aStr1 = MakeString_Impl( aRanges1a ); + aStr2 = MakeString_Impl( aRanges1b ); + aStr3 = MakeString_Impl( aRanges1c ); + + Execute(); +} + +// ------------------------------------------------------------------------- + +void MyWin::MouseButtonDown( const MouseEvent& rMEvt ) +{ + if( rMEvt.IsLeft() ) + { + MyDialog* pDialog = new MyDialog( this ); + pDialog->Execute(); + delete pDialog; + } +} + |