Changeset 250


Ignore:
Timestamp:
08/17/09 23:45:22 (10 years ago)
Author:
bretzel_parpg
Message:

Added some functionality to the dialog map

Location:
trunk/tools/writing_editor/scripts
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/tools/writing_editor/scripts/dialogMap.py

    r234 r250  
    1818from PyQt4 import QtGui, QtCore 
    1919from scripts.parser import Parser 
     20 
    2021 
    2122class DialogMap(QtGui.QTreeWidget): 
     
    3940        self.parent = parent 
    4041        self.resize(int(self.settings.res_width), int(self.settings.res_height)) 
    41         self.parser = Parser(main_edit.document()) 
     42        self.parser = Parser(main_edit, self.handleResult) 
     43        self.itemCount = 0 
    4244 
    4345        self.setColumnCount(1) 
    4446        self.setEditTriggers(self.NoEditTriggers) 
    45         self.model = QtGui.QTreeWidgetItem() 
    46         self.items = [] 
    47         for i in xrange(10): 
    48             item = QtGui.QTreeWidgetItem() 
    49             item.setText(0, str(i)) 
    50             item2 = QtGui.QTreeWidgetItem() 
    51             item2.setText(0, str(i + 1)) 
    52             item.addChild(item2) 
    53             self.items.append(item) 
    54         self.insertTopLevelItems(0, self.items) 
    55         self.setHeaderLabel("Dialog Map") 
     47        self.setHeaderLabel("") 
     48         
     49    def handleResult(self, result, type_): 
     50        """ 
     51        Take the result, determine where to put it in the dialog map, then put it there 
     52        @type result: string 
     53        @param result: the result to be handled 
     54        @type type_: string 
     55        @param type_: the type of result 
     56        @return: None 
     57        """ 
     58        text = result.split(' ') 
     59        if (type_ == "SCRIPTNAME"): 
     60            self.setHeaderLabel(text[1]) 
     61 
     62        elif (type_ == "SAY"): 
     63            sayText = text[0] + " says " + text[2] 
     64            print "text: " + sayText 
     65            self.sayItem = QtGui.QTreeWidgetItem() 
     66            self.sayItem.setText(0, sayText) 
     67            self.insertItem(self.sayItem) 
     68 
     69        elif (type_ == "ATTACK"): 
     70            attackText = text[0] + " attacks " + text[2] 
     71            self.attackItem = QtGui.QTreeWidgetItem() 
     72            self.attackItem.setText(0, attackText) 
     73            self.insertItem(self.attackItem) 
     74 
     75    def insertItem(self, item): 
     76        """ 
     77        Insert an item at the correct place in the dialog tree 
     78        @type item: QtGui.QTreeWidgetItem 
     79        @param item: the item to insert 
     80        @return: None 
     81        """ 
     82        self.insertTopLevelItem(0, item) 
     83 
     84    def clear(self): 
     85        """ 
     86        Clear the dialog map 
     87        """ 
     88        self.setHeaderLabel("") 
     89        for i in xrange(self.topLevelItemCount()): 
     90            item = self.itemAt(0, i) 
     91            self.removeItemWidget(item, 0) 
  • trunk/tools/writing_editor/scripts/parser.py

    r234 r250  
    2424    The parser 
    2525    """ 
    26     def __init__(self, document): 
     26    def __init__(self, widget, result_function): 
    2727        """ 
    2828        Initialize the parser 
    29         @type document: QtGui.QDocument 
    30         @param document: The document generated from a QTextEdit 
     29        @type document: QtGui.QTextEdit 
     30        @param document: The QTextEdit 
     31        @type result_function: function 
     32        @param result_function: the function that handles the results 
    3133        @return: None 
    3234        """ 
    33         self.document = document 
     35        self.widget = widget 
     36        self.resultFunction = result_function 
    3437        self.makeFunctions() 
    35         self.funcs = ["NPC", "PC", "CALLSECTION", "ENDSECTION", "SECTION",  
     38        self.funcs = ["SCRIPTNAME", "NPC", "PC", "CALLSECTION", "ENDSECTION", "SECTION",  
    3639                      "SCRIPTNAME", "ENDOPTION", "OPTION", "PLAYSOUND",  
    3740                      "SAY", "ATTACK", "RETURN", "ELIF", "IF", "ELSE"] 
     
    8588            if (regex.search(str(string)) != None): 
    8689                type_ = func 
    87                 print type_ 
    8890                break 
    8991 
     
    9597        @return: the parsed text 
    9698        """         
    97         doc = self.document.toPlainText() 
     99        doc = self.widget.document().toPlainText() 
    98100        if (doc == ""): 
    99101            return 
    100102 
    101103        for line in doc.split('\n'): 
     104            print line 
     105            if (line == ""): 
     106                continue 
     107 
    102108            line_type = self.findType(line) 
    103  
    104109            try: 
    105110                command = self.func_by_name[line_type] 
    106  
    107111            except KeyError, e: 
    108112                self.createErrorBox(e) 
     
    111115            parse = command.scanString(line) 
    112116            for result in parse: 
    113                 self.handleResult(result[0][0], line_type) 
    114  
    115  
    116     def handleResult(self, result, type_): 
    117         """ 
    118         Take the result, determine where to put it in the dialog map, then put it there 
    119         @type result: string 
    120         @param result: the result to be handled 
    121         @type type_: string 
    122         @param type_: the type of result 
    123         @return: None 
    124         """ 
    125         print "Result: " + result 
    126         print "Type: " + type_ 
     117                self.resultFunction(result[0][0], line_type) 
    127118 
    128119 
  • trunk/tools/writing_editor/scripts/writingEditor.py

    r234 r250  
    194194        # it's the main editor 
    195195        if (index == 0): 
     196#            self.dialogMap.clear() 
    196197            self.ui.actionCopy.setEnabled(True) 
    197198            self.ui.actionCut.setEnabled(True) 
Note: See TracChangeset for help on using the changeset viewer.