/***************************************************************************
                          crings_dialog.h  -  Dialog for creating CustomRings
                             -------------------
    begin                : Sat Aug 31 2002
    copyright            : (C) 2002 by Adam Tenderholt
    email                : atenderholt@users.sourceforge.net
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef _CRINGS_DIALOG_H
#define _CRINGS_DIALOG_H

#include "custom_rings.h"
#include "render2d.h"
#include "chemdata.h"
#include "molecule.h"

#include <qwidget.h>
#include <qstring.h>
#include <qlabel.h>
#include <klineedit.h>
#include <kdialogbase.h>

class CustomRingWidget : public QWidget {

  Q_OBJECT

  public:

    CustomRingWidget(QWidget* parent=0,const char* name=0);
    ~CustomRingWidget();

    QString getTitle() { return title->text(); }
    void setMolecule(Molecule* m);


  public slots:

    void slotTitle(QString& string);

  signals:

    void signalTextChanged(const QString&);

  protected:
    void paintEvent(QPaintEvent *);

  private:

    QWidget* widget;
    Render2D* render;
    ChemData* data;
    KLineEdit* title;
    QLabel* label;
    QPixmap pixmap;
};

class CustomRingDialog : public KDialogBase {

  Q_OBJECT
  public:

    CustomRingDialog(QWidget* parent=0,const char* name=0);
    ~CustomRingDialog();

    void setCustomRings(CustomRings* rings) { m_rings=rings; }
    void setMolecule(Molecule* m) { m_widget->setMolecule(m); }

  public slots:

    void slotOk();
    void slotTextChanged(const QString& string);

  signals:

    void signalTitle(QString&);

  private:

    CustomRingWidget* m_widget;
    CustomRings* m_rings;

};

#endif

//eof

