예제 #1
0
 def Link2(self, vparser, token, tentry):
     xstack = stack.Stack()
     # Walk optionals:
     while True:             
         vparser.popstate()
         if vparser.fsm == parser.KEYVAL:          
             #print " Reducing keyval", fsm, "'"+ttt+"'", "\"" + stry + "\""            
             xstack.push([vparser.ttt, "=", vparser.stry])
         if vparser.contflag == 0:            
             break
 
     while True:
         xkey = xstack.pop()     
         if not xkey:
             break
         kk, ee, vv = xkey;
         vv = vv.replace("\"",""); vv = vv.replace("\'","")
 
         #print "link key: '" + kk + "' val: '" + vv + "'"
         if kk == "file" or kk == "name":
             # Try docroot - current dir - home dir
             fname = self.pvg.docroot + "/" + vv
             if not isfile(fname):
                 fname = vv
                 if not isfile(fname):
                     fname = "~/" + vv                                                        
                     if not isfile(fname):
                         fname = vv                                                        
                     
             self.TextState.link = fname                        
         if kk == "color" or kk == "fg":
             #print "setting color in link"
             self.TextState.color = vv
         
     self.emit( "<link2>")
예제 #2
0
    def Span2(self, vparser, token, tentry):
        xstack = stack.Stack()
        # Walk optionals:
        while True:
            fsm, contflag, ttt, stry = vparser.fstack.pop()
            if fsm == parser.KEYVAL:
                #print (" Reducing keyval", fsm, "'"+ttt+"'", "\"" + stry + "\""            )
                xstack.push([ttt, "=", stry])
            if contflag == 0:
                break

        # Set font parameters:
        while True:
            xkey = xstack.pop()
            if not xkey:
                break
            kk, ee, vv = xkey
            vv = vv.replace("\"", "")
            vv = vv.replace("\'", "")

            #print ("key ",kk, vv)
            if kk == "background" or kk == "bg" or kk == "bgcolor":
                self.TextState.bgcolor = vv
            if kk == "foreground" or kk == "fg" or kk == "color":
                self.TextState.color = vv
            elif kk == "size":
                self.TextState.size = int(vv)
            elif kk == "font":
                self.TextState.font = vv
            elif kk == "bold":
                if isTrue(vv):
                    self.TextState.bold = True
                else:
                    self.TextState.bold = False

            elif kk == "italic":
                if isTrue(vv):
                    self.TextState.italic = True
                else:
                    self.TextState.italic = False

            elif kk == "under" or kk == "underline":
                if isTrue(vv):
                    self.TextState.ul = True
                else:
                    self.TextState.ul = False

            elif kk == "align" or kk == "alignment":
                vvv = vv.lower()
                if vvv == "left":
                    self.TextState.left = True
                elif vvv == "right":
                    self.TextState.right = True
                elif vvv == "center":
                    #print (" centering")
                    self.TextState.center = True

        self.emit(" spantxt >")
예제 #3
0
def showfile(strx):

    global buf, xstack, mainview, pvg, ts

    got_clock =  time.clock()

    if pvg.verbose:
        print ("Showing file:", strx)

    try:
        fh = open(strx)
    except:
        strerr = "File:  '" + strx + "'  must be an existing and readble file. "
        print (strerr)
        mainview.add_text(strerr)
        return
    try:
        buf = fh.read();
    except:
        strerr2 =  "Cannot read file '" + strx + "'"
        print (strerr2)
        mainview.add_text(strerr2)
        fh.close()
        return
    fh.close()

    if pvg.show_timing:
        print  ("loader:", time.clock() - got_clock)

    if pvg.pgdebug > 5: print (buf)

    lstack.push(strx)

    mainview.clear(pvg.flag)
    ts.clear()

    xstack = stack.Stack()
    lexer.Lexer(buf, xstack, parser.tokens)

    if pvg.show_timing:
        print  ("lexer:", time.clock() - got_clock)

    if pvg.show_lexer:  # To show what the lexer did
        xstack.dump()

    parser.Parse(buf, xstack, pvg)
    cb.flush()
    mainview.showcur(False)

    if pvg.show_timing:
        print  ("parser:", time.clock() - got_clock)

    # Output results
    if pvg.emit:
        show_emit()
예제 #4
0
    def Image2(self, vparser, token, tentry):
        xstack = stack.Stack()
        # Walk optionals:
        while True:
            vparser.popstate()
            if vparser.fsm == parser.KEYVAL:
                #print (" Reducing keyval", fsm, "'"+ttt+"'", "\"" + stry + "\""            )
                xstack.push([vparser.ttt, "=", vparser.stry])
            if vparser.contflag == 0:
                break

        xtag = Gtk.TextTag()
        fname = ""
        www = 0
        hhh = 0

        while True:
            xkey = xstack.pop()
            if not xkey:
                break
            kk, ee, vv = xkey
            vv = vv.replace("\"", "")
            vv = vv.replace("\'", "")

            #print ("key: '" + kk + "' val: '" + vv + "'")

            if kk == "align":
                if vv == "left":
                    xtag.set_property("justification", Gtk.JUSTIFY_LEFT)
                elif vv == "center":
                    xtag.set_property("justification", Gtk.JUSTIFY_CENTER)
                elif vv == "right":
                    xtag.set_property("justification", Gtk.JUSTIFY_RIGHT)

            if kk == "width":
                www = int(vv)

            if kk == "height":
                hhh = int(vv)

            if kk == "name" or kk == "file":
                # Try docroot - curr dir - home/Pictures - home
                fname = self.pvg.docroot + "/" + vv
                if not isfile(fname):
                    fname = vv
                    if not isfile(fname):
                        fname = "~/Pictures" + vv
                        if not isfile(fname):
                            fname = "~/" + vv

        # Exec collected stuff
        self.Mainview.add_text_xtag(" ", xtag, self.pvg.flag)
        try:
            pixbuf = Gtk.gdk.pixbuf_new_from_file(fname)
            if www and hhh:
                #print ("scaling to", www, hhh)
                pixbuf2 = Gtk.gdk.Pixbuf(Gtk.gdk.COLORSPACE_RGB, True, 8, www,
                                         hhh)
                pixbuf.scale(pixbuf2, 0, 0, www, hhh, 0, 0,
                             float(www) / pixbuf.get_width(),
                             float(hhh) / pixbuf.get_height(),
                             Gtk.gdk.INTERP_BILINEAR)
                self.Mainview.add_pixbuf(pixbuf2, self.pvg.flag)
            else:
                self.Mainview.add_pixbuf(pixbuf, self.pvg.flag)

        except gobject.GError as error:
            #print ("Failed to load image file '" + vv + "'")
            self.Mainview.add_broken(self.pvg.flag)

        #vparser.fsm, vparser.contflag, ttt, vparser.stry = vparser.fstack.pop()
        self.emit("<image2>")
예제 #5
0
        if aa[0] == "-v": pvg.verbose = True
        if aa[0] == "-x": pvg.show_lexer = True
        if aa[0] == "-f": pvg.full_screen = True
        if aa[0] == "-o": pvg.xfull_screen = True
        if aa[0] == "-t": pvg.show_timing = True
        if aa[0] == "-e": pvg.emit = True
        if aa[0] == "-p": pvg.show_parse = True
        if aa[0] == "-s": pvg.show_state = True

    try:
        strx = args[0]
    except:
        help()
        exit(1)

    lstack = stack.Stack()
    fullpath = os.path.abspath(strx)
    pvg.docroot = os.path.dirname(fullpath)

    if pvg.xfull_screen:
        mainview.fullscreen()
    elif pvg.full_screen:
        mainview.set_fullscreen()

    mainview.callback = link
    mainview.bscallback = bslink

    if pvg.second != "":
        if pvg.pane_pos >= 0:
            mainview.set_pane_position(pvg.pane_pos)
        else: