/* this file was generated by the MCOP idl compiler - DO NOT EDIT */

#ifndef ARTSGUI_H
#define ARTSGUI_H

#include "common.h"

namespace Arts {
class Widget;
class Button;
class Poti;

class Widget_base : virtual public Arts::Object_base {
public:
	static unsigned long _IID; // interface ID

	static Widget_base *_create(const std::string& subClass = "Arts::Widget");
	static Widget_base *_fromString(std::string objectref);
	static Widget_base *_fromReference(Arts::ObjectReference ref, bool needcopy);

	inline Widget_base *_copy() {
		assert(_refCnt > 0);
		_refCnt++;
		return this;
	}

	virtual std::vector<std::string> _defaultPortsIn() const;
	virtual std::vector<std::string> _defaultPortsOut() const;

	void *_cast(unsigned long iid);

	virtual long widgetID() = 0;
	virtual Arts::Widget parent() = 0;
	virtual void parent(Arts::Widget newValue) = 0;
	virtual long x() = 0;
	virtual void x(long newValue) = 0;
	virtual long y() = 0;
	virtual void y(long newValue) = 0;
	virtual long width() = 0;
	virtual void width(long newValue) = 0;
	virtual long height() = 0;
	virtual void height(long newValue) = 0;
	virtual bool visible() = 0;
	virtual void visible(bool newValue) = 0;
	virtual void show() = 0;
	virtual void hide() = 0;
};

class Widget_stub : virtual public Widget_base, virtual public Arts::Object_stub {
protected:
	Widget_stub();

public:
	Widget_stub(Arts::Connection *connection, long objectID);

	long widgetID();
	Arts::Widget parent();
	void parent(Arts::Widget newValue);
	long x();
	void x(long newValue);
	long y();
	void y(long newValue);
	long width();
	void width(long newValue);
	long height();
	void height(long newValue);
	bool visible();
	void visible(bool newValue);
	void show();
	void hide();
};

class Widget_skel : virtual public Widget_base, virtual public Arts::Object_skel {
protected:
	// emitters for change notifications
	inline void widgetID_changed(long newValue) {
		_emit_changed("widgetID_changed",newValue);
	}
	inline void x_changed(long newValue) {
		_emit_changed("x_changed",newValue);
	}
	inline void y_changed(long newValue) {
		_emit_changed("y_changed",newValue);
	}
	inline void width_changed(long newValue) {
		_emit_changed("width_changed",newValue);
	}
	inline void height_changed(long newValue) {
		_emit_changed("height_changed",newValue);
	}
	inline void visible_changed(bool newValue) {
		_emit_changed("visible_changed",newValue);
	}

public:
	Widget_skel();

	static std::string _interfaceNameSkel();
	std::string _interfaceName();
	bool _isCompatibleWith(const std::string& interfacename);
	void _buildMethodTable();
	void dispatch(Arts::Buffer *request, Arts::Buffer *result,long methodID);
};

};
#include "reference.h"
namespace Arts {
class Widget : public Arts::Object {
private:
	static Arts::Object_base* _Creator();
	Widget_base *_cache;
	inline Widget_base *_method_call() {
		_pool->checkcreate();
		if(_pool->base) {
			_cache=(Widget_base *)_pool->base->_cast(Widget_base::_IID);
			assert(_cache);
		}
		return _cache;
	}

protected:
	inline Widget(Widget_base* b) : Arts::Object(b), _cache(0) {}


public:
	typedef Widget_base _base_class;

	inline Widget() : Arts::Object(_Creator), _cache(0) {}
	inline Widget(const Arts::SubClass& s) :
		Arts::Object(Widget_base::_create(s.string())), _cache(0) {}
	inline Widget(const Arts::Reference &r) :
		Arts::Object(r.isString()?(Widget_base::_fromString(r.string())):(Widget_base::_fromReference(r.reference(),true))), _cache(0) {}
	inline Widget(const Arts::DynamicCast& c) : Arts::Object(Widget_base::_fromString(c.object().toString())), _cache(0) {}
	inline Widget(const Widget& target) : Arts::Object(target._pool), _cache(target._cache) {}
	inline Widget(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
	inline static Widget null() {return Widget((Widget_base*)0);}
	inline static Widget _from_base(Widget_base* b) {return Widget(b);}
	inline Widget& operator=(const Widget& target) {
		if (_pool == target._pool) return *this;
		_pool->Dec();
		_pool = target._pool;
		_cache = target._cache;
		_pool->Inc();
		return *this;
	}
	inline Widget_base* _base() {return _cache?_cache:_method_call();}

	inline long widgetID();
	inline Arts::Widget parent();
	inline void parent(Arts::Widget _newValue);
	inline long x();
	inline void x(long _newValue);
	inline long y();
	inline void y(long _newValue);
	inline long width();
	inline void width(long _newValue);
	inline long height();
	inline void height(long _newValue);
	inline bool visible();
	inline void visible(bool _newValue);
	inline void show();
	inline void hide();
};

class Button_base : virtual public Arts::Widget_base {
public:
	static unsigned long _IID; // interface ID

	static Button_base *_create(const std::string& subClass = "Arts::Button");
	static Button_base *_fromString(std::string objectref);
	static Button_base *_fromReference(Arts::ObjectReference ref, bool needcopy);

	inline Button_base *_copy() {
		assert(_refCnt > 0);
		_refCnt++;
		return this;
	}

	virtual std::vector<std::string> _defaultPortsIn() const;
	virtual std::vector<std::string> _defaultPortsOut() const;

	void *_cast(unsigned long iid);

	virtual std::string text() = 0;
	virtual void text(const std::string& newValue) = 0;
};

class Button_stub : virtual public Button_base, virtual public Arts::Widget_stub {
protected:
	Button_stub();

public:
	Button_stub(Arts::Connection *connection, long objectID);

	std::string text();
	void text(const std::string& newValue);
};

class Button_skel : virtual public Button_base, virtual public Arts::Widget_skel {
protected:
	// emitters for change notifications
	inline void text_changed(const std::string& newValue) {
		_emit_changed("text_changed",newValue);
	}

public:
	Button_skel();

	static std::string _interfaceNameSkel();
	std::string _interfaceName();
	bool _isCompatibleWith(const std::string& interfacename);
	void _buildMethodTable();
	void dispatch(Arts::Buffer *request, Arts::Buffer *result,long methodID);
};

};
#include "reference.h"
namespace Arts {
class Button : public Arts::Object {
private:
	static Arts::Object_base* _Creator();
	Button_base *_cache;
	inline Button_base *_method_call() {
		_pool->checkcreate();
		if(_pool->base) {
			_cache=(Button_base *)_pool->base->_cast(Button_base::_IID);
			assert(_cache);
		}
		return _cache;
	}

protected:
	inline Button(Button_base* b) : Arts::Object(b), _cache(0) {}


public:
	typedef Button_base _base_class;

	inline Button() : Arts::Object(_Creator), _cache(0) {}
	inline Button(const Arts::SubClass& s) :
		Arts::Object(Button_base::_create(s.string())), _cache(0) {}
	inline Button(const Arts::Reference &r) :
		Arts::Object(r.isString()?(Button_base::_fromString(r.string())):(Button_base::_fromReference(r.reference(),true))), _cache(0) {}
	inline Button(const Arts::DynamicCast& c) : Arts::Object(Button_base::_fromString(c.object().toString())), _cache(0) {}
	inline Button(const Button& target) : Arts::Object(target._pool), _cache(target._cache) {}
	inline Button(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
	inline static Button null() {return Button((Button_base*)0);}
	inline static Button _from_base(Button_base* b) {return Button(b);}
	inline Button& operator=(const Button& target) {
		if (_pool == target._pool) return *this;
		_pool->Dec();
		_pool = target._pool;
		_cache = target._cache;
		_pool->Inc();
		return *this;
	}
	inline operator Arts::Widget() const { return Arts::Widget(*_pool); }
	inline Button_base* _base() {return _cache?_cache:_method_call();}

	inline long widgetID();
	inline Arts::Widget parent();
	inline void parent(Arts::Widget _newValue);
	inline long x();
	inline void x(long _newValue);
	inline long y();
	inline void y(long _newValue);
	inline long width();
	inline void width(long _newValue);
	inline long height();
	inline void height(long _newValue);
	inline bool visible();
	inline void visible(bool _newValue);
	inline void show();
	inline void hide();
	inline std::string text();
	inline void text(const std::string& _newValue);
};

class Poti_base : virtual public Arts::Widget_base {
public:
	static unsigned long _IID; // interface ID

	static Poti_base *_create(const std::string& subClass = "Arts::Poti");
	static Poti_base *_fromString(std::string objectref);
	static Poti_base *_fromReference(Arts::ObjectReference ref, bool needcopy);

	inline Poti_base *_copy() {
		assert(_refCnt > 0);
		_refCnt++;
		return this;
	}

	virtual std::vector<std::string> _defaultPortsIn() const;
	virtual std::vector<std::string> _defaultPortsOut() const;

	void *_cast(unsigned long iid);

	virtual std::string text() = 0;
	virtual void text(const std::string& newValue) = 0;
	virtual std::string color() = 0;
	virtual void color(const std::string& newValue) = 0;
	virtual float min() = 0;
	virtual void min(float newValue) = 0;
	virtual float max() = 0;
	virtual void max(float newValue) = 0;
	virtual float value() = 0;
	virtual void value(float newValue) = 0;
};

class Poti_stub : virtual public Poti_base, virtual public Arts::Widget_stub {
protected:
	Poti_stub();

public:
	Poti_stub(Arts::Connection *connection, long objectID);

	std::string text();
	void text(const std::string& newValue);
	std::string color();
	void color(const std::string& newValue);
	float min();
	void min(float newValue);
	float max();
	void max(float newValue);
	float value();
	void value(float newValue);
};

class Poti_skel : virtual public Poti_base, virtual public Arts::Widget_skel {
protected:
	// emitters for change notifications
	inline void text_changed(const std::string& newValue) {
		_emit_changed("text_changed",newValue);
	}
	inline void color_changed(const std::string& newValue) {
		_emit_changed("color_changed",newValue);
	}
	inline void min_changed(float newValue) {
		_emit_changed("min_changed",newValue);
	}
	inline void max_changed(float newValue) {
		_emit_changed("max_changed",newValue);
	}
	inline void value_changed(float newValue) {
		_emit_changed("value_changed",newValue);
	}

public:
	Poti_skel();

	static std::string _interfaceNameSkel();
	std::string _interfaceName();
	bool _isCompatibleWith(const std::string& interfacename);
	void _buildMethodTable();
	void dispatch(Arts::Buffer *request, Arts::Buffer *result,long methodID);
};

};
#include "reference.h"
namespace Arts {
class Poti : public Arts::Object {
private:
	static Arts::Object_base* _Creator();
	Poti_base *_cache;
	inline Poti_base *_method_call() {
		_pool->checkcreate();
		if(_pool->base) {
			_cache=(Poti_base *)_pool->base->_cast(Poti_base::_IID);
			assert(_cache);
		}
		return _cache;
	}

protected:
	inline Poti(Poti_base* b) : Arts::Object(b), _cache(0) {}


public:
	typedef Poti_base _base_class;

	inline Poti() : Arts::Object(_Creator), _cache(0) {}
	inline Poti(const Arts::SubClass& s) :
		Arts::Object(Poti_base::_create(s.string())), _cache(0) {}
	inline Poti(const Arts::Reference &r) :
		Arts::Object(r.isString()?(Poti_base::_fromString(r.string())):(Poti_base::_fromReference(r.reference(),true))), _cache(0) {}
	inline Poti(const Arts::DynamicCast& c) : Arts::Object(Poti_base::_fromString(c.object().toString())), _cache(0) {}
	inline Poti(const Poti& target) : Arts::Object(target._pool), _cache(target._cache) {}
	inline Poti(Arts::Object::Pool& p) : Arts::Object(p), _cache(0) {}
	inline static Poti null() {return Poti((Poti_base*)0);}
	inline static Poti _from_base(Poti_base* b) {return Poti(b);}
	inline Poti& operator=(const Poti& target) {
		if (_pool == target._pool) return *this;
		_pool->Dec();
		_pool = target._pool;
		_cache = target._cache;
		_pool->Inc();
		return *this;
	}
	inline operator Arts::Widget() const { return Arts::Widget(*_pool); }
	inline Poti_base* _base() {return _cache?_cache:_method_call();}

	inline long widgetID();
	inline Arts::Widget parent();
	inline void parent(Arts::Widget _newValue);
	inline long x();
	inline void x(long _newValue);
	inline long y();
	inline void y(long _newValue);
	inline long width();
	inline void width(long _newValue);
	inline long height();
	inline void height(long _newValue);
	inline bool visible();
	inline void visible(bool _newValue);
	inline void show();
	inline void hide();
	inline std::string text();
	inline void text(const std::string& _newValue);
	inline std::string color();
	inline void color(const std::string& _newValue);
	inline float min();
	inline void min(float _newValue);
	inline float max();
	inline void max(float _newValue);
	inline float value();
	inline void value(float _newValue);
};

// Forward wrapper calls to _base classes:

inline long Arts::Widget::widgetID()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->widgetID():static_cast<Arts::Widget_base*>(_method_call())->widgetID();
}

inline Arts::Widget Arts::Widget::parent()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->parent():static_cast<Arts::Widget_base*>(_method_call())->parent();
}

inline void Arts::Widget::parent(Arts::Widget _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->parent(_newValue):static_cast<Arts::Widget_base*>(_method_call())->parent(_newValue);
}

inline long Arts::Widget::x()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->x():static_cast<Arts::Widget_base*>(_method_call())->x();
}

inline void Arts::Widget::x(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->x(_newValue):static_cast<Arts::Widget_base*>(_method_call())->x(_newValue);
}

inline long Arts::Widget::y()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->y():static_cast<Arts::Widget_base*>(_method_call())->y();
}

inline void Arts::Widget::y(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->y(_newValue):static_cast<Arts::Widget_base*>(_method_call())->y(_newValue);
}

inline long Arts::Widget::width()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->width():static_cast<Arts::Widget_base*>(_method_call())->width();
}

inline void Arts::Widget::width(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->width(_newValue):static_cast<Arts::Widget_base*>(_method_call())->width(_newValue);
}

inline long Arts::Widget::height()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->height():static_cast<Arts::Widget_base*>(_method_call())->height();
}

inline void Arts::Widget::height(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->height(_newValue):static_cast<Arts::Widget_base*>(_method_call())->height(_newValue);
}

inline bool Arts::Widget::visible()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->visible():static_cast<Arts::Widget_base*>(_method_call())->visible();
}

inline void Arts::Widget::visible(bool _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->visible(_newValue):static_cast<Arts::Widget_base*>(_method_call())->visible(_newValue);
}

inline void Arts::Widget::show()
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->show():static_cast<Arts::Widget_base*>(_method_call())->show();
}

inline void Arts::Widget::hide()
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->hide():static_cast<Arts::Widget_base*>(_method_call())->hide();
}

inline long Arts::Button::widgetID()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->widgetID():static_cast<Arts::Widget_base*>(_method_call())->widgetID();
}

inline Arts::Widget Arts::Button::parent()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->parent():static_cast<Arts::Widget_base*>(_method_call())->parent();
}

inline void Arts::Button::parent(Arts::Widget _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->parent(_newValue):static_cast<Arts::Widget_base*>(_method_call())->parent(_newValue);
}

inline long Arts::Button::x()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->x():static_cast<Arts::Widget_base*>(_method_call())->x();
}

inline void Arts::Button::x(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->x(_newValue):static_cast<Arts::Widget_base*>(_method_call())->x(_newValue);
}

inline long Arts::Button::y()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->y():static_cast<Arts::Widget_base*>(_method_call())->y();
}

inline void Arts::Button::y(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->y(_newValue):static_cast<Arts::Widget_base*>(_method_call())->y(_newValue);
}

inline long Arts::Button::width()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->width():static_cast<Arts::Widget_base*>(_method_call())->width();
}

inline void Arts::Button::width(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->width(_newValue):static_cast<Arts::Widget_base*>(_method_call())->width(_newValue);
}

inline long Arts::Button::height()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->height():static_cast<Arts::Widget_base*>(_method_call())->height();
}

inline void Arts::Button::height(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->height(_newValue):static_cast<Arts::Widget_base*>(_method_call())->height(_newValue);
}

inline bool Arts::Button::visible()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->visible():static_cast<Arts::Widget_base*>(_method_call())->visible();
}

inline void Arts::Button::visible(bool _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->visible(_newValue):static_cast<Arts::Widget_base*>(_method_call())->visible(_newValue);
}

inline void Arts::Button::show()
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->show():static_cast<Arts::Widget_base*>(_method_call())->show();
}

inline void Arts::Button::hide()
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->hide():static_cast<Arts::Widget_base*>(_method_call())->hide();
}

inline std::string Arts::Button::text()
{
	return _cache?static_cast<Arts::Button_base*>(_cache)->text():static_cast<Arts::Button_base*>(_method_call())->text();
}

inline void Arts::Button::text(const std::string& _newValue)
{
	 _cache?static_cast<Arts::Button_base*>(_cache)->text(_newValue):static_cast<Arts::Button_base*>(_method_call())->text(_newValue);
}

inline long Arts::Poti::widgetID()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->widgetID():static_cast<Arts::Widget_base*>(_method_call())->widgetID();
}

inline Arts::Widget Arts::Poti::parent()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->parent():static_cast<Arts::Widget_base*>(_method_call())->parent();
}

inline void Arts::Poti::parent(Arts::Widget _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->parent(_newValue):static_cast<Arts::Widget_base*>(_method_call())->parent(_newValue);
}

inline long Arts::Poti::x()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->x():static_cast<Arts::Widget_base*>(_method_call())->x();
}

inline void Arts::Poti::x(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->x(_newValue):static_cast<Arts::Widget_base*>(_method_call())->x(_newValue);
}

inline long Arts::Poti::y()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->y():static_cast<Arts::Widget_base*>(_method_call())->y();
}

inline void Arts::Poti::y(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->y(_newValue):static_cast<Arts::Widget_base*>(_method_call())->y(_newValue);
}

inline long Arts::Poti::width()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->width():static_cast<Arts::Widget_base*>(_method_call())->width();
}

inline void Arts::Poti::width(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->width(_newValue):static_cast<Arts::Widget_base*>(_method_call())->width(_newValue);
}

inline long Arts::Poti::height()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->height():static_cast<Arts::Widget_base*>(_method_call())->height();
}

inline void Arts::Poti::height(long _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->height(_newValue):static_cast<Arts::Widget_base*>(_method_call())->height(_newValue);
}

inline bool Arts::Poti::visible()
{
	return _cache?static_cast<Arts::Widget_base*>(_cache)->visible():static_cast<Arts::Widget_base*>(_method_call())->visible();
}

inline void Arts::Poti::visible(bool _newValue)
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->visible(_newValue):static_cast<Arts::Widget_base*>(_method_call())->visible(_newValue);
}

inline void Arts::Poti::show()
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->show():static_cast<Arts::Widget_base*>(_method_call())->show();
}

inline void Arts::Poti::hide()
{
	 _cache?static_cast<Arts::Widget_base*>(_cache)->hide():static_cast<Arts::Widget_base*>(_method_call())->hide();
}

inline std::string Arts::Poti::text()
{
	return _cache?static_cast<Arts::Poti_base*>(_cache)->text():static_cast<Arts::Poti_base*>(_method_call())->text();
}

inline void Arts::Poti::text(const std::string& _newValue)
{
	 _cache?static_cast<Arts::Poti_base*>(_cache)->text(_newValue):static_cast<Arts::Poti_base*>(_method_call())->text(_newValue);
}

inline std::string Arts::Poti::color()
{
	return _cache?static_cast<Arts::Poti_base*>(_cache)->color():static_cast<Arts::Poti_base*>(_method_call())->color();
}

inline void Arts::Poti::color(const std::string& _newValue)
{
	 _cache?static_cast<Arts::Poti_base*>(_cache)->color(_newValue):static_cast<Arts::Poti_base*>(_method_call())->color(_newValue);
}

inline float Arts::Poti::min()
{
	return _cache?static_cast<Arts::Poti_base*>(_cache)->min():static_cast<Arts::Poti_base*>(_method_call())->min();
}

inline void Arts::Poti::min(float _newValue)
{
	 _cache?static_cast<Arts::Poti_base*>(_cache)->min(_newValue):static_cast<Arts::Poti_base*>(_method_call())->min(_newValue);
}

inline float Arts::Poti::max()
{
	return _cache?static_cast<Arts::Poti_base*>(_cache)->max():static_cast<Arts::Poti_base*>(_method_call())->max();
}

inline void Arts::Poti::max(float _newValue)
{
	 _cache?static_cast<Arts::Poti_base*>(_cache)->max(_newValue):static_cast<Arts::Poti_base*>(_method_call())->max(_newValue);
}

inline float Arts::Poti::value()
{
	return _cache?static_cast<Arts::Poti_base*>(_cache)->value():static_cast<Arts::Poti_base*>(_method_call())->value();
}

inline void Arts::Poti::value(float _newValue)
{
	 _cache?static_cast<Arts::Poti_base*>(_cache)->value(_newValue):static_cast<Arts::Poti_base*>(_method_call())->value(_newValue);
}

};
#endif /* ARTSGUI_H */
