lumiera_documentation/src/gui/ctrl/bus-controller.hpp
Ichthyostega dddcbe9994 DOC: supply basics of UI-Bus and generic UI-element protocol
the initial draft of this concept is in place now, and
the first round of unit tests pass. I've got some understanding
of the purpose of the interactions and involved elements
and I'm confident this design is evolving in a sane way.

Note: extensive documentation is in the TiddlyWiki,
here I've just pasted and reworded some paragraphs from there
and integrated them into the Doxygen docs
2015-12-27 01:58:15 +01:00

119 lines
3.1 KiB
C++

/*
BUS-CONTROLLER.hpp - the UI-Bus service
Copyright (C) Lumiera.org
2015, Hermann Vosseler <Ichthyostega@web.de>
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.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/** @file bus-controller.hpp
** The service actually operating the [UI-Bus][ui-bus.hpp].
** This service includes state management for the bus operations
** as a whole, it includes the setup of a [routing table][ctrl::Nexus]
** and it includes the management of connection to the [core service][core-service.hpp]
** Service for bus-controller.
** This header defines the basics of...
**
** @note as of 12/2015 this is merely placeholder code. The primary goal is to
** write and cover model::Tangible and ctrl::BusTerm, so to define the operation
** of the backbone components. Then the next step will be to replace the existing
** (and obsolete) gui::controller::Controller by the gui::UiBus, which in turn
** will have to instantiate a [BusController] instance.
** @todo WIP ///////////////////////TICKET #959
**
** @see ////TODO_test usage example
** @see [implementation][bus-controller.cpp]
** @see [front-end and lifecycle][UiBus]
**
*/
#ifndef GUI_CTRL_BUS_CONTROLLER_H
#define GUI_CTRL_BUS_CONTROLLER_H
#include "lib/error.hpp"
//#include "lib/hash-value.h"
//#include "lib/symbol.hpp"
#include "lib/util.hpp"
#include <boost/noncopyable.hpp>
#include <string>
namespace gui {
namespace ctrl{
using util::isnil;
using std::string;
/**
* Manage operation of the UI-Bus
*
* @todo WIP 1/2015
*/
class BusController
: boost::noncopyable
{
string nothing_;
public:
explicit
BusController (string const& b)
: nothing_(b)
{ }
/* == Adapter interface for == */
void
setSolution (string const& solution ="")
{
UNIMPLEMENTED ("tbw");
#if false /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #888
if (isDeaf())
this->transmogrify (solution);
#endif /////////////////////////////////////////////////////////////////////////////////////////////////////////////UNIMPLEMENTED :: TICKET #888
}
protected:
void maybe () const;
};
/** @internal in case
*/
inline void
BusController::maybe () const
{
UNIMPLEMENTED ("tbw");
}
}} // namespace gui::ctrl
#endif /*GUI_CTRL_BUS_CONTROLLER_H*/