summaryrefslogtreecommitdiff
path: root/cui/source/dialogs/commonlingui.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/dialogs/commonlingui.cxx')
-rw-r--r--cui/source/dialogs/commonlingui.cxx289
1 files changed, 289 insertions, 0 deletions
diff --git a/cui/source/dialogs/commonlingui.cxx b/cui/source/dialogs/commonlingui.cxx
new file mode 100644
index 000000000000..f1cc2a869d6a
--- /dev/null
+++ b/cui/source/dialogs/commonlingui.cxx
@@ -0,0 +1,289 @@
+/*************************************************************************
+ *
+ * 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_cui.hxx"
+#include "commonlingui.hxx"
+
+#include <cuires.hrc>
+#include <dialmgr.hxx>
+#include <vcl/decoview.hxx>
+
+#include "hangulhanjadlg.hrc"
+
+//=============================================================================
+// SvxClickInfoCtr
+//=============================================================================
+
+//-----------------------------------------------------------------------------
+SvxClickInfoCtr::SvxClickInfoCtr( Window* pParent, const ResId& rResId ) :
+ Control( pParent, rResId ),
+ aFixedInfo( this)
+{
+ aFixedInfo.SetSizePixel(GetOutputSizePixel());
+ aFixedInfo.Show();
+}
+
+//-----------------------------------------------------------------------------
+void SvxClickInfoCtr::MouseButtonDown( const MouseEvent& )
+{
+ aActivateLink.Call(this);
+}
+
+//-----------------------------------------------------------------------------
+long SvxClickInfoCtr::PreNotify( NotifyEvent& rNEvt )
+{
+ if(rNEvt.GetType()==EVENT_GETFOCUS || rNEvt.GetType()==EVENT_MOUSEBUTTONDOWN)
+ {
+ aActivateLink.Call(this);
+ }
+
+ return Control::PreNotify(rNEvt);
+}
+
+//-----------------------------------------------------------------------------
+void SvxClickInfoCtr::SetText( const XubString& rStr )
+{
+ aFixedInfo.SetText(rStr );
+}
+
+//-----------------------------------------------------------------------------
+XubString SvxClickInfoCtr::GetText() const
+{
+ return aFixedInfo.GetText();
+}
+
+//-----------------------------------------------------------------------------
+__EXPORT SvxClickInfoCtr::~SvxClickInfoCtr()
+{
+}
+
+//=============================================================================
+// SvxCommonLinguisticControl
+//=============================================================================
+//-----------------------------------------------------------------------------
+SvxCommonLinguisticControl::SvxCommonLinguisticControl( ModalDialog* _pParent )
+ :Window( _pParent, CUI_RES( RID_SVX_WND_COMMON_LINGU ) )
+ ,aWordText ( this, CUI_RES( FT_WORD ) )
+ ,aAktWord ( this, CUI_RES( FT_AKTWORD ) )
+ ,aNewWord ( this, CUI_RES( FT_NEWWORD ) )
+ ,aNewWordED ( this, CUI_RES( ED_NEWWORD ) )
+ ,aSuggestionFT ( this, CUI_RES( FT_SUGGESTION ) )
+ ,aIgnoreBtn ( this, CUI_RES( BTN_IGNORE ) )
+ ,aIgnoreAllBtn ( this, CUI_RES( BTN_IGNOREALL ) )
+ ,aChangeBtn ( this, CUI_RES( BTN_CHANGE ) )
+ ,aChangeAllBtn ( this, CUI_RES( BTN_CHANGEALL ) )
+ ,aOptionsBtn ( this, CUI_RES( BTN_OPTIONS ) )
+ ,aStatusText ( this, CUI_RES( FT_STATUS ) )
+ ,aHelpBtn ( this, CUI_RES( BTN_SPL_HELP ) )
+ ,aCancelBtn ( this, CUI_RES( BTN_SPL_CANCEL ) )
+ ,aAuditBox ( this, CUI_RES( GB_AUDIT ) )
+{
+ FreeResource();
+
+#ifdef FS_PRIV_DEBUG
+ SetType( WINDOW_TABPAGE );
+#endif
+
+ SetPosSizePixel( Point( 0, 0 ), _pParent->GetOutputSizePixel() );
+ Show();
+}
+
+// -----------------------------------------------------------------------
+PushButton* SvxCommonLinguisticControl::implGetButton( ButtonType _eType ) const
+{
+ const PushButton* pButton = NULL;
+ switch ( _eType )
+ {
+ case eClose: pButton = &aCancelBtn; break;
+ case eIgnore: pButton = &aIgnoreBtn; break;
+ case eIgnoreAll: pButton = &aIgnoreAllBtn; break;
+ case eChange: pButton = &aChangeBtn; break;
+ case eChangeAll: pButton = &aChangeAllBtn; break;
+ case eOptions: pButton = &aOptionsBtn; break;
+ }
+ return const_cast< PushButton* >( pButton );
+}
+
+// -----------------------------------------------------------------------
+void SvxCommonLinguisticControl::SetButtonHandler( ButtonType _eType, const Link& _rHandler )
+{
+ Button* pButton = GetButton( _eType );
+ if ( pButton )
+ pButton->SetClickHdl( _rHandler );
+}
+
+// -----------------------------------------------------------------------
+void SvxCommonLinguisticControl::EnableButton( ButtonType _eType, sal_Bool _bEnable )
+{
+ Button* pButton = GetButton( _eType );
+ if ( pButton )
+ pButton->Enable( _bEnable );
+}
+
+// -----------------------------------------------------------------------
+void SvxCommonLinguisticControl::InsertControlGroup( Window& _rFirstGroupWindow, Window& _rLastGroupWindow, ControlGroup _eInsertAfter )
+{
+ Window* pInsertAfter = NULL; // will be the last window of our own "undividable" group, after which we insert the foreign group
+ switch ( _eInsertAfter )
+ {
+ case eLeftRightWords : pInsertAfter = &aNewWordED; break;
+ case eSuggestionLabel : pInsertAfter = &aSuggestionFT; break;
+ case eActionButtons : pInsertAfter = &aChangeAllBtn; break;
+ case eDialogButtons : pInsertAfter = &aCancelBtn; break;
+ }
+
+ // now loop through the remaining windows of the foreign group
+ Window* pInsertBehind = pInsertAfter;
+ Window* pInsert = &_rFirstGroupWindow;
+
+ // some strange thing below: asking a window for WINDOW_NEXT or WINDOW_PREV does not take into
+ // account the border window, _but_ SetZOrder _does_!. Thus, when advancing through a chain
+ // of windows, we need to work with the border windows (WINDOW_BORDER), instead of simply
+ // asking for WINDOW_NEXT.
+
+ Window* pLoopEnd = _rLastGroupWindow.GetWindow( WINDOW_BORDER );
+ while ( pInsert && ( pInsertBehind != pLoopEnd ) )
+ {
+ // we'll destroy the NEXT relation immediately, so remember the next window
+ DBG_ASSERT( pInsert->GetWindow( WINDOW_BORDER ), "SvxCommonLinguisticControl::InsertControlGroup: border window is expected to be non NULL!" );
+ Window* pNextInsert = pInsert->GetWindow( WINDOW_BORDER )->GetWindow( WINDOW_NEXT );
+ // knit
+ pInsert->SetZOrder( pInsertBehind, WINDOW_ZORDER_BEHIND );
+ // advance
+ pInsertBehind = pInsert;
+ pInsert = pNextInsert;
+ }
+ DBG_ASSERT( pInsertBehind == pLoopEnd, "SvxCommonLinguisticControl::InsertControlGroup: controls do not form a group!" );
+ // if we did not reach pLoopEnd, then we did not reach _rLastGroupWindow in the loop, then
+ // (FirstWindow, LastWindow) was no valid control group
+}
+
+// -----------------------------------------------------------------------
+String SvxCommonLinguisticControl::GetNewEditWord()
+{
+ return aNewWordED.GetText();
+}
+
+// -----------------------------------------------------------------------
+void SvxCommonLinguisticControl::SetNewEditWord( const String& _rNew )
+{
+ aNewWordED.SetText( _rNew );
+}
+
+//-----------------------------------------------------------------------------
+void SvxCommonLinguisticControl::UpdateIgnoreHelp( )
+{
+
+ String aInfoStr( RTL_CONSTASCII_USTRINGPARAM( ": " ) );
+ aInfoStr.Append( GetCurrentText() );
+
+ String aString = GetNonMnemonicString( aIgnoreAllBtn.GetText() );
+ aString.Append( aInfoStr );
+ aIgnoreAllBtn.SetQuickHelpText( aString );
+
+ aString = GetNonMnemonicString( aIgnoreBtn.GetText() );
+ aString.Append( aInfoStr );
+ aIgnoreBtn.SetQuickHelpText( aString );
+}
+
+//-----------------------------------------------------------------------------
+void SvxCommonLinguisticControl::UpdateChangesHelp( const String& _rNewText )
+{
+ String aInfoStr( RTL_CONSTASCII_USTRINGPARAM( ": " ) );
+ aInfoStr.Append( GetCurrentText() );
+ aInfoStr.Append( String( RTL_CONSTASCII_USTRINGPARAM( " -> " ) ) );
+ aInfoStr.Append( _rNewText );
+ // TODO: shouldn't this be part of the resources, for proper localization?
+
+ String aString = GetNonMnemonicString( aChangeAllBtn.GetText() );
+ aString.Append( aInfoStr );
+ aChangeAllBtn.SetQuickHelpText( aString );
+
+ aString = GetNonMnemonicString( aChangeBtn.GetText() );
+ aString.Append( aInfoStr );
+ aChangeBtn.SetQuickHelpText( aString );
+}
+
+//-----------------------------------------------------------------------------
+void SvxCommonLinguisticControl::Paint( const Rectangle& rRect )
+{
+ Window::Paint(rRect );
+
+ DecorationView aDecoView( this );
+
+ Rectangle aRect( aAuditBox.GetPosPixel(), aAuditBox.GetSizePixel() );
+ aDecoView.DrawButton( aRect, BUTTON_DRAW_NOFILL );
+}
+
+//-----------------------------------------------------------------------------
+void SvxCommonLinguisticControl::Enlarge( sal_Int32 _nX, sal_Int32 _nY )
+{
+ Size aSize;
+ Point aPos;
+
+ // the controls which need to be resized
+ {
+ Window* pResize[] =
+ {
+ this, &aAuditBox, &aStatusText
+ };
+ for ( sal_uInt32 i = 0; i < sizeof( pResize ) / sizeof( pResize[0] ); ++i )
+ {
+ aSize = pResize[i]->GetSizePixel( );
+ pResize[i]->SetSizePixel( Size( aSize.Width() + _nX, aSize.Height() + _nY ) );
+ }
+ }
+
+ // the controls which stick to the bottom of the window
+ {
+ Window* pMoveDown[] =
+ {
+ &aStatusText, &aHelpBtn, &aCancelBtn
+ };
+ for ( sal_uInt32 i = 0; i < sizeof( pMoveDown ) / sizeof( pMoveDown[0] ); ++i )
+ {
+ aPos = pMoveDown[i]->GetPosPixel();
+ aPos.Y() += _nY;
+ pMoveDown[i]->SetPosPixel( aPos );
+ }
+ }
+
+ // the controls which stick to the right
+ {
+ Window* pMoveRight[] =
+ {
+ &aIgnoreBtn, &aIgnoreAllBtn, &aChangeBtn, &aChangeAllBtn, &aOptionsBtn, &aHelpBtn, &aCancelBtn
+ };
+ for ( sal_uInt32 i = 0; i < sizeof( pMoveRight ) / sizeof( pMoveRight[0] ); ++i )
+ {
+ aPos = pMoveRight[i]->GetPosPixel();
+ aPos.X() += _nX;
+ pMoveRight[i]->SetPosPixel( aPos );
+ }
+ }
+}