<!ELEMENT glade-catalog (glade-widget-classes?, 
			 glade-widget-group*)>

<!ATTLIST glade-catalog name     CDATA #REQUIRED
                        library  CDATA #IMPLIED
			requires CDATA #IMPLIED>

<!ELEMENT glade-widget-classes (glade-widget-class+)>

<!ELEMENT glade-widget-class (post-create-function?,
			      get-internal-child-function?,
			      child-property-applies-function?,
			      properties?,
			      children?,
			      packing-defaults?)>

<!ATTLIST glade-widget-class toplevel     CDATA #IMPLIED
			     name         CDATA #REQUIRED
                             generic-name CDATA #IMPLIED
			     title        CDATA #IMPLIED>

<!ELEMENT properties (property+)>

<!ELEMENT property (spec?, 
		    type?,
		    tooltip?, 
		    parameters?,
		    set-function?,
		    get-function?, 
		    verify-function?)>

<!ATTLIST property id               CDATA #REQUIRED
                   name             CDATA #IMPLIED
		   default          CDATA #IMPLIED
		   query            CDATA #IMPLIED
		   common           CDATA #IMPLIED
		   disabled         CDATA #IMPLIED
		   visible          CDATA #IMPLIED
		   optional         CDATA #IMPLIED
		   optional-default CDATA #IMPLIED
		   translatable     CDATA #IMPLIED>

<!ELEMENT set-function (#PCDATA)>
<!ELEMENT get-function (#PCDATA)>
<!ELEMENT spec (#PCDATA)>
<!ELEMENT tooltip (#PCDATA)>
<!ELEMENT verify-function (#PCDATA)>

<!ELEMENT parameters (parameter+)>

<!ELEMENT parameter EMPTY>

<!ATTLIST parameter key   CDATA #REQUIRED
                    value CDATA #REQUIRED>

<!ELEMENT children (child+)>

<!ELEMENT child (type, 
		 add-child-function?, 
		 remove-child-function?, 
		 get-children-function?, 
		 get-all-children-function?,
		 set-property-function?, 
		 get-property-function?, 
		 replace-child-function?, 
		 fill-empty-function?, 
		 properties?)>

<!ELEMENT type (#PCDATA)>
<!ELEMENT add-child-function (#PCDATA)>
<!ELEMENT remove-child-function (#PCDATA)>
<!ELEMENT get-children-function (#PCDATA)>
<!ELEMENT get-all-children-function (#PCDATA)>
<!ELEMENT set-prop-function (#PCDATA)>
<!ELEMENT get-prop-function (#PCDATA)>
<!ELEMENT fill-empty-function (#PCDATA)>
<!ELEMENT replace-child-function (#PCDATA)>

<!ELEMENT post-create-function (#PCDATA)>
<!ELEMENT get-internal-child-function (#PCDATA)>
<!ELEMENT child-property-applies-function (#PCDATA)>

<!ELEMENT glade-widget-group (default-palette-state?, 
			      glade-widget-class-ref+)>

<!ATTLIST glade-widget-group name  CDATA #REQUIRED
                             title CDATA #REQUIRED>

<!ELEMENT default-palette-state EMPTY>
<!ATTLIST default-palette-state expanded CDATA #IMPLIED>

<!ELEMENT glade-widget-class-ref EMPTY>
<!ATTLIST glade-widget-class-ref name CDATA #REQUIRED>

<!ELEMENT packing-defaults (parent-class+)>

<!ELEMENT parent-class (child-property+)>
<!ATTLIST parent-class name CDATA #REQUIRED>

<!ELEMENT child-property EMPTY>
<!ATTLIST child-property id      CDATA #REQUIRED
                         default CDATA #REQUIRED>

