#!/usr/bin/python

"""
Simple program to visualize an ontology
"""

import demo
import sys

import xesam.ontology
from xesam.ontology import rdf, strigi
from xesam.ontology.gtkonto import *

USAGE=\
"""
USAGE:
	%s <ontology-type> <files...>

	ontology-type: "rdfs" or "strigi" is supported atm
	file or dir: a file or directory to parse	
"""

if len(sys.argv) < 3:
	print USAGE % sys.argv[0]
	raise SystemExit

parser_class = None
if sys.argv[1] == "rdfs":
	parser_class = rdf.RdfXmlParser
elif sys.argv[1] == "strigi":
	parser_class = strigi.StrigiOntoParser
else:
	print "** Unknown ontology-type '%s'\n" % sys.argv[1]
	print USAGE % sys.argv[0]
	raise SystemExit(1)

# Parse normal sources vs external refs
onto_sources = []
external_sources = []
for f in sys.argv[2:]:
	if f.startswith ("ext:"):
		external_sources.append(f[4:])
	else:
		onto_sources.append(f)

external_parser = parser_class()
parser = parser_class()

external_roots = external_parser.parse(external_sources)
external_onto = Ontology(external_roots)
parser.parse (onto_sources, external_ontos=[external_onto])
	
roots = parser.get_roots()
	
model = OntologyTreeModel()
view = OntologyTreeView(model)
item_view = ItemView()
view.connect ("item-selected", lambda view, i : item_view.set_item(i))

box = gtk.HBox()
scroll = gtk.ScrolledWindow()
scroll.set_policy (gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
scroll.add(view)
item_scroll = gtk.ScrolledWindow()
item_scroll.set_policy (gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
item_scroll.add(item_view)
box.pack_start (scroll)
box.pack_start (item_scroll)

model.import_roots (roots)

win = gtk.Window ()
win.add(box)
win.show_all()
win.connect ("destroy", gtk.main_quit)


gtk.main()

	
