| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sw.hxx" |
| |
| |
| #ifdef SW_DLLIMPLEMENTATION |
| #undef SW_DLLIMPLEMENTATION |
| #endif |
| |
| |
| #include <vcl/msgbox.hxx> |
| #include <svl/stritem.hxx> |
| #include <sfx2/viewfrm.hxx> |
| #include <modcfg.hxx> |
| #include <svx/htmlmode.hxx> |
| #include <viewopt.hxx> |
| #include "swmodule.hxx" |
| #include "cmdid.h" |
| #include "convert.hxx" |
| #include "tablemgr.hxx" |
| #include "wrtsh.hxx" |
| #include "view.hxx" |
| #include "tblafmt.hxx" |
| |
| #include "table.hrc" |
| #include "convert.hrc" |
| #include "swabstdlg.hxx" |
| |
| namespace swui |
| { |
| SwAbstractDialogFactory * GetFactory(); |
| } |
| |
| //keep the state of the buttons on runtime |
| static int nSaveButtonState = -1; // 0: tab, 1: semicolon, 2: paragraph, 3: other, -1: not yet used |
| static sal_Bool bIsKeepColumn = sal_True; |
| static sal_Unicode uOther = ','; |
| |
| void SwConvertTableDlg::GetValues( sal_Unicode& rDelim, |
| SwInsertTableOptions& rInsTblOpts, |
| SwTableAutoFmt *& prTAFmt ) |
| { |
| if( aTabBtn.IsChecked() ) |
| { |
| //0x0b mustn't be set when re-converting table into text |
| bIsKeepColumn = !aKeepColumn.IsVisible() || aKeepColumn.IsChecked(); |
| rDelim = bIsKeepColumn ? 0x09 : 0x0b; |
| nSaveButtonState = 0; |
| } |
| else if( aSemiBtn.IsChecked() ) |
| { |
| rDelim = ';'; |
| nSaveButtonState = 1; |
| } |
| else if( aOtherBtn.IsChecked() && aOtherEd.GetText().Len() ) |
| { |
| uOther = aOtherEd.GetText().GetChar( 0 ); |
| rDelim = uOther; |
| nSaveButtonState = 3; |
| } |
| else |
| { |
| nSaveButtonState = 2; |
| rDelim = cParaDelim; |
| if(aOtherBtn.IsChecked()) |
| { |
| nSaveButtonState = 3; |
| uOther = 0; |
| } |
| } |
| |
| |
| sal_uInt16 nInsMode = 0; |
| if (aBorderCB.IsChecked()) |
| nInsMode |= tabopts::DEFAULT_BORDER; |
| if (aHeaderCB.IsChecked()) |
| nInsMode |= tabopts::HEADLINE; |
| if (aRepeatHeaderCB.IsEnabled() && aRepeatHeaderCB.IsChecked()) |
| rInsTblOpts.mnRowsToRepeat = sal_uInt16( aRepeatHeaderNF.GetValue() ); |
| else |
| rInsTblOpts.mnRowsToRepeat = 0; |
| if (!aDontSplitCB.IsChecked()) |
| nInsMode |= tabopts::SPLIT_LAYOUT; |
| |
| if( pTAutoFmt ) |
| prTAFmt = new SwTableAutoFmt( *pTAutoFmt ); |
| |
| rInsTblOpts.mnInsMode = nInsMode; |
| } |
| |
| |
| SwConvertTableDlg::SwConvertTableDlg( SwView& rView, bool bToTable ) |
| |
| : SfxModalDialog( &rView.GetViewFrame()->GetWindow(), SW_RES(DLG_CONV_TEXT_TABLE)), |
| #ifdef MSC |
| #pragma warning (disable : 4355) |
| #endif |
| aTabBtn (this, SW_RES(CB_TAB)), |
| aSemiBtn (this, SW_RES(CB_SEMI)), |
| aParaBtn (this, SW_RES(CB_PARA)), |
| aOtherBtn (this, SW_RES(RB_OTHER)), |
| aOtherEd (this, SW_RES(ED_OTHER)), |
| aKeepColumn (this, SW_RES(CB_KEEPCOLUMN)), |
| aDelimFL (this, SW_RES(FL_DELIM)), |
| |
| aHeaderCB (this, SW_RES(CB_HEADER)), |
| aRepeatHeaderCB (this, SW_RES(CB_REPEAT_HEADER)), |
| |
| aRepeatHeaderFT (this, SW_RES(FT_REPEAT_HEADER)), |
| aRepeatHeaderBeforeFT (this), |
| aRepeatHeaderNF (this, SW_RES(NF_REPEAT_HEADER)), |
| aRepeatHeaderAfterFT (this), |
| aRepeatHeaderCombo (this, SW_RES(WIN_REPEAT_HEADER), aRepeatHeaderNF, aRepeatHeaderBeforeFT, aRepeatHeaderAfterFT), |
| |
| aOptionsFL (this, SW_RES(FL_OPTIONS)), |
| aDontSplitCB (this, SW_RES(CB_DONT_SPLIT)), |
| aBorderCB (this, SW_RES(CB_BORDER)), |
| aAutoFmtBtn(this,SW_RES(BT_AUTOFORMAT)), |
| |
| aOkBtn(this,SW_RES(BT_OK)), |
| aCancelBtn(this,SW_RES(BT_CANCEL)), |
| aHelpBtn(this, SW_RES(BT_HELP)), |
| #ifdef MSC |
| #pragma warning (default : 4355) |
| #endif |
| sConvertTextTable(SW_RES(STR_CONVERT_TEXT_TABLE)), |
| pTAutoFmt( 0 ), |
| pShell( &rView.GetWrtShell() ) |
| { |
| aOtherEd.SetAccessibleName(String(SW_RES(STR_SYMBOL))); |
| aOtherEd.SetAccessibleRelationLabeledBy(&aOtherBtn); |
| FreeResource(); |
| if(nSaveButtonState > -1) |
| { |
| switch (nSaveButtonState) |
| { |
| case 0: |
| aTabBtn.Check(); |
| aKeepColumn.Check(bIsKeepColumn); |
| break; |
| case 1: aSemiBtn.Check();break; |
| case 2: aParaBtn.Check();break; |
| case 3: |
| aOtherBtn.Check(); |
| if(uOther) |
| aOtherEd.SetText(uOther); |
| break; |
| } |
| |
| } |
| if( bToTable ) |
| { |
| SetText( sConvertTextTable ); |
| aAutoFmtBtn.SetClickHdl(LINK(this, SwConvertTableDlg, AutoFmtHdl)); |
| aAutoFmtBtn.Show(); |
| aKeepColumn.Show(); |
| aKeepColumn.Enable( aTabBtn.IsChecked() ); |
| aRepeatHeaderCombo.Arrange( aRepeatHeaderFT ); |
| } |
| else |
| { |
| //Einfuege-Optionen verstecken |
| aHeaderCB .Show(sal_False); |
| aRepeatHeaderCB .Show(sal_False); |
| aDontSplitCB .Show(sal_False); |
| aBorderCB .Show(sal_False); |
| aOptionsFL .Show(sal_False); |
| aRepeatHeaderCombo.Show(sal_False); |
| |
| //Groesse anpassen |
| Size aSize(GetSizePixel()); |
| aSize.Height() = 8 + aHelpBtn.GetSizePixel().Height() + aHelpBtn.GetPosPixel().Y(); |
| SetOutputSizePixel(aSize); |
| } |
| aKeepColumn.SaveValue(); |
| |
| Link aLk( LINK(this, SwConvertTableDlg, BtnHdl) ); |
| aTabBtn.SetClickHdl( aLk ); |
| aSemiBtn.SetClickHdl( aLk ); |
| aParaBtn.SetClickHdl( aLk ); |
| aOtherBtn.SetClickHdl(aLk ); |
| aOtherEd.Enable( aOtherBtn.IsChecked() ); |
| |
| const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig(); |
| |
| sal_Bool bHTMLMode = 0 != (::GetHtmlMode(rView.GetDocShell())&HTMLMODE_ON); |
| |
| SwInsertTableOptions aInsOpts = pModOpt->GetInsTblFlags(bHTMLMode); |
| sal_uInt16 nInsTblFlags = aInsOpts.mnInsMode; |
| |
| aHeaderCB.Check( 0 != (nInsTblFlags & tabopts::HEADLINE) ); |
| aRepeatHeaderCB.Check(aInsOpts.mnRowsToRepeat > 0); |
| aDontSplitCB.Check( 0 == (nInsTblFlags & tabopts::SPLIT_LAYOUT)); |
| aBorderCB.Check( 0!= (nInsTblFlags & tabopts::DEFAULT_BORDER) ); |
| |
| aHeaderCB.SetClickHdl(LINK(this, SwConvertTableDlg, CheckBoxHdl)); |
| aRepeatHeaderCB.SetClickHdl(LINK(this, SwConvertTableDlg, ReapeatHeaderCheckBoxHdl)); |
| ReapeatHeaderCheckBoxHdl(); |
| CheckBoxHdl(); |
| } |
| |
| SwConvertTableDlg:: ~SwConvertTableDlg() |
| { |
| delete pTAutoFmt; |
| } |
| |
| IMPL_LINK( SwConvertTableDlg, AutoFmtHdl, PushButton*, pButton ) |
| { |
| SwAbstractDialogFactory* pFact = swui::GetFactory(); |
| DBG_ASSERT(pFact, "SwAbstractDialogFactory fail!"); |
| |
| AbstractSwAutoFormatDlg* pDlg = pFact->CreateSwAutoFormatDlg(pButton, pShell, DLG_AUTOFMT_TABLE, sal_False, pTAutoFmt); |
| DBG_ASSERT(pDlg, "Dialogdiet fail!"); |
| if( RET_OK == pDlg->Execute()) |
| pDlg->FillAutoFmtOfIndex( pTAutoFmt ); |
| delete pDlg; |
| return 0; |
| } |
| |
| IMPL_LINK( SwConvertTableDlg, BtnHdl, Button*, pButton ) |
| { |
| if( pButton == &aTabBtn ) |
| aKeepColumn.SetState( aKeepColumn.GetSavedValue() ); |
| else |
| { |
| if( aKeepColumn.IsEnabled() ) |
| aKeepColumn.SaveValue(); |
| aKeepColumn.Check( sal_True ); |
| } |
| aKeepColumn.Enable( aTabBtn.IsChecked() ); |
| aOtherEd.Enable( aOtherBtn.IsChecked() ); |
| return 0; |
| } |
| |
| /*********************************************************************/ |
| /* */ |
| /*********************************************************************/ |
| |
| IMPL_LINK(SwConvertTableDlg, CheckBoxHdl, CheckBox*, EMPTYARG) |
| { |
| aRepeatHeaderCB.Enable(aHeaderCB.IsChecked()); |
| ReapeatHeaderCheckBoxHdl(); |
| |
| return 0; |
| } |
| |
| IMPL_LINK(SwConvertTableDlg, ReapeatHeaderCheckBoxHdl, void*, EMPTYARG) |
| { |
| sal_Bool bEnable = aHeaderCB.IsChecked() && aRepeatHeaderCB.IsChecked(); |
| aRepeatHeaderBeforeFT.Enable(bEnable); |
| aRepeatHeaderAfterFT.Enable(bEnable); |
| aRepeatHeaderNF.Enable(bEnable); |
| |
| return 0; |
| } |