diff --git a/WebWidgets/Makefile b/WebWidgets/Makefile deleted file mode 100644 index 7561ac4c2..000000000 --- a/WebWidgets/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -# -# Makefile -# -# $Id: //poco/Main/WebWidgets/Makefile#7 $ -# -# Makefile for Poco WebWidgets -# - -include $(POCO_BASE)/build/rules/global - -objects = AbstractButton Button CheckBox \ - ComboBox ComplexPanel FlowPanel Form \ - FormHandler GUIObject HTML HTMLVisitor \ - HyperLink Image ImageButton IndexedPanel \ - InputField Label ListView Panel Parser \ - ParserFactory RadioButton RootPanel \ - SimplePanel StackPanel Table TextArea \ - TextField Visitable Visitor Widget \ - WidgetHandler WidgetHandlerFactory XMLUtil \ - NamedWidget HidablePanel MouseEventArgs \ - JSDelegate JSEventHandler FileHandler \ - MouseMovementArgs KeyEventArgs PwdField - -target = PocoWebWidgets -target_version = $(LIBVERSION) -target_libs = PocoNet PocoXML PocoFoundation - -include $(POCO_BASE)/build/rules/lib diff --git a/WebWidgets/WebWidgets_VS71.sln b/WebWidgets/WebWidgets_VS71.sln deleted file mode 100644 index 6fbf85331..000000000 --- a/WebWidgets/WebWidgets_VS71.sln +++ /dev/null @@ -1,30 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebWidgets", "WebWidgets_VS71.vcproj", "{8AF41214-5398-4B9B-BD80-D4910704A8FD}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS71.vcproj", "{90E72549-3DE3-4274-B744-238AC717FC2E}" - ProjectSection(ProjectDependencies) = postProject - {8AF41214-5398-4B9B-BD80-D4910704A8FD} = {8AF41214-5398-4B9B-BD80-D4910704A8FD} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - debug_shared = debug_shared - release_shared = release_shared - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {8AF41214-5398-4B9B-BD80-D4910704A8FD}.debug_shared.ActiveCfg = debug_shared|Win32 - {8AF41214-5398-4B9B-BD80-D4910704A8FD}.debug_shared.Build.0 = debug_shared|Win32 - {8AF41214-5398-4B9B-BD80-D4910704A8FD}.release_shared.ActiveCfg = release_shared|Win32 - {8AF41214-5398-4B9B-BD80-D4910704A8FD}.release_shared.Build.0 = release_shared|Win32 - {90E72549-3DE3-4274-B744-238AC717FC2E}.debug_shared.ActiveCfg = debug_shared|Win32 - {90E72549-3DE3-4274-B744-238AC717FC2E}.debug_shared.Build.0 = debug_shared|Win32 - {90E72549-3DE3-4274-B744-238AC717FC2E}.release_shared.ActiveCfg = release_shared|Win32 - {90E72549-3DE3-4274-B744-238AC717FC2E}.release_shared.Build.0 = release_shared|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/WebWidgets/WebWidgets_VS71.vcproj b/WebWidgets/WebWidgets_VS71.vcproj deleted file mode 100644 index 9b3062e0d..000000000 --- a/WebWidgets/WebWidgets_VS71.vcproj +++ /dev/null @@ -1,475 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/WebWidgets/WebWidgets_VS80.sln b/WebWidgets/WebWidgets_VS80.sln deleted file mode 100644 index 7dda11882..000000000 --- a/WebWidgets/WebWidgets_VS80.sln +++ /dev/null @@ -1,28 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WebWidgets", "WebWidgets_VS80.vcproj", "{8AF41214-5398-4B9B-BD80-D4910704A8FD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestSuite", "testsuite\TestSuite_VS80.vcproj", "{90E72549-3DE3-4274-B744-238AC717FC2E}" - ProjectSection(ProjectDependencies) = postProject - {8AF41214-5398-4B9B-BD80-D4910704A8FD} = {8AF41214-5398-4B9B-BD80-D4910704A8FD} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - debug_shared|Win32 = debug_shared|Win32 - release_shared|Win32 = release_shared|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {8AF41214-5398-4B9B-BD80-D4910704A8FD}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 - {8AF41214-5398-4B9B-BD80-D4910704A8FD}.debug_shared|Win32.Build.0 = debug_shared|Win32 - {8AF41214-5398-4B9B-BD80-D4910704A8FD}.release_shared|Win32.ActiveCfg = release_shared|Win32 - {8AF41214-5398-4B9B-BD80-D4910704A8FD}.release_shared|Win32.Build.0 = release_shared|Win32 - {90E72549-3DE3-4274-B744-238AC717FC2E}.debug_shared|Win32.ActiveCfg = debug_shared|Win32 - {90E72549-3DE3-4274-B744-238AC717FC2E}.debug_shared|Win32.Build.0 = debug_shared|Win32 - {90E72549-3DE3-4274-B744-238AC717FC2E}.release_shared|Win32.ActiveCfg = release_shared|Win32 - {90E72549-3DE3-4274-B744-238AC717FC2E}.release_shared|Win32.Build.0 = release_shared|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/WebWidgets/WebWidgets_VS80.vcproj b/WebWidgets/WebWidgets_VS80.vcproj deleted file mode 100644 index 563bf1b56..000000000 --- a/WebWidgets/WebWidgets_VS80.vcproj +++ /dev/null @@ -1,625 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/WebWidgets/data/appinf.js b/WebWidgets/data/appinf.js deleted file mode 100644 index 18e97d442..000000000 --- a/WebWidgets/data/appinf.js +++ /dev/null @@ -1,242 +0,0 @@ -function $(id) { - return document.getElementById(id); -} - -function getIDFromEventArgs(ev) { - var elem = ev.target || ev.srcElement; - return elem.id; -} - -var BrowserDetect = { - init: function () { - this.browser = this.searchString(this.dataBrowser) || "An unknown browser"; - this.version = this.searchVersion(navigator.userAgent) - || this.searchVersion(navigator.appVersion) - || "an unknown version"; - this.OS = this.searchString(this.dataOS) || "an unknown OS"; - }, - searchString: function (data) { - for (var i=0;i 3) { - button = button + 1; - } - } - } - if (button == 0) - { - // assume left click - button = 1; - } - return button; -} - -// returns an object containing members -// scrollLeft, scrollTop: the position inside the Document -// left, top,: position inside the Window -function mousePos(evt) -{ - if(!evt) evt = window.event; - var pos = new Object(); - pos.left = evt.clientX; - pos.top = evt.clientY; - var b = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ? - window.document.documentElement : window.document.body || null; - if (b) - { - pos.scrollLeft= pos.left + b.scrollLeft; - pos.scrollTop = pos.top + b.scrollTop; - } - else if(document.layers) - { - // Netscape 4. - pos.scrollLeft = evt.pageX; - pos.scrollTop = evt.pageY; - pos.left = evt.pageX - window.pageXOffset; - pos.top = evt.pageY - window.pageYOffset; - } - return pos; -} - - -function getSelectedText() { - if (window.getSelection) { - return window.getSelection(); - } - else if (document.getSelection) { - return document.getSelection(); - } - else if (document.selection) { - return document.selection.createRange().text; - } - return ""; -} - - -// expects no return data from the server -function eventCallBack(ev, callbackAddress) { - var req = createXMLHttpRequest(); - req.open("GET", callbackAddress+"?id="+getIDFromEventArgs(ev)+"&type="+ev.type, false); - req.send(null); -} - - -function mouseEventCallBack(ev, callbackAddress) { - var req = createXMLHttpRequest(); - var pos = mousePos(ev); - req.open("GET", callbackAddress+"?id="+getIDFromEventArgs(ev)+"&type="+ev.type+"&buttons="+buttonsPressed(ev)+"&posX="+pos.scrollLeft+"&posY="+pos.scrollTop, false); - req.send(null); -} - - -function mouseMoveEventCallBack(ev, callbackAddress) { - var req = createXMLHttpRequest(); - var pos = mousePos(ev); - req.open("GET", callbackAddress+"?id="+getIDFromEventArgs(ev)+"&type="+ev.type+"&posX="+pos.scrollLeft+"&posY="+pos.scrollTop+"&windowPosX="+pos.left+"&windowPosY="+pos.top, false); - req.send(null); -} - -function keyboardEventCallBack(ev, callbackAddress) { - var req = createXMLHttpRequest(); - var key = ev.which; - if (!key) key = ev.keyCode; - - req.open("GET", callbackAddress+"?id="+getIDFromEventArgs(ev)+"&type="+ev.type+"&key="+key+"&alt="+ev.altKey+"&shift="+ev.shiftKey+"&ctrl="+ev.ctrlKey, false); - req.send(null); -} - diff --git a/WebWidgets/doc/WebWidgets.html b/WebWidgets/doc/WebWidgets.html deleted file mode 100644 index 5a11387f4..000000000 --- a/WebWidgets/doc/WebWidgets.html +++ /dev/null @@ -1,926 +0,0 @@ - - - -POCO WebWidgets Documentation - - - - - - - - - - -
-

WebWidgets

-

POCO WebWidgets Documentation

-
-
-
-

Introduction

-

-

POCO WebWidgets is a library combining HTML generation with Javascript usage. WebPages can be easily created either in C++ code or via XML configuration loading. Each GUI element offers events as known from the HTML standard and supports registration of client-side callbacks (i.e. Javascript function calls) and server-side callbacks (i.e. for each event a HTTPRequest is sent to the server). This documentation will present in detail the available GUI elements and their usage.

-

-

GUI Elements

-

-

Widget

-

-

The root class for all GUI elements is Widget. A Widget supports via the methods preVisit and visit a two-step visitor pattern. A Widget can be searched for other Widgets via the find method. All Widgets offer events and are creatable by loading and parsing an XML file.

-

Common XML Attributes

-

-

Each Widget can be loaded via an XML configuration. A simple example for a text label would be:

-
<label>Test Label</label>
-
-

-

Furthermore, all widgets share a common set of attributes:

-
    -
  • id: a unique identifier. Each Widget should have one. When the HTML generator encounters a Widget without an id, it auto-assigns one.
  • -
  • class: CSS information of the class. Each different Widget type comes with a default value which can be overwritten.
  • -
  • lang: language information (see HTML docu for more info)
  • -
  • style: style information (see HTML docu for more info)
  • -
  • title: (see HTML docu for more info)
  • -
-

Thus, a label with an id and a class will look like this:

-
<label id="lbl1" class="label">Test Label</label>
-
-

-

Finding Children

-

-

A GUI is a tree of GUI elements. Suppose you have created a GUI which contains a child named c1 and you want to retrieve it:

-
using Poco::WebWidgets::Widget;
-using Poco::WebWidgets::XMLUtil;
-
-std::ifstream in("mygui.xml");
-if (!in)
-    throw Poco::FileNotFoundException("mygui.xml");
-Poco::AutoPtr<Widget> ptrRoot =  XMLUtil::loadWidget(in);
-Poco::AutoPtr<Widget> ptrChild = Widget::find(ptrRoot, "c1");
-poco_assert (ptrChild);
- [...]; // continue using ptrChild, like registering delegates,...
-
-

-

Note that finding a child is an expensive operation which in the worst case requires full tree traversal.

-

-

Events

-Widgets come with their own event flavor called JavaScriptEvent. A JavaScriptEvent can be seen as a sort of extended Poco::BasicEvent. Thus, all the methods known from BasicEvent work:

-

-
using Poco::WebWidgets::Widget;
-Poco::AutoPtr<Widget> ptrWidget = [...];
-ptrWidget->ESingleClick += delegate(this, &MyClass::onSingleClickMethod);
-[...]
-ptrWidget->ESingleClick -= delegate(this, &MyClass::onSingleClickMethod);
-
-

-

JavaScriptEvents were extended in two different ways:

-
    -
  • first, we can now detect if any (server) delegate is registered at it. The HTML generator uses that information to decide if it needs to generate a callback to the server. A callback is only generated for an event if at least one server delegate is registered. This optimization is needed to keep GUI response times acceptable.
  • -
  • second, we can now add JSDelegates to the event. A JSDelegate is basically a JavaScript function name plus the JavaScript file we need to load on the client-side. If more than one JSDelegate is registered, the HTML generator will generate a wrapper method that calls the JSDelegates sequentially.
  • -
-

An example for JSDelegate would be:

-
using Poco::WebWidgets::JSDelegate;
-using Poco::WebWidgets::jsDelegate;
-using Poco::WebWidgets::Widget;
-
-Poco::AutoPtr<Widget> ptrWidget = [...];
-ptrWidget->ESingleClick += JSDelegate("onSingleClick", "appinf.js");
-ptrWidget->ESingleClick += jsDelegate("onSingleClick2", "additional.js");
-
-

-

The HTML generator will generate the following code for that. Note that we assume that the widget has the id i2:

-
<script src="additional.js"></script>
-<script src="appinf.js"></script>
-<script type="text/javascript">
-    function multiEventHandleronclicki2(ev) {
-        if (!ev) {
-            ev = window.event;
-        }
-        onSingleClick(ev);
-        onSingleClick2(ev);
-    }
-</script>
-
-

-

Method signatures of JSDelegates must take as input a JavaScript event object.

-

The Widget class offers for each different event type a JavaScriptEvent:

-
JavaScriptEvent<MouseEventArgs> ESingleClick;
-JavaScriptEvent<MouseEventArgs> EDoubleClick;
-JavaScriptEvent<MouseEventArgs> EMouseDown;
-JavaScriptEvent<MouseEventArgs> EMouseUp;
-JavaScriptEvent<MouseMovementArgs> EMouseOver;
-JavaScriptEvent<MouseMovementArgs> EMouseOut;
-JavaScriptEvent<MouseMovementArgs> EMouseMove;
-JavaScriptEvent<KeyboardFocusArgs> EFocusEnter;
-JavaScriptEvent<KeyboardFocusArgs> EFocusLost;
-JavaScriptEvent<KeyEventArgs> EKeyUp;
-JavaScriptEvent<KeyEventArgs> EKeyDown;
-JavaScriptEvent<KeyEventArgs> EKeyPressed;
-
-

-

Note that not all events are meaningful for all widgets! Some will never fire, some might behave differently with different browsers. There is still a lot of work to do in that area!

-

JSDelegates in XML

-

-

JSDelegates can be configured via the XML file. Simply add to the Widget node a child named events and create for each different event type a child element with the name of the event. Then add your jsDelegates via the keyword delegate. The mapping of JavaScriptEvent to XML element name is as given:

-
    -
  • ESingleClick: onclick
  • -
  • EDoubleClick: ondblclick
  • -
  • EMouseDown: onmousedown
  • -
  • EMouseUp: onmouseup
  • -
  • EMouseOver: onmouseover
  • -
  • EMouseOut: onmouseout
  • -
  • EMouseMove: onmousemove
  • -
  • EFocusEnter: onfocus
  • -
  • EFocusLost: onblur
  • -
  • EKeyUp: onkeyup
  • -
  • EKeyDown: onkeydown
  • -
  • EKeyPressed: onkeypressed
  • -
-

Assume that we have a label where we want to find out whenever someone is moving the mouse over it:

-
<label>
-    Test Label
-    <events>
-        <onmouseover>
-            <delegate function="printMessage" file="appinf.js"/> 
-        </onmouseover>
-    </events>
-</label>
-
-

-

InputField

-An InputField extends Widget and is the abstract root class for all form members that can send data back to the server.

-

Events

-In addition to the events inherited from Widget, an InputField has the following JavaScriptEvents:

-
JavaScriptEvent<InputField*> EChange;
-JavaScriptEvent<InputField*> ESelect; 
-
-

-

which maps to the following XML keywords:

-
    -
  • EChange: onchange
  • -
  • ESelect: onselect
  • -
-

Additionally, an InputField comes with a BasicEvent which works without JavaScript being enabled:

-
    -
  • Poco::BasicEvent<const std::string> NewText: thrown, whenever a new text is sent back from the client
  • -
-

This event will be fired whenever the value of the input field is updated at the server. This typically happens when the client clicks on a submit Button.

-

-

RootPanel

-A RootPanel is the root widget for each GUI. Each Web page MUST have a RootPanel as its root element. It allows to set header specific information (by adding a HTML widget to the header element) and it takes n Widgets as children. The HTML code generated by a RootPanel is always a complete web page.

-

C++ Code

-

-
RootPanel(const std::string& name, 
-          const std::vector<Poco::AutoPtr<Widget> >& children = std::vector<Poco::AutoPtr<Widget> >());
-
-

-

XML Keyword

-

-
rootPanel
-
-

-

XML Attributes

-

-
    -
  • name: mandatory
  • -
-

XML Example

-

-
<rootPanel name="Test Document">
-<header>
-    <html>
-        <![CDATA[
-        [...]
-        ]]>
-    </html>
-</header>
-<children>
-    <!-- set of widgets -->
-</children>
-
-

</rootPanel>

-

Button

-

-

A standard click button, can be of type reset or submit.

-

C++ Code

-

-
Button(const std::string& text, 
-       Type t = TYPE_SUBMIT); // TYPE_RESET
-
-

-

XML Keyword

-

-
button
-
-

-

XML Attributes

-

-
    -
  • text: mandatory
  • -
  • type: optional, values = [submit|reset], default = submit
  • -
  • class: optional, when not set button is used.
  • -
-

XML Example

-

-
<button text="Click" type="submit"/>
-
-

-

HTML Code

-

-
<input class="button" id="i8" type="submit" value="Click"/>
-
-

-

CheckBox

-A CheckBox is an InputField, checkBoxes can be grouped together by assigning them identical names. Multiple selection inside a group is possible.

-

C++ Code

-

-
CheckBox(const std::string& name, const std::string& text, bool checked = false);
-
-

-

XML Keyword

-

-
checkBox
-
-

-

XML Attributes

-

-
    -
  • name: mandatory, must not be empty, must be unique inside the used form
  • -
  • checked: optional, values = [true|false], default = false
  • -
  • class: optional, when not set checkbox is used
  • -
-

-

XML Example

-

-
<checkBox id="c1" name="check" checked="true">Check This</checkBox>
-<checkBox id="c2" name="check">Check That</checkBox>
-
-

-

HTML Code

-

-
<input checked="checked" class="checkbox" id="c1" name="check" type="checkbox" value="Check This"/>Check This<br>
-<input class="checkbox" id="c2" name="check" type="checkbox" value="Check That"/>Check That
-
-

Check This
Check That

-

-

ComboBox

-A ComboBox offers a drop-down menu that can only contain labels. When created from an XML file, all children not equal to label are simply ignored. A ComboBox only allows to select one single element. If multi-selection is required, consider using a ListView. Note that a selection of -1 means nothing is selected, indices start with 0.

-

C++ Code

-

-
ComboBox(const std::string& uniqueName, 
-         const std::vector<Poco::AutoPtr<Label> >& children = std::vector<Poco::AutoPtr<Label> >(), 
-         int selected = -1);
-
-

-

XML Keyword

-

-
comboBox
-
-

-

XML Attributes

-

-
    -
  • name: mandatory
  • -
  • selected: optional, which element should be pre-selected, type = integer, default = -1
  • -
  • class: optional, when not set combobox is used
  • -
-

-

XML Example

-The following example will pre-select the 3rd label (indizes start with 0!).

-
<comboBox name="combo" select="2" id="c1">
-    <label>1st</label>
-    <label>2nd</label>
-    <label>3rd</label>
-    <label>4th</label>
-</comboBox>
-
-

-

HTML Code

-

-
<select class="combobox" id="c1" name="combo" size="1">
-    <option>1st</option>
-    <option>2nd</option>
-    <option selected="selected">3rd</option>
-    <option>4th</option>
-</select>
-
-

-

FlowPanel

-A FlowPanel stores widgets next to each other as long as the page is wide enough.

-

C++ Code

-

-
FlowPanel(const std::vector<Poco::AutoPtr<Widget> >& children = std::vector<Poco::AutoPtr<Widget> >());
-
-

-

XML Keyword

-

-
flow
-
-

-

XML Attributes

-No attributes.

-

XML Example

-

-
<flow>
-    <label>Test Label</label>
-    <label>2nd Label</label>
-    <label>3rd Label</label>
-</flow>
-
-

-

HTML Code

-

-
<a>Test Label</a><a>2nd Label</a><a>3rd Label</a>
-
-

Test Label2nd Label3rd Label

-

-

Form

-A HTML form object contains multiple other widgets, mostly InputField objects. A Form contains two urls: one allows to specify the action that should be executed e.g. the url of a CGI script, and the 2nd optional URL is a redirect to a page that should be shown after processing has finished.

-

C++ Code

-

-
Form(const Poco::URI& action, 
-     const Poco::URI& redirect, 
-     Method m = M_GET|, //M_POST
-     const std::vector<Poco::AutoPtr<Widget> >& children = std::vector<Poco::AutoPtr<Widget> >());
-
-

-

XML Keyword

-

-
form
-
-

-

XML Attributes

-

-
    -
  • action: mandatory, URL
  • -
  • redirect: optional, URL, if empty, action is used
  • -
  • method: optional, value = [get|post], default = get
  • -
-

XML Example

-

-
<form id="f1" action="/test.xml" method="post">
-    [...]
-</form>
-
-

-

-

HidablePanel

-A HidablePanel decorates a single widget with a text and a minimize button. If you want to add more than one Widget, use a StackPanel, a FlowPanel or a Table to organize these widgets, and add that single Widget. Minimizing/maximizing requires JavaScript to be enabled.

-

C++ Code

-

-
HidablePanel(Poco::AutoPtr<Widget> ptr, 
-             const Poco::URI& onImage, 
-             const Poco::URI& offImage, 
-             const std::string& text, 
-             bool inlineMode = false);
-
-

-

XML Keyword

-

-
hidablePanel 
-
-

-

XML Attributes

-

-
    -
  • on: mandatory, the URL of the image to be shown when the Widget is maximized
  • -
  • off: mandatory, the URL of the image to be shown when the Widget is minimized
  • -
  • text: mandatory, the Text to write next to the image
  • -
  • inline: optional, value=[true|false], default = false, if true we allow text to flow around the maximized element, otherwise whole page width is used
  • -
-

XML Example

-

-
<hidablePanel id="h1" on="images/on.gif" off="images/off.gif" text="Extended Settings">
-    <flow>
-        <label>First Name</label>
-        <textField id="t1" size="20" maxLength="40" name="first"/>
-    </flow>
-</hidablePanel>
-
-

-

HTML Code

-

-
function onClickh1() {
-    var child = $("hpt1");
-    var imgBut = $("hpi1");
-    if (child.style.display == "none") {
-        child.style.display = "block";
-        imgBut.src = "images/on.gif";
-    } else {
-        child.style.display = "none";
-        imgBut.src = "images/off.gif";
-    }
-}
-
-<input class="imagebutton" id="hpi1" onclick="onClickh1()" src="images/on.gif" type="image"/>Extended Settings<br/>
-<input class="textfield" id="hpt1" maxlength="40" name="first" size="20" type="text"/>
-
-

-

Extended Settings

-

HTML

-Use this class to inject raw HTML into a GUI. When defined in an XML file, wrap CDATA around the HTML code.

-

C++ Code

-

-
HTML(const std::string& txt);
-
-

-

XML Keyword

-

-
html
-
-

-

XML Attributes

-No attributes.

-

XML Example

-

-
<html>
-<![CDATA[
-    <meta name="Date" content="2005-11-15T23:31:20+01:00">
-    <meta name="Identifier"  content="http://appinf.com/html/test.htm">
-    <meta name="Language" content="de">
-]]>
-</html>
-
-

-

HyperLink

-The HyperLink object simplifies link insertion. It can contain either a label or an image as child.

-

C++ Code

-

-
HyperLink(const Poco::URI& uri, Poco::AutoPtr<Widget> ptrWidget=Poco::AutoPtr<Widget>());
-
-

-

XML Keyword

-

-
hyperLink
-
-

-

XML Attributes

-

-
    -
  • ref: mandatory, the target URL of the link.
  • -
-

XML Example

-

-
<hyperLink ref="http://pocoproject.org">
-    <image>...</image>
-</hyperLink>
-<hyperLink ref="http://pocoproject.org">
-    <label>The POCO Project</label>
-</hyperLink>
-
-

-

HTML Code

-

-
<a href="http://pocoproject.org" id="l1">The POCO Project</a>
-
-

The POCO Project

-

Image

-Used to embed an image into a web page.

-

C++ Code

-

-
Image(const Poco::URI& uri, const std::string& text, Poco::UInt32 width = 0, Poco::UInt32 height = 0);
-
-

-

XML Keyword

-

-
image
-
-

-

XML Attributes

-

-
    -
  • alt: mandatory, alternative text to display when image is not found
  • -
  • src: mandatory, URL of the image
  • -
  • width: optional, width in pixel, default = 0, if set to 0, the original size of the image is used
  • -
  • height: optional, height in pixel, default = 0, if set to 0, the original size of the image is used
  • -
  • class: optional, if not set image is used
  • -
-

XML Example

-

-
<image id="i1" alt="Micro Image" title="Micro sized Image" src="http://appinf.com/poco/images/PocoLayers.jpg" width="20" height="16"/>
-
-

-

HTML Code

-

-
<img alt="Micro Image" class="image" height="16" id="i1" src="http://appinf.com/poco/images/PocoLayers.jpg" title="Micro sized Image" width="20"/>
-
-

Micro Image

-

ImageButton

-An Imagebutton is basically a standard Button displaying an image instead of a text.

-

-

C++ Code

-

-
ImageButton(const Poco::URI& img, const std::string& alternativeText, Poco::UInt32 width = 0, Poco::UInt32 height = 0);
-
-

-

XML Keyword

-

-
imageButton
-
-

-

XML Attributes

-

-
    -
  • text: mandatory, alternative text to display when image is not found
  • -
  • img: mandatory, URL of the image
  • -
  • width: optional, width in pixel, default = 0, if set to 0, the original size of the image is used
  • -
  • height: optional, height in pixel, default = 0, if set to 0, the original size of the image is used
  • -
  • class: optional, if not set imagebutton is used
  • -
-

XML Example

-

-
<imageButton id="i1" text="Micro Image" img="http://appinf.com/poco/images/PocoLayers.jpg" width="30" height="30"/>
-
-

-

HTML Code

-

-
<input alt="Micro Image" class="imagebutton" height="30" id="i1" src="http://appinf.com/poco/images/PocoLayers.jpg" type="image" width="30"/>
-
-

-

-

Label

-Use this class to add text to your GUI.

-

C++ Code

-

-
Label(const std::string& txt);
-
-

-

XML Keyword

-

-
label
-
-

-

XML Attributes

-No attributes.

-

XML Example

-

-
<label>Hello</label>
-
-

-

HTML Code

-

-
Hello
-
-

Hello

-

ListView

-A ListView offers a scrollable list of selectable targets. As targets only labels are valid, non-labels are ignored. Multi-selection is possible. Indices start with 0.

-

C++ Code

-

-
ListView(const std::string& uniqueName, 
-         int viewSize, 
-         bool multiple, 
-         const std::vector<Poco::AutoPtr<Label> >& children = std::vector<Poco::AutoPtr<Label> >());
-
-

-

XML Keyword

-

-
listView
-
-

-

XML Attributes

-

-
    -
  • name: mandatory, the name of the ListView
  • -
  • multiple: optional, value=[true|false], default = false, determines if multiple selection is allowed
  • -
  • select: optional, a space separated list of item positions
  • -
  • size: mandatory, how many items are displayed
  • -
  • class: optional, if not set, listview is used.
  • -
-

XML Example

-

-
<listView id="v1" name="list" size="3" multiple="true" select="0 2 4">
-    <label>1st</label>
-    <label>2nd</label>
-    <label>3rd</label>
-    <label>4th</label>
-    <label>5th</label>
-    <label>6th</label>
-</listView>
-
-

-

HTML Code

-

-
<select class="listview" id="v1" multiple="multiple" name="list" size="3">
-    <option selected="selected">1st</option>
-    <option>2nd</option>
-    <option selected="selected">3rd</option>
-    <option>4th</option>
-    <option selected="selected">5th</option>
-    <option>6th</option>
-</select>
-
-

-

-

PwdField

-A text field to read passwords.

-

-

C++ Code

-

-
PwdField(const std::string& uniqueName, Poco::UInt32 size, Poco::UInt32 maxLength);
-
-

-

XML Keyword

-

-
pwdField
-
-

-

XML Attributes

-

-
    -
  • name: mandatory, the name of the PwdField
  • -
  • maxLength: optional, the maximum size of the typed in string
  • -
  • size: optional, the size of the GUI element in characters
  • -
  • class: optional, if not set, password is used.
  • -
-

XML Example

-

-
<pwdField id="i1" size="20" maxLength="40" name="pwdField"/>
-
-

-

HTML Code

-

-
<input class="password" id="i1" maxlength="40" name="pwdField" size="20" type="password"/>
-
-

-

-

RadioButton

-A RadioButton is a member of a button group. Only one can be selected of a group.

-

C++ Code

-

-
RadioButton(const std::string& group, const std::string& text, bool checked=false);
-
-

-

XML Keyword

-

-
radioButton
-
-

-

XML Attributes

-

-
    -
  • name: mandatory, must not be empty, must be unique inside the used form
  • -
  • checked: optional, values = [true|false], default = false
  • -
  • class: optional, when not set checkbox is used
  • -
-

XML Example

-

-
<radioButton id="b1" name="radio" checked="false">Click me</radioButton>
-<radioButton id="b2" name="radio" checked="true">No! Click Me!</radioButton>
-
-

-

HTML Code

-

-
<input class="radiobutton" id="b1" name="radio" type="radio" value="Click me"/>Click me<br>
-<input checked="checked" class="radiobutton" id="b2" name="radio" type="radio" value="No! Click Me!"/>No! Click Me!
-
-

-

Click me
No! Click Me!

-

-

StackPanel

-A StackPanel contains a list of Widgets which are rendered on top of each other

-

C++ Code

-

-
StackPanel(const std::vector<Poco::AutoPtr<Widget> >& children = std::vector<Poco::AutoPtr<Widget> >());
-
-

-

XML Keyword

-

-
stack
-
-

-

XML Attributes

-No attributes.

-

XML Example

-

-
<stack>
-    <label>Test Label</label>
-    <label>2nd label</label>
-    <label>3rd label</label>
-</stack>
-
-

-

-

HTML Code

-

-
Test Label<br>2nd label<br>3rd label
-
-

-

Test Label
2nd label
3rd label

-

Table

-A Table stores a matrix of Widgets. A Table must have a column size, can have a maximum row count, can have a header, a footer and a body. For each of the last three elements separate attributes can be set.

-

C++ Code

-

-
Table(Poco::UInt32 numRows, 
-      Poco::UInt32 numCols, 
-      bool tableHasFooter, 
-      bool tableHasHeader = true, 
-      Poco::UInt32 borderStrength = 0, 
-      Poco::UInt32 width = 0);
-
-

-

XML Keyword

-

-
table
-
-

-

XML Attributes

-

-
    -
  • cols: mandatory, how many columns has the table
  • -
  • rows: optional, if set will truncate/resize the table to that size
  • -
  • border: optional, size of the border around the table in pixel, default = 0
  • -
  • header: optional, value=[true|false], should the very first line of the table be treated as a header, default = true
  • -
  • footer: optional, value=[true|false], should the last line of the table be treated as a footer, default = false
  • -
  • width: optional, the width of the table in pixel, currently UNSUPPORTED
  • -
-

-

XML Example

-Note that a table consists of cells. Each cell can have a row and col index. Indices start with 0. If one of these values is not present, the last value will be taken and incremented if necessary.

-

-
<table id="i1" border="1" cols="3">
-    <cell>
-        <stack>
-            <radioButton id="i2" name="radio">Click me</radioButton>
-            <radioButton id="i3" name="radio"><![CDATA[<b>No! Click Me!</b>]]></radioButton>
-        </stack>
-    </cell>
-    <cell>
-        <stack>
-            <checkBox id="i4" name="check">Check This</checkBox>
-            <checkBox id="i5" name="check">Check That</checkBox>
-        </stack>
-    </cell>
-    <!-- the third column has no value -->
-    <cell row="1">
-        <stack>
-            <label>A Text Area</label>
-            <textArea id="i6" rows="10" cols="30" name="textArea"/>
-        </stack>    
-    </cell>
-    <cell col="2">
-        <flow>
-            <label>A Text Field:</label>
-            <textField id="i7" size="20" maxLength="40" name="textField"/>
-        </flow> 
-    </cell>
-</table>
-
-

-

-

HTML Code

-

-
<table border="1" class="table" id="i1">
-    <thead>
-        <tr>
-            <th>
-                <input class="radiobutton" id="i2" name="radio" type="radio" value="Click me"/>Click me<br>
-                <input class="radiobutton" id="i3" name="radio" type="radio" value="No! Click Me!"/>No! Click Me!
-            </th>
-            <th>
-                <input class="checkbox" id="i4" name="check" type="checkbox" value="Check This"/>Check This<br>
-                <input class="checkbox" id="i5" name="check" type="checkbox" value="Check That"/>Check That</th>
-            <th>
-                &nbsp;
-            </th>
-        </tr>
-    </thead>
-    <tbody>
-        <tr>
-            <td>
-                A Text Area<br>
-                <textarea class="textarea" cols="30" id="i6" name="textArea" rows="10"></textarea>
-            </td>
-            <td>
-                &nbsp;
-            </td>
-            <td>
-                <a>A Text Field:</a>
-                <a><input class="textfield" id="i7" maxlength="40" name="textField" size="20" type="text"/></a>
-            </td>
-        </tr>
-    </tbody>
-</table>
-
-

-

Click me
No! Click Me!
Check This
Check That
 
A Text Area
  A Text Field:

-

TextArea

-A TextArea is a multi-line text field. Note that any default text will show up in the TextArea as entered in the XML file, i.e. with line breaks and tabs.

-

-

C++ Code

-

-
TextArea(const std::string& uniqueName, 
-         Poco::UInt32 rows, 
-         Poco::UInt32 cols, 
-         const std::string& defTxt = std::string());
-
-

-

XML Keyword

-

-
textArea
-
-

-

XML Attributes

-

-
    -
  • name: mandatory
  • -
  • rows: mandatory, the width of the textfield in characters
  • -
  • cols: mandatory, the height of the textfield in characters
  • -
  • class: optional, if empty textarea will be used
  • -
-

XML Example

-

-
<textArea id="i6" rows="10" cols="30" name="textArea">default text</textArea>
-
-

-

-

HTML Code

-

-
<textarea class="textarea" cols="30" id="i6" name="textArea" rows="10">default text</textarea>
-
-

-

-

-

TextField

-A TextField is a single-line text field.

-

-

C++ Code

-

-
TextField(const std::string& uniqueName, 
-          Poco::UInt32 size, 
-          Poco::UInt32 maxLength, 
-          const std::string& defTxt = std::string());
-
-

-

XML Keyword

-

-
textField
-
-

-

XML Attributes

-

-
    -
  • name: mandatory
  • -
  • size: mandatory, the width of the textfield in characters
  • -
  • maxLength: optional, the maximum length of the string one can type
  • -
  • class: optional, if empty textfield will be used
  • -
-

XML Example

-

-
<textField id="i7" size="20" maxLength="40" name="textField">default text</textField>
-
-

-

-

HTML Code

-

-
<input class="textfield" id="i7" maxlength="40" name="textField" size="20" type="text" value="default text"/>
-
-

-

-

Registering pages at URLs

-The WebWidgets project comes with a pre-defined HTTPRequestHandlerFactory named Poco::WebWidgets::WidgetHandlerFactory. To get a WebWidgets application up and running follow these steps:

-
    -
  • create the WidgetHandlerFactory
  • -
  • load/create your widgets
  • -
  • register for events if required
  • -
  • register the widgets at the WidgetHandlerFactory
  • -
  • start a HTTPServer with the WidgetHandlerFactory
  • -
  • make sure that appinf.js is in the root dir of the server!
  • -
-

Example:

-
unsigned short port = (unsigned short) config().getInt("HTTPFormServer.port", 9980);
-
-// set-up a server socket
-ServerSocket svs(port);
-// set-up a HTTPServer instance
-Poco::URI root("/");
-
-// create the WidgetHandlerFactory
-WidgetHandlerFactory* pFac = new WidgetHandlerFactory();  
-
-// load/create your widgets
-std::ifstream in("Order.xml");
-Poco::AutoPtr<Widget> ptrWidget = XMLUtil::loadWidget(in);
-
-// register for events if required
-Poco::AutoPtr<Widget> ptrSubmitButton = ptrWidget->find("submit");
-poco_assert (ptrSubmitButton);
-ptrSubmitButton->ESingleClick += delegate(this, &MyServerApp:onOrderClicked);
-
-// register the widgets at the WidgetHandlerFactory
-pFac->addWidget(root, ptrWidget);
-HTTPServer srv(pFac, svs, new HTTPServerParams);
-// start the HTTPServer
-srv.start();
-// wait for CTRL-C or kill
-waitForTerminationRequest();
-// Stop the HTTPServer
-srv.stop();
-return Application::EXIT_OK;
-
-

-

Note that the WidgetHandlerFactory is still incomplete. At least a possibility to add ones own HTTPRequestHandler for a given URI is required!

-

-
- - - diff --git a/WebWidgets/doc/css/styles.css b/WebWidgets/doc/css/styles.css deleted file mode 100644 index 7060530ba..000000000 --- a/WebWidgets/doc/css/styles.css +++ /dev/null @@ -1 +0,0 @@ -/* * styles.css * * Style Sheet for Applied Informatics Documentation. * * Copyright (c) 2004-2006, Applied Informatics * */ body { margin-top: 0; margin-bottom: 0; margin-left: 0; margin-right: 0; color: #000000; background-color: #ffffff; } p, h1, h2, h3, h4, h5, h6, ul, ol, li, td, th, address, blockquote, strong, b, emph, i { font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, sans-serif; } p, ul, ol, address, blockquote, h6 { color: black; font-size: 9pt; line-height: 12pt; margin-top: 4px; margin-bottom: 4px; } h1 { color: black; font-size: 18pt; font-weight: normal; line-height: 22pt; margin-top: 12px; margin-right: 0; margin-bottom: 12px; } h1.namespace { font-size: 10pt; font-weight: bold; margin-top: 0px; margin-bottom: 8px; margin-left: 16px; margin-right: 16px; line-height: 10pt; background: #0076B8; color: white; } h1.template { font-size: 11pt; margin-top: 0px; margin-bottom: 0px; margin-left: 16px; margin-right: 16px; line-height: 12pt; background: #0076B8; color: white; } h1.symbol { font-size: 16pt; margin-top: 0px; margin-bottom: 0px; margin-left: 16px; margin-right: 16px; line-height: 18pt; background: #0076B8; color: white; } div.header { margin-top: 0; margin-left: 0; margin-right: 0; margin-bottom: 0; background: #0076B8; color: white; padding-top: 8px; padding-bottom: 8px; border-bottom-width: 1px; border-bottom-color: #012F50; border-bottom-style: solid; } div.body { margin-top: 16px; margin-left: 16px; margin-right: 16px; } pre { color: #111; background: #F4F4F4; font-size: 8pt; border-bottom-width: 1px; border-bottom-color: #CCCCCC; border-bottom-style: solid; padding-top: 4px; padding-bottom: 4px; } h2 { color: black; font-size: 16px; margin-top: 14px; margin-bottom: 0; } h3 { color: black; font-size: 10pt; margin-top: 10px; margin-right: 0; margin-bottom: 0px; background: #CCC; border-bottom-width: 1px; border-bottom-color: #AAA; border-bottom-style: solid; padding-left: 4px; padding-right: 4px; padding-top: 2px; padding-bottom: 2px; } h3.overview { color: black; font-size: 12pt; margin-top: 0; margin-right: 0; margin-bottom: 0px; background: white; border-bottom-width: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; padding-bottom: 0px; } h4 { color: black; font-size: 10pt; margin-top: 10px; margin-bottom: 0; } p.decl { color: black; font-size: 8pt; line-height: 10pt; margin-top: 0; margin-right: 0; margin-bottom: 0; background: #DDD; border-bottom-width: 1px; border-bottom-color: #BBB; border-bottom-style: solid; padding-left: 4px; padding-right: 4px; padding-top: 3px; padding-bottom: 3px; } p.index { font-size: 8pt; line-height: 10pt; } li { font-size: 9pt; color: #000000; margin-left: 0px; margin-bottom: 2px; } ul { padding-left: 0px; margin-left: 2em; list-style-type: disc; list-style-position: outside; list-style-image: url(../images/bullet.gif); } strong, b { font-weight: bold; } emph, i { font-style: italic; } .address { line-height: 11pt; margin-bottom: 4px; } .footer { font-size: 7pt; font-family: Verdana, Arial, Helvetica, sans-serif; text-align: left; line-height: 9pt; margin-top: 16px; margin-left: 0; margin-right: 0; margin-bottom: 10px; } a:link { color: #069; text-decoration: underline; } a:visited { color: #069; text-decoration: underline; } a:active { color: #069; text-decoration: underline; } a:hover { color: #069; text-decoration: underline; } a.namespace:link { color: white; text-decoration: none; } a.namespace:visited { color: white; text-decoration: none; } a.namespace:active { color: white; text-decoration: underline; } a.namespace:hover { color: white; text-decoration: underline; } a.class:link { color: black; text-decoration: none; } a.class:visited { color: black; text-decoration: none; } a.class:active { color: #069; text-decoration: underline; } a.class:hover { color: #069; text-decoration: underline; } a.footer:link { color: #069; text-decoration: underline; } a.footer:visited { color: #069; text-decoration: underline; } a.footer:active { color: #069; text-decoration: underline; } a.footer:hover { color: #069; text-decoration: underline; } h3.overview a:link, h3.overview a:visited { color: black; text-decoration: none; } h3.overview a:active, h3.overview a:hover { color: #069; text-decoration: none; } table.list { background-color: #0076B8; border-style: none; padding: 0px; font-size: 9pt; margin-top: 6px; } table.list th { color: #fff; font-weight: bold; text-align: left; background-color: #0076B8; } table.list td { border-style: none; padding: 4px; } table.list tr.ok { background-color: #eee; } \ No newline at end of file diff --git a/WebWidgets/doc/images/off.gif b/WebWidgets/doc/images/off.gif deleted file mode 100644 index 0bd6fca23..000000000 Binary files a/WebWidgets/doc/images/off.gif and /dev/null differ diff --git a/WebWidgets/doc/images/on.gif b/WebWidgets/doc/images/on.gif deleted file mode 100644 index 5ae238068..000000000 Binary files a/WebWidgets/doc/images/on.gif and /dev/null differ diff --git a/WebWidgets/include/Poco/WebWidgets/AbstractButton.h b/WebWidgets/include/Poco/WebWidgets/AbstractButton.h deleted file mode 100644 index ea911c858..000000000 --- a/WebWidgets/include/Poco/WebWidgets/AbstractButton.h +++ /dev/null @@ -1,100 +0,0 @@ -// -// AbstractButton.h -// -// $Id: //poco/Main/WebWidgets/include/Poco/WebWidgets/AbstractButton.h#2 $ -// -// Library: WebWidgets -// Package: WebGUI -// Module: AbstractButton -// -// Definition of the AbstractButton class. -// -// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// Permission is hereby granted, free of charge, to any person or organization -// obtaining a copy of the software and accompanying documentation covered by -// this license (the "Software") to use, reproduce, display, distribute, -// execute, and transmit the Software, and to prepare derivative works of the -// Software, and to permit third-parties to whom the Software is furnished to -// do so, all subject to the following: -// -// The copyright notices in the Software and this entire statement, including -// the above license grant, this restriction and the following disclaimer, -// must be included in all copies of the Software, in whole or in part, and -// all derivative works of the Software, unless such copies or derivative -// works are solely in the form of machine-executable object code generated by -// a source language processor. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// - - -#ifndef WebWidgets_AbstractButton_INCLUDED -#define WebWidgets_AbstractButton_INCLUDED - - -#include "Poco/WebWidgets/WebWidgets.h" -#include "Poco/WebWidgets/Widget.h" - - -namespace Poco { -namespace WebWidgets { - - -class WebWidgets_API AbstractButton: public Widget - /// An AbstractButton is the super class for all buttons. -{ -public: - static const std::string XML_TEXT; - - AbstractButton(const std::string& text); - /// Creates the AbstractButton. - - AbstractButton(const Poco::XML::Element* pElem); - /// Creates the AbstractButton from the XML element. - - virtual ~AbstractButton(); - /// Destroys the AbstractButton. - - void setText(const std::string& txt); - /// Sets the text shown on the button - - const std::string& getText() const; - /// Returns the text shown on the button - - Poco::AutoPtr find(const std::string& id) const; - -private: - std::string _text; -}; - - -inline Poco::AutoPtr AbstractButton::find(const std::string& id) const -{ - return Poco::AutoPtr(); -} - - -inline void AbstractButton::setText(const std::string& txt) -{ - _text = txt; -} - - -inline const std::string& AbstractButton::getText() const -{ - return _text; -} - - -} } // namespace Poco::WebWidgets - - -#endif // WebWidgets_AbstractButton_INCLUDED diff --git a/WebWidgets/include/Poco/WebWidgets/Button.h b/WebWidgets/include/Poco/WebWidgets/Button.h deleted file mode 100644 index e7b3b07df..000000000 --- a/WebWidgets/include/Poco/WebWidgets/Button.h +++ /dev/null @@ -1,105 +0,0 @@ -// -// Button.h -// -// $Id: //poco/Main/WebWidgets/include/Poco/WebWidgets/Button.h#2 $ -// -// Library: WebWidgets -// Package: WebGUI -// Module: Button -// -// Definition of the Button class. -// -// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// Permission is hereby granted, free of charge, to any person or organization -// obtaining a copy of the software and accompanying documentation covered by -// this license (the "Software") to use, reproduce, display, distribute, -// execute, and transmit the Software, and to prepare derivative works of the -// Software, and to permit third-parties to whom the Software is furnished to -// do so, all subject to the following: -// -// The copyright notices in the Software and this entire statement, including -// the above license grant, this restriction and the following disclaimer, -// must be included in all copies of the Software, in whole or in part, and -// all derivative works of the Software, unless such copies or derivative -// works are solely in the form of machine-executable object code generated by -// a source language processor. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// - - -#ifndef WebWidgets_Button_INCLUDED -#define WebWidgets_Button_INCLUDED - - -#include "Poco/WebWidgets/WebWidgets.h" -#include "Poco/WebWidgets/AbstractButton.h" - - -namespace Poco { -namespace WebWidgets { - - -class WebWidgets_API Button: public AbstractButton - /// A standard clickbutton. - ///