<commit_before>/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
 *
 * 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.
 *
 ************************************************************************/
#ifndef _SWUI_CNTTAB_HXX
#define _SWUI_CNTTAB_HXX

#include <svx/stddlg.hxx>

#include <vcl/button.hxx>

#include <vcl/edit.hxx>

#include <vcl/fixed.hxx>

#include <vcl/field.hxx>
#include <vcl/lstbox.hxx>
#include <sfx2/tabdlg.hxx>

#include "tox.hxx"
#include <tools/list.hxx>
#include <toxmgr.hxx>
#include <svx/checklbx.hxx>
#include <tools/resary.hxx>
#include <svtools/svtreebx.hxx>
#include <vcl/menubtn.hxx>
#include <svx/langbox.hxx>
#include <cnttab.hxx>
#include <vector>

class SwWrtShell;
class SwTOXMgr;
namespace com{namespace sun{namespace star{
    namespace text{
        class XTextSection;
        class XDocumentIndex;
    }
}}}

struct SwIndexSections_Impl
{
    com::sun::star::uno::Reference< com::sun::star::text::XTextSection >    xContainerSection;
    com::sun::star::uno::Reference< com::sun::star::text::XDocumentIndex >    xDocumentIndex;
};

class SwOneExampleFrame;

struct SwIndexSections_Impl;

class SwMultiTOXTabDialog : public SfxTabDialog
{
    Window                  aExampleContainerWIN;
    Window                  aExampleWIN;
    CheckBox                aShowExampleCB;
    SwTOXMgr*               pMgr;
    SwWrtShell&             rSh;

    SwOneExampleFrame*      pExampleFrame;

    SwTOXDescription**      pDescArr; //
    SwForm**                pFormArr; //
    SwIndexSections_Impl**  pxIndexSectionsArr;

    SwTOXBase*              pParamTOXBase;

    CurTOXType              eCurrentTOXType;

    String                  sUserDefinedIndex;
    USHORT                  nTypeCount;
    USHORT                  nInitialTOXType;

    BOOL                    bEditTOX;
    BOOL                    bExampleCreated;
    BOOL                    bGlobalFlag;

    virtual short       Ok();
    SwTOXDescription*   CreateTOXDescFromTOXBase(const SwTOXBase*pCurTOX);

    DECL_LINK(CreateExample_Hdl, void* );
    DECL_LINK(ShowPreviewHdl, CheckBox*);

public:
    SwMultiTOXTabDialog(Window* pParent, const SfxItemSet& rSet,
                        SwWrtShell &rShell,
                        SwTOXBase* pCurTOX, USHORT nToxType = USHRT_MAX,
                        BOOL bGlobal = FALSE);
    ~SwMultiTOXTabDialog();

    virtual void        PageCreated( USHORT nId, SfxTabPage &rPage );

    SwForm*             GetForm(CurTOXType eType);

    CurTOXType          GetCurrentTOXType() const { return eCurrentTOXType;}
    void                SetCurrentTOXType(CurTOXType    eSet)
                                {
                                    eCurrentTOXType = eSet;
                                }

    void                UpdateExample();
    BOOL                IsTOXEditMode() const { return bEditTOX;}

    SwWrtShell&         GetWrtShell() {return rSh;}

    SwTOXDescription&   GetTOXDescription(CurTOXType eTOXTypes);
    void                CreateOrUpdateExample(
                            TOXTypes nTOXIndex, USHORT nPage = 0, USHORT nCurLevel = USHRT_MAX);

    static BOOL IsNoNum(SwWrtShell& rSh, const String& rName);
};

class IndexEntryRessource;
class IndexEntrySupplierWrapper;

class SwTOXSelectTabPage : public SfxTabPage
{
    FixedLine       aTypeTitleFL;
    FixedText       aTitleFT;
    Edit            aTitleED;
    FixedText       aTypeFT;
    ListBox         aTypeLB;
    CheckBox        aReadOnlyCB;

    FixedLine       aAreaFL;
    FixedText       aAreaFT;
    ListBox         aAreaLB;
    FixedText       aLevelFT;   //content, user
    NumericField    aLevelNF;   //content, user

    //content
    FixedLine       aCreateFromFL;  // content, user, illustration
    CheckBox        aFromHeadingsCB;
    CheckBox        aAddStylesCB;
    PushButton      aAddStylesPB;
    //user
    CheckBox        aFromTablesCB;
    CheckBox        aFromFramesCB;
    CheckBox        aFromGraphicsCB;
    CheckBox        aFromOLECB;
    CheckBox        aLevelFromChapterCB;

    //illustration + table
    RadioButton     aFromCaptionsRB;
    RadioButton     aFromObjectNamesRB;

    //illustration and tables
    FixedText       aCaptionSequenceFT;
    ListBox         aCaptionSequenceLB;
    FixedText       aDisplayTypeFT;
    ListBox         aDisplayTypeLB;

    //all but illustration and table
    CheckBox        aTOXMarksCB;

    //

    //index only
    CheckBox        aCollectSameCB;
    CheckBox        aUseFFCB;
    CheckBox        aUseDashCB;
    CheckBox        aCaseSensitiveCB;
    CheckBox        aInitialCapsCB;
    CheckBox        aKeyAsEntryCB;
    CheckBox        aFromFileCB;
    MenuButton      aAutoMarkPB;
    FixedLine       aIdxOptionsFL; // index only

    // object only
    SwOLENames      aFromNames;
    SvxCheckListBox aFromObjCLB;
    FixedLine       aFromObjFL;

    CheckBox        aSequenceCB;
    FixedText       aBracketFT;
    ListBox         aBracketLB;
    FixedLine       aAuthorityFormatFL;

    //all
    FixedLine       aSortOptionsFL;
    FixedText       aLanguageFT;
    SvxLanguageBox  aLanguageLB;
    FixedText       aSortAlgorithmFT;
    ListBox         aSortAlgorithmLB;

    IndexEntryRessource* pIndexRes;

    Point           aCBLeftPos1;
    Point           aCBLeftPos2;
    Point           aCBLeftPos3;

    String          aStyleArr[MAXLEVEL];
    String          sAutoMarkURL;
    String          sAutoMarkType;
    String          sAddStyleUser;
    String          sAddStyleContent;

    const IndexEntrySupplierWrapper* pIndexEntryWrapper;

    BOOL            bFirstCall;

    DECL_LINK(TOXTypeHdl,   ListBox* );
    DECL_LINK(TOXAreaHdl,   ListBox* );
    DECL_LINK(AddStylesHdl, PushButton* );
    DECL_LINK(MenuEnableHdl, Menu*);
    DECL_LINK(MenuExecuteHdl, Menu*);
    DECL_LINK(LanguageHdl, ListBox*);

    DECL_LINK(CheckBoxHdl,  CheckBox*   );
    DECL_LINK(RadioButtonHdl, RadioButton* );
    DECL_LINK(ModifyHdl, void*);

      void  ApplyTOXDescription();
    void    FillTOXDescription();

    using SfxTabPage::ActivatePage;
    using SfxTabPage::DeactivatePage;

public:
    SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrSet);
    ~SwTOXSelectTabPage();

    virtual BOOL        FillItemSet( SfxItemSet& );
    virtual void        Reset( const SfxItemSet& );

    virtual void        ActivatePage( const SfxItemSet& );
    virtual int         DeactivatePage( SfxItemSet* pSet = 0 );

    static SfxTabPage*  Create( Window* pParent,
                                const SfxItemSet& rAttrSet);

    void                SelectType(TOXTypes eSet);  //preset TOXType, GlobalDoc
    void                SetWrtShell(SwWrtShell& rSh);
};


DECLARE_LIST( TOXControlList, Control* )

class SwTOXEdit;
class SwTOXButton;
class SwTOXEntryTabPage;

class SwTokenWindow : public Window
{
    ImageButton     aLeftScrollWin;
    Window          aCtrlParentWin;
    ImageButton     aRightScrollWin;
    TOXControlList  aControlList;
    SwForm*         pForm;
    USHORT          nLevel;
    BOOL            bValid;
    String          aButtonTexts[TOKEN_END]; // Text of the buttons
    String          aButtonHelpTexts[TOKEN_END]; // QuickHelpText of the buttons
    String          sCharStyle;
    Link            aButtonSelectedHdl;
    Control*        pActiveCtrl;
    Link            aModifyHdl;

    SwTOXEntryTabPage*  m_pParent;

    DECL_LINK(EditResize, Edit*);
    DECL_LINK(NextItemHdl, SwTOXEdit* );
    DECL_LINK(TbxFocusHdl, SwTOXEdit* );
    DECL_LINK(NextItemBtnHdl, SwTOXButton* );
    DECL_LINK(TbxFocusBtnHdl, SwTOXButton* );
    DECL_LINK(ScrollHdl, ImageButton* );

    void    SetActiveControl(Control* pSet);

    Control*    InsertItem(const String& rText, const SwFormToken& aToken);
    void        AdjustPositions();
    void        AdjustScrolling();
    void        MoveControls(long nOffset);

public:
    SwTokenWindow(SwTOXEntryTabPage* pParent, const ResId& rResId);
    ~SwTokenWindow();

    void        SetForm(SwForm& rForm, USHORT nLevel);
    USHORT      GetLastLevel()const {return nLevel;};

    BOOL        IsValid() const {return bValid;}

    void        SetInvalid() {bValid = FALSE;}

    String      GetPattern() const;

    void        SetButtonSelectedHdl(const Link& rLink)
                { aButtonSelectedHdl = rLink;}

    void        SetModifyHdl(const Link& rLink){aModifyHdl = rLink;}

    Control*    GetActiveControl()
                    { return pActiveCtrl;}

    void        InsertAtSelection(const String& rText, const SwFormToken& aToken);
    void        RemoveControl(SwTOXButton* pDel, BOOL bInternalCall = FALSE);

    BOOL        Contains(FormTokenType) const;

    BOOL        DetermineLinkStart();

    //helper for pattern buttons and edits
    BOOL        CreateQuickHelp(Control* pCtrl,
                    const SwFormToken& rToken, const HelpEvent& );

    virtual void        Resize();
    virtual void        GetFocus();

private:
    size_t      currentControlList;
    size_t      GetControlListPos( Control* pItem );
    void        InsertControlList( Control* pItem, size_t Index );
    Control*    FirstControlList();
    Control*    NextControlList();
    Control*    RemoveControlList( Control* pItem );
};

class SwTOXEntryTabPage;

class SwIdxTreeListBox : public SvTreeListBox
{
    SwTOXEntryTabPage* pParent;<commit_msg>Additional cleanup of my git mistake.<commit_after>/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
 *
 * 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.
 *
 ************************************************************************/
#ifndef _SWUI_CNTTAB_HXX
#define _SWUI_CNTTAB_HXX

#include <svx/stddlg.hxx>

#include <vcl/button.hxx>

#include <vcl/edit.hxx>

#include <vcl/fixed.hxx>

#include <vcl/field.hxx>
#include <vcl/lstbox.hxx>
#include <sfx2/tabdlg.hxx>

#include "tox.hxx"
#include <tools/list.hxx>
#include <toxmgr.hxx>
#include <svx/checklbx.hxx>
#include <tools/resary.hxx>
#include <svtools/svtreebx.hxx>
#include <vcl/menubtn.hxx>
#include <svx/langbox.hxx>
#include <cnttab.hxx>
#include <vector>

class SwWrtShell;
class SwTOXMgr;
namespace com{namespace sun{namespace star{
    namespace text{
        class XTextSection;
        class XDocumentIndex;
    }
}}}

struct SwIndexSections_Impl
{
    com::sun::star::uno::Reference< com::sun::star::text::XTextSection >    xContainerSection;
    com::sun::star::uno::Reference< com::sun::star::text::XDocumentIndex >    xDocumentIndex;
};

class SwOneExampleFrame;

struct SwIndexSections_Impl;

class SwMultiTOXTabDialog : public SfxTabDialog
{
    Window                  aExampleContainerWIN;
    Window                  aExampleWIN;
    CheckBox                aShowExampleCB;
    SwTOXMgr*               pMgr;
    SwWrtShell&             rSh;

    SwOneExampleFrame*      pExampleFrame;

    SwTOXDescription**      pDescArr; //
    SwForm**                pFormArr; //
    SwIndexSections_Impl**  pxIndexSectionsArr;

    SwTOXBase*              pParamTOXBase;

    CurTOXType              eCurrentTOXType;

    String                  sUserDefinedIndex;
    USHORT                  nTypeCount;
    USHORT                  nInitialTOXType;

    BOOL                    bEditTOX;
    BOOL                    bExampleCreated;
    BOOL                    bGlobalFlag;

    virtual short       Ok();
    SwTOXDescription*   CreateTOXDescFromTOXBase(const SwTOXBase*pCurTOX);

    DECL_LINK(CreateExample_Hdl, void* );
    DECL_LINK(ShowPreviewHdl, CheckBox*);

public:
    SwMultiTOXTabDialog(Window* pParent, const SfxItemSet& rSet,
                        SwWrtShell &rShell,
                        SwTOXBase* pCurTOX, USHORT nToxType = USHRT_MAX,
                        BOOL bGlobal = FALSE);
    ~SwMultiTOXTabDialog();

    virtual void        PageCreated( USHORT nId, SfxTabPage &rPage );

    SwForm*             GetForm(CurTOXType eType);

    CurTOXType          GetCurrentTOXType() const { return eCurrentTOXType;}
    void                SetCurrentTOXType(CurTOXType    eSet)
                                {
                                    eCurrentTOXType = eSet;
                                }

    void                UpdateExample();
    BOOL                IsTOXEditMode() const { return bEditTOX;}

    SwWrtShell&         GetWrtShell() {return rSh;}

    SwTOXDescription&   GetTOXDescription(CurTOXType eTOXTypes);
    void                CreateOrUpdateExample(
                            TOXTypes nTOXIndex, USHORT nPage = 0, USHORT nCurLevel = USHRT_MAX);

    static BOOL IsNoNum(SwWrtShell& rSh, const String& rName);
};

class IndexEntryRessource;
class IndexEntrySupplierWrapper;

class SwTOXSelectTabPage : public SfxTabPage
{
    FixedLine       aTypeTitleFL;
    FixedText       aTitleFT;
    Edit            aTitleED;
    FixedText       aTypeFT;
    ListBox         aTypeLB;
    CheckBox        aReadOnlyCB;

    FixedLine       aAreaFL;
    FixedText       aAreaFT;
    ListBox         aAreaLB;
    FixedText       aLevelFT;   //content, user
    NumericField    aLevelNF;   //content, user

    //content
    FixedLine       aCreateFromFL;  // content, user, illustration
    CheckBox        aFromHeadingsCB;
    CheckBox        aAddStylesCB;
    PushButton      aAddStylesPB;
    //user
    CheckBox        aFromTablesCB;
    CheckBox        aFromFramesCB;
    CheckBox        aFromGraphicsCB;
    CheckBox        aFromOLECB;
    CheckBox        aLevelFromChapterCB;

    //illustration + table
    RadioButton     aFromCaptionsRB;
    RadioButton     aFromObjectNamesRB;

    //illustration and tables
    FixedText       aCaptionSequenceFT;
    ListBox         aCaptionSequenceLB;
    FixedText       aDisplayTypeFT;
    ListBox         aDisplayTypeLB;

    //all but illustration and table
    CheckBox        aTOXMarksCB;

    //

    //index only
    CheckBox        aCollectSameCB;
    CheckBox        aUseFFCB;
    CheckBox        aUseDashCB;
    CheckBox        aCaseSensitiveCB;
    CheckBox        aInitialCapsCB;
    CheckBox        aKeyAsEntryCB;
    CheckBox        aFromFileCB;
    MenuButton      aAutoMarkPB;
    FixedLine       aIdxOptionsFL; // index only

    // object only
    SwOLENames      aFromNames;
    SvxCheckListBox aFromObjCLB;
    FixedLine       aFromObjFL;

    CheckBox        aSequenceCB;
    FixedText       aBracketFT;
    ListBox         aBracketLB;
    FixedLine       aAuthorityFormatFL;

    //all
    FixedLine       aSortOptionsFL;
    FixedText       aLanguageFT;
    SvxLanguageBox  aLanguageLB;
    FixedText       aSortAlgorithmFT;
    ListBox         aSortAlgorithmLB;

    IndexEntryRessource* pIndexRes;

    Point           aCBLeftPos1;
    Point           aCBLeftPos2;
    Point           aCBLeftPos3;

    String          aStyleArr[MAXLEVEL];
    String          sAutoMarkURL;
    String          sAutoMarkType;
    String          sAddStyleUser;
    String          sAddStyleContent;

    const IndexEntrySupplierWrapper* pIndexEntryWrapper;

    BOOL            bFirstCall;

    DECL_LINK(TOXTypeHdl,   ListBox* );
    DECL_LINK(TOXAreaHdl,   ListBox* );
    DECL_LINK(AddStylesHdl, PushButton* );
    DECL_LINK(MenuEnableHdl, Menu*);
    DECL_LINK(MenuExecuteHdl, Menu*);
    DECL_LINK(LanguageHdl, ListBox*);

    DECL_LINK(CheckBoxHdl,  CheckBox*   );
    DECL_LINK(RadioButtonHdl, RadioButton* );
    DECL_LINK(ModifyHdl, void*);

      void  ApplyTOXDescription();
    void    FillTOXDescription();

    using SfxTabPage::ActivatePage;
    using SfxTabPage::DeactivatePage;

public:
    SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrSet);
    ~SwTOXSelectTabPage();

    virtual BOOL        FillItemSet( SfxItemSet& );
    virtual void        Reset( const SfxItemSet& );

    virtual void        ActivatePage( const SfxItemSet& );
    virtual int         DeactivatePage( SfxItemSet* pSet = 0 );

    static SfxTabPage*  Create( Window* pParent,
                                const SfxItemSet& rAttrSet);

    void                SelectType(TOXTypes eSet);  //preset TOXType, GlobalDoc
    void                SetWrtShell(SwWrtShell& rSh);
};


DECLARE_LIST( TOXControlList, Control* )

class SwTOXEdit;
class SwTOXButton;
class SwTOXEntryTabPage;

class SwTokenWindow : public Window
{
    ImageButton     aLeftScrollWin;
    Window          aCtrlParentWin;
    ImageButton     aRightScrollWin;
    TOXControlList  aControlList;
    SwForm*         pForm;
    USHORT          nLevel;
    BOOL            bValid;
    String          aButtonTexts[TOKEN_END]; // Text of the buttons
    String          aButtonHelpTexts[TOKEN_END]; // QuickHelpText of the buttons
    String          sCharStyle;
    Link            aButtonSelectedHdl;
    Control*        pActiveCtrl;
    Link            aModifyHdl;

    SwTOXEntryTabPage*  m_pParent;

    DECL_LINK(EditResize, Edit*);
    DECL_LINK(NextItemHdl, SwTOXEdit* );
    DECL_LINK(TbxFocusHdl, SwTOXEdit* );
    DECL_LINK(NextItemBtnHdl, SwTOXButton* );
    DECL_LINK(TbxFocusBtnHdl, SwTOXButton* );
    DECL_LINK(ScrollHdl, ImageButton* );

    void    SetActiveControl(Control* pSet);

    Control*    InsertItem(const String& rText, const SwFormToken& aToken);
    void        AdjustPositions();
    void        AdjustScrolling();
    void        MoveControls(long nOffset);

public:
    SwTokenWindow(SwTOXEntryTabPage* pParent, const ResId& rResId);
    ~SwTokenWindow();

    void        SetForm(SwForm& rForm, USHORT nLevel);
    USHORT      GetLastLevel()const {return nLevel;};

    BOOL        IsValid() const {return bValid;}

    void        SetInvalid() {bValid = FALSE;}

    String      GetPattern() const;

    void        SetButtonSelectedHdl(const Link& rLink)
                { aButtonSelectedHdl = rLink;}

    void        SetModifyHdl(const Link& rLink){aModifyHdl = rLink;}

    Control*    GetActiveControl()
                    { return pActiveCtrl;}

    void        InsertAtSelection(const String& rText, const SwFormToken& aToken);
    void        RemoveControl(SwTOXButton* pDel, BOOL bInternalCall = FALSE);

    BOOL        Contains(FormTokenType) const;

    BOOL        DetermineLinkStart();

    //helper for pattern buttons and edits
    BOOL        CreateQuickHelp(Control* pCtrl,
                    const SwFormToken& rToken, const HelpEvent& );

    virtual void        Resize();
    virtual void        GetFocus();
};

class SwTOXEntryTabPage;

class SwIdxTreeListBox : public SvTreeListBox
{
    SwTOXEntryTabPage* pParent;
{'fraction_non_alphanumeric': 0.08640833414467919, 'fraction_numerical': 0.001947230065232207, 'mean_word_length': 2.3262629533678756, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7636673', 'n_tokens_mistral': 6441, 'n_tokens_neox': 6086, 'n_words': 1467}