/***************************************************************************
                          dtepeditdlg.h  -  description
                             -------------------
    begin                : Tue Feb 1 11:07:24 2005
    copyright            : (C) 2005 Andras Mantia <amantia@kde.org>
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; version 2 of the License.               *
 *                                                                         *
 ***************************************************************************/

#ifndef DTEPEDITDLG_H
#define DTEPEDITDLG_H

//qt includes
#include <tqvaluelist.h>

//own includes
#include "dtepeditdlgs.h"

/**
@author Andras Mantia
*/

class TDEConfig;
class DTEPStructureEditDlgS;

struct StructGroup {
  TQString name;   ///<the name of the group
  TQString noName; ///<the text when there are no elements in the group
  TQString icon;   ///<the icon of the group
  TQString tag;
  bool hasFileName;
  TQString fileNameRx;
  bool appendToTags;
  TQString parentGroup;
  TQString definitionRx;
  bool definitionRxMinimal;
  TQString usageRx;
  TQString typeRx;
  TQString tagType;
  bool parseFile;
  TQString completeAfterRx;
  TQString removeRx;
  bool simpleGroup;
  bool variableGroup;
  bool functionGroup;
  bool classGroup;
  bool objectGroup;
};

class DTEPEditDlg : public DTEPEditDlgS
{
  TQ_OBJECT
  
  public:
    DTEPEditDlg(const TQString& descriptionFile, TQWidget *parent = 0, const char *name = 0);
    ~DTEPEditDlg();
    void saveResult();
    void slotFamilyChanged(int family);
    void slotEditStructGroup();
    void slotAddStructGroup();
    void slotDeleteStructGroup();
    
  private:  
    void init();
    void readGeneral();
    void readPages();
    void readParserRules();
    void readStructures();
    StructGroup readFromStructDlg(DTEPStructureEditDlgS *structDlg);
    
    void writeGeneral(TDEConfig *config);
    void writePages(TDEConfig *config);
    void writeParserRules(TDEConfig *config);
    void writeStructures(TDEConfig *config);
    void writeEntry(TDEConfig *config, const TQString &key, const TQString &value);
    
  TQString m_descriptionFile;
  TDEConfig *m_config;
  int m_family;
  TQWidget *m_pagesWidget;
  TQValueList<StructGroup> m_structGroups;
};

#endif
