是否存在(n)curses的树库/小部件

时间:2010-03-03 20:18:09

标签: ncurses curses

我想知道是否有可用于(n)curses的树库。

我正在尝试编写一个显示文件夹树的组件。如果有一个预先构建的curses组件可以做到这一点,我很好奇。

我检查了'核心'诅咒以及像CDK这样的图书馆 - 我似乎找不到任何东西。

如果不存在,我不反对建立我自己的 - 但我似乎找不到任何体面的教程来做这个,所以在这方面的任何帮助也将非常感激。

谢谢你,Ace

4 个答案:

答案 0 :(得分:1)

取决于您正在使用/愿意使用的编程语言。我最近为Urwid提交了一个树小部件,它是Python的curses小部件库:http://bitbucket.org/robla/urwid-treetools/src/

更新2015-09-06 - 我的补丁在很久以前被接受为Urwid的一部分,它现在支持其核心中的树小部件。我原来的2010年答案中的链接仍然链接到我的旧代码,但已经过时了。

答案 1 :(得分:1)

“我正在尝试编写一个显示文件夹树的组件”

CDK拥有CDKFSELECT小部件。

它显示可能适合您的目录和文件列表,或者 CDKFSELECT的源代码可能会用于您自己的自定义编写 溶液

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;

答案 2 :(得分:1)

dialog程序(具有文档库接口)具有"tree"小部件。该程序适用于(n)curses,与CDK不同,适用于UTF-8。

dialog - tree view

它还有一个file(/directory)选择小部件。

dialog - file-selection

还有wcd(虽然喜欢 mc 库的可重用性是不确定的)。然而,这是OP可能想要的一个很好的例子:

screenshot converted from wcd page

关于 urwid ,这是值得商榷的。在引擎盖下你可能实际上没有诅咒。对于它的价值, treeview 脚本的屏幕截图:

urwid treeview

在我的Debian /测试系统上,脚本不使用ncurses。它是硬编码的(即使用raw_display)。

答案 3 :(得分:0)

查看Midnight commander源代码(http://www.midnight-commander.org/)它有一个树存储小部件。