diff options
| author | aneejit1 <aneejit1@gmail.com> | 2022-07-28 15:46:19 +0000 | 
|---|---|---|
| committer | Slávek Banko <slavek.banko@axis.cz> | 2022-07-31 16:41:03 +0200 | 
| commit | 4978511ebb7e8d31dab64485d1ac87b6e004be81 (patch) | |
| tree | a2da3161f070116baa15de7276c5c0c9ac855e8f /examples/dirview.py | |
| parent | 5916692cf4c4df4f808e346c9bda1604960a0ff3 (diff) | |
| download | pytqt-4978511ebb7e8d31dab64485d1ac87b6e004be81.tar.gz pytqt-4978511ebb7e8d31dab64485d1ac87b6e004be81.zip | |
Remove Qt V2 support and example files
Build files for pyuic2 have been removed along with the examples for
version 2 of Qt and the build/configure scripts have been amended
accordingly. The "examples3" directory has been renamed to just
"examples".
Signed-off-by: aneejit1 <aneejit1@gmail.com>
(cherry picked from commit e602246539fd7435aaeb440fcb7f852c92c8426b)
Diffstat (limited to 'examples/dirview.py')
| -rwxr-xr-x | examples/dirview.py | 452 | 
1 files changed, 452 insertions, 0 deletions
| diff --git a/examples/dirview.py b/examples/dirview.py new file mode 100755 index 0000000..e6b1f58 --- /dev/null +++ b/examples/dirview.py @@ -0,0 +1,452 @@ +#!/usr/bin/env python + +"""************************************************************************** +** $Id: dirview.py,v 1.7 2005/11/14 17:21:26 phil Exp $ +** +** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved. +** Some corrections by M. Biermaier (http://www.office-m.at) +** +** This file is part of an example program for TQt.  This example +** program may be used, distributed and modified without limitation. +** +***************************************************************************""" + +import sys +from python_tqt.qt import * + +folder_closed_xpm = [ +    "16 16 9 1", +    "g c #808080", +    "b c #c0c000", +    "e c #c0c0c0", +    "# c #000000", +    "c c #ffff00", +    ". c None", +    "a c #585858", +    "f c #a0a0a4", +    "d c #ffffff", +    "..###...........", +    ".#abc##.........", +    ".#daabc#####....", +    ".#ddeaabbccc#...", +    ".#dedeeabbbba...", +    ".#edeeeeaaaab#..", +    ".#deeeeeeefe#ba.", +    ".#eeeeeeefef#ba.", +    ".#eeeeeefeff#ba.", +    ".#eeeeefefff#ba.", +    ".##geefeffff#ba.", +    "...##gefffff#ba.", +    ".....##fffff#ba.", +    ".......##fff#b##", +    ".........##f#b##", +    "...........####." +] + +folder_open_xpm = [ +    "16 16 11 1", +    "# c #000000", +    "g c #c0c0c0", +    "e c #303030", +    "a c #ffa858", +    "b c #808080", +    "d c #a0a0a4", +    "f c #585858", +    "c c #ffdca8", +    "h c #dcdcdc", +    "i c #ffffff", +    ". c None", +    "....###.........", +    "....#ab##.......", +    "....#acab####...", +    "###.#acccccca#..", +    "#ddefaaaccccca#.", +    "#bdddbaaaacccab#", +    ".eddddbbaaaacab#", +    ".#bddggdbbaaaab#", +    "..edgdggggbbaab#", +    "..#bgggghghdaab#", +    "...ebhggghicfab#", +    "....#edhhiiidab#", +    "......#egiiicfb#", +    "........#egiibb#", +    "..........#egib#", +    "............#ee#" +] + +folder_locked = [ +    "16 16 10 1", +    "h c #808080", +    "b c #ffa858", +    "f c #c0c0c0", +    "e c #c05800", +    "# c #000000", +    "c c #ffdca8", +    ". c None", +    "a c #585858", +    "g c #a0a0a4", +    "d c #ffffff", +    "..#a#...........", +    ".#abc####.......", +    ".#daa#eee#......", +    ".#ddf#e##b#.....", +    ".#dfd#e#bcb##...", +    ".#fdccc#daaab#..", +    ".#dfbbbccgfg#ba.", +    ".#ffb#ebbfgg#ba.", +    ".#ffbbe#bggg#ba.", +    ".#fffbbebggg#ba.", +    ".##hf#ebbggg#ba.", +    "...###e#gggg#ba.", +    ".....#e#gggg#ba.", +    "......###ggg#b##", +    ".........##g#b##", +    "...........####." +] + +pix_file = [ +    "16 16 7 1", +    "# c #000000", +    "b c #ffffff", +    "e c #000000", +    "d c #404000", +    "c c #c0c000", +    "a c #ffffc0", +    ". c None", +    "................", +    ".........#......", +    "......#.#a##....", +    ".....#b#bbba##..", +    "....#b#bbbabbb#.", +    "...#b#bba##bb#..", +    "..#b#abb#bb##...", +    ".#a#aab#bbbab##.", +    "#a#aaa#bcbbbbbb#", +    "#ccdc#bcbbcbbb#.", +    ".##c#bcbbcabb#..", +    "...#acbacbbbe...", +    "..#aaaacaba#....", +    "...##aaaaa#.....", +    ".....##aa#......", +    ".......##......." +] + +folderLocked = None +folderClosed = None +folderOpened = None +fileNormal   = None + +class FileItem( TQListViewItem ) : +    def __init__( self, parent=None, s1=TQString.null, s2=TQString.null ): +        TQListViewItem.__init__( self, parent, s1, s2 ) +        self.pix = None +     +    def setPixmap( self, p ) : +        self.pix = p +        self.setup() +        self.widthChanged( 0 ) +        self.invalidateHeight() +        self.repaint() +     +    def pixmap( self, i ) : +        if i : return None +        else : return self.pix; + +# Class Directory     +class Directory( TQListViewItem ) : +    def __init__( self, parent=None, filename=TQString.null, col2=TQString.null ): +        TQListViewItem.__init__( self, parent, filename, col2 ) +        self.pix = None +        global folderLocked, folderClosed, folderOpened, fileNormal +        self.showDirsOnly = False +        if isinstance(parent, TQListView): +            self.p = None +            self.showDirsOnly = parent.showDirsOnly() +            self.f = TQFile( TQString('/') ) +        else: +            self.p = parent +            self.showDirsOnly = parent.showDirsOnly +            self.f = TQFile( TQString(filename) ) + +        self.readable = TQDir( self.fullName() ).isReadable() +        if not self.readable : self.setPixmap( folderLocked ) +        else : self.setPixmap( folderClosed ) + +    def setPixmap( self, px ) : +        self.pix = px +        self.setup() +        self.widthChanged( 0 ) +        self.invalidateHeight() +        self.repaint() +     +    def pixmap( self, i ) : +        if i : return None +        else : return self.pix +     +    def setOpen( self, o ) : +        if o : self.setPixmap( folderOpened ) +        else : self.setPixmap( folderClosed ) + +        if o and not self.childCount() : +            s = TQString( self.fullName() ) +            thisDir = TQDir( s ) +            if not thisDir.isReadable() : +                self.readable = False +                self.setExpandable( False ) +                return +             +            self.listView().setUpdatesEnabled( False ) +            files = thisDir.entryInfoList() +            if files : +                fi = TQFileInfo() +                for it in files: +                    fi = it +                    if str(fi.fileName()) == "." or str(fi.fileName()) == ".." : +                        continue # nothing +                    elif fi.isSymLink() and not self.showDirsOnly : +                        item = FileItem( self, fi.fileName(), "Symbolic Link" ) +                        item.setPixmap( fileNormal ) +                    elif fi.isDir() : +                        Directory( self, fi.fileName() ) +                    elif not self.showDirsOnly : +                        if fi.isFile() : item = FileItem( self, fi.fileName(), "File" ) +                        else : item = FileItem( self, fi.fileName(), "Special" ) +                        item.setPixmap( fileNormal ) +                     +            self.listView().setUpdatesEnabled( True ) +        TQListViewItem.setOpen( self, o ) + +    def setup( self ): +        self.setExpandable( True ) +        TQListViewItem.setup( self ) + +    def fullName( self ): +        s = TQString() +        if self.p : +            s = self.p.fullName() +            s.append( self.f.name() ) +            s.append( "/" ) +        else : +            s = self.f.name() +        return s + +    def text( self, column ) : +        if column == 0 : return self.f.name() +        elif self.readable  : return "Directory" +        else : return "Unreadable Directory" +     +# Class DirectoryView + +class DirectoryView( TQListView ): +    def __init__( self, parent=None, name=None, sdo=False ): +        TQListView.__init__( self, parent, name ) +        self.dirsOnly = sdo +        self.oldCurrent = 0 +        self.dropItem = 0 +        self.presspos = TQPoint(0,0) +        self.mousePressed = False +        global folderLocked, folderClosed, folderOpened, fileNormal #= TQPixmap() +        self.autoopenTime = 750 +       +        self.autoopen_timer = TQTimer( self ) +        if not folderLocked : +            folderLocked = TQPixmap( folder_locked ) +            folderClosed = TQPixmap( folder_closed_xpm ) +            folderOpened = TQPixmap( folder_open_xpm ) +            fileNormal   = TQPixmap( pix_file ) +         +        self.connect( self, SIGNAL("doubleClicked(TQListViewItem *)"), +                      self.slotFolderSelected ) +        self.connect( self, SIGNAL("returnPressed(TQListViewItem *)"), +                      self.slotFolderSelected ) + +        self.setAcceptDrops( True ) +        self.viewport().setAcceptDrops( True ) + +        self.connect( self.autoopen_timer, SIGNAL("timeout()"), self.openFolder ) + +    def showDirsOnly( self ): +        return self.dirsOnly +     +    def slotFolderSelected( self, i ): +        if not i or not self.showDirsOnly(): +            return +        dir = i +        self.emit( PYSIGNAL("folderSelected(const TQString &)"), (dir.fullName(), ) ) +             +    def openFolder( self ): +        self.autoopen_timer.stop() +        if self.dropItem and not self.dropItem.isOpen(): +            self.dropItem.setOpen( True ) +            self.dropItem.repaint() +         +    def contentsDragEnterEvent( self, e ): +        if not TQUriDrag.canDecode(e) : +            e.ignore() +            return +        self.oldCurrent = self.currentItem() +        i = self.itemAt( self.contentsToViewport(e.pos()) ) +        if i : +            self.dropItem = i +            self.autoopen_timer.start( self.autoopenTime ) + +    def contentsDragMoveEvent( self, e ) : +        if not TQUriDrag.canDecode(e) : +            e.ignore() +            return +        vp = self.contentsToViewport( e.pos() ) +        i = self.itemAt( vp ) +        if i : +            self.setSelected( i, True ) +            e.accept() +            if i != self.dropItem : +                self.autoopen_timer.stop() +                self.dropItem = i +                self.autoopen_timer.start( self.autoopenTime ) + +            if e.action() == TQDropEvent.Copy: +                pass +            elif e.action() == TQDropEvent.Move: +                e.acceptAction() +            elif e.action() == TQDropEvent.Link: +                e.acceptAction() +            else: +                pass +        else : +            e.ignore() +            self.autoopen_timer.stop() +            self.dropItem = 0 + +    def contentsDragLeaveEvent( self, TQDragLeaveEvent ) : +        self.autoopen_timer.stop() +        self.dropItem = 0 + +        self.setCurrentItem( self.oldCurrent ) +        self.setSelected( self.oldCurrent, True ) +     +    def contentsDropEvent( self, e ): +        self.autoopen_timer.stop() +        if not TQUriDrag.canDecode(e) : +            e.ignore() +            return +        item = self.itemAt( self.contentsToViewport(e.pos()) ) +        if item : +            lst = TQStringList() +            TQUriDrag.decodeLocalFiles( e, lst ) +            if e.action() == TQDropEvent.Copy: +                s = TQString("Copy") +            elif e.action() ==  TQDropEvent.Move: +                s = TQString("Move") +                e.acceptAction() +            elif e.action() == TQDropEvent.Link: +                s = TQString("Link") +                e.acceptAction() +            else: +                s = TQString("Unknown") +           +            s += "\n\n" +            e.accept() + +            for filename in lst: +                s += filename +                s += "\n" + +            s += "\nTo\n\n   " +            s += self.fullPath(item) +            TQMessageBox.information( self, "Drop target", s, "Not implemented" ) +        else : +            e.ignore() +    +    def fullPath( self, item ): +        fullpath = TQString( item.text(0) ) +        item = item.parent() +        while item: +            newpath = item.text(0) + +            if item.parent(): +                newpath += "/" + +            newpath += fullpath +            fullpath = newpath +            item = item.parent() + +        return fullpath +     +    def contentsMousePressEvent( self, e ) : +        TQListView.contentsMousePressEvent( self, e ) +        p = TQPoint( self.contentsToViewport( e.pos() ) ) +        i = self.itemAt( p ) +        if i : +            # if the user clicked into the root decoration of the item, don't try to start a drag! +            if self.rootIsDecorated(): isdecorated = 1 +            else : isdecorated = 0 +            if p.x() > self.header().sectionPos( self.header().mapToIndex( 0 )) + self.treeStepSize() * ( i.depth() + isdecorated + self.itemMargin() or +               p.x() < self.header().sectionPos( self.header().mapToIndex( 0 ) ) ) : +               self.presspos.setX(e.pos().x()) +               self.presspos.setY(e.pos().y()) +               self.mousePressed = True + +    def contentsMouseMoveEvent( self, e ): +        offset = TQPoint( self.presspos.x() - e.pos().x(), +                         self.presspos.y() - e.pos().y() ) +        if self.mousePressed and (offset).manhattanLength() > TQApplication.startDragDistance() : +            self.mousePressed = False +            item = self.itemAt( self.contentsToViewport(self.presspos) ) +            if item : +                source = self.fullPath(item) +                if TQFile.exists(source) : +                    ud = TQUriDrag(self.viewport()) +                    ud.setFileNames( TQStringList (source) ) +                    if ud.drag() : +                        TQMessageBox.information( self, "Drag source", +                                                TQString("Delete ")+source, "Not implemented" ) + +    def contentsMouseReleaseEvent( self, TQMouseEvent ): +        self.mousePressed = False + +    def setDir( self, s ): +        it = TQListViewItem( self ) +        it.setOpen(False) +        thisDir = TQDir( s ) +        it = TQListViewItem( self ) +        it.setOpen(False) +        lst = TQStringList( TQStringList.split( "/", s ) ) +        listview2 = [] +        listview2.extend( lst ) +         +        item = self.firstChild() +        for it2 in listview2 : +            while item : +                if item.text( 0 ) == it2 : +                    item.setOpen( True ) +                    break +                item = item.itemBelow() +        if item: +            self.setCurrentItem( item ) + +def main( args ): +    a = TQApplication( args ) +     +    mw = DirectoryView() +    mw.addColumn( "Name" ) +    mw.addColumn( "Type" ) +    mw.setTreeStepSize( 20 ) +     +    roots = TQDir.drives() +    if roots : +        for it in roots: +            fi = it +            root = Directory( mw, fi.filePath() ) +            if roots.count(it) <= 1 : +                root.setOpen( True )  # be interesting +     +    mw.resize( 400, 400 ) +    mw.setCaption( "TQt Example - Directory Browser" ) +    mw.setAllColumnsShowFocus( True ) +    a.setMainWidget( mw ) +    mw.show() +     +    a.exec_loop() +     +if __name__=="__main__": +    main(sys.argv) | 
