Jabber WindowGram Client (JWGC)

Introduction Screenshots Installation Downloads
Documentation Browse Source Resources Project Site

Stable Version
-none-

Latest Version
beta5



Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

JForm.c File Reference

#include <sysdep.h>
#include "include/libjwgc.h"

Go to the source code of this file.

Defines

#define SEPARATOR   "\----------------------------------------------------------------------------\n\"

Functions

xode set_filled_form (xode filledform, char *variable, char *setting)
char * get_filled_form (xode filledform, char *variable)
xode set_filled_nonform (xode filledform, char *variable, char *setting)
char * get_filled_nonform (xode filledform, char *variable)
xode display_field_text_single (xode field, xode filledform, char id)
xode display_field_text_private (xode field, xode filledform, char id)
xode display_field_text_multi (xode field, xode filledform, char id)
char * find_list_label (xode field, char *target)
char * find_list_id (xode field, int choice)
int show_list_labels (xode field)
xode display_field_list_single (xode field, xode filledform, char id)
xode display_field_list_multi (xode field, xode filledform, char id)
xode display_field_boolean (xode field, xode filledform, char id)
xode display_field_fixed (xode field, xode filledform)
xode display_field_hidden (xode field, xode filledform)
xode display_field_jid_single (xode field, xode filledform, char id)
xode display_field_jid_multi (xode field, xode filledform, char id)
xode display_field (xode field, xode filledform, char *id)
xode display_nonform_field (xode field, xode filledform, char id)
xode display_form (xode form, xode filledform)
xode edit_field_text_single (xode field, xode filledform, char *id)
xode edit_field_text_private (xode field, xode filledform, char *id)
xode edit_field_text_multi (xode field, xode filledform, char *id)
xode edit_field_list_single (xode field, xode filledform, char *id)
xode edit_field_list_multi (xode field, xode filledform, char *id)
xode edit_field_boolean (xode field, xode filledform, char *id)
xode edit_field_jid_single (xode field, xode filledform, char *id)
xode edit_field_jid_multi (xode field, xode filledform, char *id)
xode edit_form_entry (char *id, xode entry, xode filledform)
xode process_form_choice (char *choice, xode form, xode filledform)
xode edit_nonform_entry (char *id, xode entry, xode filledform)
xode process_nonform_choice (char *choice, xode form, xode filledform)
xode process_choice (char *choice, xode form, xode filledform)
xode JFormHandler (xode form)
void display_form_results (xode form)
void display_nonform_results (xode form)
void JDisplayForm (xode form)


Define Documentation

#define SEPARATOR   "\----------------------------------------------------------------------------\n\"
 

Definition at line 6 of file JForm.c.

Referenced by display_form(), display_form_results(), edit_field_boolean(), edit_field_list_single(), edit_field_text_single(), and edit_nonform_entry().


Function Documentation

xode display_field xode  field,
xode  filledform,
char *  id
 

Definition at line 382 of file JForm.c.

References display_field_boolean(), display_field_fixed(), display_field_hidden(), display_field_jid_multi(), display_field_jid_single(), display_field_list_multi(), display_field_list_single(), display_field_text_multi(), display_field_text_private(), display_field_text_single(), JFORM_FIELD_BOOLEAN, JFORM_FIELD_FIXED, JFORM_FIELD_HIDDEN, JFORM_FIELD_JID_MULTI, JFORM_FIELD_JID_SINGLE, JFORM_FIELD_LIST_MULTI, JFORM_FIELD_LIST_SINGLE, JFORM_FIELD_TEXT_MULTI, JFORM_FIELD_TEXT_PRIVATE, JFORM_FIELD_TEXT_SINGLE, xode, and xode_get_attrib().

Referenced by display_form().

00383 {
00384         char *type;
00385 
00386         type = xode_get_attrib(field, "type");
00387         if (!type) {
00388                 return filledform;
00389         }
00390 
00391         if (!strcmp(type, JFORM_FIELD_TEXT_SINGLE)) {
00392                 filledform = display_field_text_single(field, filledform, (*id)++);
00393         }
00394         else if (!strcmp(type, JFORM_FIELD_TEXT_PRIVATE)) {
00395                 filledform = display_field_text_private(field, filledform, (*id)++);
00396         }
00397         else if (!strcmp(type, JFORM_FIELD_TEXT_MULTI)) {
00398                 filledform = display_field_text_multi(field, filledform, (*id)++);
00399         }
00400         else if (!strcmp(type, JFORM_FIELD_LIST_SINGLE)) {
00401                 filledform = display_field_list_single(field, filledform, (*id)++);
00402         }
00403         else if (!strcmp(type, JFORM_FIELD_LIST_MULTI)) {
00404                 filledform = display_field_list_multi(field, filledform, (*id)++);
00405         }
00406         else if (!strcmp(type, JFORM_FIELD_BOOLEAN)) {
00407                 filledform = display_field_boolean(field, filledform, (*id)++);
00408         }
00409         else if (!strcmp(type, JFORM_FIELD_FIXED)) {
00410                 filledform = display_field_fixed(field, filledform);
00411         }
00412         else if (!strcmp(type, JFORM_FIELD_HIDDEN)) {
00413                 filledform = display_field_hidden(field, filledform);
00414         }
00415         else if (!strcmp(type, JFORM_FIELD_JID_SINGLE)) {
00416                 filledform = display_field_jid_single(field, filledform, (*id)++);
00417         }
00418         else if (!strcmp(type, JFORM_FIELD_JID_MULTI)) {
00419                 filledform = display_field_jid_multi(field, filledform, (*id)++);
00420         }
00421         else {
00422                 /* We don't know this type, fallback to TEXT_SINGLE */
00423                 filledform = display_field_text_single(field, filledform, (*id)++);
00424         }
00425 
00426         return filledform;
00427 }

xode display_field_boolean xode  field,
xode  filledform,
char  id
 

Definition at line 299 of file JForm.c.

References get_filled_form(), set_filled_form(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by display_field().

00300 {
00301         char *value, *label, *var, *setting;
00302 
00303         var = xode_get_attrib(field, "var");
00304         if (!var) {
00305                 return filledform;
00306         }
00307 
00308         label = xode_get_attrib(field, "label");
00309         value = xode_get_tagdata(field, "value");
00310         setting = get_filled_form(filledform, var);
00311         if (!setting && value) {
00312                 setting = value;
00313                 filledform = set_filled_form(filledform, var, setting);
00314         }
00315 
00316         printf("%c:  %-20.20s = %s\n",
00317                         id,
00318                         label ? label : var,
00319                         setting ?
00320                                 ((!strcmp(setting, "1")) ||
00321                                  (!strcmp(setting, "true")) ||
00322                                  (!strcmp(setting, "yes")) ? "true" : "false")
00323                                 : "<not set>");
00324 
00325         return filledform;
00326 }

xode display_field_fixed xode  field,
xode  filledform
 

Definition at line 328 of file JForm.c.

References find_list_label(), get_filled_form(), set_filled_form(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by display_field().

00329 {
00330         char *value, *label, *var, *setting;
00331 
00332         var = xode_get_attrib(field, "var");
00333         if (!var) {
00334                 return filledform;
00335         }
00336 
00337         label = xode_get_attrib(field, "label");
00338         value = xode_get_tagdata(field, "value");
00339         setting = get_filled_form(filledform, var);
00340         if (!setting && value) {
00341                 setting = value;
00342                 filledform = set_filled_form(filledform, var, setting);
00343         }
00344 
00345         setting = find_list_label(field, setting);
00346 
00347         printf("--:  %-20.20s = %s\n",
00348                         label ? label : var,
00349                         setting ? setting : "<not set>");
00350 
00351         return filledform;
00352 }

xode display_field_hidden xode  field,
xode  filledform
 

Definition at line 354 of file JForm.c.

References set_filled_form(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by display_field().

00355 {
00356         char *variable, *setting;
00357 
00358         variable = xode_get_attrib(field, "var");
00359         if (!variable) {
00360                 return filledform;
00361         }
00362 
00363         setting = xode_get_tagdata(field, "value");
00364 
00365         filledform = set_filled_form(filledform, variable, setting);
00366 
00367         return filledform;
00368 }

xode display_field_jid_multi xode  field,
xode  filledform,
char  id
 

Definition at line 376 of file JForm.c.

References display_field_text_single(), and xode.

Referenced by display_field().

00377 {
00378         /* unsupported */
00379         return display_field_text_single(field, filledform, id);
00380 }

xode display_field_jid_single xode  field,
xode  filledform,
char  id
 

Definition at line 370 of file JForm.c.

References display_field_text_single(), and xode.

Referenced by display_field().

00371 {
00372         /* unsupported */
00373         return display_field_text_single(field, filledform, id);
00374 }

xode display_field_list_multi xode  field,
xode  filledform,
char  id
 

Definition at line 293 of file JForm.c.

References display_field_text_single(), and xode.

Referenced by display_field().

00294 {
00295         /* unsupported */
00296         return display_field_text_single(field, filledform, id);
00297 }

xode display_field_list_single xode  field,
xode  filledform,
char  id
 

Definition at line 266 of file JForm.c.

References find_list_label(), get_filled_form(), set_filled_form(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by display_field().

00267 {
00268         char *value, *label, *var, *setting;
00269 
00270         var = xode_get_attrib(field, "var");
00271         if (!var) {
00272                 return filledform;
00273         }
00274 
00275         label = xode_get_attrib(field, "label");
00276         value = xode_get_tagdata(field, "value");
00277         setting = get_filled_form(filledform, var);
00278         if (!setting && value) {
00279                 setting = value;
00280                 filledform = set_filled_form(filledform, var, setting);
00281         }
00282 
00283         setting = find_list_label(field, setting);
00284 
00285         printf("%c:  %-20.20s = %s\n",
00286                         id,
00287                         label ? label : var,
00288                         setting ? setting : "<not set>");
00289 
00290         return filledform;
00291 }

xode display_field_text_multi xode  field,
xode  filledform,
char  id
 

Definition at line 180 of file JForm.c.

References display_field_text_single(), and xode.

Referenced by display_field().

00181 {
00182         /* unsupported */
00183         return display_field_text_single(field, filledform, id);
00184 }

xode display_field_text_private xode  field,
xode  filledform,
char  id
 

Definition at line 144 of file JForm.c.

References get_filled_form(), set_filled_form(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by display_field().

00145 {
00146         char *value, *label, *var, *setting, *tmpstr;
00147         int i;
00148 
00149         var = xode_get_attrib(field, "var");
00150         if (!var) {
00151                 return filledform;
00152         }
00153 
00154         label = xode_get_attrib(field, "label");
00155         value = xode_get_tagdata(field, "value");
00156         setting = get_filled_form(filledform, var);
00157         if (!setting && value) {
00158                 setting = value;
00159                 filledform = set_filled_form(filledform, var, setting);
00160         }
00161 
00162         if (setting) {
00163                 tmpstr = (char *)malloc(sizeof(char) * (strlen(setting) + 1));
00164                 for (i = 0; i < strlen(setting); i++) {
00165                         tmpstr[i] = '*';
00166                 }
00167                 tmpstr[strlen(setting)+1] = '\0';
00168         }
00169 
00170         printf("%c.  %-20.20s = %s\n",
00171                         id,
00172                         label ? label : var,
00173                         setting ? tmpstr : "<not set>");
00174 
00175         free(tmpstr);
00176 
00177         return filledform;
00178 }

xode display_field_text_single xode  field,
xode  filledform,
char  id
 

Definition at line 119 of file JForm.c.

References get_filled_form(), set_filled_form(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by display_field(), display_field_jid_multi(), display_field_jid_single(), display_field_list_multi(), and display_field_text_multi().

00120 {
00121         char *value, *label, *var, *setting;
00122 
00123         var = xode_get_attrib(field, "var");
00124         if (!var) {
00125                 return filledform;
00126         }
00127 
00128         label = xode_get_attrib(field, "label");
00129         value = xode_get_tagdata(field, "value");
00130         setting = get_filled_form(filledform, var);
00131         if (!setting && value) {
00132                 setting = value;
00133                 filledform = set_filled_form(filledform, var, setting);
00134         }
00135 
00136         printf("%c.  %-20.20s = %s\n",
00137                         id,
00138                         label ? label : var,
00139                         setting ? setting : "<not set>");
00140 
00141         return filledform;
00142 }

xode display_form xode  form,
xode  filledform
 

Definition at line 459 of file JForm.c.

References display_field(), display_nonform_field(), JFORM_FIELD, JFORM_INSTRUCTIONS, JFORM_TITLE, SEPARATOR, xode, xode_get_attrib(), xode_get_firstchild(), xode_get_name(), xode_get_nextsibling(), xode_get_tag(), and xode_get_tagdata().

Referenced by JFormHandler().

00460 {
00461         xode x;
00462         char *type = NULL;
00463         char id = 'A';
00464 
00465         x = xode_get_tag(form, "x");
00466         if (x) {
00467                 type = xode_get_attrib(x, "type");
00468         }
00469 
00470         if (type && !strcmp(type, "form")) {
00471                 xode y;
00472                 char *title, *instructions;
00473 
00474                 printf(SEPARATOR);
00475                 title = xode_get_tagdata(x, JFORM_TITLE);
00476                 if (title) {
00477                         printf("%s\n", title);
00478                 }
00479 
00480                 instructions = xode_get_tagdata(x, JFORM_INSTRUCTIONS);
00481                 if (instructions) {
00482                         printf("Instructions: %s\n", instructions);
00483                 }
00484                 printf(SEPARATOR);
00485 
00486                 y = xode_get_firstchild(x);
00487                 while (y) {
00488                         char *tag;
00489 
00490                         tag = xode_get_name(y);
00491                         if (!tag || strcmp(tag, JFORM_FIELD)) {
00492                                 y = xode_get_nextsibling(y);
00493                                 continue;
00494                         }
00495 
00496                         filledform = display_field(y, filledform, &id);
00497 
00498                         y = xode_get_nextsibling(y);
00499                 }
00500         }
00501         else {
00502                 xode y;
00503                 char *title, *instructions;
00504 
00505                 printf(SEPARATOR);
00506                 title = xode_get_tagdata(form, JFORM_TITLE);
00507                 if (title) {
00508                         printf("%s\n", title);
00509                 }
00510 
00511                 instructions = xode_get_tagdata(form, JFORM_INSTRUCTIONS);
00512                 if (instructions) {
00513                         printf("Instructions: %s\n", instructions);
00514                 }
00515                 printf(SEPARATOR);
00516 
00517                 y = xode_get_firstchild(form);
00518                 while (y) {
00519                         char *tag;
00520 
00521                         tag = xode_get_name(y);
00522                         if (!tag
00523                                  || !strcmp(tag, JFORM_INSTRUCTIONS)
00524                                  || !strcmp(tag, JFORM_TITLE)
00525                                                                 ) {
00526                                 y = xode_get_nextsibling(y);
00527                                 continue;
00528                         }
00529 
00530                         filledform = display_nonform_field(y, filledform, id++);
00531 
00532                         y = xode_get_nextsibling(y);
00533                 }
00534         }
00535 
00536         return filledform;
00537 }

void display_form_results xode  form  ) 
 

Definition at line 964 of file JForm.c.

References SEPARATOR, xode, xode_get_attrib(), xode_get_firstchild(), xode_get_nextsibling(), xode_get_tag(), xode_get_tagdata(), xode_insert_cdata(), xode_insert_tag(), and xode_new().

Referenced by JDisplayForm().

00965 {
00966         xode legend, x, item;
00967         char *title;
00968         int cnt;
00969 
00970         title = xode_get_tagdata(form, "title");
00971         printf(SEPARATOR);
00972         if (title) {
00973                 printf("%s\n", title);
00974         }
00975         else {
00976                 printf("Results\n");
00977         }
00978         printf(SEPARATOR);
00979 
00980         legend = xode_new("legend");
00981         x = xode_get_tag(form, "reported");
00982         if (x) {
00983                 x = xode_get_firstchild(x);
00984                 while (x) {
00985                         char *var, *label;
00986 
00987                         var = xode_get_attrib(x, "var");
00988                         label = xode_get_attrib(x, "label");
00989                         if (var && label) {
00990                                 xode tag;
00991 
00992                                 tag = xode_insert_tag(legend, var);
00993                                 xode_insert_cdata(tag, label, strlen(label));
00994                         }
00995                         x = xode_get_nextsibling(x);
00996                 }
00997         }
00998 
00999         cnt = 0;
01000         item = xode_get_tag(form, "item");
01001         while (item) {
01002                 xode field;
01003 
01004                 cnt++;
01005                 field = xode_get_tag(item, "field");
01006                 while (field) {
01007                         char *label, *var, *value;
01008 
01009                         var = xode_get_attrib(field, "var");
01010                         if (!var) {
01011                                 field = xode_get_nextsibling(field);
01012                                 continue;
01013                         }
01014 
01015                         label = xode_get_tagdata(legend, var);
01016                         value = xode_get_tagdata(field, "value");
01017 
01018                         printf("%-20.20s = %s\n",
01019                                 label ? label : var,
01020                                 value ? value : "");
01021                         field = xode_get_nextsibling(field);
01022                 }
01023                 item = xode_get_nextsibling(item);
01024                 printf(SEPARATOR);
01025         }
01026 
01027         printf("%d results returned.\n", cnt);
01028 }

xode display_nonform_field xode  field,
xode  filledform,
char  id
 

Definition at line 429 of file JForm.c.

References get_filled_nonform(), set_filled_form(), xode, xode_get_data(), and xode_get_name().

Referenced by display_form().

00430 {
00431         char *var, *setting, *current;
00432 
00433         var = xode_get_name(field);
00434         if (!var) {
00435                 return filledform;
00436         }
00437 
00438         if (!strcmp(var, "key")) {
00439                 setting = xode_get_data(field);
00440                 filledform = set_filled_form(filledform, var, setting);
00441         }
00442         else {
00443                 setting = xode_get_data(field);
00444                 current = get_filled_nonform(filledform, var);
00445                 if (current) {
00446                         setting = current;
00447                 }
00448 
00449                 printf("%c:  %-20.20s = %s\n",
00450                         id,
00451                         var,
00452                         setting ? setting : "<not set>");
00453         }
00454 
00455         return filledform;
00456 }

void display_nonform_results xode  form  ) 
 

Definition at line 1031 of file JForm.c.

References xode, and xode_to_prettystr().

Referenced by JDisplayForm().

01032 {
01033         printf("Non-Form results:\n%s\n", xode_to_prettystr(form));
01034 }

xode edit_field_boolean xode  field,
xode  filledform,
char *  id
 

Definition at line 657 of file JForm.c.

References get_filled_form(), NULL, SEPARATOR, set_filled_form(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by edit_form_entry().

00658 {
00659         char *name, *setting, *desc;
00660         char bfr[256];
00661 
00662         name = xode_get_attrib(field, "var");
00663         if (!name) {
00664                 return filledform;
00665         }
00666 
00667         desc = xode_get_tagdata(field, "desc");
00668 
00669         setting = get_filled_form(filledform, name);
00670 
00671         printf(SEPARATOR);
00672         printf("%s. %s: %s\n",
00673                         id,
00674                         name,
00675                         setting ?
00676                                 ((!strcmp(setting, "1")) ||
00677                                  (!strcmp(setting, "true")) ||
00678                                  (!strcmp(setting, "yes")) ? "true" : "false")
00679                                 : "<not set>");
00680         if (desc) {
00681                 printf("%s\n", desc);
00682         }
00683         printf(SEPARATOR);
00684         printf("0. false\n");
00685         printf("1. true\n");
00686         printf(SEPARATOR);
00687         printf("Enter setting: ");
00688         fflush(stdout);
00689 
00690         if (!fgets(bfr, sizeof(bfr), stdin)) {
00691                 return filledform;
00692         }
00693 
00694         bfr[strlen(bfr) - 1] = '\0';
00695 
00696         if (!strcmp(bfr, "")) {
00697                 filledform = set_filled_form(filledform, name, NULL);
00698         }
00699         else if (!strcmp(bfr, "0") || !strcmp(bfr, "false") ||
00700                                                 !strcmp(bfr, "no")) {
00701                 filledform = set_filled_form(filledform, name, "0");
00702         }
00703         else if (!strcmp(bfr, "1") || !strcmp(bfr, "true") ||
00704                                                 !strcmp(bfr, "yes")) {
00705                 filledform = set_filled_form(filledform, name, "1");
00706         }
00707         else {
00708                 printf("Illegal setting specified.\n");
00709                 return edit_field_boolean(field, filledform, id);
00710         }
00711 
00712         printf("\n");
00713 
00714         return filledform;
00715 }

xode edit_field_jid_multi xode  field,
xode  filledform,
char *  id
 

Definition at line 723 of file JForm.c.

References edit_field_text_single(), and xode.

Referenced by edit_form_entry().

00724 {
00725         /* unsupported */
00726         return edit_field_text_single(field, filledform, id);
00727 }

xode edit_field_jid_single xode  field,
xode  filledform,
char *  id
 

Definition at line 717 of file JForm.c.

References edit_field_text_single(), and xode.

Referenced by edit_form_entry().

00718 {
00719         /* unsupported */
00720         return edit_field_text_single(field, filledform, id);
00721 }

xode edit_field_list_multi xode  field,
xode  filledform,
char *  id
 

Definition at line 651 of file JForm.c.

References edit_field_text_single(), and xode.

Referenced by edit_form_entry().

00652 {
00653         /* unsupported */
00654         return edit_field_text_single(field, filledform, id);
00655 }

xode edit_field_list_single xode  field,
xode  filledform,
char *  id
 

Definition at line 595 of file JForm.c.

References get_filled_form(), NULL, SEPARATOR, set_filled_form(), show_list_labels(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by edit_form_entry().

00596 {
00597         char *name, *setting, *desc;
00598         char bfr[256];
00599         int maxid, choiceid;
00600 
00601         name = xode_get_attrib(field, "var");
00602         if (!name) {
00603                 return filledform;
00604         }
00605 
00606         desc = xode_get_tagdata(field, "desc");
00607 
00608         setting = get_filled_form(filledform, name);
00609 
00610         printf(SEPARATOR);
00611         printf("%s. %s: %s\n",
00612                         id,
00613                         name,
00614                         setting ?
00615                                 ((!strcmp(setting, "1")) ||
00616                                  (!strcmp(setting, "true")) ||
00617                                  (!strcmp(setting, "yes")) ? "true" : "false")
00618                                 : "<not set>");
00619         if (desc) {
00620                 printf("%s\n", desc);
00621         }
00622         printf(SEPARATOR);
00623         maxid = show_list_labels(field);
00624         printf(SEPARATOR);
00625         printf("Enter setting: ");
00626         fflush(stdout);
00627 
00628         if (!fgets(bfr, sizeof(bfr), stdin)) {
00629                 return filledform;
00630         }
00631 
00632         bfr[strlen(bfr) - 1] = '\0';
00633         choiceid = atoi(bfr);
00634 
00635         if (!strcmp(bfr, "")) {
00636                 filledform = set_filled_form(filledform, name, NULL);
00637         }
00638         else if (isdigit(bfr[0]) && (choiceid <= maxid) && (choiceid >= 0)) {
00639                 filledform = set_filled_form(filledform, name, bfr);
00640         }
00641         else {
00642                 printf("Illegal choice specified.\n");
00643                 return edit_field_list_single(field, filledform, id);
00644         }
00645 
00646         printf("\n");
00647 
00648         return filledform;
00649 }

xode edit_field_text_multi xode  field,
xode  filledform,
char *  id
 

Definition at line 589 of file JForm.c.

References edit_field_text_single(), and xode.

Referenced by edit_form_entry().

00590 {
00591         /* unsupported */
00592         return edit_field_text_single(field, filledform, id);
00593 }

xode edit_field_text_private xode  field,
xode  filledform,
char *  id
 

Definition at line 583 of file JForm.c.

References edit_field_text_single(), and xode.

Referenced by edit_form_entry().

00584 {
00585         /* unsupported */
00586         return edit_field_text_single(field, filledform, id);
00587 }

xode edit_field_text_single xode  field,
xode  filledform,
char *  id
 

Definition at line 539 of file JForm.c.

References get_filled_form(), NULL, SEPARATOR, set_filled_form(), xode, xode_get_attrib(), and xode_get_tagdata().

Referenced by edit_field_jid_multi(), edit_field_jid_single(), edit_field_list_multi(), edit_field_text_multi(), edit_field_text_private(), and edit_form_entry().

00540 {
00541         char *name, *setting, *desc;
00542         char bfr[256];
00543 
00544         name = xode_get_attrib(field, "var");
00545         if (!name) {
00546                 return filledform;
00547         }
00548 
00549         desc = xode_get_tagdata(field, "desc");
00550 
00551         setting = get_filled_form(filledform, name);
00552 
00553         printf(SEPARATOR);
00554         printf("%s. %s: %s\n",
00555                         id,
00556                         name,
00557                         setting ? setting : "<not set>");
00558         if (desc) {
00559                 printf("%s\n", desc);
00560         }
00561         printf(SEPARATOR);
00562         printf("Enter setting: ");
00563         fflush(stdout);
00564 
00565         if (!fgets(bfr, sizeof(bfr), stdin)) {
00566                 return filledform;
00567         }
00568 
00569         bfr[strlen(bfr) - 1] = '\0';
00570 
00571         if (!strcmp(bfr, "")) {
00572                 filledform = set_filled_form(filledform, name, NULL);
00573         }
00574         else {
00575                 filledform = set_filled_form(filledform, name, bfr);
00576         }
00577 
00578         printf("\n");
00579 
00580         return filledform;
00581 }

xode edit_form_entry char *  id,
xode  entry,
xode  filledform
 

Definition at line 730 of file JForm.c.

References edit_field_boolean(), edit_field_jid_multi(), edit_field_jid_single(), edit_field_list_multi(), edit_field_list_single(), edit_field_text_multi(), edit_field_text_private(), edit_field_text_single(), JFORM_FIELD_BOOLEAN, JFORM_FIELD_JID_MULTI, JFORM_FIELD_JID_SINGLE, JFORM_FIELD_LIST_MULTI, JFORM_FIELD_LIST_SINGLE, JFORM_FIELD_TEXT_MULTI, JFORM_FIELD_TEXT_PRIVATE, JFORM_FIELD_TEXT_SINGLE, xode, and xode_get_attrib().

Referenced by process_form_choice().

00731 {
00732         char *type;
00733 
00734         type = xode_get_attrib(entry, "type");
00735         if (!type) {
00736                 return filledform;
00737         }
00738 
00739         if (!strcmp(type, JFORM_FIELD_TEXT_SINGLE)) {
00740                 filledform = edit_field_text_single(entry, filledform, id);
00741         }
00742         else if (!strcmp(type, JFORM_FIELD_TEXT_PRIVATE)) {
00743                 filledform = edit_field_text_private(entry, filledform, id);
00744         }
00745         else if (!strcmp(type, JFORM_FIELD_TEXT_MULTI)) {
00746                 filledform = edit_field_text_multi(entry, filledform, id);
00747         }
00748         else if (!strcmp(type, JFORM_FIELD_LIST_SINGLE)) {
00749                 filledform = edit_field_list_single(entry, filledform, id);
00750         }
00751         else if (!strcmp(type, JFORM_FIELD_LIST_MULTI)) {
00752                 filledform = edit_field_list_multi(entry, filledform, id);
00753         }
00754         else if (!strcmp(type, JFORM_FIELD_BOOLEAN)) {
00755                 filledform = edit_field_boolean(entry, filledform, id);
00756         }
00757         else if (!strcmp(type, JFORM_FIELD_JID_SINGLE)) {
00758                 filledform = edit_field_jid_single(entry, filledform, id);
00759         }
00760         else if (!strcmp(type, JFORM_FIELD_JID_MULTI)) {
00761                 filledform = edit_field_jid_multi(entry, filledform, id);
00762         }
00763         else {
00764                 /* Unsupported, punt to text_single */
00765                 filledform = edit_field_text_single(entry, filledform, id);
00766         }
00767 
00768         return filledform;
00769 }

xode edit_nonform_entry char *  id,
xode  entry,
xode  filledform
 

Definition at line 802 of file JForm.c.

References get_filled_nonform(), NULL, SEPARATOR, set_filled_nonform(), xode, and xode_get_name().

Referenced by process_nonform_choice().

00803 {
00804         char *name, *setting;
00805         char bfr[256];
00806 
00807         name = xode_get_name(entry);
00808         if (!name) {
00809                 return filledform;
00810         }
00811 
00812         setting = get_filled_nonform(filledform, name);
00813 
00814         printf(SEPARATOR);
00815         printf("%s. %s: %s\n",
00816                         id,
00817                         name,
00818                         setting ? setting : "<not set>");
00819         printf(SEPARATOR);
00820         printf("Enter setting: ");
00821         fflush(stdout);
00822 
00823         if (!fgets(bfr, sizeof(bfr), stdin)) {
00824                 return filledform;
00825         }
00826 
00827         bfr[strlen(bfr) - 1] = '\0';
00828 
00829         if (!strcmp(bfr, "")) {
00830                 filledform = set_filled_nonform(filledform, name, NULL);
00831         }
00832         else {
00833                 filledform = set_filled_nonform(filledform, name, bfr);
00834         }
00835 
00836         printf("\n");
00837 
00838         return filledform;
00839 }

char* find_list_id xode  field,
int  choice
 

Definition at line 216 of file JForm.c.

References xode, xode_get_attrib(), xode_get_nextsibling(), xode_get_tag(), and xode_get_tagdata().

00217 {
00218         xode option;
00219         int id = 0;
00220 
00221         option = xode_get_tag(field, "option");
00222         while (option) {
00223                 char *label, *value;
00224 
00225                 value = xode_get_tagdata(option, "value");
00226                 if (!value) {
00227                         continue;
00228                 }
00229 
00230                 label = xode_get_attrib(option, "label");
00231 
00232                 id++;
00233                 if (id == choice) {
00234                         return (label ? label : value);
00235                 }
00236                 
00237                 option = xode_get_nextsibling(option);
00238         }
00239 
00240         return NULL;
00241 }

char* find_list_label xode  field,
char *  target
 

Definition at line 186 of file JForm.c.

References target, xode, xode_get_attrib(), xode_get_nextsibling(), xode_get_tag(), and xode_get_tagdata().

Referenced by display_field_fixed(), and display_field_list_single().

00187 {
00188         xode option;
00189         char *value;
00190 
00191         option = xode_get_tag(field, "option");
00192         while (option) {
00193                 value = xode_get_tagdata(option, "value");
00194                 if (!value) {
00195                         continue;
00196                 }
00197 
00198                 if (!strcmp(value, target)) {
00199                         char *label;
00200 
00201                         label = xode_get_attrib(option, "label");
00202                         if (label) {
00203                                 return label;
00204                         }
00205                         else {
00206                                 return target;
00207                         }
00208                 }
00209                 
00210                 option = xode_get_nextsibling(option);
00211         }
00212 
00213         return NULL;
00214 }

char* get_filled_form xode  filledform,
char *  variable
 

Definition at line 51 of file JForm.c.

References xode, xode_get_attrib(), xode_get_firstchild(), xode_get_nextsibling(), and xode_get_tagdata().

Referenced by display_field_boolean(), display_field_fixed(), display_field_list_single(), display_field_text_private(), display_field_text_single(), edit_field_boolean(), edit_field_list_single(), and edit_field_text_single().

00052 {
00053         char *value, *var;
00054         xode entry, x;
00055 
00056         if (!variable) {
00057                 return NULL;
00058         }
00059 
00060         entry = NULL;
00061         x = xode_get_firstchild(filledform);
00062         while (x) {
00063                 var = xode_get_attrib(x, "var");
00064                 if (!var) {
00065                         continue;
00066                 }
00067 
00068                 if (!strcmp(var, variable)) {
00069                         entry = x;
00070                         break;
00071                 }
00072                 
00073                 x = xode_get_nextsibling(x);
00074         }
00075 
00076         if (!entry) {
00077                 return NULL;
00078         }
00079 
00080         value = xode_get_tagdata(entry, "value");
00081         return value;
00082 }

char* get_filled_nonform xode  filledform,
char *  variable
 

Definition at line 107 of file JForm.c.

References xode, and xode_get_tagdata().

Referenced by display_nonform_field(), and edit_nonform_entry().

00108 {
00109         char *entry;
00110 
00111         if (!variable) {
00112                 return NULL;
00113         }
00114 
00115         entry = xode_get_tagdata(filledform, variable);
00116         return entry;
00117 }

void JDisplayForm xode  form  ) 
 

Definition at line 1037 of file JForm.c.

References display_form_results(), display_nonform_results(), xode, and xode_get_tag().

Referenced by jctl_on_event_handler().

01038 {
01039         xode x;
01040         char *type;
01041 
01042         x = xode_get_tag(form, "x");
01043         if (x) {
01044                 return display_form_results(x);
01045         }
01046         else {
01047                 return display_nonform_results(form);
01048         }
01049 }

xode JFormHandler xode  form  ) 
 

Definition at line 901 of file JForm.c.

References display_form(), ns, NS_DATA, process_choice(), xode, xode_get_attrib(), xode_get_tag(), xode_insert_tag(), xode_new(), and xode_put_attrib().

Referenced by jctl_on_event_handler().

00902 {
00903         xode baseform, filledform, query, x;
00904         char *ns, *type;
00905         char bfr[100];
00906 
00907         ns = xode_get_attrib(form, "xmlns");
00908         if (!ns) {
00909                 printf("Invalid form returned, no query namespace.\n");
00910                 return NULL;
00911         }
00912 
00913         baseform = xode_new("query");
00914         xode_put_attrib(baseform, "xmlns", ns);
00915 
00916         type = ns = NULL;
00917 
00918         x = xode_get_tag(form, "x");
00919         if (x) {
00920                 type = xode_get_attrib(x, "type");
00921         }
00922 
00923         if (type && !strcmp(type, "form")) {
00924                 filledform = xode_insert_tag(baseform, "x");
00925                 xode_put_attrib(filledform, "xmlns", NS_DATA);
00926                 xode_put_attrib(filledform, "type", "submit");
00927         }
00928         else {
00929                 filledform = baseform;
00930         }
00931 
00932         for (;;) {
00933                 filledform = display_form(form, filledform);
00934                 printf("\n");
00935                 printf("Enter a letter id to modify, 'submit' to submit, or 'cancel' to cancel.\n");
00936                 printf("Command: ");
00937                 fflush(stdout);
00938 
00939                 if (!fgets(bfr, sizeof(bfr), stdin)) {
00940                         break;
00941                 }
00942 
00943                 printf("\n");
00944                 bfr[strlen(bfr) - 1] = '\0';
00945 
00946                 if (!strncmp(bfr, "cancel", 6)) {
00947                         return NULL;
00948                 }
00949                 else if (!strncmp(bfr, "submit", 6)) {
00950                         break;
00951                 }
00952                 else if (strlen(bfr) > 1) {
00953                         continue;
00954                 }
00955                 else {
00956                         filledform = process_choice(bfr, form, filledform);
00957                 }
00958         }
00959 
00960         return baseform;
00961 }

xode process_choice char *  choice,
xode  form,
xode  filledform
 

Definition at line 876 of file JForm.c.

References process_form_choice(), process_nonform_choice(), xode, xode_get_attrib(), and xode_get_tag().

Referenced by JFormHandler().

00877 {
00878         xode x;
00879         char *type;
00880 
00881         if (!choice) {
00882                 return filledform;
00883         }
00884 
00885         x = xode_get_tag(form, "x");
00886         if (x) {
00887                 type = xode_get_attrib(x, "type");
00888         }
00889 
00890         if (type && !strcmp(type, "form")) {
00891                 filledform = process_form_choice(choice, x, filledform);
00892         }
00893         else {
00894                 filledform = process_nonform_choice(choice, form, filledform);
00895         }
00896 
00897         return filledform;
00898 }

xode process_form_choice char *  choice,
xode  form,
xode  filledform
 

Definition at line 772 of file JForm.c.

References edit_form_entry(), JFORM_FIELD, xode, xode_get_firstchild(), xode_get_name(), and xode_get_nextsibling().

Referenced by process_choice().

00773 {
00774         xode x, y;
00775         char id = 'A';
00776         char idstr[2];
00777         idstr[1] = '\0';
00778 
00779         x = xode_get_firstchild(form);
00780         while (x) {
00781                 char *tag;
00782 
00783                 tag = xode_get_name(x);
00784                 if (!tag || strcmp(tag, JFORM_FIELD)) {
00785                         x = xode_get_nextsibling(x);
00786                         continue;
00787                 }
00788 
00789                 idstr[0] = id++;
00790                 if (!strncasecmp(idstr, choice, 1)) {
00791                         filledform = edit_form_entry(idstr, x, filledform);
00792                         return filledform;
00793                 }
00794 
00795                 x = xode_get_nextsibling(x);
00796         }
00797 
00798         return filledform;
00799 }

xode process_nonform_choice char *  choice,
xode  form,
xode  filledform
 

Definition at line 842 of file JForm.c.

References edit_nonform_entry(), JFORM_INSTRUCTIONS, JFORM_TITLE, xode, xode_get_firstchild(), xode_get_name(), and xode_get_nextsibling().

Referenced by process_choice().

00843 {
00844         xode x;
00845         char id = 'A';
00846         char idstr[2];
00847         idstr[1] = '\0';
00848 
00849         x = xode_get_firstchild(form);
00850         while (x) {
00851                 char *tag;
00852 
00853                 tag = xode_get_name(x);
00854                 if (!tag
00855                          || !strcmp(tag, JFORM_INSTRUCTIONS)
00856                          || !strcmp(tag, JFORM_TITLE)
00857                          || !strcmp(tag, "key")
00858                                                         ) {
00859                         x = xode_get_nextsibling(x);
00860                         continue;
00861                 }
00862 
00863                 idstr[0] = id++;
00864                 if (!strncasecmp(idstr, choice, 1)) {
00865                         filledform = edit_nonform_entry(idstr, x, filledform);
00866                         return filledform;
00867                 }
00868 
00869                 x = xode_get_nextsibling(x);
00870         }
00871 
00872         return filledform;
00873 }

xode set_filled_form xode  filledform,
char *  variable,
char *  setting
 

Definition at line 10 of file JForm.c.

References xode, xode_get_attrib(), xode_get_firstchild(), xode_get_nextsibling(), xode_hide(), xode_insert_cdata(), xode_insert_tag(), and xode_put_attrib().

Referenced by display_field_boolean(), display_field_fixed(), display_field_hidden(), display_field_list_single(), display_field_text_private(), display_field_text_single(), display_nonform_field(), edit_field_boolean(), edit_field_list_single(), and edit_field_text_single().

00011 {
00012         xode x, entry, value;
00013         char *var;
00014 
00015         if (!variable) {
00016                 return filledform;
00017         }
00018 
00019         entry = NULL;
00020         x = xode_get_firstchild(filledform);
00021         while (x) {
00022                 var = xode_get_attrib(x, "var");
00023                 if (!var) {
00024                         continue;
00025                 }
00026 
00027                 if (!strcmp(var, variable)) {
00028                         entry = x;
00029                         break;
00030                 }
00031                 
00032                 x = xode_get_nextsibling(x);
00033         }
00034 
00035         if (entry) {
00036                 xode_hide(entry);
00037         }
00038 
00039         if (!setting) {
00040                 return filledform;
00041         }
00042 
00043         entry = xode_insert_tag(filledform, "field");
00044         xode_put_attrib(entry, "var", variable);
00045         value = xode_insert_tag(entry, "value");
00046         xode_insert_cdata(value, setting, strlen(setting));
00047 
00048         return filledform;
00049 }

xode set_filled_nonform xode  filledform,
char *  variable,
char *  setting
 

Definition at line 84 of file JForm.c.

References xode, xode_get_tag(), xode_hide(), xode_insert_cdata(), and xode_insert_tag().

Referenced by edit_nonform_entry().

00085 {
00086         xode entry;
00087 
00088         if (!variable) {
00089                 return filledform;
00090         }
00091 
00092         entry = xode_get_tag(filledform, variable);
00093         if (entry) {
00094                 xode_hide(entry);
00095         }
00096 
00097         if (!setting) {
00098                 return filledform;
00099         }
00100 
00101         entry = xode_insert_tag(filledform, variable);
00102         xode_insert_cdata(entry, setting, strlen(setting));
00103 
00104         return filledform;
00105 }

int show_list_labels xode  field  ) 
 

Definition at line 243 of file JForm.c.

References xode, xode_get_attrib(), xode_get_nextsibling(), xode_get_tag(), and xode_get_tagdata().

Referenced by edit_field_list_single().

00244 {
00245         xode option;
00246         int id = 0;
00247 
00248         option = xode_get_tag(field, "option");
00249         while (option) {
00250                 char *label, *value;
00251 
00252                 value = xode_get_tagdata(option, "value");
00253                 if (!value) {
00254                         continue;
00255                 }
00256 
00257                 label = xode_get_attrib(option, "label");
00258                 printf("%d. %s\n", id++, label ? label : value);
00259                 
00260                 option = xode_get_nextsibling(option);
00261         }
00262 
00263         return --id;
00264 }



Last updated at Tue Dec 18 21:07:42 PST 2007. This site and project hosted by...SourceForge.net Logo

Source Perspective by Fisheye