summaryrefslogtreecommitdiff
path: root/cui
diff options
context:
space:
mode:
authorCédric Bosdonnat <cedric.bosdonnat@free.fr>2011-10-23 07:35:06 -0700
committerCédric Bosdonnat <cedric.bosdonnat@free.fr>2011-11-02 13:21:57 +0100
commitbc3c10b5ce88869871761000e9724bcad9a0d556 (patch)
tree562648291b9cf587846a0188b0cdd91a4cfb1432 /cui
parent610b7bc5943579d8cacb421c9a6b401b83bda149 (diff)
Grammar checking dialog: reworked how explanations are shown
Diffstat (limited to 'cui')
-rw-r--r--cui/source/dialogs/SpellAttrib.hxx10
-rw-r--r--cui/source/dialogs/SpellDialog.cxx149
-rw-r--r--cui/source/dialogs/SpellDialog.hrc5
-rw-r--r--cui/source/dialogs/SpellDialog.src69
-rw-r--r--cui/source/inc/SpellDialog.hxx29
5 files changed, 161 insertions, 101 deletions
diff --git a/cui/source/dialogs/SpellAttrib.hxx b/cui/source/dialogs/SpellAttrib.hxx
index 9ebc229380ce..731c6942a082 100644
--- a/cui/source/dialogs/SpellAttrib.hxx
+++ b/cui/source/dialogs/SpellAttrib.hxx
@@ -47,6 +47,7 @@ struct SpellErrorDescription
::rtl::OUString sErrorText;
::rtl::OUString sDialogTitle;
::rtl::OUString sExplanation;
+ ::rtl::OUString sExplanationURL;
::com::sun::star::lang::Locale aLocale;
::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XProofreader > xGrammarChecker;
::rtl::OUString sServiceName; //service name of GrammarChecker/SpellChecker
@@ -64,9 +65,13 @@ struct SpellErrorDescription
const ::rtl::OUString& rServiceName,
const ::rtl::OUString* pDialogTitle = 0,
const ::rtl::OUString* pExplanation = 0,
- const ::rtl::OUString* pRuleId = 0 ) :
+ const ::rtl::OUString* pRuleId = 0,
+ const ::rtl::OUString* pExplanationURL = 0 ) :
bIsGrammarError( bGrammar ),
sErrorText( rText ),
+ sDialogTitle( ),
+ sExplanation( ),
+ sExplanationURL( ),
aLocale( rLocale ),
xGrammarChecker( rxGrammarChecker ),
sServiceName( rServiceName ),
@@ -76,6 +81,8 @@ struct SpellErrorDescription
sDialogTitle = *pDialogTitle;
if( pExplanation )
sExplanation = *pExplanation;
+ if( pExplanationURL )
+ sExplanationURL = *pExplanationURL;
if( pRuleId )
sRuleId = *pRuleId;
};
@@ -91,6 +98,7 @@ struct SpellErrorDescription
xGrammarChecker == rDesc.xGrammarChecker &&
sDialogTitle.equals( rDesc.sDialogTitle ) &&
sExplanation.equals( rDesc.sExplanation ) &&
+ sExplanationURL.equals( rDesc.sExplanationURL ) &&
sRuleId == rDesc.sRuleId;
}
};
diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx
index 389cee6a7887..9990e4c28e7c 100644
--- a/cui/source/dialogs/SpellDialog.cxx
+++ b/cui/source/dialogs/SpellDialog.cxx
@@ -51,6 +51,8 @@
#include <com/sun/star/lang/XServiceDisplayName.hpp>
#include <com/sun/star/linguistic2/SpellFailure.hpp>
#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/system/SystemShellExecuteFlags.hpp>
+#include <com/sun/star/system/XSystemShellExecute.hpp>
#include <sfx2/app.hxx>
#include <vcl/help.hxx>
#include <vcl/graph.hxx>
@@ -68,6 +70,8 @@
#include <svx/svxerr.hxx>
#include "treeopt.hxx"
#include <svtools/langtab.hxx>
+#include <comphelper/anytostring.hxx>
+#include <cppuhelper/exc_hlp.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -189,6 +193,26 @@ sal_uInt16 SpellUndoAction_Impl::GetId()const
return m_nId;
}
+HelpFixedText::HelpFixedText( Window* pParent, const ResId& rResId ):
+ FixedText( pParent, rResId )
+{
+}
+
+void HelpFixedText::Paint( const Rectangle& rRect )
+{
+ Rectangle aTextRect( rRect.Left() + 6, rRect.Top(), rRect.Right() - 6, rRect.Bottom() );
+ DrawText( aTextRect, GetText(), TEXT_DRAW_WORDBREAK | TEXT_DRAW_MULTILINE );
+}
+
+long HelpFixedText::GetActualHeight( )
+{
+ Rectangle rRect( GetPosPixel( ), GetSizePixel() );
+ Rectangle aTextRect( rRect.Left() + 6, rRect.Top(), rRect.Right() - 6, rRect.Bottom() );
+ Rectangle aBounds = GetTextRect( aTextRect, GetText(), TEXT_DRAW_WORDBREAK | TEXT_DRAW_MULTILINE );
+
+ return aBounds.getHeight();
+}
+
// class SvxSpellCheckDialog ---------------------------------------------
SpellDialog::SpellDialog(
@@ -200,9 +224,10 @@ SpellDialog::SpellDialog(
pParent,
CUI_RES(RID_SVXDLG_SPELLCHECK)),
- aVendorImageFI ( this , CUI_RES( IMG_VENDOR ) ),
aLanguageFT ( this, CUI_RES( FT_LANGUAGE ) ),
aLanguageLB ( this, CUI_RES( LB_LANGUAGE ) ),
+ aExplainFT ( this, CUI_RES( FT_EXPLAIN ) ),
+ aExplainLink ( this, CUI_RES( LINK_EXPLAIN ) ),
aNotInDictFT ( this, CUI_RES( FT_NOTINDICT ) ),
aSentenceED ( this, CUI_RES( ED_NEWWORD ) ),
aSuggestionFT ( this, CUI_RES( FT_SUGGESTION ) ),
@@ -215,7 +240,6 @@ SpellDialog::SpellDialog(
aChangePB ( this, CUI_RES( PB_CHANGE ) ),
aChangeAllPB ( this, CUI_RES( PB_CHANGEALL ) ),
- aExplainPB ( this, CUI_RES( PB_EXPLAIN) ),
aAutoCorrPB ( this, CUI_RES( PB_AUTOCORR ) ),
aCheckGrammarCB ( this, CUI_RES( CB_CHECK_GRAMMAR ) ),
@@ -226,8 +250,6 @@ SpellDialog::SpellDialog(
aClosePB ( this, CUI_RES( PB_CLOSE ) ),
aBackgroundGB ( this, CUI_RES( GB_BACKGROUND ) ),
- aVendorImage ( CUI_RES( IMG_DEFAULT_VENDOR ) ),
-
aResumeST ( CUI_RES(ST_RESUME )),
aIgnoreOnceST ( aIgnorePB.GetText()),
aNoSuggestionsST( CUI_RES(ST_NOSUGGESTIONS)),
@@ -244,6 +266,12 @@ SpellDialog::SpellDialog(
xSpell = LinguMgr::GetSpellChecker();
pImpl = new SpellDialog_Impl;
+ const StyleSettings& rSettings = GetSettings().GetStyleSettings();
+ Color aCol = rSettings.GetHelpColor();
+ Wallpaper aWall( aCol );
+ aExplainLink.SetBackground( aWall );
+ aExplainFT.SetBackground( aWall );
+
//HelpIds
aClosePB. SetHelpId(HID_SPLDLG_BUTTON_CLOSE );
aIgnorePB. SetHelpId(HID_SPLDLG_BUTTON_IGNORE );
@@ -251,7 +279,7 @@ SpellDialog::SpellDialog(
aIgnoreRulePB. SetHelpId(HID_SPLDLG_BUTTON_IGNORERULE);
aChangePB. SetHelpId(HID_SPLDLG_BUTTON_CHANGE );
aChangeAllPB. SetHelpId(HID_SPLDLG_BUTTON_CHANGEALL);
- aExplainPB. SetHelpId(HID_SPLDLG_BUTTON_EXPLAIN );
+ aExplainLink. SetHelpId(HID_SPLDLG_BUTTON_EXPLAIN );
Init_Impl();
// disable controls if service is missing
@@ -300,6 +328,8 @@ void SpellDialog::Init_Impl()
aAddToDictMB.SetSelectHdl(LINK ( this, SpellDialog, AddToDictionaryHdl ) );
aLanguageLB.SetSelectHdl(LINK( this, SpellDialog, LanguageSelectHdl ) );
+ aExplainLink.SetClickHdl( LINK( this, SpellDialog, HandleHyperlink ) );
+
// initialize language ListBox
aLanguageLB.SetLanguageList( LANG_LIST_SPELL_USED, sal_False, sal_False, sal_True );
@@ -324,7 +354,8 @@ void SpellDialog::UpdateBoxes_Impl()
nAltLanguage = SvxLocaleToLanguage( pSpellErrorDescription->aLocale );
aNewWords = pSpellErrorDescription->aSuggestions;
bIsGrammarError = pSpellErrorDescription->bIsGrammarError;
- aExplainPB.SetExplanation(pSpellErrorDescription->sExplanation );
+ aExplainLink.SetURL( pSpellErrorDescription->sExplanationURL );
+ aExplainFT.SetText( pSpellErrorDescription->sExplanation );
}
if( pSpellErrorDescription && pSpellErrorDescription->sDialogTitle.getLength() )
{
@@ -363,13 +394,12 @@ void SpellDialog::UpdateBoxes_Impl()
aChangeAllPB.Enable(nSize > 0);
bool bShowChangeAll = !bIsGrammarError;
aChangeAllPB.Show( bShowChangeAll );
- aExplainPB.Show( !bShowChangeAll );
+ aExplainFT.Show( !bShowChangeAll );
aLanguageLB.Enable( bShowChangeAll );
aIgnoreAllPB.Show( bShowChangeAll );
aAddToDictMB.Show( bShowChangeAll );
aIgnoreRulePB.Show( !bShowChangeAll );
aIgnoreRulePB.Enable(pSpellErrorDescription && pSpellErrorDescription->sRuleId.getLength());
- aExplainPB.Enable( aExplainPB.HasExplanation() );
aAutoCorrPB.Show( bShowChangeAll && rParent.HasAutoCorrection() );
}
@@ -463,23 +493,37 @@ IMPL_STATIC_LINK( SpellDialog, InitHdl, SpellDialog *, EMPTYARG )
}
else
{
- if( SvtLinguConfig().HasVendorImages( "SpellAndGrammarDialogImage" ) )
+ if( pThis->aExplainLink.GetURL().Len() == 0 )
+ {
+ pThis->aExplainLink.Hide();
+ Size aExplainSize = pThis->aExplainFT.GetSizePixel();
+ aExplainSize.Width() += pThis->aExplainLink.GetSizePixel().Width();
+ pThis->aExplainFT.SetSizePixel( aExplainSize );
+ }
+
+ sal_Int32 nExplainHeight = pThis->aExplainFT.GetActualHeight();
+ sal_Int32 nCurrentHeight = pThis->aExplainFT.GetSizePixel().Height();
+ if( pThis->aExplainFT.GetText().Len() == 0 )
+ {
+ nExplainHeight = 0;
+ pThis->aExplainFT.Hide();
+ pThis->aExplainLink.Hide();
+ }
+ else
+ {
+ Size aSize = pThis->aExplainFT.GetSizePixel();
+ aSize.Height() = nExplainHeight;
+ pThis->aExplainFT.SetSizePixel( aSize );
+
+ aSize = pThis->aExplainLink.GetSizePixel();
+ aSize.Height() = nExplainHeight;
+ pThis->aExplainLink.SetSizePixel( aSize );
+ }
+
+ sal_Int32 nDiff = - ( nCurrentHeight - nExplainHeight );
+ if ( nDiff != 0 )
{
- pThis->aVendorImageFI.Show();
- Size aVendorSize = pThis->aVendorImageFI.GetSizePixel();
- Size aImageSize = pThis->aVendorImageFI.GetImage().GetSizePixel();
- if( aImageSize.Height() )
- {
- aVendorSize.Height() = aImageSize.Height();
- if(aVendorSize.Width() < aImageSize.Width())
- aVendorSize.Width() = aImageSize.Width();
- pThis->aVendorImageFI.SetSizePixel( aVendorSize );
- }
- sal_Int32 nDiff = aVendorSize.Height();
- pThis->aVendorImageFI.SetSizePixel(aVendorSize);
Control* aControls[] = {
- &pThis->aLanguageFT,
- &pThis->aLanguageLB,
&pThis->aNotInDictFT,
&pThis->aSentenceED,
&pThis->aSuggestionFT,
@@ -490,7 +534,6 @@ IMPL_STATIC_LINK( SpellDialog, InitHdl, SpellDialog *, EMPTYARG )
&pThis->aAddToDictMB,
&pThis->aChangePB,
&pThis->aChangeAllPB,
- &pThis->aExplainPB,
&pThis->aAutoCorrPB,
&pThis->aCheckGrammarCB,
&pThis->aHelpPB,
@@ -884,17 +927,10 @@ void SpellDialog::SetTitle_Impl(LanguageType nLang)
const SpellErrorDescription* pSpellErrorDescription = aSentenceED.GetAlternatives();
if( pSpellErrorDescription && pSpellErrorDescription->sServiceName.getLength() )
{
- ::rtl::OUString sSuggestionImageUrl =
- SvtLinguConfig().GetSpellAndGrammarDialogImage( pSpellErrorDescription->sServiceName );
- aVendorImageFI.SetImage( lcl_GetImageFromPngUrl( sSuggestionImageUrl ) );
uno::Reference< lang::XServiceDisplayName > xDisplayName( pSpellErrorDescription->xGrammarChecker, uno::UNO_QUERY );
if( xDisplayName.is() )
sVendor = xDisplayName->getServiceDisplayName( pSpellErrorDescription->aLocale );
}
- else
- {
- aVendorImageFI.SetImage( aVendorImage );
- }
if( sVendor.Len() )
{
@@ -1193,6 +1229,19 @@ bool SpellDialog::GetNextSentence_Impl(bool bUseSavedSentence, bool bRecheck)
}
else if(aStart->bIsGrammarError )
{
+ beans::PropertyValues aProperties = aStart->aGrammarError.aProperties;
+ rtl::OUString sFullCommentURL;
+ sal_Int32 i = 0;
+ while ( !sFullCommentURL.isEmpty() && i < aProperties.getLength() )
+ {
+ if ( aProperties[i].Name.equalsAscii( "FullCommentURL" ) )
+ {
+ uno::Any aValue = aProperties[i].Value;
+ aValue >>= sFullCommentURL;
+ }
+ ++i;
+ }
+
uno::Reference< lang::XServiceInfo > xInfo( aStart->xGrammarChecker, uno::UNO_QUERY );
SpellErrorDescription aDesc( true,
aStart->sText,
@@ -1202,7 +1251,8 @@ bool SpellDialog::GetNextSentence_Impl(bool bUseSavedSentence, bool bRecheck)
xInfo->getImplementationName(),
&aStart->sDialogTitle,
&aStart->aGrammarError.aFullComment,
- &aStart->aGrammarError.aRuleIdentifier );
+ &aStart->aGrammarError.aRuleIdentifier,
+ &sFullCommentURL );
aSentenceED.SetAttrib( SpellErrorAttrib(aDesc), 0, (sal_uInt16) nStartPosition, (sal_uInt16) nEndPosition );
}
if(aStart->bIsField)
@@ -2056,7 +2106,7 @@ void SentenceEditWindow_Impl::SetUndoEditMode(bool bSet)
Control* aControls[] =
{
&pSpellDialog->aChangeAllPB,
- &pSpellDialog->aExplainPB,
+ &pSpellDialog->aExplainFT,
&pSpellDialog->aIgnoreAllPB,
&pSpellDialog->aIgnoreRulePB,
&pSpellDialog->aIgnorePB,
@@ -2087,20 +2137,31 @@ void SentenceEditWindow_Impl::SetUndoEditMode(bool bSet)
pSpellDialog->aChangePB.Enable();
}
-//-----------------------------------------------------------------------
-ExplainButton::~ExplainButton()
+IMPL_LINK( SpellDialog, HandleHyperlink, svt::FixedHyperlink*, pHyperlink )
{
-}
+ rtl::OUString sURL=pHyperlink->GetURL();
+ rtl::OUString sTitle=GetText();
-//-----------------------------------------------------------------------
-void ExplainButton::RequestHelp( const HelpEvent& )
-{
- Help::ShowBalloon( this, GetPosPixel(), m_sExplanation );
-}
+ if ( ! sURL.getLength() ) // Nothing to do, when the URL is empty
+ return 1;
+ try
+ {
+ uno::Reference< com::sun::star::system::XSystemShellExecute > xSystemShellExecute(
+ ::comphelper::getProcessServiceFactory()->createInstance(
+ DEFINE_CONST_UNICODE("com.sun.star.system.SystemShellExecute") ), uno::UNO_QUERY_THROW );
+ xSystemShellExecute->execute( sURL, rtl::OUString(), com::sun::star::system::SystemShellExecuteFlags::DEFAULTS );
+ }
+ catch ( uno::Exception& )
+ {
+ uno::Any exc( ::cppu::getCaughtException() );
+ rtl::OUString msg( ::comphelper::anyToString( exc ) );
+ const SolarMutexGuard guard;
+ ErrorBox aErrorBox( NULL, WB_OK, msg );
+ aErrorBox.SetText( sTitle );
+ aErrorBox.Execute();
+ }
-void ExplainButton::Click()
-{
- RequestHelp( HelpEvent() );
+ return 1;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/source/dialogs/SpellDialog.hrc b/cui/source/dialogs/SpellDialog.hrc
index d51ec1e82249..36b6c56d584d 100644
--- a/cui/source/dialogs/SpellDialog.hrc
+++ b/cui/source/dialogs/SpellDialog.hrc
@@ -48,7 +48,6 @@
#define ST_SPELLING_AND_GRAMMAR 52
#define ST_SPELLING_AND_GRAMMAR_VENDORNAME 53
#define CB_CHECK_GRAMMAR 54
-#define PB_EXPLAIN 55
-#define IMG_VENDOR 56
-#define IMG_DEFAULT_VENDOR 57
+#define LINK_EXPLAIN 55
+#define FT_EXPLAIN 56
#define PB_IGNORERULE 59
diff --git a/cui/source/dialogs/SpellDialog.src b/cui/source/dialogs/SpellDialog.src
index 88da8b74e7b7..4a5b2c9c127f 100644
--- a/cui/source/dialogs/SpellDialog.src
+++ b/cui/source/dialogs/SpellDialog.src
@@ -36,7 +36,7 @@
ModelessDialog RID_SVXDLG_SPELLCHECK
{
HelpId = HID_SPELLCHECK ;
- Size = MAP_APPFONT( 270, 188 );
+ Size = MAP_APPFONT( 270, 208 );
OutputSize = TRUE;
Closeable = TRUE ;
SVLook = TRUE;
@@ -45,13 +45,6 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
Moveable = TRUE ;
- FixedImage IMG_VENDOR
- {
- Pos = MAP_APPFONT ( 0, 0 ) ;
- Size = MAP_APPFONT ( 270, 21 ) ;
- Hide = TRUE;
- };
-
FixedText FT_LANGUAGE
{
Pos = MAP_APPFONT( 6, 8 );
@@ -67,9 +60,23 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
Sort = TRUE;
DropDown = TRUE;
};
+ FixedText FT_EXPLAIN
+ {
+ Pos = MAP_APPFONT( 1, 18 );
+ Size = MAP_APPFONT( 239, 20 );
+ VCenter = TRUE ;
+ };
+ FixedText LINK_EXPLAIN
+ {
+ Pos = MAP_APPFONT( 240, 18 );
+ Size = MAP_APPFONT( 29, 20 );
+ Text [ en-US ] = "More..." ;
+ Right = TRUE ;
+ VCenter = TRUE ;
+ };
FixedText FT_NOTINDICT
{
- Pos = MAP_APPFONT( 6, 26 );
+ Pos = MAP_APPFONT( 6, 46 );
Size = MAP_APPFONT( 120, 8 );
Text [ en-US ] = "~Not in dictionary" ;
};
@@ -77,7 +84,7 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
MultiLineEdit ED_NEWWORD
{
HelpID = "cui:MultiLineEdit:RID_SVXDLG_SPELLCHECK:ED_NEWWORD";
- Pos = MAP_APPFONT( 6, 37 );
+ Pos = MAP_APPFONT( 6, 57 );
Size = MAP_APPFONT( 197, 48 );
Border = TRUE;
VScroll = TRUE;
@@ -86,14 +93,14 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
FixedText FT_SUGGESTION
{
- Pos = MAP_APPFONT( 6, 88 );
+ Pos = MAP_APPFONT( 6, 108 );
Size = MAP_APPFONT( 120, 8 );
Text [ en-US ] = "~Suggestions" ;
};
ListBox LB_SUGGESTION
{
HelpID = "cui:ListBox:RID_SVXDLG_SPELLCHECK:LB_SUGGESTION";
- Pos = MAP_APPFONT( 6, 99 );
+ Pos = MAP_APPFONT( 6, 119 );
Size = MAP_APPFONT( 197, 48 );
Border = TRUE;
};
@@ -101,7 +108,7 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
CheckBox CB_CHECK_GRAMMAR
{
HelpID = "cui:CheckBox:RID_SVXDLG_SPELLCHECK:CB_CHECK_GRAMMAR";
- Pos = MAP_APPFONT( 6, 153 );
+ Pos = MAP_APPFONT( 6, 173 );
Size = MAP_APPFONT( 100, 10 );
Text [ en-US ] = "Check ~grammar" ;
Hide = TRUE;
@@ -110,7 +117,7 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
PushButton PB_IGNORE
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_IGNORE";
- Pos = MAP_APPFONT( 209, 37 );
+ Pos = MAP_APPFONT( 209, 57 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "~Ignore Once" ;
};
@@ -118,14 +125,14 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
PushButton PB_IGNOREALL
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_IGNOREALL";
- Pos = MAP_APPFONT( 209, 54 );
+ Pos = MAP_APPFONT( 209, 74 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "I~gnore All" ;
};
PushButton PB_IGNORERULE
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_IGNORERULE";
- Pos = MAP_APPFONT( 209, 54 );
+ Pos = MAP_APPFONT( 209, 74 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "I~gnore Rule" ;
Hide = TRUE;
@@ -133,7 +140,7 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
MenuButton MB_ADDTODICT
{
HelpID = "cui:MenuButton:RID_SVXDLG_SPELLCHECK:MB_ADDTODICT";
- Pos = MAP_APPFONT( 209, 71 );
+ Pos = MAP_APPFONT( 209, 91 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "~Add" ;
};
@@ -141,7 +148,7 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
PushButton PB_CHANGE
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_CHANGE";
- Pos = MAP_APPFONT( 209, 99 );
+ Pos = MAP_APPFONT( 209, 119 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "~Change" ;
DefButton = TRUE ;
@@ -150,48 +157,40 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
PushButton PB_CHANGEALL
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_CHANGEALL";
- Pos = MAP_APPFONT( 209, 117 );
+ Pos = MAP_APPFONT( 209, 137 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "Change A~ll" ;
};
- PushButton PB_EXPLAIN
- {
- HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_EXPLAIN";
- Pos = MAP_APPFONT( 209, 117 );
- Size = MAP_APPFONT( 55, 14 );
- Hide = TRUE;
- Text [ en-US ] = "~Explain..." ;
- };
PushButton PB_AUTOCORR
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_AUTOCORR";
- Pos = MAP_APPFONT( 209, 134 );
+ Pos = MAP_APPFONT( 209, 154 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "AutoCor~rect" ;
};
GroupBox GB_BACKGROUND
{
- Pos = MAP_APPFONT( 1, 21 );
+ Pos = MAP_APPFONT( 1, 41 );
Size = MAP_APPFONT( 268, 146 );
Hide=TRUE;
};
HelpButton PB_HELP
{
- Pos = MAP_APPFONT( 6, 170 );
+ Pos = MAP_APPFONT( 6, 191 );
Size = MAP_APPFONT( 55, 14 );
};
PushButton PB_OPTIONS
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_OPTIONS";
- Pos = MAP_APPFONT( 87, 170 );
+ Pos = MAP_APPFONT( 87, 191 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "O~ptions..." ;
};
PushButton PB_UNDO
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_UNDO";
- Pos = MAP_APPFONT( 148, 170 );
+ Pos = MAP_APPFONT( 148, 191 );
Size = MAP_APPFONT( 55, 14 );
Text [ en-US ] = "~Undo" ;
};
@@ -199,7 +198,7 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
PushButton PB_CLOSE
{
HelpID = "cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_CLOSE";
- Pos = MAP_APPFONT ( 209 , 170 ) ;
+ Pos = MAP_APPFONT ( 209 , 191 ) ;
Size = MAP_APPFONT ( 55 , 14 ) ;
TabStop = TRUE ;
Text [ en-US ] = "Cl~ose" ;
@@ -224,9 +223,5 @@ ModelessDialog RID_SVXDLG_SPELLCHECK
{
Text[ en-US ] = "Spelling and Grammar: $LANGUAGE ($LOCATION) [$VendorName]";
};
- Image IMG_DEFAULT_VENDOR
- {
- ImageBitmap = Bitmap { File = "vendor01.png"; };
- };
};
// ********************************************************************** EOF
diff --git a/cui/source/inc/SpellDialog.hxx b/cui/source/inc/SpellDialog.hxx
index 99d6af3d444b..71d502c322b2 100644
--- a/cui/source/inc/SpellDialog.hxx
+++ b/cui/source/inc/SpellDialog.hxx
@@ -48,6 +48,7 @@
#include <memory>
#include <svtools/svmedit.hxx>
#include <svl/lstner.hxx>
+#include <svtools/fixedhyper.hxx>
#include <svtools/xtextedt.hxx>
#include <editeng/SpellPortions.hxx>
@@ -129,23 +130,18 @@ public:
void ResetIgnoreErrorsAt() { m_aIgnoreErrorsAt.clear(); }
};
-
-// class SvxSpellDialog ---------------------------------------------
-class SpellDialogChildWindow;
-class ExplainButton : public PushButton
+class HelpFixedText : public FixedText
{
- String m_sExplanation;
-
- virtual void RequestHelp( const HelpEvent& rHEvt );
- virtual void Click();
-public:
- ExplainButton( Window* pParent, const ResId& rResId ) : PushButton( pParent, rResId ){}
- ~ExplainButton();
- void SetExplanation( const String& rText ) {m_sExplanation = rText;}
- bool HasExplanation() { return m_sExplanation.Len() > 0;}
+ public:
+ HelpFixedText( Window* pParent, const ResId& rResId );
+ virtual void Paint( const Rectangle& rRect );
+ long GetActualHeight( );
};
+// class SvxSpellDialog ---------------------------------------------
+class SpellDialogChildWindow;
+
class SpellDialog : public SfxModelessDialog
{
using Window::Invalidate;
@@ -153,11 +149,12 @@ class SpellDialog : public SfxModelessDialog
friend class SentenceEditWindow_Impl;
private:
- FixedImage aVendorImageFI;
-
FixedText aLanguageFT;
SvxLanguageBox aLanguageLB;
+ HelpFixedText aExplainFT;
+ svt::FixedHyperlink aExplainLink;
+
FixedText aNotInDictFT;
SentenceEditWindow_Impl aSentenceED;
@@ -171,7 +168,6 @@ private:
PushButton aChangePB;
PushButton aChangeAllPB;
- ExplainButton aExplainPB;
PushButton aAutoCorrPB;
CheckBox aCheckGrammarCB;
@@ -219,6 +215,7 @@ private:
DECL_LINK( AddToDictionaryHdl, MenuButton* );
DECL_LINK( LanguageSelectHdl, SvxLanguageBox* );
DECL_LINK( DialogUndoHdl, SpellUndoAction_Impl* );
+ DECL_LINK( HandleHyperlink, svt::FixedHyperlink * );
DECL_STATIC_LINK( SpellDialog, InitHdl, SpellDialog * );