1 /* 2 * This file is part of the DOM implementation for KDE. 3 * 4 * Copyright 1999 Lars Knoll (knoll@kde.org) 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Library General Public 8 * License as published by the Free Software Foundation; either 9 * version 2 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Library General Public License for more details. 15 * 16 * You should have received a copy of the GNU Library General Public License 17 * along with this library; see the file COPYING.LIB. If not, write to 18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 19 * Boston, MA 02110-1301, USA. 20 * 21 * This file includes excerpts from the Document Object Model (DOM) 22 * Level 1 Specification (Recommendation) 23 * https://www.w3.org/TR/REC-DOM-Level-1/ 24 * Copyright © World Wide Web Consortium , (Massachusetts Institute of 25 * Technology , Institut National de Recherche en Informatique et en 26 * Automatique , Keio University ). All Rights Reserved. 27 * 28 */ 29 #ifndef HTML_FORM_H 30 #define HTML_FORM_H 31 32 // -------------------------------------------------------------------------- 33 #include <dom/html_element.h> 34 #include <dom/html_misc.h> 35 36 namespace DOM 37 { 38 39 class HTMLButtonElementImpl; 40 class HTMLFormElement; 41 class DOMString; 42 43 /** 44 * Push button. See the <a 45 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-BUTTON"> 46 * BUTTON element definition </a> in HTML 4.0. 47 * 48 */ 49 class KHTML_EXPORT HTMLButtonElement : public HTMLElement 50 { 51 public: 52 HTMLButtonElement(); 53 HTMLButtonElement(const HTMLButtonElement &other); HTMLButtonElement(const Node & other)54 HTMLButtonElement(const Node &other) : HTMLElement() 55 { 56 (*this) = other; 57 } 58 protected: 59 HTMLButtonElement(HTMLButtonElementImpl *impl); 60 public: 61 62 HTMLButtonElement &operator = (const HTMLButtonElement &other); 63 HTMLButtonElement &operator = (const Node &other); 64 65 ~HTMLButtonElement(); 66 67 /** 68 * Returns the \c FORM element containing this 69 * control. Returns null if this control is not within the context 70 * of a form. 71 * 72 */ 73 HTMLFormElement form() const; 74 75 /** 76 * A single character access key to give access to the form 77 * control. See the <a 78 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-accesskey"> 79 * accesskey attribute definition </a> in HTML 4.0. 80 * 81 */ 82 DOMString accessKey() const; 83 84 /** 85 * see accessKey 86 */ 87 void setAccessKey(const DOMString &); 88 89 /** 90 * The control is unavailable in this context. See the <a 91 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-disabled"> 92 * disabled attribute definition </a> in HTML 4.0. 93 * 94 */ 95 bool disabled() const; 96 97 /** 98 * see disabled 99 */ 100 void setDisabled(bool); 101 102 /** 103 * Form control or object name when submitted with a form. See the 104 * <a 105 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-name-BUTTON"> 106 * name attribute definition </a> in HTML 4.0. 107 * 108 */ 109 DOMString name() const; 110 111 /** 112 * see name 113 */ 114 void setName(const DOMString &); 115 116 /** 117 * Index that represents the element's position in the tabbing 118 * order. See the <a 119 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-tabindex"> 120 * tabindex attribute definition </a> in HTML 4.0. 121 * 122 */ 123 long tabIndex() const; 124 125 /** 126 * see tabIndex 127 */ 128 void setTabIndex(long); 129 130 /** 131 * The type of button. See the <a 132 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-type-BUTTON"> 133 * type attribute definition </a> in HTML 4.0. 134 * 135 */ 136 DOMString type() const; 137 138 /** 139 * The current form control value. See the <a 140 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-value-BUTTON"> 141 * value attribute definition </a> in HTML 4.0. 142 * 143 */ 144 DOMString value() const; 145 146 /** 147 * see value 148 */ 149 void setValue(const DOMString &); 150 151 /** 152 * Removes keyboard focus from this element. 153 * 154 */ 155 void blur(); 156 157 /** 158 * Gives keyboard focus to this element. 159 * 160 */ 161 void focus(); 162 }; 163 164 // -------------------------------------------------------------------------- 165 166 class HTMLFieldSetElementImpl; 167 /** 168 * Organizes form controls into logical groups. See the <a 169 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-FIELDSET"> 170 * FIELDSET element definition </a> in HTML 4.0. 171 * 172 */ 173 class KHTML_EXPORT HTMLFieldSetElement : public HTMLElement 174 { 175 public: 176 HTMLFieldSetElement(); 177 HTMLFieldSetElement(const HTMLFieldSetElement &other); HTMLFieldSetElement(const Node & other)178 HTMLFieldSetElement(const Node &other) : HTMLElement() 179 { 180 (*this) = other; 181 } 182 protected: 183 HTMLFieldSetElement(HTMLFieldSetElementImpl *impl); 184 public: 185 186 HTMLFieldSetElement &operator = (const HTMLFieldSetElement &other); 187 HTMLFieldSetElement &operator = (const Node &other); 188 189 ~HTMLFieldSetElement(); 190 191 // TODO: deprecate/remove? 192 HTMLFormElement form() const; 193 }; 194 195 // -------------------------------------------------------------------------- 196 197 class HTMLFormElementImpl; 198 /** 199 * The \c FORM element encompasses behavior similar to a 200 * collection and an element. It provides direct access to the 201 * contained input elements as well as the attributes of the form 202 * element. See the <a 203 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-FORM"> 204 * FORM element definition </a> in HTML 4.0. 205 * 206 */ 207 class KHTML_EXPORT HTMLFormElement : public HTMLElement 208 { 209 friend class HTMLButtonElement; 210 friend class HTMLFieldSetElement; 211 friend class HTMLInputElement; 212 friend class HTMLLabelElement; 213 friend class HTMLLegendElement; 214 friend class HTMLSelectElement; 215 friend class HTMLTextAreaElement; 216 friend class HTMLOptionElement; 217 friend class HTMLIsIndexElement; 218 friend class HTMLObjectElement; 219 220 public: 221 HTMLFormElement(); 222 HTMLFormElement(const HTMLFormElement &other); HTMLFormElement(const Node & other)223 HTMLFormElement(const Node &other) : HTMLElement() 224 { 225 (*this) = other; 226 } 227 protected: 228 HTMLFormElement(HTMLFormElementImpl *impl); 229 public: 230 231 HTMLFormElement &operator = (const HTMLFormElement &other); 232 HTMLFormElement &operator = (const Node &other); 233 234 ~HTMLFormElement(); 235 236 /** 237 * Returns a collection of all control elements in the form. 238 * 239 */ 240 HTMLCollection elements() const; 241 242 /** 243 * The number of form controls in the form. 244 * 245 */ 246 long length() const; 247 248 /** 249 * Names the form. 250 * 251 */ 252 DOMString name() const; 253 254 /** 255 * see name 256 */ 257 void setName(const DOMString &); 258 259 /** 260 * List of character sets supported by the server. See the <a 261 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-accept-charset"> 262 * accept-charset attribute definition </a> in HTML 4.0. 263 * 264 */ 265 DOMString acceptCharset() const; 266 267 /** 268 * see acceptCharset 269 */ 270 void setAcceptCharset(const DOMString &); 271 272 /** 273 * Server-side form handler. See the <a 274 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-action"> 275 * action attribute definition </a> in HTML 4.0. 276 * 277 */ 278 DOMString action() const; 279 280 /** 281 * see action 282 */ 283 void setAction(const DOMString &); 284 285 /** 286 * The content type of the submitted form, generally 287 * "application/x-www-form-urlencoded". See the <a 288 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-enctype"> 289 * enctype attribute definition </a> in HTML 4.0. 290 * 291 */ 292 DOMString enctype() const; 293 294 /** 295 * see enctype 296 */ 297 void setEnctype(const DOMString &); 298 299 /** 300 * HTTP method used to submit form. See the <a 301 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-method"> 302 * method attribute definition </a> in HTML 4.0. 303 * 304 */ 305 DOMString method() const; 306 307 /** 308 * see method 309 */ 310 void setMethod(const DOMString &); 311 312 /** 313 * Frame to render the resource in. See the <a 314 * href="https://www.w3.org/TR/REC-html40/present/frames.html#adef-target"> 315 * target attribute definition </a> in HTML 4.0. 316 * 317 */ 318 DOMString target() const; 319 320 /** 321 * see target 322 */ 323 void setTarget(const DOMString &); 324 325 /** 326 * Submits the form. It performs the same action as a submit 327 * button. 328 * 329 */ 330 void submit(); 331 332 /** 333 * Restores a form element's default values. It performs the same 334 * action as a reset button. 335 * 336 */ 337 void reset(); 338 }; 339 340 // -------------------------------------------------------------------------- 341 342 class HTMLInputElementImpl; 343 /** 344 * Form control. Note. Depending upon the environment the page is 345 * being viewed, the value property may be read-only for the file 346 * upload input type. For the "password" input type, the actual value 347 * returned may be masked to prevent unauthorized use. See the <a 348 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-INPUT"> 349 * INPUT element definition </a> in HTML 4.0. 350 * 351 */ 352 class KHTML_EXPORT HTMLInputElement : public HTMLElement 353 { 354 public: 355 HTMLInputElement(); 356 HTMLInputElement(const HTMLInputElement &other); HTMLInputElement(const Node & other)357 HTMLInputElement(const Node &other) : HTMLElement() 358 { 359 (*this) = other; 360 } 361 protected: 362 HTMLInputElement(HTMLInputElementImpl *impl); 363 public: 364 365 HTMLInputElement &operator = (const HTMLInputElement &other); 366 HTMLInputElement &operator = (const Node &other); 367 368 ~HTMLInputElement(); 369 370 /** 371 * Stores the initial control value (i.e., the initial value of 372 * \c value ). 373 * 374 */ 375 DOMString defaultValue() const; 376 377 /** 378 * see defaultValue 379 */ 380 void setDefaultValue(const DOMString &); 381 382 /** 383 * When \c type has the value "Radio" or "Checkbox", 384 * stores the initial value of the \c checked 385 * attribute. 386 * 387 */ 388 bool defaultChecked() const; 389 390 /** 391 * see defaultChecked 392 */ 393 void setDefaultChecked(bool); 394 395 // TODO: deprecate/remove? 396 HTMLFormElement form() const; 397 398 /** 399 * A comma-separated list of content types that a server 400 * processing this form will handle correctly. See the <a 401 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-accept"> 402 * accept attribute definition </a> in HTML 4.0. 403 * 404 */ 405 DOMString accept() const; 406 407 /** 408 * see accept 409 */ 410 void setAccept(const DOMString &); 411 412 /** 413 * A single character access key to give access to the form 414 * control. See the <a 415 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-accesskey"> 416 * accesskey attribute definition </a> in HTML 4.0. 417 * 418 */ 419 DOMString accessKey() const; 420 421 /** 422 * see accessKey 423 */ 424 void setAccessKey(const DOMString &); 425 426 /** 427 * Aligns this object (vertically or horizontally) with respect to 428 * its surrounding text. See the <a 429 * href="https://www.w3.org/TR/REC-html40/struct/objects.html#adef-align-IMG"> 430 * align attribute definition </a> in HTML 4.0. This attribute is 431 * deprecated in HTML 4.0. 432 * 433 */ 434 DOMString align() const; 435 436 /** 437 * see align 438 */ 439 void setAlign(const DOMString &); 440 441 /** 442 * Alternate text for user agents not rendering the normal content 443 * of this element. See the <a 444 * href="https://www.w3.org/TR/REC-html40/struct/objects.html#adef-alt"> 445 * alt attribute definition </a> in HTML 4.0. 446 * 447 */ 448 DOMString alt() const; 449 450 /** 451 * see alt 452 */ 453 void setAlt(const DOMString &); 454 455 /** 456 * Describes whether a radio or check box is checked, when 457 * \c type has the value "Radio" or "Checkbox". The value is 458 * true if explicitly set. Represents the current state of the 459 * checkbox or radio button. See the <a 460 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-checked"> 461 * checked attribute definition </a> in HTML 4.0. 462 * 463 */ 464 bool checked() const; 465 466 /** 467 * see checked 468 */ 469 void setChecked(bool); 470 471 /** 472 * Describes whether a radio box is indeterminate 473 */ 474 bool indeterminate() const; 475 476 /** 477 * see indeterminate 478 */ 479 void setIndeterminate(bool); 480 481 /** 482 * The control is unavailable in this context. See the <a 483 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-disabled"> 484 * disabled attribute definition </a> in HTML 4.0. 485 * 486 */ 487 bool disabled() const; 488 489 /** 490 * see disabled 491 */ 492 void setDisabled(bool); 493 494 /** 495 * Maximum number of characters for text fields, when \c type 496 * has the value "Text" or "Password". See the <a 497 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-maxlength"> 498 * maxlength attribute definition </a> in HTML 4.0. 499 * 500 */ 501 long maxLength() const; 502 503 /** 504 * see maxLength 505 */ 506 void setMaxLength(long); 507 508 /** 509 * Form control or object name when submitted with a form. See the 510 * <a 511 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-name-INPUT"> 512 * name attribute definition </a> in HTML 4.0. 513 * 514 */ 515 DOMString name() const; 516 517 /** 518 * see name 519 */ 520 void setName(const DOMString &); 521 522 /** 523 * This control is read-only. When \c type has the 524 * value "text" or "password" only. See the <a 525 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-readonly"> 526 * readonly attribute definition </a> in HTML 4.0. 527 * 528 */ 529 bool readOnly() const; 530 531 // ### remove in 4.0 532 /** 533 * see readOnly 534 */ 535 void setReadOnly(bool); 536 537 /** 538 * @deprecated 539 */ 540 #ifndef KHTML_NO_DEPRECATED 541 KHTML_DEPRECATED DOMString size() const; 542 #endif 543 544 /** 545 * @deprecated 546 */ 547 #ifndef KHTML_NO_DEPRECATED 548 KHTML_DEPRECATED void setSize(const DOMString &); 549 #endif 550 551 /** 552 * Size information. The precise meaning is specific to each type 553 * of field. See the <a 554 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-size-INPUT"> 555 * size attribute definition </a> in HTML 4.0. 556 * 557 */ 558 long getSize() const; 559 560 /** 561 * see getSize 562 */ 563 void setSize(long); 564 565 /** 566 * When the \c type attribute has the value "Image", 567 * this attribute specifies the location of the image to be used 568 * to decorate the graphical submit button. See the <a 569 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-src"> 570 * src attribute definition </a> in HTML 4.0. 571 * 572 */ 573 DOMString src() const; 574 575 /** 576 * see src 577 */ 578 void setSrc(const DOMString &); 579 580 /** 581 * Index that represents the element's position in the tabbing 582 * order. See the <a 583 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-tabindex"> 584 * tabindex attribute definition </a> in HTML 4.0. 585 * 586 */ 587 long tabIndex() const; 588 589 /** 590 * see tabIndex 591 */ 592 void setTabIndex(long); 593 594 /** 595 * The type of control created. See the <a 596 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-type-INPUT"> 597 * type attribute definition </a> in HTML 4.0. 598 * 599 */ 600 DOMString type() const; 601 602 /** 603 * see type 604 */ 605 void setType(const DOMString &); 606 607 /** 608 * Use client-side image map. See the <a 609 * href="https://www.w3.org/TR/REC-html40/struct/objects.html#adef-usemap"> 610 * usemap attribute definition </a> in HTML 4.0. 611 * 612 */ 613 DOMString useMap() const; 614 615 /** 616 * see useMap 617 */ 618 void setUseMap(const DOMString &); 619 620 /** 621 * The current form control value. Used for radio buttons and 622 * check boxes. See the <a 623 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-value-INPUT"> 624 * value attribute definition </a> in HTML 4.0. 625 * 626 */ 627 DOMString value() const; 628 629 /** 630 * see value 631 */ 632 void setValue(const DOMString &); 633 634 /** 635 * Removes keyboard focus from this element. 636 * 637 */ 638 void blur(); 639 640 /** 641 * Gives keyboard focus to this element. 642 * 643 */ 644 void focus(); 645 646 /** 647 * Select the contents of the text area. For \c INPUT 648 * elements whose \c type attribute has one of the 649 * following values: "Text", "File", or "Password". 650 * 651 */ 652 void select(); 653 654 /** 655 * Simulate a mouse-click. For \c INPUT elements whose 656 * \c type attribute has one of the following values: 657 * "Button", "Checkbox", "Radio", "Reset", or "Submit". 658 */ 659 void click(); 660 661 /** 662 * Returns the character offset of beginning of selection, or if none, 663 * the cursor position. 664 * This operation is only supported if the type of this element is text; 665 * otherwise -1 is returned. 666 * NOTE: this method is not part of the DOM, but a Mozilla extension 667 */ 668 long selectionStart(); 669 670 /** 671 * Move the beginning of the selection to the given offset in text 672 * This call has no effect if the type of this input element isn't text 673 * NOTE: this method is not part of the DOM, but a Mozilla extension 674 */ 675 void setSelectionStart(long offset); 676 677 /** 678 * Returns the character offset of end of selection, or if none, 679 * the cursor position. 680 * This operation is only supported if the type of this element is text; 681 * otherwise -1 is returned. 682 * NOTE: this method is not part of the DOM, but a Mozilla extension 683 */ 684 long selectionEnd(); 685 686 /** 687 * Move the end of the selection (and the cursor) to the given offset in text 688 * This call has no effect if the type of this input element isn't text 689 * NOTE: this method is not part of the DOM, but a Mozilla extension 690 */ 691 void setSelectionEnd(long offset); 692 693 /** 694 * Makes the position span from start to end, and positions the cursor after the selection. 695 * This call has no effect if the type of this input element isn't text or if it is not rendered. 696 * NOTE: this method is not part of the DOM, but a Mozilla extension 697 */ 698 void setSelectionRange(long start, long end); 699 700 }; 701 702 // -------------------------------------------------------------------------- 703 704 class HTMLLabelElementImpl; 705 /** 706 * Form field label text. See the <a 707 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-LABEL"> 708 * LABEL element definition </a> in HTML 4.0. 709 * 710 */ 711 class KHTML_EXPORT HTMLLabelElement : public HTMLElement 712 { 713 public: 714 HTMLLabelElement(); 715 HTMLLabelElement(const HTMLLabelElement &other); HTMLLabelElement(const Node & other)716 HTMLLabelElement(const Node &other) : HTMLElement() 717 { 718 (*this) = other; 719 } 720 protected: 721 HTMLLabelElement(HTMLLabelElementImpl *impl); 722 public: 723 724 HTMLLabelElement &operator = (const HTMLLabelElement &other); 725 HTMLLabelElement &operator = (const Node &other); 726 727 ~HTMLLabelElement(); 728 729 /** 730 * A single character access key to give access to the form 731 * control. See the <a 732 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-accesskey"> 733 * accesskey attribute definition </a> in HTML 4.0. 734 * 735 */ 736 DOMString accessKey() const; 737 738 /** 739 * see accessKey 740 */ 741 void setAccessKey(const DOMString &); 742 743 /** 744 * This attribute links this label with another form control by 745 * \c id attribute. See the <a 746 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-for"> 747 * for attribute definition </a> in HTML 4.0. 748 * 749 */ 750 DOMString htmlFor() const; 751 752 /** 753 * see htmlFor 754 */ 755 void setHtmlFor(const DOMString &); 756 }; 757 758 // -------------------------------------------------------------------------- 759 760 class HTMLLegendElementImpl; 761 /** 762 * Provides a caption for a \c FIELDSET grouping. See the 763 * <a 764 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-LEGEND"> 765 * LEGEND element definition </a> in HTML 4.0. 766 * 767 */ 768 class KHTML_EXPORT HTMLLegendElement : public HTMLElement 769 { 770 public: 771 HTMLLegendElement(); 772 HTMLLegendElement(const HTMLLegendElement &other); HTMLLegendElement(const Node & other)773 HTMLLegendElement(const Node &other) : HTMLElement() 774 { 775 (*this) = other; 776 } 777 protected: 778 HTMLLegendElement(HTMLLegendElementImpl *impl); 779 public: 780 781 HTMLLegendElement &operator = (const HTMLLegendElement &other); 782 HTMLLegendElement &operator = (const Node &other); 783 784 ~HTMLLegendElement(); 785 786 // TODO: deprecate/remove? 787 HTMLFormElement form() const; 788 789 /** 790 * A single character access key to give access to the form 791 * control. See the <a 792 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-accesskey"> 793 * accesskey attribute definition </a> in HTML 4.0. 794 * 795 */ 796 DOMString accessKey() const; 797 798 /** 799 * see accessKey 800 */ 801 void setAccessKey(const DOMString &); 802 803 /** 804 * Text alignment relative to \c FIELDSET . See the <a 805 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-align-LEGEND"> 806 * align attribute definition </a> in HTML 4.0. This attribute is 807 * deprecated in HTML 4.0. 808 * 809 */ 810 DOMString align() const; 811 812 /** 813 * see align 814 */ 815 void setAlign(const DOMString &); 816 }; 817 818 // -------------------------------------------------------------------------- 819 820 class HTMLOptGroupElementImpl; 821 /** 822 * Group options together in logical subdivisions. See the <a 823 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-OPTGROUP"> 824 * OPTGROUP element definition </a> in HTML 4.0. 825 * 826 */ 827 class KHTML_EXPORT HTMLOptGroupElement : public HTMLElement 828 { 829 public: 830 HTMLOptGroupElement(); 831 HTMLOptGroupElement(const HTMLOptGroupElement &other); HTMLOptGroupElement(const Node & other)832 HTMLOptGroupElement(const Node &other) : HTMLElement() 833 { 834 (*this) = other; 835 } 836 protected: 837 HTMLOptGroupElement(HTMLOptGroupElementImpl *impl); 838 public: 839 840 HTMLOptGroupElement &operator = (const HTMLOptGroupElement &other); 841 HTMLOptGroupElement &operator = (const Node &other); 842 843 ~HTMLOptGroupElement(); 844 845 /** 846 * The control is unavailable in this context. See the <a 847 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-disabled"> 848 * disabled attribute definition </a> in HTML 4.0. 849 * 850 */ 851 bool disabled() const; 852 853 /** 854 * see disabled 855 */ 856 void setDisabled(bool); 857 858 /** 859 * Assigns a label to this option group. See the <a 860 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-label-OPTGROUP"> 861 * label attribute definition </a> in HTML 4.0. 862 * 863 */ 864 DOMString label() const; 865 866 /** 867 * see label 868 */ 869 void setLabel(const DOMString &); 870 }; 871 872 // -------------------------------------------------------------------------- 873 874 class HTMLSelectElementImpl; 875 /** 876 * The select element allows the selection of an option. The contained 877 * options can be directly accessed through the select element as a 878 * collection. See the <a 879 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-SELECT"> 880 * SELECT element definition </a> in HTML 4.0. 881 * 882 */ 883 class KHTML_EXPORT HTMLSelectElement : public HTMLElement 884 { 885 public: 886 HTMLSelectElement(); 887 HTMLSelectElement(const HTMLSelectElement &other); HTMLSelectElement(const Node & other)888 HTMLSelectElement(const Node &other) : HTMLElement() 889 { 890 (*this) = other; 891 } 892 protected: 893 HTMLSelectElement(HTMLSelectElementImpl *impl); 894 public: 895 896 HTMLSelectElement &operator = (const HTMLSelectElement &other); 897 HTMLSelectElement &operator = (const Node &other); 898 899 ~HTMLSelectElement(); 900 901 /** 902 * The type of control created. 903 * 904 */ 905 DOMString type() const; 906 907 /** 908 * The ordinal index of the selected option. The value -1 is 909 * returned if no element is selected. If multiple options are 910 * selected, the index of the first selected option is returned. 911 * 912 */ 913 long selectedIndex() const; 914 915 /** 916 * see selectedIndex 917 */ 918 void setSelectedIndex(long); 919 920 /** 921 * The current form control value. 922 * 923 */ 924 DOMString value() const; 925 926 /** 927 * see value 928 */ 929 void setValue(const DOMString &); 930 931 /** 932 * The number of options in this \c SELECT . 933 * 934 */ 935 long length() const; 936 937 // TODO: deprecate/remove? 938 HTMLFormElement form() const; 939 940 /** 941 * The collection of \c OPTION elements contained by 942 * this element. 943 * 944 */ 945 HTMLCollection options() const; 946 947 /** 948 * The control is unavailable in this context. See the <a 949 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-disabled"> 950 * disabled attribute definition </a> in HTML 4.0. 951 * 952 */ 953 bool disabled() const; 954 955 /** 956 * see disabled 957 */ 958 void setDisabled(bool); 959 960 /** 961 * If true, multiple \c OPTION elements may be 962 * selected in this \c SELECT . See the <a 963 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-multiple"> 964 * multiple attribute definition </a> in HTML 4.0. 965 * 966 */ 967 bool multiple() const; 968 969 /** 970 * see multiple 971 */ 972 void setMultiple(bool); 973 974 /** 975 * Form control or object name when submitted with a form. See the 976 * <a 977 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-name-SELECT"> 978 * name attribute definition </a> in HTML 4.0. 979 * 980 */ 981 DOMString name() const; 982 983 /** 984 * see name 985 */ 986 void setName(const DOMString &); 987 988 /** 989 * Number of visible rows. See the <a 990 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-size-SELECT"> 991 * size attribute definition </a> in HTML 4.0. 992 * 993 */ 994 long size() const; 995 996 /** 997 * see size 998 */ 999 void setSize(long); 1000 1001 /** 1002 * Index that represents the element's position in the tabbing 1003 * order. See the <a 1004 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-tabindex"> 1005 * tabindex attribute definition </a> in HTML 4.0. 1006 * 1007 */ 1008 long tabIndex() const; 1009 1010 /** 1011 * see tabIndex 1012 */ 1013 void setTabIndex(long); 1014 1015 /** 1016 * Add a new element to the collection of \c OPTION 1017 * elements for this \c SELECT . 1018 * 1019 * @param element The element to add. 1020 * 1021 * @param before The element to insert before, or 0 for the 1022 * tail of the list. 1023 * 1024 */ 1025 void add(const HTMLElement &element, const HTMLElement &before); 1026 1027 /** 1028 * Remove an element from the collection of \c OPTION 1029 * elements for this \c SELECT . Does nothing if no 1030 * element has the given index. 1031 * 1032 * @param index The index of the item to remove. 1033 * 1034 */ 1035 void remove(long index); 1036 1037 /** 1038 * Removes keyboard focus from this element. 1039 * 1040 */ 1041 void blur(); 1042 1043 /** 1044 * Gives keyboard focus to this element. 1045 * 1046 */ 1047 void focus(); 1048 }; 1049 1050 // -------------------------------------------------------------------------- 1051 1052 class HTMLTextAreaElementImpl; 1053 /** 1054 * Multi-line text field. See the <a 1055 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-TEXTAREA"> 1056 * TEXTAREA element definition </a> in HTML 4.0. 1057 * 1058 */ 1059 class KHTML_EXPORT HTMLTextAreaElement : public HTMLElement 1060 { 1061 public: 1062 HTMLTextAreaElement(); 1063 HTMLTextAreaElement(const HTMLTextAreaElement &other); HTMLTextAreaElement(const Node & other)1064 HTMLTextAreaElement(const Node &other) : HTMLElement() 1065 { 1066 (*this) = other; 1067 } 1068 protected: 1069 HTMLTextAreaElement(HTMLTextAreaElementImpl *impl); 1070 public: 1071 1072 HTMLTextAreaElement &operator = (const HTMLTextAreaElement &other); 1073 HTMLTextAreaElement &operator = (const Node &other); 1074 1075 ~HTMLTextAreaElement(); 1076 1077 /** 1078 * Stores the initial control value (i.e., the initial value of 1079 * \c value ). 1080 * 1081 */ 1082 DOMString defaultValue() const; 1083 1084 /** 1085 * see defaultValue 1086 */ 1087 void setDefaultValue(const DOMString &); 1088 1089 // TODO: deprecate/remove? 1090 HTMLFormElement form() const; 1091 1092 /** 1093 * A single character access key to give access to the form 1094 * control. See the <a 1095 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-accesskey"> 1096 * accesskey attribute definition </a> in HTML 4.0. 1097 * 1098 */ 1099 DOMString accessKey() const; 1100 1101 /** 1102 * see accessKey 1103 */ 1104 void setAccessKey(const DOMString &); 1105 1106 /** 1107 * Width of control (in characters). See the <a 1108 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-cols-TEXTAREA"> 1109 * cols attribute definition </a> in HTML 4.0. 1110 * 1111 */ 1112 long cols() const; 1113 1114 /** 1115 * see cols 1116 */ 1117 void setCols(long); 1118 1119 /** 1120 * The control is unavailable in this context. See the <a 1121 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-disabled"> 1122 * disabled attribute definition </a> in HTML 4.0. 1123 * 1124 */ 1125 bool disabled() const; 1126 1127 /** 1128 * see disabled 1129 */ 1130 void setDisabled(bool); 1131 1132 /** 1133 * Form control or object name when submitted with a form. See the 1134 * <a 1135 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-name-TEXTAREA"> 1136 * name attribute definition </a> in HTML 4.0. 1137 * 1138 */ 1139 DOMString name() const; 1140 1141 /** 1142 * see name 1143 */ 1144 void setName(const DOMString &); 1145 1146 /** 1147 * This control is read-only. See the <a 1148 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-readonly"> 1149 * readonly attribute definition </a> in HTML 4.0. 1150 * 1151 */ 1152 bool readOnly() const; 1153 1154 /** 1155 * see readOnly 1156 */ 1157 void setReadOnly(bool); 1158 1159 /** 1160 * Number of text rows. See the <a 1161 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-rows-TEXTAREA"> 1162 * rows attribute definition </a> in HTML 4.0. 1163 * 1164 */ 1165 long rows() const; 1166 1167 /** 1168 * see rows 1169 */ 1170 void setRows(long); 1171 1172 /** 1173 * Index that represents the element's position in the tabbing 1174 * order. See the <a 1175 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-tabindex"> 1176 * tabindex attribute definition </a> in HTML 4.0. 1177 * 1178 */ 1179 long tabIndex() const; 1180 1181 /** 1182 * see tabIndex 1183 */ 1184 void setTabIndex(long); 1185 1186 /** 1187 * The type of this form control. 1188 * 1189 */ 1190 DOMString type() const; 1191 1192 /** 1193 * The current textual content of the multi-line text field. If 1194 * the entirety of the data can not fit into a single wstring, the 1195 * implementation may truncate the data. 1196 * 1197 */ 1198 DOMString value() const; 1199 1200 /** 1201 * see value 1202 */ 1203 void setValue(const DOMString &); 1204 1205 /** 1206 * Removes keyboard focus from this element. 1207 */ 1208 void blur(); 1209 1210 /** 1211 * Gives keyboard focus to this element. 1212 */ 1213 void focus(); 1214 1215 /** 1216 * Select the contents of the \c TEXTAREA . 1217 */ 1218 void select(); 1219 1220 /** 1221 * Returns the character offset of beginning of selection, or if none, 1222 * the cursor position. 1223 * NOTE: this method is not part of the DOM, but a Mozilla extension 1224 */ 1225 long selectionStart(); 1226 1227 /** 1228 * Move the beginning of the selection to the given offset in text 1229 * NOTE: this method is not part of the DOM, but a Mozilla extension 1230 */ 1231 void setSelectionStart(long offset); 1232 1233 /** 1234 * Returns the character offset of end of selection, or if none, 1235 * the cursor position. 1236 * NOTE: this method is not part of the DOM, but a Mozilla extension 1237 */ 1238 long selectionEnd(); 1239 1240 /** 1241 * Move the end of the selection (and the cursor) to the given offset in text 1242 * NOTE: this method is not part of the DOM, but a Mozilla extension 1243 */ 1244 void setSelectionEnd(long offset); 1245 1246 /** 1247 * Selects the text from start to end, and positions the cursor after the selection. 1248 * NOTE: this method is not part of the DOM, but a Mozilla extension 1249 */ 1250 void setSelectionRange(long start, long end); 1251 1252 /** 1253 * Returns the length of the text. 1254 * NOTE: this method is not part of the DOM, but a Mozilla extension 1255 */ 1256 long textLength(); 1257 }; 1258 1259 // -------------------------------------------------------------------------- 1260 1261 class HTMLOptionElementImpl; 1262 /** 1263 * A selectable choice. See the <a 1264 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-OPTION"> 1265 * OPTION element definition </a> in HTML 4.0. 1266 * 1267 */ 1268 class KHTML_EXPORT HTMLOptionElement : public HTMLElement 1269 { 1270 public: 1271 HTMLOptionElement(); 1272 HTMLOptionElement(const HTMLOptionElement &other); HTMLOptionElement(const Node & other)1273 HTMLOptionElement(const Node &other) : HTMLElement() 1274 { 1275 (*this) = other; 1276 } 1277 protected: 1278 HTMLOptionElement(HTMLOptionElementImpl *impl); 1279 public: 1280 1281 HTMLOptionElement &operator = (const HTMLOptionElement &other); 1282 HTMLOptionElement &operator = (const Node &other); 1283 1284 ~HTMLOptionElement(); 1285 1286 // TODO: deprecate/remove? 1287 HTMLFormElement form() const; 1288 1289 /** 1290 * Stores the initial value of the \c selected 1291 * attribute. 1292 * 1293 */ 1294 bool defaultSelected() const; 1295 1296 /** 1297 * see defaultSelected 1298 */ 1299 void setDefaultSelected(bool); 1300 1301 /** 1302 * The text contained within the option element. 1303 * 1304 */ 1305 DOMString text() const; 1306 1307 /** 1308 * The index of this \c OPTION in its parent 1309 * \c SELECT . 1310 * 1311 */ 1312 long index() const; 1313 1314 /** 1315 * see index 1316 * 1317 * This function is obsolete - the index property is actually supposed to be read-only 1318 * (https://www.w3.org/DOM/updates/REC-DOM-Level-1-19981001-errata.html) 1319 */ 1320 void setIndex(long); 1321 1322 /** 1323 * The control is unavailable in this context. See the <a 1324 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-disabled"> 1325 * disabled attribute definition </a> in HTML 4.0. 1326 * 1327 */ 1328 bool disabled() const; 1329 1330 /** 1331 * see disabled 1332 */ 1333 void setDisabled(bool); 1334 1335 /** 1336 * Option label for use in hierarchical menus. See the <a 1337 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-label-OPTION"> 1338 * label attribute definition </a> in HTML 4.0. 1339 * 1340 */ 1341 DOMString label() const; 1342 1343 /** 1344 * see label 1345 */ 1346 void setLabel(const DOMString &); 1347 1348 /** 1349 * Means that this option is initially selected. See the <a 1350 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-selected"> 1351 * selected attribute definition </a> in HTML 4.0. 1352 * 1353 */ 1354 bool selected() const; 1355 1356 /** 1357 * see selected 1358 */ 1359 void setSelected(bool); 1360 1361 /** 1362 * The current form control value. See the <a 1363 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-value-OPTION"> 1364 * value attribute definition </a> in HTML 4.0. 1365 * 1366 */ 1367 DOMString value() const; 1368 1369 /** 1370 * see value 1371 */ 1372 void setValue(const DOMString &); 1373 }; 1374 1375 // -------------------------------------------------------------------------- 1376 1377 class HTMLIsIndexElementImpl; 1378 class HTMLFormElement; 1379 1380 /** 1381 * This element is used for single-line text input. See the <a 1382 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#edef-ISINDEX"> 1383 * ISINDEX element definition </a> in HTML 4.0. This element is 1384 * deprecated in HTML 4.0. 1385 * 1386 */ 1387 class KHTML_EXPORT HTMLIsIndexElement : public HTMLElement 1388 { 1389 public: 1390 HTMLIsIndexElement(); 1391 HTMLIsIndexElement(const HTMLIsIndexElement &other); HTMLIsIndexElement(const Node & other)1392 HTMLIsIndexElement(const Node &other) : HTMLElement() 1393 { 1394 (*this) = other; 1395 } 1396 protected: 1397 HTMLIsIndexElement(HTMLIsIndexElementImpl *impl); 1398 public: 1399 1400 HTMLIsIndexElement &operator = (const HTMLIsIndexElement &other); 1401 HTMLIsIndexElement &operator = (const Node &other); 1402 1403 ~HTMLIsIndexElement(); 1404 1405 // TODO: deprecate/remove? 1406 HTMLFormElement form() const; 1407 1408 /** 1409 * The prompt message. See the <a 1410 * href="https://www.w3.org/TR/REC-html40/interact/forms.html#adef-prompt"> 1411 * prompt attribute definition </a> in HTML 4.0. This attribute is 1412 * deprecated in HTML 4.0. 1413 * 1414 */ 1415 DOMString prompt() const; 1416 1417 /** 1418 * see prompt 1419 */ 1420 void setPrompt(const DOMString &); 1421 }; 1422 1423 } //namespace 1424 1425 #endif 1426