Files
TransPyC/includes/fltk/cfltk/include/cfltk2/cfl_tree.h
T
TermiNexus 6892183cc9 feat(fltk): 新增 FLTK 1.4 纯 extern FFI 绑定库(对接 cfltk C API)
- 生成 24 个 _cfl*.vp(10327 条 extern 声明)+ _types/_enums 常量

- __init__.vp 提供 Fl/Fl_Widget/Fl_Window/Fl_Button/Fl_Input/Fl_Text_Buffer/Fl_Group/Fl_Menu_Bar/Fl_Native_File_Chooser 等包装类

- 回调(Fl_Callback)按 bytes 不透明处理,菜单回调位传 t.CPtr(0)

- 新增 examples/hello.vp、dialog.vp 冒烟样例,26 个 .vp 全部通过 vast parse

- 内嵌 cfltk(C API 封装)与 FLTK 1.4 完整源码,构建目标 cfltk2
2026-09-01 19:53:54 +08:00

470 lines
13 KiB
C

#ifndef __CFL_TREE_H__
#define __CFL_TREE_H__
#include "cfl_macros.h"
#ifdef __cplusplus
extern "C" {
#endif
WIDGET_DECLARE(Fl_Tree)
typedef struct Fl_Tree_Item Fl_Tree_Item;
typedef struct Fl_Tree_Item_Array Fl_Tree_Item_Array;
void Fl_Tree_begin(Fl_Tree *self);
void Fl_Tree_end(Fl_Tree *self);
void Fl_Tree_show_self(Fl_Tree *self);
void Fl_Tree_root_label(Fl_Tree *self, const char *new_label);
Fl_Tree_Item *Fl_Tree_root(Fl_Tree *self);
void Fl_Tree_set_root(Fl_Tree *self, Fl_Tree_Item *newitem);
Fl_Tree_Item *Fl_Tree_add(Fl_Tree *self, const char *name);
Fl_Tree_Item *
Fl_Tree_add_item(Fl_Tree *self, const char *name, Fl_Tree_Item *item);
Fl_Tree_Item *
Fl_Tree_insert_above(Fl_Tree *self, Fl_Tree_Item *above, const char *name);
Fl_Tree_Item *
Fl_Tree_insert(Fl_Tree *self, Fl_Tree_Item *item, const char *name, int pos);
const Fl_Tree_Item *Fl_Tree_find_item(const Fl_Tree *self, const char *path);
Fl_Tree_Item *Fl_Tree_find_item_mut(Fl_Tree *self, const char *path);
int Fl_Tree_remove(Fl_Tree *self, Fl_Tree_Item *item);
void Fl_Tree_clear(Fl_Tree *self);
void Fl_Tree_clear_children(Fl_Tree *self, Fl_Tree_Item *item);
const Fl_Tree_Item *Fl_Tree_find_clicked(const Fl_Tree *self, int yonly);
Fl_Tree_Item *Fl_Tree_item_clicked(Fl_Tree *self);
Fl_Tree_Item *Fl_Tree_first(Fl_Tree *self);
Fl_Tree_Item *Fl_Tree_first_visible_item(Fl_Tree *self);
Fl_Tree_Item *Fl_Tree_next(Fl_Tree *self, Fl_Tree_Item *item);
Fl_Tree_Item *Fl_Tree_prev(Fl_Tree *self, Fl_Tree_Item *item);
Fl_Tree_Item *Fl_Tree_last(Fl_Tree *self);
Fl_Tree_Item *Fl_Tree_last_visible_item(Fl_Tree *self);
Fl_Tree_Item *
Fl_Tree_next_visible_item(Fl_Tree *self, Fl_Tree_Item *start, int dir);
Fl_Tree_Item *Fl_Tree_first_selected_item(Fl_Tree *self);
Fl_Tree_Item *Fl_Tree_last_selected_item(Fl_Tree *self);
Fl_Tree_Item *
Fl_Tree_next_item(Fl_Tree *self, Fl_Tree_Item *item, int dir, int visible);
Fl_Tree_Item *
Fl_Tree_next_selected_item(Fl_Tree *self, Fl_Tree_Item *item, int dir);
int Fl_Tree_get_selected_items(Fl_Tree *self, Fl_Tree_Item_Array **arr);
int Fl_Tree_get_items(Fl_Tree *self, Fl_Tree_Item_Array **arr);
int Fl_Tree_open(Fl_Tree *self, const char *path, int docallback);
void Fl_Tree_open_toggle(Fl_Tree *self, Fl_Tree_Item *item, int docallback);
int Fl_Tree_close(Fl_Tree *self, const char *path, int docallback);
int Fl_Tree_is_open(const Fl_Tree *self, const char *path);
int Fl_Tree_is_close(const Fl_Tree *self, const char *path);
int Fl_Tree_select(Fl_Tree *self, const char *path, int docallback);
void Fl_Tree_select_toggle(Fl_Tree *self, Fl_Tree_Item *item, int docallback);
int Fl_Tree_deselect(Fl_Tree *self, const char *path, int docallback);
int Fl_Tree_deselect_all(Fl_Tree *self, Fl_Tree_Item *item, int docallback);
int Fl_Tree_select_only(Fl_Tree *self, Fl_Tree_Item *selitem, int docallback);
int Fl_Tree_select_all(Fl_Tree *self, Fl_Tree_Item *item, int docallback);
int Fl_Tree_extend_selection_dir(
Fl_Tree *self,
Fl_Tree_Item *from,
Fl_Tree_Item *to,
int dir,
int val,
int visible
);
int Fl_Tree_extend_selection(
Fl_Tree *self, Fl_Tree_Item *from, Fl_Tree_Item *to, int val, int visible
);
void Fl_Tree_set_item_focus(Fl_Tree *self, Fl_Tree_Item *item);
Fl_Tree_Item *Fl_Tree_get_item_focus(const Fl_Tree *self);
int Fl_Tree_is_selected(Fl_Tree *self, const char *path);
int Fl_Tree_item_labelfont(const Fl_Tree *self);
void Fl_Tree_set_item_labelfont(Fl_Tree *self, int val);
int Fl_Tree_item_labelsize(const Fl_Tree *self);
void Fl_Tree_set_item_labelsize(Fl_Tree *self, int val);
unsigned int Fl_Tree_item_labelfgcolor(const Fl_Tree *self);
void Fl_Tree_set_item_labelfgcolor(Fl_Tree *self, unsigned int val);
unsigned int Fl_Tree_item_labelbgcolor(const Fl_Tree *self);
void Fl_Tree_set_item_labelbgcolor(Fl_Tree *self, unsigned int val);
unsigned int Fl_Tree_connectorcolor(const Fl_Tree *self);
void Fl_Tree_set_connectorcolor(Fl_Tree *self, unsigned int val);
int Fl_Tree_marginleft(const Fl_Tree *self);
void Fl_Tree_set_marginleft(Fl_Tree *self, int val);
int Fl_Tree_margintop(const Fl_Tree *self);
void Fl_Tree_set_margintop(Fl_Tree *self, int val);
int Fl_Tree_marginbottom(const Fl_Tree *self);
void Fl_Tree_set_marginbottom(Fl_Tree *self, int val);
int Fl_Tree_linespacing(const Fl_Tree *self);
void Fl_Tree_set_linespacing(Fl_Tree *self, int val);
int Fl_Tree_openchild_marginbottom(const Fl_Tree *self);
void Fl_Tree_set_openchild_marginbottom(Fl_Tree *self, int val);
int Fl_Tree_usericonmarginleft(const Fl_Tree *self);
void Fl_Tree_set_usericonmarginleft(Fl_Tree *self, int val);
int Fl_Tree_labelmarginleft(const Fl_Tree *self);
void Fl_Tree_set_labelmarginleft(Fl_Tree *self, int val);
int Fl_Tree_widgetmarginleft(const Fl_Tree *self);
void Fl_Tree_set_widgetmarginleft(Fl_Tree *self, int val);
int Fl_Tree_connectorwidth(const Fl_Tree *self);
void Fl_Tree_set_connectorwidth(Fl_Tree *self, int val);
void *Fl_Tree_usericon(const Fl_Tree *self);
void Fl_Tree_set_usericon(Fl_Tree *self, void *val);
void *Fl_Tree_openicon(const Fl_Tree *self);
void Fl_Tree_set_openicon(Fl_Tree *self, void *val);
void *Fl_Tree_closeicon(const Fl_Tree *self);
void Fl_Tree_set_closeicon(Fl_Tree *self, void *val);
int Fl_Tree_showcollapse(const Fl_Tree *self);
void Fl_Tree_set_showcollapse(Fl_Tree *self, int val);
int Fl_Tree_showroot(const Fl_Tree *self);
void Fl_Tree_set_showroot(Fl_Tree *self, int val);
int Fl_Tree_connectorstyle(const Fl_Tree *self);
void Fl_Tree_set_connectorstyle(Fl_Tree *self, int val);
int Fl_Tree_sortorder(const Fl_Tree *self);
void Fl_Tree_set_sortorder(Fl_Tree *self, int val);
int Fl_Tree_selectbox(const Fl_Tree *self);
void Fl_Tree_set_selectbox(Fl_Tree *self, int val);
int Fl_Tree_selectmode(const Fl_Tree *self);
void Fl_Tree_set_selectmode(Fl_Tree *self, int val);
int Fl_Tree_item_reselect_mode(const Fl_Tree *self);
void Fl_Tree_set_item_reselect_mode(Fl_Tree *self, int mode);
int Fl_Tree_item_draw_mode(const Fl_Tree *self);
void Fl_Tree_set_item_draw_mode(Fl_Tree *self, int mode);
void Fl_Tree_calc_dimensions(Fl_Tree *self);
void Fl_Tree_calc_tree(Fl_Tree *self);
void Fl_Tree_recalc_tree(Fl_Tree *self);
int Fl_Tree_displayed(Fl_Tree *self, Fl_Tree_Item *item);
void Fl_Tree_show_item(Fl_Tree *self, Fl_Tree_Item *item, int yoff);
void Fl_Tree_show_item_top(Fl_Tree *self, Fl_Tree_Item *item);
void Fl_Tree_show_item_middle(Fl_Tree *self, Fl_Tree_Item *item);
void Fl_Tree_show_item_bottom(Fl_Tree *self, Fl_Tree_Item *item);
void Fl_Tree_display(Fl_Tree *self, Fl_Tree_Item *item);
int Fl_Tree_vposition(const Fl_Tree *self);
void Fl_Tree_set_vposition(Fl_Tree *self, int pos);
int Fl_Tree_hposition(const Fl_Tree *self);
void Fl_Tree_set_hposition(Fl_Tree *self, int pos);
int Fl_Tree_is_scrollbar(Fl_Tree *self, Fl_Widget *w);
int Fl_Tree_scrollbar_size(const Fl_Tree *self);
void Fl_Tree_set_scrollbar_size(Fl_Tree *self, int size);
int Fl_Tree_is_vscroll_visible(const Fl_Tree *self);
int Fl_Tree_is_hscroll_visible(const Fl_Tree *self);
void Fl_Tree_set_callback_item(Fl_Tree *self, Fl_Tree_Item *item);
Fl_Tree_Item *Fl_Tree_callback_item(Fl_Tree *self);
void Fl_Tree_set_callback_reason(Fl_Tree *self, int reason);
int Fl_Tree_callback_reason(const Fl_Tree *self);
int Fl_Tree_item_pathname(
const Fl_Tree *self,
char *pathname,
int pathnamelen,
const Fl_Tree_Item *item
);
/* TreeItems */
Fl_Tree_Item *Fl_Tree_Item_new(Fl_Tree *tree, const char *txt);
void Fl_Tree_Item_draw_item_content(
Fl_Tree_Item *item, int (*cb)(Fl_Tree_Item *self, int, void *), void *data
);
void Fl_Tree_Item_set_user_data(Fl_Tree_Item *item, void *data);
void *Fl_Tree_Item_user_data(const Fl_Tree_Item *item);
int Fl_Tree_Item_x(const Fl_Tree_Item *self);
int Fl_Tree_Item_y(const Fl_Tree_Item *self);
int Fl_Tree_Item_w(const Fl_Tree_Item *self);
int Fl_Tree_Item_h(const Fl_Tree_Item *self);
int Fl_Tree_Item_label_x(const Fl_Tree_Item *self);
int Fl_Tree_Item_label_y(const Fl_Tree_Item *self);
int Fl_Tree_Item_label_w(const Fl_Tree_Item *self);
int Fl_Tree_Item_label_h(const Fl_Tree_Item *self);
void Fl_Tree_Item_show_self(const Fl_Tree_Item *self, const char *indent);
void Fl_Tree_set_Item_label(Fl_Tree_Item *self, const char *val);
const char *Fl_Tree_Item_label(const Fl_Tree_Item *self);
void Fl_Tree_Item_set_labelfont(Fl_Tree_Item *self, int val);
int Fl_Tree_Item_labelfont(const Fl_Tree_Item *self);
void Fl_Tree_Item_set_labelsize(Fl_Tree_Item *self, int val);
int Fl_Tree_Item_labelsize(const Fl_Tree_Item *self);
void Fl_Tree_Item_set_labelfgcolor(Fl_Tree_Item *self, unsigned int val);
unsigned int Fl_Tree_Item_labelfgcolor(const Fl_Tree_Item *self);
void Fl_Tree_Item_set_labelcolor(Fl_Tree_Item *self, unsigned int val);
unsigned int Fl_Tree_Item_labelcolor(const Fl_Tree_Item *self);
void Fl_Tree_Item_set_labelbgcolor(Fl_Tree_Item *self, unsigned int val);
unsigned int Fl_Tree_Item_labelbgcolor(const Fl_Tree_Item *self);
void Fl_Tree_Item_set_widget(Fl_Tree_Item *self, Fl_Widget *val);
Fl_Widget *Fl_Tree_Item_widget(const Fl_Tree_Item *self);
int Fl_Tree_Item_children(const Fl_Tree_Item *self);
const Fl_Tree_Item *Fl_Tree_Item_child(const Fl_Tree_Item *self, int t);
int Fl_Tree_Item_has_children(const Fl_Tree_Item *self);
int Fl_Tree_Item_find_child(Fl_Tree_Item *self, const char *name);
int Fl_Tree_Item_remove_child(Fl_Tree_Item *self, const char *new_label);
void Fl_Tree_Item_clear_children(Fl_Tree_Item *self);
int Fl_Tree_Item_swap_children(
Fl_Tree_Item *self, Fl_Tree_Item *a, Fl_Tree_Item *b
);
const Fl_Tree_Item *
Fl_Tree_Item_find_child_item(const Fl_Tree_Item *self, const char *name);
Fl_Tree_Item *Fl_Tree_Item_replace(Fl_Tree_Item *self, Fl_Tree_Item *new_item);
Fl_Tree_Item *Fl_Tree_Item_replace_child(
Fl_Tree_Item *self, Fl_Tree_Item *olditem, Fl_Tree_Item *newitem
);
Fl_Tree_Item *Fl_Tree_Item_deparent(Fl_Tree_Item *self, int index);
int Fl_Tree_Item_reparent(
Fl_Tree_Item *self, Fl_Tree_Item *newchild, int index
);
int Fl_Tree_Item_move(Fl_Tree_Item *self, int to, int from);
int Fl_Tree_Item_move_above(Fl_Tree_Item *self, Fl_Tree_Item *item);
int Fl_Tree_Item_move_below(Fl_Tree_Item *self, Fl_Tree_Item *item);
int Fl_Tree_Item_move_into(Fl_Tree_Item *self, Fl_Tree_Item *item, int pos);
int Fl_Tree_Item_depth(const Fl_Tree_Item *self);
Fl_Tree_Item *Fl_Tree_Item_prev(Fl_Tree_Item *self);
Fl_Tree_Item *Fl_Tree_Item_next(Fl_Tree_Item *self);
Fl_Tree_Item *Fl_Tree_Item_next_sibling(Fl_Tree_Item *self);
Fl_Tree_Item *Fl_Tree_Item_prev_sibling(Fl_Tree_Item *self);
void Fl_Tree_Item_update_prev_next(Fl_Tree_Item *self, int index);
const Fl_Tree_Item *Fl_Tree_Item_parent(const Fl_Tree_Item *self);
void Fl_Tree_Item_set_parent(Fl_Tree_Item *self, Fl_Tree_Item *val);
const Fl_Tree *Fl_Tree_Item_tree(const Fl_Tree_Item *self);
void Fl_Tree_Item_open(Fl_Tree_Item *self);
void Fl_Tree_Item_close(Fl_Tree_Item *self);
int Fl_Tree_Item_is_open(const Fl_Tree_Item *self);
int Fl_Tree_Item_is_close(const Fl_Tree_Item *self);
void Fl_Tree_Item_open_toggle(Fl_Tree_Item *self);
void Fl_Tree_Item_select(Fl_Tree_Item *self, int val);
void Fl_Tree_Item_select_toggle(Fl_Tree_Item *self);
int Fl_Tree_Item_select_all(Fl_Tree_Item *self);
void Fl_Tree_Item_deselect(Fl_Tree_Item *self);
int Fl_Tree_Item_deselect_all(Fl_Tree_Item *self);
int Fl_Tree_Item_is_root(const Fl_Tree_Item *self);
int Fl_Tree_Item_is_visible(const Fl_Tree_Item *self);
char Fl_Tree_Item_is_active(const Fl_Tree_Item *self);
char Fl_Tree_Item_is_activated(const Fl_Tree_Item *self);
void Fl_Tree_Item_deactivate(Fl_Tree_Item *self);
void Fl_Tree_Item_activate(Fl_Tree_Item *self, int val);
char Fl_Tree_Item_is_selected(const Fl_Tree_Item *self);
/* TreeItemArray */
int Fl_Tree_Item_Array_total(const Fl_Tree_Item_Array *self);
void Fl_Tree_Item_Array_swap(Fl_Tree_Item_Array *self, int ax, int bx);
int Fl_Tree_Item_Array_move(Fl_Tree_Item_Array *self, int to, int from);
int Fl_Tree_Item_Array_deparent(Fl_Tree_Item_Array *self, int pos);
int Fl_Tree_Item_Array_reparent(
Fl_Tree_Item_Array *self,
Fl_Tree_Item *item,
Fl_Tree_Item *newparent,
int pos
);
void Fl_Tree_Item_Array_clear(Fl_Tree_Item_Array *self);
void Fl_Tree_Item_Array_add(Fl_Tree_Item_Array *self, Fl_Tree_Item *val);
void Fl_Tree_Item_Array_insert(
Fl_Tree_Item_Array *self, int pos, Fl_Tree_Item *new_item
);
void Fl_Tree_Item_Array_replace(
Fl_Tree_Item_Array *self, int pos, Fl_Tree_Item *new_item
);
void Fl_Tree_Item_Array_remove(Fl_Tree_Item_Array *self, int index);
int Fl_Tree_Item_Array_remove_item(
Fl_Tree_Item_Array *self, Fl_Tree_Item *item
);
Fl_Tree_Item *Fl_Tree_Item_Array_at(Fl_Tree_Item_Array *self, int index);
void Fl_Tree_Item_Array_delete(Fl_Tree_Item_Array *self);
void *Fl_Tree_Item_usericon(const Fl_Tree_Item *self);
void Fl_Tree_Item_set_usericon(Fl_Tree_Item *self, void *val);
#ifdef __cplusplus
}
#endif
#endif