Yeah, I've seen RAW Explorer. It's just a text editor at it's core.
What I am making is a simple GUI driven tool to allow quick generation of items, civs and creatures by just having the user define all the variables they want to give like the item/creature's name, size, materials, etc and then compile all their creations into their own set of RAWs so people can easily customize every already moddable aspect of the game without even knowing how to mod RAWs directly.
I'll have to admit in being confused as to how you can create what you are saying you want to create without it also being "a text editor at it's core." That being said...
There is a file in the Raw Explorer (\RawExplorer-Beta-11\Data\TokenDefinitions.xml) which lists all of the tokens and which tokens they can appear on, in addition to what data type the tokens are (caution, I don't think it's 100% correct). It should be able to answer most all of your questions, at least well enough to get an alpha version of your program out.
Two things I'd like to bring up before you get too far. First, I think there's be a tendency to over-use xml in our modding configuration files. We forget that Toady often adds tokens, etc, and our tools need to continue to live on long after we've moved on. The people who will be adjusting these configuration files will be people more used to Toady's square bracket delimited files, not XML. Second, (which builds on the first) is that the GUI needs to be flexible enough that someone can add a new token or object type to a configuration file and it appear in the application.
I hesitate to post these two 0.0.2 files as they are very, very rough and what I'm going to clean up next, but here is what i call my "dataset_0_34_11.txt", it is the configuration file I use to build the dataset (tables, columns, relations) etc that the 34.11 raw files would be loaded into:
dataset_0_34_11
[OBJECT:DATASET]
--------------------------------------------------------------------------------
LANGUAGE
--------------------------------------------------------------------------------
[TABLE:ADJ]
[COLUMN:ADJ_ID:INT32]
[ALLOW_DBNULL:FALSE]
[AUTO_INCREMENT:TRUE]
[UNIQUE:TRUE]
[PRIMARY_KEY:1]
[COLUMN:adjective:STRING]
[COLUMN:ADJ_DIST:INT32]
[COLUMN:FRONT_COMPOUND_ADJ:BOOLEAN]
[COLUMN:REAR_COMPOUND_ADJ:BOOLEAN]
[COLUMN:THE_COMPOUND_ADJ:BOOLEAN]
[PREVIEW:adjective]
[TABLE:NOUN]
[COLUMN:NOUN_ID:INT32]
[ALLOW_DBNULL:FALSE]
[AUTO_INCREMENT:TRUE]
[UNIQUE:TRUE]
[PRIMARY_KEY:1]
[COLUMN:singular:STRING]
[COLUMN:plural:STRING]
[COLUMN:FRONT_COMPOUND_NOUN_SING:BOOLEAN]
[COLUMN:REAR_COMPOUND_NOUN_SING:BOOLEAN]
[COLUMN:THE_COMPOUND_NOUN_SING:BOOLEAN]
[COLUMN:THE_NOUN_SING:BOOLEAN]
[COLUMN:OF_NOUN_SING:BOOLEAN]
[COLUMN:FRONT_COMPOUND_NOUN_PLUR:BOOLEAN]
[COLUMN:REAR_COMPOUND_NOUN_PLUR:BOOLEAN]
[COLUMN:THE_COMPOUND_NOUN_PLUR:BOOLEAN]
[COLUMN:THE_NOUN_PLUR:BOOLEAN]
[COLUMN:OF_NOUN_PLUR:BOOLEAN]
[PREVIEW:singular+', '+plural]
[TABLE:PREFIX]
[COLUMN:PREFIX_ID:INT32]
[ALLOW_DBNULL:FALSE]
[AUTO_INCREMENT:TRUE]
[UNIQUE:TRUE]
[PRIMARY_KEY:1]
[COLUMN:prefix:STRING]
[COLUMN:FRONT_COMPOUND_PREFIX:BOOLEAN]
[COLUMN:THE_COMPOUND_PREFIX:BOOLEAN]
[PREVIEW:prefix]
[TABLE:VERB]
[COLUMN:VERB_ID:INT32]
[ALLOW_DBNULL:FALSE]
[AUTO_INCREMENT:TRUE]
[UNIQUE:TRUE]
[PRIMARY_KEY:1]
[COLUMN:base:STRING]
[COLUMN:present simple:STRING]
[COLUMN:past tense:STRING]
[COLUMN:past participle:STRING]
[COLUMN:present participle:STRING]
[COLUMN:STANDARD_VERB:BOOLEAN]
[PREVIEW:base]
[TABLE:WORD]
[COLUMN:WORD_ID:INT32]
[ALLOW_DBNULL:FALSE]
[AUTO_INCREMENT:TRUE]
[UNIQUE:TRUE]
[PRIMARY_KEY:1]
[COLUMN:WORD:STRING]
[COLUMN:ADJ_ID:INT32]
[COLUMN:NOUN_ID:INT32]
[COLUMN:PREFIX_ID:INT32]
[COLUMN:VERB_ID:INT32]
[COLUMN:FILE_ID:INT32]
[PREVIEW:WORD]
[RELATION:ADJ_WORD:ADJ:ADJ_ID:WORD:ADJ_ID]
[RELATION:NOUN_WORD:NOUN:NOUN_ID:WORD:NOUN_ID]
[RELATION:PREFIX_WORD:PREFIX:PREFIX_ID:WORD:PREFIX_ID]
[RELATION:VERB_WORD:VERB:VERB_ID:WORD:VERB_ID]
[RELATION:WORD_FILE:FILE:FILE_ID:WORD:FILE_ID]
--------------------------------------------------------------------------------
DESCRIPTOR_COLOR
--------------------------------------------------------------------------------
[TABLE:RGB]
[COLUMN:RGB_ID:INT32]
[ALLOW_DBNULL:FALSE]
[AUTO_INCREMENT:TRUE]
[UNIQUE:TRUE]
[PRIMARY_KEY:1]
[COLUMN:red:INT32]
[COLUMN:green:INT32]
[COLUMN:blue:INT32]
[PREVIEW:red+' '+green+' '+blue]
[TABLE:COLOR]
[COLUMN:COLOR_ID:INT32]
[ALLOW_DBNULL:FALSE]
[AUTO_INCREMENT:TRUE]
[UNIQUE:TRUE]
[PRIMARY_KEY:1]
[COLUMN:COLOR:STRING]
[COLUMN:NAME:STRING]
[COLUMN:WORD_ID:INT32]
[COLUMN:RGB_ID:INT32]
[COLUMN:FILE_ID:INT32]
[PREVIEW:COLOR]
[RELATION:COLOR_RBG:RGB:RGB_ID:COLOR:RGB_ID]
[RELATION:COLOR_WORD:WORD:WORD_ID:COLOR:WORD_ID]
[RELATION:COLOR_FILE:FILE:FILE_ID:COLOR:FILE_ID]
The first thing I'd want anyone to take away from this is the files look exactly like what modders are used to, just tokens they may be unfamiliar with. However, with only one table (the Files table) being hard-coded in the application it would be a fairly simple task for anyone used to editing DF raws to add additional tables and relations. You can even see how I've maintained the same structure with the name being the first line and starting with an [OBJECT:?] token. This allows the exact same class that reads a raw file to read in my dataset configuration for me. (I should put a note here, I'm 99.99% sure that if you added a new token to BradUffner's Raw Explorer it would automatically appear as an option without him having to change any internal code.)
The second thing I'd want anyone to take away from this is that what you see in the screen shots in my 'teaser' thread are auto-generated from the data set. The only thing not dynamically generated is the form, the menustrip, and the tabcontrol. All of the tabpages, datagridviews, and datagridcolumns are created based on the datasets file above. (Again, I should note that BradUffner's Raw Explorer probably does this two, it's just his project is more tree-view oriented and mine is more datagridview oriented).
The next file is what I call my "datamapping_0_34_11.txt", it is the file used to map the values being read into through a raw file to the dataset created above. It is primarily inspired by the TokenDefinitions.xml but adjusted to fit the design philosophy I'm trying out. I'll list it here as a spoiler, but you may not want to concentrate on it too much.
datamapping_0_34_11
[OBJECT:DATA_MAPPING]
================================================================================
[SECTION:LANGUAGE]
--------------------------------------------------------------------------------
WORD
--------------------------------------------------------------------------------
[ELEMENT:WORD]
[ARG:WORD:STRING]
--------------------------------------------------------------------------------
ADJ
--------------------------------------------------------------------------------
[ELEMENT:ADJ]
[ARG:adjective:STRING]
[PARENT:WORD]
[ELEMENT:ADJ_DIST]
[ARG:ADJ_DIST:INT32]
[PARENT:ADJ]
[ELEMENT:FRONT_COMPOUND_ADJ:BOOLEAN]
[PARENT:ADJ]
[ELEMENT:REAR_COMPOUND_ADJ:BOOLEAN]
[PARENT:ADJ]
[ELEMENT:THE_COMPOUND_ADJ:BOOLEAN]
[PARENT:ADJ]
--------------------------------------------------------------------------------
NOUN
--------------------------------------------------------------------------------
[ELEMENT:NOUN]
[ARG:singular:STRING]
[ARG:plural:STRING]
[PARENT:WORD]
[ELEMENT:FRONT_COMPOUND_NOUN_SING:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:REAR_COMPOUND_NOUN_SING:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:THE_COMPOUND_NOUN_SING:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:THE_NOUN_SING:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:OF_NOUN_SING:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:FRONT_COMPOUND_NOUN_PLUR:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:REAR_COMPOUND_NOUN_PLUR:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:THE_COMPOUND_NOUN_PLUR:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:THE_NOUN_PLUR:BOOLEAN]
[PARENT:NOUN]
[ELEMENT:OF_NOUN_PLUR:BOOLEAN]
[PARENT:NOUN]
--------------------------------------------------------------------------------
PREFIX
--------------------------------------------------------------------------------
[ELEMENT:PREFIX]
[ARG:prefix:STRING]
[PARENT:WORD]
[ELEMENT:FRONT_COMPOUND_PREFIX:BOOLEAN]
[PARENT:PREFIX]
[ELEMENT:THE_COMPOUND_PREFIX:BOOLEAN]
[PARENT:PREFIX]
--------------------------------------------------------------------------------
VERB
--------------------------------------------------------------------------------
[ELEMENT:VERB]
[ARG:base:STRING]
[ARG:present simple:STRING]
[ARG:past tense:STRING]
[ARG:past participle:STRING]
[ARG:present participle:STRING]
[PARENT:WORD]
[ELEMENT:STANDARD_VERB:BOOLEAN]
[PARENT:VERB]
================================================================================
[SECTION:DESCRIPTOR_COLOR]
[ELEMENT:COLOR]
[ARG:COLOR:STRING]
[ELEMENT:NAME]
[ARG:NAME:STRING]
[PARENT:COLOR]
[ELEMENT:WORD]
[ARG:WORD:STRING]
[REFERENCE:WORD]
[PARENT:COLOR]
[ELEMENT:RGB]
[ARG:red:INT32]
[ARG:green:INT32]
[ARG:blue:INT32]
[PARENT:COLOR]
The way that it differs from the file it's insipired by are two. First, it's not XML, it's formatted like a DF raw file. Two, it has a SECTION for each object type (LANGUAGE, COLOR_DESCRIPTOR). One of the things I'm going to look at in the refactoring for 0.0.3 is - if data types are on this file, can I not make the dataset from this file. If I can not, is it double-work to maintain the data type in two places?
Cheers