some restructuring, fixed the printed 'segmentation fault' when exiting
[conlangery:conlangery.git] / main.py
1 #!/usr/bin/python
2 ## Debian/Ubuntu: depends on package python-qt4
3 import sys
4 from PyQt4 import QtGui, QtCore
5 # Our Utilities
6 from data import Data
7 # Our Tabs
8 from AlphabetCreator import AlphabetCreator
9 from DictionaryCreator import DictionaryCreator
10 from PhonotacticsEditor import PhonotacticsEditor
11 from AllophonyGenerator import AllophonyGenerator
12
13 # Note, to turn a string to unicode, use unicode(stringname)
14
15 # The Tabs:
16 #
17 # Alphabet:
18 #    Associate graphemes with phonemes
19 #
20 #
21 # Lexicon:
22 #    Associate words with meanings
23 #    Generate Phonemic and Phonic descriptions of the word from alphabet
24 #    and from allophonic rules
25 #
26 # Phonotactics:
27 #    Allowed/disallowed onset/medial/final, whitelist/blacklist policy
28 #    Vowel and consonant harmony
29 #
30 # Allophony:
31 #    Describe how to construct phonic descriptions from phonemic ones
32 #
33 # Word Generator:
34 #    Using specified syllable and word-wide constraints, generate words
35 #    of certain syllable counts. Provide a way to add to Lexicon.
36 #
37 # Sound Change Applier:
38 #    Describe sound changes, preview their effects on words/sentences,
39 #    generate new languages with the changes applied
40
41 class MainWindow(QtGui.QWidget):
42     ''' Main window, to hold all the tabs '''
43     def __init__(self, app):
44         QtGui.QWidget.__init__(self, None)
45         
46         self.resize(800, 600)
47         self.setWindowTitle('Conlang IDE')
48         
49         # Add tabs
50         tabs = QtGui.QTabWidget(self)
51         tabs.addTab(AlphabetCreator(self), "Alphabet")
52         tabs.setTabToolTip(0, "Alphabet and Phoneme creator")
53         tabs.addTab(DictionaryCreator(self), "Lexicon")
54         tabs.setTabToolTip(1, "Lexicon Tab.Dictionary creator")
55         tabs.addTab(PhonotacticsEditor(self), "Phonotactics")
56         tabs.setTabToolTip(2, "Phonotactics Editor")
57         tabs.addTab(AllophonyGenerator(self), "Allophony")
58         tabs.setTabToolTip(3, "Allophony Generator")
59         
60         # Setup close signal
61         self.connect(app, QtCore.SIGNAL('closeEmitApp()'), QtCore.SLOT('close()') )
62         
63         # Fill main window with tabbed layout
64         layout = QtGui.QHBoxLayout()
65         layout.addWidget(tabs)
66         self.setLayout(layout)
67     
68     def error(self, notice, quit = False):
69         if quit:
70             raise Exception(notice)
71             self.emit(QtCore.SIGNAL('closeEmitApp()'))
72         QtGui.QMessageBox.warning(self, "Error", notice)
73
74 if __name__ == "__main__":
75     app = QtGui.QApplication(sys.argv)
76     mainWindow = MainWindow(app)
77     mainWindow.show()
78     sys.exit(app.exec_())