2008-09-09 14 views
1

Ich benutze eine WxGenericDirCtrl, und ich würde gerne wissen, wenn es eine Möglichkeit gibt, Verzeichnisse zu verstecken, möchte ich besonders Geschwister der Elternknoten ausblenden.Verstecke Verzeichnisse in wxGenericDirCtrl

Zum Beispiel, wenn meine Verzeichnisstruktur sieht wie folgt aus:

+-a 
    | 
    +-b 
    | | 
    | +-whatever 
    | 
    +-c 
    | | 
    | +-d 
    | | 
    | +-e 
    | | 
    | +-f 
    | 
    +-g 
    | 
    +-whatever 

Wenn mein aktuell ausgewähltes Verzeichnis ist/a/c/d ist es eine Möglichkeit, b und g zu verstecken, so dass der Baum wie folgt aussieht in meinem ctrl:

+-a 
    | 
    +-c 
    | 
    +-[d] 
     | 
     +-e 
     | 
     +-f 

arbeite ich zur Zeit mit einer Verzeichnisstruktur, die viele, viele Verzeichnisse, die nicht relevant sind für die meisten Nutzer, so wäre es schön sein, um es zu reinigen.

bearbeiten: Wenn es einen Unterschied macht, ich WxPython benutze und bisher habe ich getestet nur meinen Code auf Linux den GTK-Backend verwenden, aber ich plane es Multi-Plattform zu machen und es mit unter Windows und Mac mit den nativen Backends.

Antwort

1

Listing/Walking-Verzeichnisse in Python ist sehr einfach, so würde ich empfehlen zu versuchen, "rollen Sie Ihre eigenen" mit einem der einfachen Tree-Steuerelemente (wie TreeCtrl oder CustomTreeCtrl). Es sollte wirklich ziemlich einfach sein, den Verzeichnislistencode aufzurufen, wenn ein Verzeichnis erweitert wird und das Ergebnis zurückgibt.

+0

Danke, aber es ist die Mühe für mich an dieser Stelle nicht wert. – Moe

+0

Ich werde sagen, das ist die einzige Lösung für das Problem, da es nicht scheint, gibt es einen Weg, um es mit dem, was existiert, zu tun – Moe

0

Ich glaube nicht, dass das möglich ist.

Es wäre relativ einfach, diese Funktionalität dem zugrunde liegenden C++ - wxWidgets-Steuerelement hinzuzufügen, aber da Sie wxPython verwenden, müssten Sie das ebenfalls neu erstellen, was ein enormes Problem darstellt.

+0

Ich habe kein Problem, etwas neu aufzubauen, das ist für eine Inhouse-App. – Moe