diff options
-rw-r--r-- | server/src/macro.h | 6 | ||||
-rw-r--r-- | server/src/macro_parser.cc | 26 | ||||
-rw-r--r-- | server/src/server.cc | 16 | ||||
-rw-r--r-- | server/xml/commit.xml | 6 | ||||
-rw-r--r-- | server/xml/example.xml | 20 | ||||
-rw-r--r-- | server/xml/request.xml | 4 |
6 files changed, 51 insertions, 27 deletions
diff --git a/server/src/macro.h b/server/src/macro.h index 2252d90..9d4692f 100644 --- a/server/src/macro.h +++ b/server/src/macro.h @@ -29,13 +29,17 @@ #include <string> #include <vector> +#include <map> +/* class WidgetProperty { public: std::string name; std::string value; }; -typedef std::vector< WidgetProperty > WidgetPropertyList; +*/ +//typedef std::vector< WidgetProperty > WidgetPropertyList; +typedef std::map< std::string, std::string > WidgetPropertyList; class Widget; typedef std::vector< Widget > WidgetList; diff --git a/server/src/macro_parser.cc b/server/src/macro_parser.cc index 62c74ca..9161613 100644 --- a/server/src/macro_parser.cc +++ b/server/src/macro_parser.cc @@ -70,13 +70,6 @@ static void start_hndl(void *p, const char *el, const char **attr) // Do something reasonable with them... - if(name == "macro") { - // printf("Macro %s %s\n", attributes["name"].c_str(), attributes["resume"].c_str()); - parser->macro->name = attributes["name"]; - parser->macro->format = attributes["resume"]; - // return; - } - if(name == "include") { Macro inc; @@ -91,6 +84,15 @@ static void start_hndl(void *p, const char *el, const char **attr) return; // Don't do further parsing of this tag. } + if(name == "macro") { + + parser->macro->name = attributes["name"]; + parser->macro->version = attributes["version"]; + parser->macro->format = attributes["resume"]; + + return; // Don't do further parsing of this tag. + } + Widget widget; widget.type = name; @@ -107,11 +109,11 @@ static void start_hndl(void *p, const char *el, const char **attr) std::map< std::string, std::string >::iterator i = attributes.begin(); while(i != attributes.end()) { - WidgetProperty prop; - prop.name = i->first; - prop.value = i->second; - - wp->properties.push_back(prop); + // WidgetProperty prop; + // prop.name = i->first; + // prop.value = i->second; + // wp->properties.push_back(prop); + wp->properties[i->first] = i->second; i++; } diff --git a/server/src/server.cc b/server/src/server.cc index c88de4d..2a4c882 100644 --- a/server/src/server.cc +++ b/server/src/server.cc @@ -57,10 +57,15 @@ static void send_macro_widget(Widget &widget, TCPSocket &socket, std::string tab socket.write(tabs + "<" + widget.type); WidgetPropertyList::iterator p = widget.properties.begin(); while(p != widget.properties.end()) { - WidgetProperty &property = *p; - socket.write(" " + property.name + "=\"" + property.value + "\""); + socket.write(" " + p->first + "=\"" + p->second + "\""); p++; } + + if(widget.widgets.size() == 0) { // If node is empty, use short tag form + socket.write("/>\n"); + return; + } + socket.write(">\n"); WidgetList::iterator w = widget.widgets.begin(); @@ -91,11 +96,14 @@ static void connection(TCPSocket &socket) Macro macro; parse_macro(request.macro, macro); + socket.write(" <macro version=\"" + macro.version + "\" name=\"" + + macro.name + "\" resume=\"" + macro.format + "\">\n"); WidgetList::iterator w = macro.widgets.begin(); while(w != macro.widgets.end()) { - send_macro_widget(*w, socket, " "); + send_macro_widget(*w, socket, " "); w++; } + socket.write(" </macro>\n"); printf("done.\n"); @@ -125,8 +133,6 @@ static void connection(TCPSocket &socket) journal_commit_addr.c_str(), journal_commit_port, resume.c_str(), resume.length()); - // printf(resume.c_str()); - i++; } } diff --git a/server/xml/commit.xml b/server/xml/commit.xml new file mode 100644 index 0000000..0e9ff86 --- /dev/null +++ b/server/xml/commit.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<commit name="test_macro" cpr="1505050505" version="1.0"> + <field name="visus_subjective" value="2.85"/> + <field name="visus_objective" value="2.91"/> + <field name="eye" value="osin"/> +</commit> diff --git a/server/xml/example.xml b/server/xml/example.xml index 3273d71..b9974a8 100644 --- a/server/xml/example.xml +++ b/server/xml/example.xml @@ -8,37 +8,37 @@ layout="vbox"> <include name="patient"/> <frame name="spl_frame" caption="Spl:" layout="vbox"> - <lineedit name="spl_note" regexp=".*" value="På begge sider alderssvarende forhold. Der er let katarakt, som dog ikke er operationskrævende."/> + <lineedit name="spl_note" regexp=".*" value="På begge sider alderssvarende forhold. Der er let katarakt, som dog ikke er operationskrævende." help="Hjælpenisse"/> </frame> <frame name="linse_frame" caption="Linser:" layout="vbox"> <frame name="linse_framea" layout="hbox"> <label name="a" width="300" caption="Linse1 er en lidt længere streng end de to andre:"/> - <lineedit name="linse1" regexp="[0-9]{1,3}D" value="90K"/> + <lineedit name="linse1" regexp="[0-9]{1,3}D" value="90K" help="Hjælpenisse"/> </frame> <frame name="linse_frameb" layout="hbox"> <label name="b" width="300" caption="Linse2:"/> - <lineedit name="linse2" regexp="[0-9]{1,3}D" value="90D"/> + <lineedit name="linse2" regexp="[0-9]{1,3}D" value="90D" help="Hjælpenisse"/> </frame> <frame name="linse_framec" layout="hbox"> <label name="c" width="300" caption="Linse3:"/> - <lineedit name="linse3" regexp="[0-9]{1,3}D" value="90D"/> + <lineedit name="linse3" regexp="[0-9]{1,3}D" value="90D" help="Hjælpenisse"/> </frame> </frame> <frame name="swelling_frame" layout="hbox"> <label name="swelling" caption="Der findes central hævelse med:"/> <frame name="swelling_radios" layout="hbox"> - <radiobuttons name="radio" value="" layout="vbox"> + <radiobuttons name="radio" value="" layout="vbox" help="Hjælpenisse"> <item caption="Radio Randblødning" value="rand"/> <item caption="Radio Exsudater" value="exsudater"/> <item caption="Radio Blahblah" value="blabla"/> </radiobuttons> - <combobox name="combo" value="fiskesuppe"> + <combobox name="combo" value="fiskesuppe" help="Hjælpenisse"> <item caption="Combo Randblødning" value="rand"/> <item caption="Combo Exsudater" value="exsudater"/> <item caption="Combo Blahblah" value="blabla"/> <item caption="Combo Blahblah" value="fisk"/> </combobox> - <listbox name="list" value="exsudate"> + <listbox name="list" value="exsudate" help="Hjælpenisse"> <item caption="List Randblødning" value="rand"/> <item caption="List Exsudater" value="exsudater"/> <item caption="List Blahblah" value="blabla"/> @@ -46,8 +46,10 @@ </frame> </frame> <frame name="buttons" layout="hbox"> - <button name="cancel" caption="Annuller" action="cancel"/> - <button name="commit" caption="Godkend" action="commit"/> + <lineedit name="next_macro" regexp="[a-z_]+[a-z_0-9]*" value="example"/> + <button name="cancel" caption="Annuller" action="cancel" help="Hjælpenisse"/> + <button name="continue" caption="Fortsæt" action="continue" field="next_macro" help="Hjælpenisse"/> + <button name="commit" caption="Godkend" action="commit" help="Hjælpenisse"/> </frame> </window> </macro> diff --git a/server/xml/request.xml b/server/xml/request.xml new file mode 100644 index 0000000..369d5ea --- /dev/null +++ b/server/xml/request.xml @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<request cpr="1505050505" version="1.0"> + <macro name="example"/> +</request> |