office-gobmx/svtools/workben/svdem.cxx

1145 lines
45 KiB
C++

/*************************************************************************
*
* $RCSfile: svdem.cxx,v $
*
* $Revision: 1.3 $
*
* last change: $Author: jbu $ $Date: 2002-01-15 17:25:59 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library 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 for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#include <stdio.h>
#include <cppuhelper/servicefactory.hxx>
#include <comphelper/processfactory.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 <valueset.hxx>
#include <headbar.hxx>
#include <prgsbar.hxx>
#include <calendar.hxx>
#include <prnsetup.hxx>
#include <printdlg.hxx>
// -----------------------------------------------------------------------
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 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 );
}
// -----------------------------------------------------------------------
BOOL ShowBitmap::Close()
{
Hide();
delete this;
return 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.GetLineOrientation() )
{
aText.Append( String::CreateFromInt32( rFont.GetLineOrientation()/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_SVLOOK | 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( TRUE );
aFontBox.EnableSymbols( 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( 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( 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( (ColorName)aColorBox.GetSelectEntryPos() ) );
aFont.SetWordLineMode( aWordLineBox.IsChecked() );
aFont.SetShadow( aShadowBox.IsChecked() );
aFont.SetOutline( aOutlineBox.IsChecked() );
aFont.SetLineOrientation( aLineOrientSlider.GetOrientation() );
aFont.SetTransparent( 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 TRUE;
else
return FALSE;
}
else
return 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 International& rIntn = aCalendar.GetInternational();
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 );
for ( USHORT i = 0; i < 7; i++ )
aWeekStartMenu.InsertItem( 10+i, rIntn.GetDayText( (DayOfWeek)i ), MIB_AUTOCHECK | MIB_RADIOCHECK );
aWeekStartMenu.CheckItem( 10+(USHORT)rIntn.GetWeekStart() );
aWeekCountMenu.InsertItem( 20, XubString( RTL_CONSTASCII_USTRINGPARAM( "~1. Januar" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
aWeekCountMenu.InsertItem( 21, XubString( RTL_CONSTASCII_USTRINGPARAM( "Erste 4 ~Tage-Woche" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
aWeekCountMenu.InsertItem( 22, XubString( RTL_CONSTASCII_USTRINGPARAM( "Erste ~volle Woche" ) ), MIB_AUTOCHECK | MIB_RADIOCHECK );
aWeekCountMenu.CheckItem( 20+(USHORT)rIntn.GetWeekCountStart() );
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 )
{
USHORT 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::GetAppInternational().GetDate( aDate );
aCalendar.AddDateInfo( aDate, aStr, NULL, &aFrameColor, DIB_BOLD );
return 0;
}
// -----------------------------------------------------------------------
IMPL_LINK( MyCalendar, MenuSelectHdl, Menu*, pMenu )
{
International aIntn = aCalendar.GetInternational();
USHORT nItemId = pMenu->GetCurItemId();
if ( (nItemId >= 10) && (nItemId <= 19) )
aIntn.SetWeekStart( (DayOfWeek)(nItemId-10) );
else if ( (nItemId >= 20) && (nItemId <= 29) )
aIntn.SetWeekCountStart( (WeekCountStart)(nItemId-20) );
aCalendar.SetInternational( aIntn );
return 0;
}
// -----------------------------------------------------------------------
void MyCalendar::Resize()
{
aCalendar.SetSizePixel( GetOutputSizePixel() );
}
// -----------------------------------------------------------------------
MyWin::MyWin( Window* pParent, WinBits aWinStyle ) :
WorkWindow(pParent, aWinStyle | WB_SVLOOK ),
aBox( this, WB_BORDER | WB_SVLOOK ),
aBar( this, WB_BORDER | WB_SVLOOK | WB_RIGHT ),
aHeadBar( this, WB_BORDER | WB_SVLOOK | 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( 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( 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( 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 );
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 )
{
USHORT nId = aValueSet.GetSelectItemId();
if ( nId > 8 )
{
Color aColor = aValueSet.GetItemColor( nId );
aValueSet.SetFillColor( aColor );
}
}
else if ( pCtrl == &aHeadBar )
{
USHORT nCurItemId = aHeadBar.GetCurItemId();
for ( USHORT i = 0; i < aHeadBar.GetItemCount(); i++ )
{
USHORT 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* pCalendar = pCtrl->GetCalendar();
aCalendarField2.SetDate( pCalendar->GetSelectDate( 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 ( USHORT i = 0; i <= 130; i += 2 )
{
for ( USHORT 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;