2010-03-03 2 views
6

Ich fragte mich, ob es für (n) Flüche irgendwelche Baumbibliotheken gab.gibt es irgendwelche Baumbibliotheken/Widgets für (n) Flüche

Ich versuche, eine Komponente zu schreiben, die einen Baum von Ordnern zeigt & war neugierig, wenn es eine vorkompilierte Flüche Komponente, die dies tun könnte.

Ich habe 'Core' Flüche sowie Bibliotheken wie CDK überprüft - und ich kann nichts finden.

Wenn keins existiert, bin ich nicht abgeneigt, mein eigenes zu bauen - aber ich kann anscheinend keine anständigen Tutorials finden, so dass jede Hilfe in dieser Hinsicht auch sehr geschätzt würde.

Danke, Ace

Antwort

1

Hängt davon ab, welche Programmiersprache Sie verwenden/bereit zu verwenden. Ich vor kurzem einen Baum Widget für urwid, die eine Flüche Widget-Bibliothek für Python ist: http://bitbucket.org/robla/urwid-treetools/src/

UPDATE 2015.09.06 - My Patch wurde vor langer Zeit als Teil Urwid, angenommen, die nun einen Baum Widget unterstützt in sein Kern. Der Link in meiner ursprünglichen 2010 Antwort bezieht sich immer noch auf meinen alten Code, ist aber veraltet.

1

„Ich versuche, eine Komponente zu schreiben, die einen Baum von Ordnern zeigt“

CDK hat das CDKFSELECT Widget.

Es zeigt eine Liste von Verzeichnissen und Dateien an, die für Sie arbeiten könnten, oder der Quellcode von CDKFSELECT könnte für Ihre eigene benutzerdefinierte geschriebene Lösung verwendet werden.

CDKFSELECT *fSelect = 0; 

/* 
Height of zero means to extent of xterm 
Width of zero means to extent of xterm 
*/ 
int HEIGHT = 0; 
int WIDTH = 0; 

char *title = new char[strlen("Pick a file to open") + 1]; 
strcpy(title, "Pick a file to open"); 

char *prompt = new char[strlen("==> ") + 1]; 
strcpy(prompt, "==> "); 

char *directoryAttribute = new char[strlen("</B>") + 1]; /* bold */ 
strcpy(directoryAttribute, "</B>"); 

char *fileAttribute = new char[strlen("</N>") + 1]; /* normal */ 
strcpy(fileAttribute, "</N>"); 

char *linkAttribute = new char[strlen("</D>") + 1]; /* dim */ 
strcpy(linkAttribute, "</D>"); 

char *sockAttribute = new char[strlen("</D>") + 1]; /* dim */ 
strcpy(sockAttribute, "</D>"); 

boolean displayBox = TRUE; 
boolean displayShadow = FALSE; 

fSelect = newCDKFselect(pCdkScreen, 
      TOP, LEFT, HEIGHT, WIDTH, 
      title, prompt, 
      A_NORMAL, '_', A_REVERSE, 
      directoryAttribute, fileAttribute, linkAttribute, sockAttribute, 
      displayBox, displayShadow); 

char *filename = activateCDKFselect(fSelect, 0); 
/* 
2014-06-13, using DDD, filename being correctly populated 
by CDK 
*/ 

/* do other stuff... */ 

/* 
free the memory of any dynamically created objects 
that were created with new or malloc, or such 
*/ 
destroyCDKFselect(fSelect); 

delete [] title; 
delete [] prompt; 
delete [] directoryAttribute; 
delete [] fileAttribute; 
delete [] linkAttribute; 
delete [] sockAttribute; 
0

dialog Das Programm (welches eine dokumentierte Schnittstelle hat Bibliothek) eine "tree" Widget. Das Programm arbeitet mit (n) Curses und ist im Gegensatz zu CDK für UTF-8 geeignet.

dialog - tree view

Es hat auch einen file(/directory) Auswahl-Widget.

dialog - file-selection

Es gibt auch wcd (obwohl wie mc, Wiederverwertbarkeit der Bibliothek unsicher ist). Es ist jedoch ein gutes Beispiel dafür ist, was OP wahrscheinlich will:

screenshot converted from wcd page

In Bezug auf urwid, das ist fraglich. Unter der Haube haben Sie vielleicht keine Flüche. Für das, was es wert ist, ein Screenshot der treeview Skript:

urwid treeview

und auf meinem Debian/Testsystem, wird das Skript nicht ncurses verwenden. Es ist fest codiert (d.h.mit raw_display).

Verwandte Themen