summaryrefslogtreecommitdiff
path: root/sw/source/ui/misc/srtdlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/misc/srtdlg.cxx')
-rw-r--r--sw/source/ui/misc/srtdlg.cxx459
1 files changed, 459 insertions, 0 deletions
diff --git a/sw/source/ui/misc/srtdlg.cxx b/sw/source/ui/misc/srtdlg.cxx
new file mode 100644
index 000000000000..7c5318fccd06
--- /dev/null
+++ b/sw/source/ui/misc/srtdlg.cxx
@@ -0,0 +1,459 @@
+/*************************************************************************
+ *
+ * $RCSfile: srtdlg.cxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:14:45 $
+ *
+ * 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): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifdef PRECOMPILED
+#include "ui_pch.hxx"
+#endif
+
+#pragma hdrstop
+
+#ifndef _MSGBOX_HXX //autogen
+#include <vcl/msgbox.hxx>
+#endif
+#ifndef _SFXINTITEM_HXX //autogen
+#include <svtools/intitem.hxx>
+#endif
+#ifndef _SFXENUMITEM_HXX //autogen
+#include <svtools/eitem.hxx>
+#endif
+#ifndef _SFXDISPATCH_HXX //autogen
+#include <sfx2/dispatch.hxx>
+#endif
+#ifndef _SVX_SVXIDS_HRC //autogen
+#include <svx/svxids.hrc>
+#endif
+#ifndef _SWWAIT_HXX
+#include <swwait.hxx>
+#endif
+#include "view.hxx"
+#include "cmdid.h"
+#include "wrtsh.hxx"
+#include "srtdlg.hxx"
+#include "sortopt.hxx"
+#include "misc.hrc"
+#include "srtdlg.hrc"
+#include "swtable.hxx"
+#include "node.hxx"
+#include "tblsel.hxx"
+
+static BOOL bCheck1 = TRUE;
+static BOOL bCheck2 = FALSE;
+static BOOL bCheck3 = FALSE;
+
+static USHORT nCol1 = 1;
+static USHORT nCol2 = 1;
+static USHORT nCol3 = 1;
+
+static USHORT nType1 = 0;
+static USHORT nType2 = 0;
+static USHORT nType3 = 0;
+
+static BOOL bAsc1 = TRUE;
+static BOOL bAsc2 = TRUE;
+static BOOL bAsc3 = TRUE;
+static BOOL bCol = FALSE;
+static char nDeli = '\t';
+
+
+
+/*--------------------------------------------------------------------
+ Beschreibung: Fuer Tabellenselektion sel. Zeilen und Spalten
+ feststellen
+ --------------------------------------------------------------------*/
+
+
+BOOL lcl_GetSelTbl( SwWrtShell &rSh,USHORT& rX, USHORT& rY )
+{
+ const SwTableNode* pTblNd = rSh.IsCrsrInTbl();
+ if( !pTblNd )
+ return FALSE;
+
+ _FndBox aFndBox( 0, 0 );
+
+ // suche alle Boxen / Lines
+ {
+ SwSelBoxes aSelBoxes;
+ ::GetTblSel( rSh, aSelBoxes );
+ _FndPara aPara( aSelBoxes, &aFndBox );
+ const SwTable& rTbl = pTblNd->GetTable();
+ ((SwTableLines&)rTbl.GetTabLines()).ForEach( &_FndLineCopyCol, &aPara );
+ }
+ rX = aFndBox.GetLines().Count();
+ if( !rX )
+ return FALSE;
+
+ rY = aFndBox.GetLines()[0]->GetBoxes().Count();
+ return TRUE;
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: Init-Liste
+ --------------------------------------------------------------------*/
+
+
+
+SwSortDlg::SwSortDlg(Window* pParent, SwWrtShell &rShell) :
+
+ SvxStandardDialog(pParent, SW_RES(DLG_SORTING)),
+ rSh(rShell),
+ aOkBtn(this, SW_RES(BT_OK )),
+ aCancelBtn(this, SW_RES(BT_CANCEL)),
+ aHelpBtn(this, SW_RES(BT_HELP )),
+ aColLbl(this, SW_RES(FT_COL )),
+ aTypLbl(this, SW_RES(FT_KEYTYP)),
+ aDirLbl(this, SW_RES(FT_DIR )),
+ aKeyCB1(this, SW_RES(CB_KEY1 )),
+ aColEdt1(this, SW_RES(ED_KEY1 )),
+ aTypDLB1(this, SW_RES(DLB_KEY1 )),
+ aSortUpRB(this, SW_RES(RB_UP )),
+ aSortDnRB(this, SW_RES(RB_DN )),
+ aKeyCB2(this, SW_RES(CB_KEY2 )),
+ aColEdt2(this, SW_RES(ED_KEY2 )),
+ aTypDLB2(this, SW_RES(DLB_KEY2 )),
+ aSortUp2RB(this, SW_RES(RB_UP2 )),
+ aSortDn2RB(this, SW_RES(RB_DN2 )),
+ aKeyCB3(this, SW_RES(CB_KEY3 )),
+ aColEdt3(this, SW_RES(ED_KEY3 )),
+ aTypDLB3(this, SW_RES(DLB_KEY3 )),
+ aSortUp3RB(this, SW_RES(RB_UP3 )),
+ aSortDn3RB(this, SW_RES(RB_DN3 )),
+ aSortGrp(this, SW_RES(GB_SORT )),
+ aColumnRB(this, SW_RES(RB_COL )),
+ aRowRB(this, SW_RES(RB_ROW )),
+ aDirGrp(this, SW_RES(GB_DIR )),
+ aDelimTabRB(this, SW_RES(RB_TAB )),
+ aDelimFreeRB(this, SW_RES(RB_TABCH )),
+ aDelimEdt(this, SW_RES(ED_TABCH )),
+ aDelimGrp(this, SW_RES(GB_DELIM )),
+ aColTxt(SW_RES(STR_COL)),
+ aRowTxt(SW_RES(STR_ROW)),
+ nX( 99 ),
+ nY( 99 )
+{
+ aDelimEdt.SetMaxTextLen( 1 );
+ if(rSh.GetSelectionType() &
+ (SwWrtShell::SEL_TBL|SwWrtShell::SEL_TBL_CELLS) )
+ {
+ aColumnRB.Check(bCol);
+ aColLbl.SetText(bCol ? aRowTxt : aColTxt);
+ aRowRB.Check(!bCol);
+ aDelimTabRB.Enable(FALSE);
+ aDelimFreeRB.Enable(FALSE);
+ aDelimEdt.Enable(FALSE);
+ }
+ else
+ {
+ aColumnRB.Enable(FALSE);
+ aRowRB.Check(TRUE);
+ aColLbl.SetText(aColTxt);
+ }
+
+ // Initialisieren
+ Link aLk = LINK(this,SwSortDlg, CheckHdl);
+ aKeyCB1.SetClickHdl( aLk );
+ aKeyCB2.SetClickHdl( aLk );
+ aKeyCB3.SetClickHdl( aLk );
+ aColumnRB.SetClickHdl( aLk );
+ aRowRB.SetClickHdl( aLk );
+
+ aLk = LINK(this,SwSortDlg, DelimHdl);
+ aDelimFreeRB.SetClickHdl(aLk);
+ aDelimTabRB.SetClickHdl(aLk);
+
+ aKeyCB1.Check(bCheck1);
+ aKeyCB2.Check(bCheck2);
+ aKeyCB3.Check(bCheck3);
+
+ aColEdt1.SetValue(nCol1);
+ aColEdt2.SetValue(nCol2);
+ aColEdt3.SetValue(nCol3);
+
+ aTypDLB1.SelectEntryPos(nType1);
+ aTypDLB2.SelectEntryPos(nType2);
+ aTypDLB3.SelectEntryPos(nType3);
+
+ aSortUpRB.Check(bAsc1);
+ aSortDnRB.Check(!bAsc1);
+ aSortUp2RB.Check(bAsc2);
+ aSortDn2RB.Check(!bAsc2);
+ aSortUp3RB.Check(bAsc3);
+ aSortDn3RB.Check(!bAsc3);
+ aDelimTabRB.Check(nDeli == '\t');
+
+ if(!aDelimTabRB.IsChecked())
+ {
+ aDelimEdt.SetText(nDeli);
+ aDelimFreeRB.Check(TRUE);
+ DelimHdl(&aDelimFreeRB);
+ }
+ else
+ DelimHdl(&aDelimTabRB);
+
+ FreeResource();
+ if( ::lcl_GetSelTbl( rSh, nX, nY) )
+ {
+ USHORT nMax = aRowRB.IsChecked()? nY : nX;
+ aColEdt1.SetMax(nMax);
+ aColEdt2.SetMax(nMax);
+ aColEdt3.SetMax(nMax);
+ }
+}
+
+
+
+
+SwSortDlg::~SwSortDlg()
+{
+}
+
+/*--------------------------------------------------------------------
+ Beschreibung: An die Core weiterreichen
+ --------------------------------------------------------------------*/
+void SwSortDlg::Apply()
+{
+ SwSortOptions aOptions;
+ if(aKeyCB1.IsChecked())
+ {
+ USHORT nSort = aSortUpRB.IsChecked() ?
+ (USHORT)SRT_ASCENDING : (USHORT)SRT_DESCENDING ;
+ SwSortKey *pKey = new SwSortKey(aColEdt1.GetValue(),
+ (SwSortKeyType)aTypDLB1.GetSelectEntryPos(),
+ (SwSortOrder)nSort);
+ aOptions.aKeys.C40_INSERT(SwSortKey, pKey, aOptions.aKeys.Count());
+ }
+
+ if(aKeyCB2.IsChecked())
+ {
+ USHORT nSort = aSortUp2RB.IsChecked() ?
+ (USHORT)SRT_ASCENDING : (USHORT)SRT_DESCENDING ;
+ SwSortKey *pKey = new SwSortKey(aColEdt2.GetValue(),
+ (SwSortKeyType)aTypDLB2.GetSelectEntryPos(),
+ (SwSortOrder)nSort);
+ aOptions.aKeys.C40_INSERT(SwSortKey, pKey, aOptions.aKeys.Count());
+ }
+
+ if(aKeyCB3.IsChecked())
+ {
+ USHORT nSort = aSortUp3RB.IsChecked() ?
+ (USHORT)SRT_ASCENDING : (USHORT)SRT_DESCENDING ;
+ SwSortKey *pKey = new SwSortKey(aColEdt3.GetValue(),
+ (SwSortKeyType)aTypDLB3.GetSelectEntryPos(),
+ (SwSortOrder)nSort);
+ aOptions.aKeys.C40_INSERT(SwSortKey, pKey, aOptions.aKeys.Count());
+ }
+ aOptions.eDirection = aRowRB.IsChecked() ?
+ SRT_ROWS : SRT_COLUMNS;
+ sal_Unicode nDeli = '\t';
+ if(!aDelimTabRB.IsChecked())
+ {
+ String aTmp(aDelimEdt.GetText());
+ if( aTmp.Len() )
+ nDeli = aTmp.GetChar( 0 );
+ }
+ aOptions.nDeli = nDeli;
+ aOptions.bTable = rSh.IsTableMode();
+
+ SwWait aWait( *rSh.GetView().GetDocShell(), TRUE );
+ rSh.StartAllAction();
+ BOOL bRet = rSh.Sort(aOptions);
+ rSh.EndAllAction();
+ if(bRet)
+ InfoBox(this->GetParent(), SW_RES(MSG_SRTERR)).Execute();
+ else
+ rSh.SetModified();
+
+ // Alte Einstellung speichern
+ //
+ bCheck1 = aKeyCB1.IsChecked();
+ bCheck2 = aKeyCB2.IsChecked();
+ bCheck3 = aKeyCB3.IsChecked();
+
+ nCol1 = (USHORT)aColEdt1.GetValue();
+ nCol2 = (USHORT)aColEdt2.GetValue();
+ nCol3 = (USHORT)aColEdt3.GetValue();
+
+ nType1 = aTypDLB1.GetSelectEntryPos();
+ nType2 = aTypDLB2.GetSelectEntryPos();
+ nType3 = aTypDLB3.GetSelectEntryPos();
+
+ bAsc1 = aSortUpRB.IsChecked();
+ bAsc2 = aSortUp2RB.IsChecked();
+ bAsc3 = aSortUp3RB.IsChecked();
+ bCol = aColumnRB.IsChecked();
+}
+/* -----------------30.09.98 10:03-------------------
+ *
+ * --------------------------------------------------*/
+IMPL_LINK( SwSortDlg, DelimHdl, RadioButton*, pButton )
+{
+ aDelimEdt.Enable(pButton == &aDelimFreeRB && aDelimFreeRB.IsEnabled());
+ return 0;
+}
+
+
+IMPL_LINK( SwSortDlg, CheckHdl, CheckBox *, pCheck )
+{
+ if( pCheck == ( CheckBox* ) &aRowRB)
+ {
+ aColLbl.SetText(aColTxt);
+ aColEdt1.SetMax(nY);
+ aColEdt2.SetMax(nY);
+ aColEdt3.SetMax(nY);
+
+ }
+ else if( pCheck == ( CheckBox* ) &aColumnRB)
+ {
+ aColLbl.SetText(aRowTxt);
+ aColEdt1.SetMax(nX);
+ aColEdt2.SetMax(nX);
+ aColEdt3.SetMax(nX);
+ }
+ else if(!aKeyCB1.IsChecked() &&
+ !aKeyCB2.IsChecked() &&
+ !aKeyCB3.IsChecked())
+ pCheck->Check(TRUE);
+ return 0;
+}
+
+/*------------------------------------------------------------------------
+
+ $Log: not supported by cvs2svn $
+ Revision 1.58 2000/09/18 16:06:00 willem.vandorp
+ OpenOffice header added.
+
+ Revision 1.57 2000/05/26 07:21:31 os
+ old SW Basic API Slots removed
+
+ Revision 1.56 2000/02/11 14:56:48 hr
+ #70473# changes for unicode ( patched by automated patchtool )
+
+ Revision 1.55 1998/09/30 08:29:10 OS
+ #52654# Sortable und SortDescriptor eingebaut, auf- und absteigend fuer jeden Schluessel
+
+
+ Rev 1.54 30 Sep 1998 10:29:10 OS
+ #52654# Sortable und SortDescriptor eingebaut, auf- und absteigend fuer jeden Schluessel
+
+ Rev 1.53 07 Apr 1998 13:04:20 OM
+ #49223 Infobox nicht mit hidden Parent executen
+
+ Rev 1.52 24 Nov 1997 16:47:48 MA
+ includes
+
+ Rev 1.51 21 Nov 1997 13:50:44 OS
+ richtigen Schluesseltext setzen #45697#
+
+ Rev 1.50 03 Nov 1997 13:22:42 MA
+ precomp entfernt
+
+ Rev 1.49 25 Jul 1997 15:39:10 HJS
+ includes
+
+ Rev 1.48 11 Nov 1996 11:05:44 MA
+ ResMgr
+
+ Rev 1.47 24 Oct 1996 13:36:36 JP
+ String Umstellung: [] -> GetChar()
+
+ Rev 1.46 02 Oct 1996 18:29:32 MA
+ Umstellung Enable/Disable
+
+ Rev 1.45 11 Sep 1996 17:23:46 NF
+ add: svxids.hrc
+
+ Rev 1.44 28 Aug 1996 14:12:24 OS
+ includes
+
+ Rev 1.43 26 Jun 1996 15:25:54 OS
+ Aufruf von Dispatcher.Execute an 324 angepasst
+
+ Rev 1.42 25 Jun 1996 18:39:38 HJS
+ includes
+
+ Rev 1.41 07 Jun 1996 14:25:56 OS
+ SelectionType auf SEL_TBL* testen, nicht auf SEL_TXT
+
+ Rev 1.40 06 Feb 1996 15:21:14 JP
+ Link Umstellung 305
+
+ Rev 1.39 24 Nov 1995 16:58:46 OM
+ PCH->PRECOMPILED
+
+ Rev 1.38 13 Nov 1995 10:52:46 OM
+ Neues Seg
+
+ Rev 1.37 13 Nov 1995 10:51:34 OM
+ static entfernt
+
+ Rev 1.36 08 Nov 1995 13:31:48 JP
+ Umstellung zur 301: Change -> Set
+
+ Rev 1.35 24 Oct 1995 17:05:52 OS
+ Sorting recordable und dazu ueber Slot imlementiert
+
+ Rev 1.34 12 Sep 1995 17:30:20 OM
+ Helpbutton eingefuegt
+
+
+------------------------------------------------------------------------*/
+
+
+