コード例 #1
0
 def loadOldTests(self, e):
     l = self.addGroup('main')
     for t in e.iterfind('test'):
         feats = {}
         f = t.get('feats')
         if f:
             for ft in f.split(" "):
                 (k, v) = ft.split('=')
                 feats[k] = int(v)
         txt = t.text
         if not txt:
             y = t.find('text')
             txt = y.text
         y = t.find('comment')
         if y is not None:
             c = y.text
         else:
             c = ""
         te = Test(txt,
                   feats,
                   rtl=t.get('rtl'),
                   name=t.get('name'),
                   comment=c)
         b = t.get('background')
         if b:
             res = QtGui.QColor(b)
             if res.isValid(): te.background = res
         self.appendTest(te, l)
コード例 #2
0
ファイル: testlist.py プロジェクト: silnrsi/graide
 def loadOldTests(self, e) :
     l = self.addGroup('main')
     for t in e.iterfind('test') :
         feats = {}
         f = t.get('feats')
         if f :
             for ft in f.split(" ") :
                 (k, v) = ft.split('=')
                 feats[k] = int(v)
         txt = t.text
         if not txt :
             y = t.find('text')
             txt = y.text
         y = t.find('comment')
         if y is not None :
             c = y.text
         else :
             c = ""
         te = Test(txt, feats, rtl = t.get('rtl'), name = t.get('name'), comment = c)
         b = t.get('background')
         if b :
             res = QtGui.QColor(b)
             if res.isValid() : te.background = res
         self.appendTest(te, l)
コード例 #3
0
ファイル: testlist.py プロジェクト: silnrsi/graide
 def loadTests(self, fname):
     #print "TestList::loadTests(" + fname + ")"
     
     # Assumes the file has been added to the UI.
     self.testGroups = []
     self.gcombo.clear()
     for i in range(self.liststack.count()-1, -1, -1) :
         self.liststack.removeWidget(self.liststack.widget(i))
     if not fname or not os.path.exists(fname) :
         # Create a new set of tests - these will be stored in a new file.
         self.initTests(fname)
         return
         
     try :
         e = et.parse(fname)
     except Exception as err:
         reportError("TestsFile %s: %s" % (fname, str(err)))
         return
     if e.getroot().tag == 'tests' :
         print "Can't find tests file " + fname
         self.loadOldTests(e)
         return
         
     styles = {}
     langs = {}
     self.header = e.find('.//head') 
     if self.header is None : self.header = e.find('.//header')
     for s in e.iterfind('.//style') :
         styleName = s.get('name')
         featDescrip = s.get('feats') or ""
         langCode = s.get('lang') or ""
         fset = featDescrip + "\n" + langCode
         if fset not in self.fsets : self.fsets[fset] = styleName
         styles[styleName] = {}
         if langCode : langs[styleName] = langCode
         for ft in featDescrip.split(" ") :
             if '=' in ft :
                 (fname, value) = ft.split('=')
                 if value and value != "None" :  # under buggy circumstances value can be 'None'; test for it just in case
                     styles[styleName][fname] = int(value)
         m = re.match(r'fset([0-9]+)', styleName)
         if m :
             i = int(m.group(1)) ## number of the fset, eg 'fset2' -> 2
             if i > self.fcount : self.fcount = i
                 
     for g in e.iterfind('testgroup') :
         listwidget = self.addGroup(g.get('label'))
         y = g.find('comment')
         self.comments.append(y.text if y else '')
         for t in g.iterfind('test') :
             y = t.find('string')
             if y is None : y = t.find('text')
             txt = y.text if y is not None else ""
             y = t.find('comment')
             c = y.text if y is not None else ""
             y = t.get('class')
             if y and y in styles :
                 feats = styles[y]
                 lng = langs.get(y)
             else :
                 feats = {}
                 lng = None
             te = Test(txt, feats, lang = lng, rtl = asBool(t.get('rtl')), name = t.get('label'), comment = c)
             b = t.get('background')
             if b :
                 res = QtGui.QColor(b)
                 if res.isValid() : te.background = res
             w = t.get('expand')
             if w :
                 te.setWidth(int(w))
             self.appendTest(te, listwidget)
コード例 #4
0
    def loadTests(self, fname):
        #print "TestList::loadTests(" + fname + ")"

        # Assumes the file has been added to the UI.
        self.testGroups = []
        self.gcombo.clear()
        for i in range(self.liststack.count() - 1, -1, -1):
            self.liststack.removeWidget(self.liststack.widget(i))
        if not fname or not os.path.exists(fname):
            # Create a new set of tests - these will be stored in a new file.
            self.initTests(fname)
            return

        try:
            e = et.parse(fname)
        except Exception as err:
            reportError("TestsFile %s: %s" % (fname, str(err)))
            return
        if e.getroot().tag == 'tests':
            print "Can't find tests file " + fname
            self.loadOldTests(e)
            return

        styles = {}
        langs = {}
        self.header = e.find('.//head')
        if self.header is None: self.header = e.find('.//header')
        for s in e.iterfind('.//style'):
            styleName = s.get('name')
            featDescrip = s.get('feats') or ""
            langCode = s.get('lang') or ""
            fset = featDescrip + "\n" + langCode
            if fset not in self.fsets: self.fsets[fset] = styleName
            styles[styleName] = {}
            if langCode: langs[styleName] = langCode
            for ft in featDescrip.split(" "):
                if '=' in ft:
                    (fname, value) = ft.split('=')
                    if value and value != "None":  # under buggy circumstances value can be 'None'; test for it just in case
                        styles[styleName][fname] = int(value)
            m = re.match(r'fset([0-9]+)', styleName)
            if m:
                i = int(m.group(1))  ## number of the fset, eg 'fset2' -> 2
                if i > self.fcount: self.fcount = i

        for g in e.iterfind('testgroup'):
            listwidget = self.addGroup(g.get('label'))
            y = g.find('comment')
            self.comments.append(y.text if y else '')
            for t in g.iterfind('test'):
                y = t.find('string')
                if y is None: y = t.find('text')
                txt = y.text if y is not None else ""
                y = t.find('comment')
                c = y.text if y is not None else ""
                y = t.get('class')
                if y and y in styles:
                    feats = styles[y]
                    lng = langs.get(y)
                else:
                    feats = {}
                    lng = None
                te = Test(txt,
                          feats,
                          lang=lng,
                          rtl=asBool(t.get('rtl')),
                          name=t.get('label'),
                          comment=c)
                b = t.get('background')
                if b:
                    res = QtGui.QColor(b)
                    if res.isValid(): te.background = res
                w = t.get('expand')
                if w:
                    te.setWidth(int(w))
                self.appendTest(te, listwidget)