// -*- C++ -*-
/* This file is part of
* =================================================
- *
+ *
* LyX, The Document Processor
* Copyright 1995-2000 The LyX Team.
*
- * =================================================
+ * =================================================
*
* \author Baruch Even
**/
#pragma interface
#endif
+#include "gnome_helpers.h"
+
+#include <sigc++/sigc++.h>
+#include <libglademm/xml.h>
+
#include "ViewBase.h"
#include "gnomeBC.h"
-#include <sigc++/signal_system.h>
-#include "gnome_helpers.h"
-namespace Gnome {
-class Dialog;
+
+namespace Gtk {
+ class Dialog;
};
/**
*/
class GnomeBase : public ViewBC<gnomeBC>, public SigC::Object {
public:
- ///
- GnomeBase(ControlButtons & c, string const & glade_file, string const & name);
+ ///
+ GnomeBase(ControlButtons & c, string const & name);
///
virtual ~GnomeBase();
protected:
/// Get the widget named 'name' from the xml representation.
template <class T>
- T* getWidget(char const * name) const;
+ T* getWidget(const string & name) const;
/// Get the dialog we use.
- Gnome::Dialog * dialog();
+ Gtk::Dialog * dialog();
/// Show the dialog.
void show();
/// Hide the dialog.
void hide();
-
/// Build the dialog. Also connects signals and prepares it for work.
virtual void build() = 0;
+ /// Dialog is valid
+ virtual bool validate();
+ /// Default OK behaviour
+ virtual void OKClicked();
+ /// Default Cancel behaviour
+ virtual void CancelClicked();
+ /// Default Restore behaviour
+ virtual void RestoreClicked();
+ /// Default apply behaviour
+ virtual void ApplyClicked();
+ /// Default changed input behaviour
+ virtual void InputChanged();
private:
/// Loads the glade file to memory.
- void loadXML() const;
+ void loadXML();
/// The glade file name
const string file_;
/// The widget name
const string widget_name_;
/// The XML representation of the dialogs.
- mutable GladeXML * xml_;
+ Glib::RefPtr<Gnome::Glade::Xml> xml_;
/** The dialog we work with, since it is managed by libglade, we do not
* need to delete it or destroy it, it will be destroyed with the rest
* of the libglade GladeXML structure.
*/
- Gnome::Dialog * dialog_;
+ Gtk::Dialog * dialog_;
};
template <class T>
-T* GnomeBase::getWidget(char const * name) const
+T* GnomeBase::getWidget(const string & name) const
{
- if (xml_ == 0)
- loadXML();
- return getWidgetPtr<T>(xml_, name);
+ return dynamic_cast<T*>(xml_->get_widget(name));
}
/**
* This class is used to provide a simple automatic casting of the controller.
- * We chose not to make GnomeBase a template since it has some size and we
+ * We chose not to make GnomeBase a template since it has some size and we
* have no reason to duplicate it by making it a template.
*
* Basically the FormCB<Controller> template instantiates GnomeBase and passes
template <class Controller>
class FormCB : public GnomeBase {
public:
- FormCB(Controller & c, string const & file, string const & name);
+ FormCB(Controller & c, string const & name);
protected:
Controller & controller();
};
template <class Controller>
-FormCB<Controller>::FormCB(Controller & c, string const & file, string const & name)
- : GnomeBase(c, file, name)
+FormCB<Controller>::FormCB(Controller & c, string const & name)
+ : GnomeBase(c, name)
{}
template <class Controller>