You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1134 lines
40KB

  1. # data file for the Fltk User Interface Designer (fluid)
  2. version 1.0300
  3. header_name {.h}
  4. code_name {.cxx}
  5. decl {\#include <stdio.h>} {public global
  6. }
  7. decl {\#include <FL/Fl.H>} {public global
  8. }
  9. decl {\#include <FL/Fl_Pixmap.H>} {public global
  10. }
  11. decl {\#include <FL/Fl_Group.H>} {public global
  12. }
  13. decl {\#include <FL/Fl_Tree.H>} {public global
  14. }
  15. decl {\#include <FL/fl_ask.H>} {public global
  16. }
  17. decl {\#include <FL/fl_message.H>} {public global
  18. }
  19. decl {\#include <FL/Fl_File_Chooser.H>} {public global
  20. }
  21. decl {\#include <FL/Fl_Preferences.H>} {public global
  22. }
  23. decl {\#include <FL/Fl_Color_Chooser.H>} {public global
  24. }
  25. decl {int G_cb_counter = 0;} {
  26. comment {// Global callback event counter} private local
  27. }
  28. Function {reason_as_name(Fl_Tree_Reason reason)} {
  29. comment {Return an Fl_Tree_Reason as a text string name} return_type {const char*}
  30. } {
  31. code {switch ( reason ) {
  32. case FL_TREE_REASON_NONE: return("none");
  33. case FL_TREE_REASON_SELECTED: return("selected");
  34. case FL_TREE_REASON_DESELECTED: return("deselected");
  35. case FL_TREE_REASON_OPENED: return("opened");
  36. case FL_TREE_REASON_CLOSED: return("closed");
  37. default: return("???");
  38. }} {}
  39. }
  40. Function {Button_CB(Fl_Widget*w, void*data)} {return_type void
  41. } {
  42. code {fprintf(stderr, "'%s' button pushed\\n", w->label());} {}
  43. }
  44. Function {AssignUserIcons()} {
  45. comment {Assign user icons to the items} open
  46. } {
  47. code {static const char *L_folder_xpm[] = {
  48. "11 11 3 1",
  49. ". c None",
  50. "x c \#d8d833",
  51. "@ c \#808011",
  52. "...........",
  53. ".....@@@@..",
  54. "....@xxxx@.",
  55. "@@@@@xxxx@@",
  56. "@xxxxxxxxx@",
  57. "@xxxxxxxxx@",
  58. "@xxxxxxxxx@",
  59. "@xxxxxxxxx@",
  60. "@xxxxxxxxx@",
  61. "@xxxxxxxxx@",
  62. "@@@@@@@@@@@"};
  63. static Fl_Pixmap L_folderpixmap(L_folder_xpm);
  64. static const char *L_document_xpm[] = {
  65. "11 11 3 1",
  66. ". c None",
  67. "x c \#d8d8f8",
  68. "@ c \#202060",
  69. ".@@@@@@@@@.",
  70. ".@xxxxxxx@.",
  71. ".@xxxxxxx@.",
  72. ".@xxxxxxx@.",
  73. ".@xxxxxxx@.",
  74. ".@xxxxxxx@.",
  75. ".@xxxxxxx@.",
  76. ".@xxxxxxx@.",
  77. ".@xxxxxxx@.",
  78. ".@xxxxxxx@.",
  79. ".@@@@@@@@@."};
  80. static Fl_Pixmap L_documentpixmap(L_document_xpm);
  81. // Assign user icons to tree items
  82. for ( Fl_Tree_Item *item = tree->first(); item; item=item->next())
  83. if ( usericon_radio->value() )
  84. // Assign custom icons
  85. item->usericon(item->has_children() ? &L_folderpixmap : &L_documentpixmap);
  86. else
  87. // Don't assign custom icons
  88. item->usericon(0);
  89. tree->redraw();} {}
  90. }
  91. Function {RebuildTree()} {
  92. comment {Rebuild the 'example tree' from scratch} open
  93. } {
  94. code {// REBUILD THE TREE TO MAKE CURRENT "DEFAULT" PREFS TAKE EFFECT
  95. tree->clear();
  96. tree->add("Aaa");
  97. tree->add("Bbb");
  98. tree->add("Ccc");
  99. tree->add("Ddd");
  100. tree->add("Bbb/child-01");
  101. tree->add("Bbb/child-01/111");
  102. tree->add("Bbb/child-01/222");
  103. tree->add("Bbb/child-01/333");
  104. tree->add("Bbb/child-02");
  105. tree->add("Bbb/child-03");
  106. tree->add("Bbb/child-04");
  107. {
  108. static Fl_Button *but = 0;
  109. // Assign an FLTK widget to one of the items
  110. Fl_Tree_Item *i;
  111. if ( ( i = tree->find_item("Bbb/child-03") ) != NULL ) {
  112. if ( !but ) { // only do this once at program startup
  113. tree->begin();
  114. but = new Fl_Button(1,1,140,1,"ccc button"); // we control w() only
  115. but->labelsize(10);
  116. but->callback(Button_CB);
  117. }
  118. i->widget(but);
  119. tree->end();
  120. }
  121. }
  122. {
  123. // Assign an FLTK group to one of the items with widgets
  124. Fl_Tree_Item *i;
  125. if ( ( i = tree->find_item("Bbb/child-04") ) != NULL ) {
  126. static Fl_Group *grp = 0;
  127. if ( !grp ) { // only do this once at program startup
  128. tree->begin();
  129. grp = new Fl_Group(100,100,140,18); // build group.. tree handles position
  130. grp->color(FL_WHITE);
  131. grp->begin();
  132. Fl_Button *abut = new Fl_Button(grp->x()+0 ,grp->y()+2,65,15,"D1");
  133. abut->labelsize(10);
  134. abut->callback(Button_CB);
  135. Fl_Button *bbut = new Fl_Button(grp->x()+75,grp->y()+2,65,15,"D2");
  136. bbut->labelsize(10);
  137. bbut->callback(Button_CB);
  138. grp->end();
  139. grp->resizable(grp);
  140. tree->end();
  141. }
  142. i->widget(grp);
  143. }
  144. }
  145. // Add an 'Ascending' node, and create it sorted
  146. tree->sortorder(FL_TREE_SORT_NONE);
  147. tree->add("Ascending")->close();
  148. tree->sortorder(FL_TREE_SORT_ASCENDING);
  149. tree->add("Ascending/Zzz");
  150. tree->add("Ascending/Xxx");
  151. tree->add("Ascending/Aaa");
  152. tree->add("Ascending/Bbb");
  153. tree->add("Ascending/Yyy");
  154. tree->add("Ascending/Ccc");
  155. // Add a 'Descending' node, and create it sorted
  156. tree->sortorder(FL_TREE_SORT_NONE);
  157. tree->add("Descending")->close();
  158. tree->sortorder(FL_TREE_SORT_DESCENDING);
  159. tree->add("Descending/Zzz");
  160. tree->add("Descending/Xxx");
  161. tree->add("Descending/Aaa");
  162. tree->add("Descending/Bbb");
  163. tree->add("Descending/Yyy");
  164. tree->add("Descending/Ccc");
  165. // Add 500 items in numerical order
  166. tree->sortorder(FL_TREE_SORT_NONE);
  167. for ( int t=0; t<500; t++ ) {
  168. static char s[80];
  169. sprintf(s, "500 Items/item %04d", t);
  170. tree->add(s);
  171. }
  172. tree->close("500 Items"); // close the 500 items by default
  173. AssignUserIcons();
  174. tree->redraw();} {selected
  175. }
  176. }
  177. Function {EditColor(Fl_Color val)} {
  178. comment {Prompt the user to change the specified color} return_type Fl_Color
  179. } {
  180. code {uchar r,g,b;
  181. // Get the current color
  182. Fl::get_color(val,r,g,b);
  183. // Bring up a color chooser to edit it
  184. fl_color_chooser("Choose Color",r,g,b);
  185. // Return the new color the user picked
  186. return(fl_rgb_color(r,g,b));} {}
  187. }
  188. Function {} {open
  189. } {
  190. Fl_Window window {
  191. label tree open
  192. xywh {800 102 1015 445} type Double visible
  193. } {
  194. Fl_Group tree {
  195. label Tree
  196. user_data 1234
  197. callback {G_cb_counter++; // Increment callback counter whenever tree callback is invoked
  198. Fl_Tree_Item *item = tree->callback_item();
  199. if ( item ) {
  200. fprintf(stderr, "TREE CALLBACK: label='%s' userdata=%ld reason=%s\\n",
  201. item->label(),
  202. (long)(fl_intptr_t)tree->user_data(),
  203. reason_as_name(tree->callback_reason()));
  204. } else {
  205. fprintf(stderr, "TREE CALLBACK: reason=%s item=(no item -- probably multiple items were changed at once)\\n",
  206. reason_as_name(tree->callback_reason()));
  207. }} open
  208. tooltip {Test tree} xywh {15 22 280 411} box DOWN_BOX color 55 selection_color 15
  209. class Fl_Tree
  210. } {}
  211. Fl_Group {} {open
  212. xywh {300 5 705 427}
  213. code0 {o->resizable(0);}
  214. } {
  215. Fl_Box {} {
  216. label {Tree Globals}
  217. tooltip {These controls only affect the selected items. If no items are selected, all existing items in tree are modified.} xywh {311 23 335 263} box GTK_DOWN_BOX color 47 labelsize 12 align 1
  218. }
  219. Fl_Value_Slider margintop_slider {
  220. label {margintop()}
  221. user_data tree
  222. callback {int val = (int)margintop_slider->value();
  223. tree->margintop(val);
  224. tree->redraw();}
  225. tooltip {Changes the top margin for the tree widget} xywh {486 31 140 16} type Horizontal labelsize 12 align 4 step 0.01 textsize 12
  226. code0 {o->value(tree->margintop());}
  227. code1 {o->range(0.0, 100.0);}
  228. code2 {o->step(1.0);}
  229. code3 {o->color(46); o->selection_color(FL_RED);}
  230. }
  231. Fl_Value_Slider marginleft_slider {
  232. label {marginleft()}
  233. user_data tree
  234. callback {int val = (int)marginleft_slider->value();
  235. tree->marginleft(val);
  236. tree->redraw();}
  237. tooltip {Changes the left margin for the tree widget} xywh {486 51 140 16} type Horizontal labelsize 12 align 4 step 0.01 textsize 12
  238. code0 {o->value(tree->marginleft());}
  239. code1 {o->range(0.0, 100.0);}
  240. code2 {o->step(1.0);}
  241. code3 {o->color(46); o->selection_color(FL_RED);}
  242. }
  243. Fl_Value_Slider openchild_marginbottom_slider {
  244. label {openchild_marginbottom()}
  245. user_data tree
  246. callback {int val = (int)openchild_marginbottom_slider->value();
  247. tree->openchild_marginbottom(val);
  248. tree->redraw();}
  249. tooltip {Changes the vertical space below an open child tree} xywh {486 71 140 16} type Horizontal labelsize 12 align 4 step 0.01 textsize 12
  250. code0 {o->value(tree->openchild_marginbottom());}
  251. code1 {o->range(0.0, 100.0);}
  252. code2 {o->step(1.0);}
  253. code3 {o->color(46); o->selection_color(FL_RED);}
  254. }
  255. Fl_Choice collapseicons_chooser {
  256. label {Collapse icons}
  257. callback {static const char *L_open_xpm[] = {
  258. \#ifdef __APPLE__
  259. "11 11 3 1",
  260. ". c \#fefefe",
  261. "\# c \#444444",
  262. "@ c \#000000",
  263. "\#\#\#\#\#\#\#\#\#\#\#",
  264. "\#.........\#",
  265. "\#.........\#",
  266. "\#....@....\#",
  267. "\#....@....\#",
  268. "\#..@@@@@..\#",
  269. "\#....@....\#",
  270. "\#....@....\#",
  271. "\#.........\#",
  272. "\#.........\#",
  273. "\#\#\#\#\#\#\#\#\#\#\#"
  274. \#else
  275. "11 11 2 1",
  276. ". c None",
  277. "@ c \#000000",
  278. "...@.......",
  279. "...@@......",
  280. "...@@@.....",
  281. "...@@@@....",
  282. "...@@@@@...",
  283. "...@@@@@@..",
  284. "...@@@@@...",
  285. "...@@@@....",
  286. "...@@@.....",
  287. "...@@......",
  288. "...@......."
  289. \#endif
  290. };
  291. static Fl_Pixmap L_openpixmap(L_open_xpm);
  292. static const char *L_close_xpm[] = {
  293. \#ifdef __APPLE__
  294. "11 11 3 1",
  295. ". c \#fefefe",
  296. "\# c \#444444",
  297. "@ c \#000000",
  298. "\#\#\#\#\#\#\#\#\#\#\#",
  299. "\#.........\#",
  300. "\#.........\#",
  301. "\#.........\#",
  302. "\#.........\#",
  303. "\#..@@@@@..\#",
  304. "\#.........\#",
  305. "\#.........\#",
  306. "\#.........\#",
  307. "\#.........\#",
  308. "\#\#\#\#\#\#\#\#\#\#\#"
  309. \#else
  310. "11 11 2 1",
  311. ". c None",
  312. "@ c \#000000",
  313. "...........",
  314. "...........",
  315. "...........",
  316. "...........",
  317. "...........",
  318. "@@@@@@@@@@@",
  319. ".@@@@@@@@@.",
  320. "..@@@@@@@..",
  321. "...@@@@@...",
  322. "....@@@....",
  323. ".....@....."
  324. \#endif
  325. };
  326. static Fl_Pixmap L_closepixmap(L_close_xpm);
  327. switch ( collapseicons_chooser->value() ) {
  328. case 0:
  329. tree->showcollapse(1);
  330. tree->openicon(0);
  331. tree->closeicon(0);
  332. break;
  333. case 1:
  334. tree->showcollapse(1);
  335. tree->openicon(&L_openpixmap);
  336. tree->closeicon(&L_closepixmap);
  337. break;
  338. case 2:
  339. tree->showcollapse(0);
  340. break;
  341. }}
  342. tooltip {Tests Fl_Tree::openicon() and Fl_Tree::closeicon()} xywh {486 96 140 21} down_box BORDER_BOX labelsize 12 textsize 11
  343. } {
  344. MenuItem {} {
  345. label Normal
  346. xywh {10 10 36 21} labelsize 12
  347. }
  348. MenuItem {} {
  349. label Custom
  350. xywh {20 20 36 21} labelsize 12
  351. }
  352. MenuItem {} {
  353. label Off
  354. xywh {30 30 36 21} labelsize 12
  355. }
  356. }
  357. Fl_Choice connectorstyle_chooser {
  358. label {Line style}
  359. callback {// CHANGE COLLAPSESTYLE
  360. switch ( connectorstyle_chooser->value() ) {
  361. case 0: tree->connectorstyle(FL_TREE_CONNECTOR_NONE); break;
  362. case 1: tree->connectorstyle(FL_TREE_CONNECTOR_DOTTED); break;
  363. case 2: tree->connectorstyle(FL_TREE_CONNECTOR_SOLID); break;
  364. }}
  365. tooltip {Tests connectorstyle() bit flags} xywh {486 120 140 21} down_box BORDER_BOX labelsize 12 textsize 11
  366. code0 {switch (tree->connectorstyle()) { case FL_TREE_CONNECTOR_NONE: connectorstyle_chooser->value(0); break; case FL_TREE_CONNECTOR_DOTTED: connectorstyle_chooser->value(1); break; case FL_TREE_CONNECTOR_SOLID: connectorstyle_chooser->value(2); break; }}
  367. } {
  368. MenuItem {} {
  369. label None
  370. xywh {40 40 36 21} labelsize 12
  371. }
  372. MenuItem {} {
  373. label Dotted
  374. xywh {20 20 36 21} labelsize 12
  375. }
  376. MenuItem {} {
  377. label Solid
  378. xywh {30 30 36 21} labelsize 12
  379. }
  380. }
  381. Fl_Choice selectmode_chooser {
  382. label {Selection Mode}
  383. callback {// Set selection mode
  384. switch ( selectmode_chooser->value() ) {
  385. case 0: tree->selectmode(FL_TREE_SELECT_NONE); break; // None
  386. case 1: tree->selectmode(FL_TREE_SELECT_SINGLE); break; // Single
  387. case 2: tree->selectmode(FL_TREE_SELECT_MULTI); break; // Multi
  388. default: tree->selectmode(FL_TREE_SELECT_SINGLE); break; // Single
  389. }}
  390. tooltip {Sets how Fl_Tree handles mouse selection of tree items} xywh {486 144 140 21} down_box BORDER_BOX labelsize 12 textsize 11
  391. code0 {selectmode_chooser->value(1);}
  392. code1 {cb_selectmode_chooser(selectmode_chooser, (void*)0);}
  393. } {
  394. MenuItem {} {
  395. label None
  396. xywh {40 40 36 21} labelsize 12
  397. }
  398. MenuItem {} {
  399. label Single
  400. xywh {50 50 36 21} labelsize 12
  401. }
  402. MenuItem {} {
  403. label Multi
  404. xywh {60 60 36 21} labelsize 12
  405. }
  406. }
  407. Fl_Choice whenmode_chooser {
  408. label When
  409. callback {// Set when mode
  410. switch ( whenmode_chooser->value() ) {
  411. case 0: tree->when(FL_WHEN_RELEASE); break;
  412. case 1: tree->when(FL_WHEN_CHANGED); break;
  413. case 2: tree->when(FL_WHEN_NEVER); break;
  414. default: tree->when(FL_WHEN_RELEASE); break;
  415. }}
  416. tooltip {Sets when() the tree's callback is invoked} xywh {486 168 140 21} down_box BORDER_BOX labelsize 12 textsize 11
  417. code0 {whenmode_chooser->value(1);}
  418. code1 {cb_whenmode_chooser(whenmode_chooser, (void*)0);}
  419. } {
  420. MenuItem {} {
  421. label Changed
  422. xywh {50 50 36 21} labelsize 12
  423. }
  424. MenuItem {} {
  425. label Released
  426. xywh {60 60 36 21} labelsize 12
  427. }
  428. MenuItem {} {
  429. label Never
  430. xywh {70 70 36 21} labelsize 12
  431. }
  432. }
  433. Fl_Check_Button usericon_radio {
  434. label {Enable user icons?}
  435. user_data tree
  436. callback {AssignUserIcons();}
  437. tooltip {Tests Fl_Tree_Item::usericon()} xywh {486 194 20 16} down_box DOWN_BOX labelsize 12 align 7
  438. code0 {usericon_radio->value(1);}
  439. }
  440. Fl_Check_Button showroot_radio {
  441. label {Show root?}
  442. user_data tree
  443. callback {int onoff = showroot_radio->value();
  444. tree->showroot(onoff);}
  445. tooltip {Tests tree->showroot();} xywh {486 211 20 16} down_box DOWN_BOX labelsize 12 align 7
  446. code0 {int onoff = tree->showroot(); showroot_radio->value(onoff);}
  447. }
  448. Fl_Check_Button visiblefocus_checkbox {
  449. label {Visible focus?}
  450. user_data tree
  451. callback {int onoff = visiblefocus_checkbox->value();
  452. tree->visible_focus(onoff);}
  453. tooltip {Toggles the tree's visible_focus() box} xywh {486 228 20 16} down_box DOWN_BOX labelsize 12 align 7
  454. code0 {int onoff = tree->visible_focus(); visiblefocus_checkbox->value(onoff);}
  455. }
  456. Fl_Button selection_color_button {
  457. label {Selection Color}
  458. callback {Fl_Color val = EditColor(tree->selection_color()); // Get color of first item in tree
  459. selection_color_button->color(val); // update modified color to button
  460. tree->selection_color(val);
  461. tree->redraw();}
  462. tooltip {Changes the tree widget's selection color. Tests Fl_Tree::selection_color()} xywh {486 251 16 16} box DOWN_BOX labelsize 12 align 7
  463. code0 {o->color(tree->selection_color());}
  464. }
  465. Fl_Box {} {
  466. label {Test Operations}
  467. tooltip {These controls only affect the defaults for new items that are created. These test the Fl_Tree_Prefs methods.} xywh {311 312 335 120} box GTK_DOWN_BOX color 47 labelsize 12 align 1
  468. }
  469. Fl_Box showitem_box {
  470. label {show_item()
  471. }
  472. xywh {331 335 70 82} box GTK_DOWN_BOX labelsize 11 align 1
  473. }
  474. Fl_Button {} {
  475. label Show
  476. callback {Fl_Tree_Item *item = tree->next_selected_item();
  477. tree->show_item(item);}
  478. tooltip {Tests show_item() with no position specified.
  479. Makes the selected item visible IF it is off-screen.
  480. No change made if it is not off-screen.} xywh {346 344 40 17} labelsize 11
  481. }
  482. Fl_Button {} {
  483. label Top
  484. callback {Fl_Tree_Item *item = tree->next_selected_item();
  485. tree->show_item_top(item);}
  486. tooltip {Test show_item_top().
  487. Scrolls selected item to the top of the display
  488. (only works if scrollbar showing)
  489. To use:
  490. 1) open '500 items'
  491. 2) select item 0010
  492. 3) Hit Top/Mid/Bot} xywh {346 361 40 16} labelsize 11
  493. }
  494. Fl_Button {} {
  495. label Mid
  496. callback {Fl_Tree_Item *item = tree->next_selected_item();
  497. tree->show_item_middle(item);}
  498. tooltip {Tests show_item_middle().
  499. Scrolls the selected item to the middle of the display
  500. To use:
  501. 1) open '500 items'
  502. 2) select 'item 0010'
  503. 3) Hit Top/Mid/Bot} xywh {346 377 40 16} labelsize 11
  504. }
  505. Fl_Button {} {
  506. label Bot
  507. callback {Fl_Tree_Item *item = tree->next_selected_item();
  508. tree->show_item_bottom(item);}
  509. tooltip {Tests show_item_bottom().
  510. Scrolls the selected item to the bottom of the display
  511. To use:
  512. 1) open '500 items'
  513. 2) select 'item 0010'
  514. 3) Hit Top/Mid/Bot} xywh {346 393 40 16} labelsize 11
  515. }
  516. Fl_Button loaddb_button {
  517. label {Load Database...}
  518. callback {const char *filename = fl_file_chooser("Select a Preferences style Database", "Preferences(*.prefs)", 0L);
  519. if (filename) {
  520. tree->clear();
  521. Fl_Preferences prefs(filename, 0L, 0L);
  522. tree->load(prefs);
  523. tree->redraw();
  524. }}
  525. tooltip {Load the contents of an Fl_Preferences database into the tree view} xywh {431 338 95 16} labelsize 9
  526. }
  527. Fl_Button insertabove_button {
  528. label {Insert Above}
  529. callback {Fl_Tree_Item *item=tree->first();
  530. while (item) {
  531. if ( item->is_selected() ) {
  532. tree->insert_above(item, "AaaAaa");
  533. tree->insert_above(item, "BbbBbb");
  534. tree->insert_above(item, "CccCcc");
  535. }
  536. item = item->next();
  537. }
  538. tree->redraw();}
  539. tooltip {Inserts three items above the selected items} xywh {431 358 95 16} labelsize 9
  540. }
  541. Fl_Button rebuildtree_button {
  542. label {Rebuild Tree}
  543. callback {RebuildTree();}
  544. tooltip {Rebuilds the tree with defaults} xywh {431 378 95 16} labelsize 9
  545. }
  546. Fl_Button showpathname_button {
  547. label {Show Pathname}
  548. callback {Fl_Tree_Item *item = tree->first_selected_item();
  549. if ( !item ) { fl_message("No item was selected"); return; }
  550. char pathname[256];
  551. switch ( tree->item_pathname(pathname, sizeof(pathname), item) ) {
  552. case 0: fl_message("Pathname for '%s' is: \\"%s\\"", (item->label() ? item->label() : "???"), pathname); break;
  553. case -1: fl_message("item_pathname() returned -1 (NOT FOUND)"); break;
  554. case -2: fl_message("item_pathname() returned -2 (STRING TOO LONG)"); break;
  555. }}
  556. tooltip {Show the pathname for the selected item. Tests the Fl_Tree::item_pathname() method.} xywh {431 398 95 16} labelsize 9
  557. }
  558. Fl_Button clearall_button {
  559. label {Clear All}
  560. callback {tree->clear();
  561. tree->redraw();}
  562. tooltip {Clears all items
  563. Tests Fl_Tree::clear()} xywh {531 338 95 16} labelsize 9
  564. }
  565. Fl_Button testcallbackflag_button {
  566. label {Test Callback Flag}
  567. callback {Fl_Tree_Item *root = tree->root();
  568. fprintf(stderr, "--- Checking docallback off\\n");
  569. if (!root) return;
  570. //// "OFF" TEST
  571. // open/close: Make sure these methods don't trigger cb
  572. G_cb_counter = 0; tree->close(root, 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n close(item) triggered cb!");
  573. G_cb_counter = 0; tree->open(root, 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n open(item) triggered cb!");
  574. G_cb_counter = 0; tree->open_toggle(root, 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n open_toggle(item) triggered cb!");
  575. G_cb_counter = 0; tree->open("ROOT", 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n open(path) triggered cb!");
  576. G_cb_counter = 0; tree->close("ROOT", 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n close(path) triggered cb!");
  577. tree->open(root,0); // leave root open
  578. // select/deselect: Make sure these methods don't trigger cb
  579. G_cb_counter = 0; tree->select(root, 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n select(item) triggered cb!");
  580. G_cb_counter = 0; tree->deselect(root, 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n deselect(item) triggered cb!");
  581. G_cb_counter = 0; tree->select_toggle(root, 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n select_toggle(item) triggered cb!");
  582. G_cb_counter = 0; tree->deselect("ROOT", 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n deselect(path) triggered cb!");
  583. G_cb_counter = 0; tree->select("ROOT", 0); if ( G_cb_counter ) fl_alert("FAILED 'OFF' TEST\\n select(path) triggered cb!");
  584. tree->deselect("ROOT"); // leave deselected
  585. //// "ON" TEST
  586. // open/close: Make sure these methods don't trigger cb
  587. G_cb_counter = 0; tree->close(root, 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n close(item) cb wasn't triggered!");
  588. G_cb_counter = 0; tree->open(root, 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n open(item) cb wasn't triggered!");
  589. G_cb_counter = 0; tree->open_toggle(root, 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n open_toggle(item) cb wasn't triggered!");
  590. G_cb_counter = 0; tree->open(root, 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n open(item)[2] cb wasn't triggered!");
  591. G_cb_counter = 0; tree->close(root, 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n close(item)[2] cb wasn't triggered!");
  592. G_cb_counter = 0; tree->open("ROOT", 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n open(path) cb wasn't triggered!");
  593. G_cb_counter = 0; tree->close("ROOT", 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n close(path) cb wasn't triggered!");
  594. tree->open(root,0); // leave root open
  595. // select/deselect: Make sure these methods don't trigger cb
  596. G_cb_counter = 0; tree->select(root, 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n select(item) cb wasn't triggered!");
  597. G_cb_counter = 0; tree->deselect(root, 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n deselect(item) cb wasn't triggered!");
  598. G_cb_counter = 0; tree->select_toggle(root, 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n select_toggle(item) cb wasn't triggered!");
  599. G_cb_counter = 0; tree->deselect("ROOT", 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n deselect(path) cb wasn't triggered!");
  600. G_cb_counter = 0; tree->select("ROOT", 1); if ( !G_cb_counter ) fl_alert("FAILED 'ON' TEST\\n select(path) cb wasn't triggered!");
  601. tree->deselect("ROOT"); // leave deselected
  602. //// "default" TEST (should be same as 'on'
  603. // open/close: Make sure these methods don't trigger cb
  604. G_cb_counter = 0; tree->close(root); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST: close(item) cb wasn't triggered!");
  605. G_cb_counter = 0; tree->open(root); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST: open(item) cb wasn't triggered!");
  606. G_cb_counter = 0; tree->open_toggle(root); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST: open_toggle(item) cb wasn't triggered!");
  607. G_cb_counter = 0; tree->open("ROOT"); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST: open(path) cb wasn't triggered!");
  608. G_cb_counter = 0; tree->close("ROOT"); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST: close(path) cb wasn't triggered!");
  609. tree->open(root,0); // leave root open
  610. // select/deselect: Make sure these methods don't trigger cb
  611. G_cb_counter = 0; tree->select(root); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST\\n select(item) cb wasn't triggered!");
  612. G_cb_counter = 0; tree->deselect(root); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST\\n deselect(item) cb wasn't triggered!");
  613. G_cb_counter = 0; tree->select_toggle(root); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST\\n select_toggle(item) cb wasn't triggered!");
  614. G_cb_counter = 0; tree->deselect("ROOT"); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST\\n deselect(path) cb wasn't triggered!");
  615. G_cb_counter = 0; tree->select("ROOT"); if ( !G_cb_counter ) fl_alert("FAILED 'DEFAULT' TEST\\n select(path) cb wasn't triggered!");
  616. tree->deselect("ROOT"); // leave deselected
  617. fl_alert("TEST COMPLETED\\n If you didn't see any error dialogs, test PASSED.");}
  618. tooltip {Test the 'docallback' argument can disable callbacks.} xywh {531 358 95 16} labelsize 9
  619. }
  620. Fl_Box {} {
  621. label {Selected Items}
  622. tooltip {These controls only affect the selected items. If no items are selected, all existing items in tree are modified.} xywh {661 23 335 263} box GTK_DOWN_BOX color 47 labelsize 12 align 1
  623. }
  624. Fl_Choice all_font_choice {
  625. label {Label Font}
  626. callback {// Find first item in tree
  627. Fl_Tree_Item *item = tree->first();
  628. if ( !item ) return;
  629. // Get first item's font.
  630. Fl_Font val = (Fl_Font)all_font_choice->value(); // Get font value
  631. // Do selected items
  632. int count = 0;
  633. for ( item=tree->first(); item; item = tree->next(item) ) {
  634. if ( item->is_selected() ) {
  635. item->labelfont(val);
  636. count++;
  637. }
  638. }
  639. // No items selected? Do all..
  640. if ( ! count ) {
  641. for ( item=tree->first(); item; item = tree->next(item) ) {
  642. item->labelfont(val);
  643. }
  644. }
  645. tree->redraw();}
  646. tooltip {Changes the font for the selected items's labels. If none selected, all are changed. Tests Fl_Tree_Item::labelfont();} xywh {828 31 140 21} down_box BORDER_BOX labelsize 12 textsize 11
  647. code0 {o->value((int)tree->item_labelfont()); // get tree's current font, assign to chooser}
  648. } {
  649. MenuItem {} {
  650. label Helvetica
  651. xywh {30 30 36 21} labelsize 12
  652. }
  653. MenuItem {} {
  654. label {Helvetica Bold}
  655. xywh {40 40 36 21} labelsize 12
  656. }
  657. MenuItem {} {
  658. label {Helvetica Italic}
  659. xywh {55 55 36 21} labelsize 12
  660. }
  661. MenuItem {} {
  662. label {Helvetica Bold Italic}
  663. xywh {60 60 36 21} labelsize 12
  664. }
  665. MenuItem {} {
  666. label Courier
  667. xywh {70 70 36 21} labelsize 12
  668. }
  669. MenuItem {} {
  670. label {Courier Bold}
  671. xywh {80 80 36 21} labelsize 12
  672. }
  673. MenuItem {} {
  674. label {Courier Italic}
  675. xywh {65 65 36 21} labelsize 12
  676. }
  677. MenuItem {} {
  678. label {Courier Bold Italic}
  679. xywh {70 70 36 21} labelsize 12
  680. }
  681. MenuItem {} {
  682. label Times
  683. xywh {80 80 36 21} labelsize 12
  684. }
  685. MenuItem {} {
  686. label {Times Bold}
  687. xywh {90 90 36 21} labelsize 12
  688. }
  689. MenuItem {} {
  690. label {Times Italic}
  691. xywh {75 75 36 21} labelsize 12
  692. }
  693. MenuItem {} {
  694. label {Times Bold Italic}
  695. xywh {80 80 36 21} labelsize 12
  696. }
  697. MenuItem {} {
  698. label Symbol
  699. xywh {90 90 36 21} labelsize 12
  700. }
  701. MenuItem {} {
  702. label Screen
  703. xywh {100 100 36 21} labelsize 12
  704. }
  705. MenuItem {} {
  706. label {Screen bold}
  707. xywh {85 85 36 21} labelsize 12
  708. }
  709. MenuItem {} {
  710. label {Zapf Dingbats}
  711. xywh {90 90 36 21} labelsize 12
  712. }
  713. }
  714. Fl_Value_Slider labelsize_slider {
  715. label {Label Size}
  716. user_data tree
  717. callback {int size = (int)labelsize_slider->value();
  718. // DO SELECTED ITEMS
  719. int count = 0;
  720. Fl_Tree_Item *item;
  721. for ( item=tree->first(); item; item = tree->next(item) ) {
  722. if ( item->is_selected() ) {
  723. item->labelsize(size);
  724. count++;
  725. }
  726. }
  727. // NO ITEMS SELECTED? DO ALL
  728. if ( ! count ) {
  729. for ( item=tree->first(); item; item = tree->next(item) ) {
  730. item->labelsize(size);
  731. }
  732. }
  733. tree->redraw();}
  734. tooltip {Changes the font size of the selected items's labels. If none selected, all are changed. Tests Fl_Tree_Item::labelsize();} xywh {828 55 140 16} type Horizontal labelsize 12 align 4 step 0.01 textsize 12
  735. code0 {o->value(tree->item_labelsize());}
  736. code1 {o->range(5.0, 200.0);}
  737. code2 {o->step(1.0);}
  738. code3 {o->color(46); o->selection_color(FL_RED);}
  739. }
  740. Fl_Button all_labelfgcolor_button {
  741. label {Label FG Color}
  742. callback {// Find first item in tree
  743. Fl_Tree_Item *item = tree->first();
  744. if ( !item ) return;
  745. // Get first item's color
  746. Fl_Color val = EditColor(item->labelfgcolor()); // Get color of first item in tree
  747. all_labelfgcolor_button->color(val); // update modified color to button
  748. // Do selected items
  749. int count = 0;
  750. for ( item=tree->first(); item; item = tree->next(item) ) {
  751. if ( item->is_selected() ) {
  752. item->labelfgcolor(val);
  753. count++;
  754. }
  755. }
  756. // No items selected? Do all..
  757. if ( ! count ) {
  758. for ( item=tree->first(); item; item = tree->next(item) ) {
  759. item->labelfgcolor(val);
  760. }
  761. }
  762. tree->redraw();}
  763. tooltip {Changes the label fg color for the selected items. If none selected, all are changed. Tests Fl_Tree_Item::labelfgcolor();} xywh {828 81 16 16} box DOWN_BOX labelsize 12 align 7
  764. code0 {o->color(tree->item_labelfgcolor());}
  765. }
  766. Fl_Button all_labelbgcolor_button {
  767. label {Label BG Color}
  768. callback {// Find first item in tree
  769. Fl_Tree_Item *item = tree->first();
  770. if ( !item ) return;
  771. // Get first item's color
  772. Fl_Color val = EditColor(item->labelbgcolor()); // Get color of first item in tree
  773. all_labelbgcolor_button->color(val); // update modified color to button
  774. // Do selected items
  775. int count = 0;
  776. for ( item=tree->first(); item; item = tree->next(item) ) {
  777. if ( item->is_selected() ) {
  778. item->labelbgcolor(val);
  779. count++;
  780. }
  781. }
  782. // No items selected? Do all..
  783. if ( ! count ) {
  784. for ( item=tree->first(); item; item = tree->next(item) ) {
  785. item->labelbgcolor(val);
  786. }
  787. }
  788. tree->redraw();}
  789. tooltip {Changes the label bg color for the selected items. If none selected, all are changed. Tests Fl_Tree_Item::labelbgcolor();} xywh {828 99 16 16} box DOWN_BOX labelsize 12 align 7
  790. code0 {o->color(tree->item_labelbgcolor());}
  791. }
  792. Fl_Value_Slider connectorwidth_slider {
  793. label {Connector Width}
  794. user_data tree
  795. callback {tree->connectorwidth((int)connectorwidth_slider->value());}
  796. tooltip {Tests Fl_Tree::connectorwidth()} xywh {828 126 140 16} type Horizontal labelsize 12 align 4 step 0.01 textsize 12
  797. code0 {o->value(tree->connectorwidth());}
  798. code1 {o->range(1.0, 100.0);}
  799. code2 {o->step(1.0);}
  800. code3 {o->color(46); o->selection_color(FL_RED);}
  801. }
  802. Fl_Light_Button deactivate_toggle {
  803. label { Deactivate}
  804. callback {int onoff = deactivate_toggle->value() ? 0 : 1;
  805. Fl_Tree_Item *item;
  806. int count = 0;
  807. for ( item=tree->first(); item; item = tree->next(item) ) {
  808. if ( item->is_selected() ) {
  809. item->activate(onoff);
  810. ++count;
  811. }
  812. }
  813. if ( count == 0 ) {
  814. for ( item=tree->first(); item; item = tree->next(item) ) {
  815. item->activate(onoff);
  816. }
  817. }
  818. tree->redraw();}
  819. tooltip {Toggle the deactivation state of the selected items.
  820. If none are selected, all are set.} xywh {734 154 95 16} selection_color 1 labelsize 9
  821. }
  822. Fl_Light_Button bold_toggle {
  823. label { Bold Font}
  824. callback {int face = bold_toggle->value() ? FL_HELVETICA_BOLD : FL_HELVETICA;
  825. // DO SELECTED ITEMS
  826. int count = 0;
  827. Fl_Tree_Item *item;
  828. for ( item=tree->first(); item; item = tree->next(item) ) {
  829. if ( item->is_selected() ) {
  830. item->labelfont(face);
  831. count++;
  832. }
  833. }
  834. // NO ITEMS SELECTED? DO ALL
  835. if ( ! count ) {
  836. for ( item=tree->first(); item; item = tree->next(item) ) {
  837. item->labelfont(face);
  838. }
  839. }
  840. tree->redraw();}
  841. tooltip {Toggles bold font for selected items
  842. If nothing selected, all are changed} xywh {734 174 95 16} selection_color 1 labelsize 9
  843. }
  844. Fl_Button showselected_button {
  845. label {Show Selected}
  846. callback {fprintf(stderr, "--- SELECTED ITEMS\\n");
  847. for ( Fl_Tree_Item *item = tree->first_selected_item();
  848. item;
  849. item = tree->next_selected_item(item) ) {
  850. fprintf(stderr, "\\t%s\\n", item->label() ? item->label() : "???");
  851. }}
  852. tooltip {Clears the selected items} xywh {829 154 95 16} labelsize 9
  853. }
  854. Fl_Button clearselected_button {
  855. label {Remove Selected}
  856. callback {Fl_Tree_Item *item=tree->first();
  857. while (item) {
  858. if ( item->is_selected() ) {
  859. if ( tree->remove(item) == -1 ) break;
  860. item = tree->first();
  861. } else {
  862. item = item->next();
  863. }
  864. }
  865. tree->redraw();}
  866. tooltip {Removes the selected items} xywh {829 174 95 16} labelsize 9
  867. }
  868. Fl_Button selectall_button {
  869. label {Select All}
  870. callback {tree->select_all(0);
  871. tree->redraw();}
  872. tooltip {Selects all items in the tree} xywh {689 201 95 16} labelsize 9
  873. }
  874. Fl_Button deselectall_button {
  875. label {Deselect All}
  876. callback {tree->deselect_all(0);
  877. tree->redraw();}
  878. tooltip {Deselects all items in the tree} xywh {689 221 95 16} labelsize 9
  879. }
  880. Fl_Light_Button bbbselect_toggle {
  881. label { Select Bbb}
  882. callback {// Toggle select of just the Bbb item (not children)
  883. Fl_Tree_Item *bbb = tree->find_item("/Bbb");
  884. if ( !bbb) {
  885. fl_alert("FAIL: Couldn't find item '/Bbb'???");
  886. return;
  887. }
  888. int onoff = bbbselect_toggle->value();
  889. if ( onoff ) tree->select(bbb); // select /Bbb
  890. else tree->deselect(bbb); // deselect /Bbb}
  891. tooltip {Toggle selection of just the /Bbb item
  892. (Not children)} xywh {784 201 95 16} selection_color 1 labelsize 9
  893. }
  894. Fl_Light_Button bbbselect2_toggle {
  895. label { Select Bbb+}
  896. callback {// Toggle select of just the Bbb item and its immediate children
  897. Fl_Tree_Item *bbb = tree->find_item("/Bbb");
  898. if ( !bbb) {
  899. fl_alert("FAIL: Couldn't find item '/Bbb'???");
  900. return;
  901. }
  902. int onoff = bbbselect2_toggle->value();
  903. if ( onoff ) tree->select_all(bbb); // select /Bbb and its children
  904. else tree->deselect_all(bbb); // deselect /Bbb and its children}
  905. tooltip {Toggle selection of the /Bbb item and its children} xywh {784 221 95 16} selection_color 1 labelsize 9
  906. }
  907. Fl_Light_Button bbbchild02select_toggle {
  908. label { Toggle child-02}
  909. callback {// Toggle select of just the /Bbb/child-02 item
  910. const char *pathname = "/Bbb/child-02";
  911. int onoff = bbbchild02select_toggle->value();
  912. int err = 0;
  913. if ( onoff ) err = tree->select(pathname);
  914. else err = tree->deselect(pathname);
  915. if ( err == -1 ) {
  916. fl_alert("FAIL: Couldn't find item '%s'",pathname);
  917. return;
  918. }}
  919. tooltip {Toggle the single item "/Bbb/child-02" using the item's "pathname".} xywh {784 241 95 16} selection_color 1 labelsize 9
  920. }
  921. Fl_Light_Button rootselect_toggle {
  922. label {Select ROOT}
  923. callback {// Toggle select of ROOT item and its children
  924. Fl_Tree_Item *item = tree->find_item("/ROOT");
  925. if ( !item) {
  926. fl_alert("FAIL: Couldn't find item '/ROOT'???");
  927. return;
  928. }
  929. int onoff = rootselect_toggle->value();
  930. if ( onoff ) tree->select(item); // select /ROOT and its children
  931. else tree->deselect(item); // deselect /ROOT and its children}
  932. tooltip {Toggle selection of the ROOT item} xywh {879 201 95 16} selection_color 1 labelsize 9
  933. }
  934. Fl_Light_Button rootselect2_toggle {
  935. label {Select ROOT+}
  936. callback {// Toggle select of ROOT item and its children
  937. Fl_Tree_Item *item = tree->find_item("/ROOT");
  938. if ( !item) {
  939. fl_alert("FAIL: Couldn't find item '/ROOT'???");
  940. return;
  941. }
  942. int onoff = rootselect2_toggle->value();
  943. if ( onoff ) tree->select_all(item); // select /ROOT and its children
  944. else tree->deselect_all(item); // deselect /ROOT and its children}
  945. tooltip {Toggle selection of the ROOT item and all children} xywh {879 221 95 16} selection_color 1 labelsize 9
  946. }
  947. Fl_Box {} {
  948. label {New Item Defaults}
  949. tooltip {These controls only affect the defaults for new items that are created. These test the Fl_Tree_Prefs methods.} xywh {661 312 335 120} box GTK_DOWN_BOX color 47 labelsize 12 align 1
  950. }
  951. Fl_Button item_labelfgcolor_button {
  952. label item_labelfgcolor
  953. callback {Fl_Color val = EditColor(tree->item_labelfgcolor()); // Let user edit the color
  954. tree->item_labelfgcolor(val); // apply modified color to tree
  955. item_labelfgcolor_button->color(val); // update modified color to button}
  956. tooltip {Sets the *default* label foreground color for new items created. Does NOT affect existing items.} xywh {828 327 16 16} box DOWN_BOX labelsize 12 align 7
  957. code0 {o->color(tree->item_labelfgcolor());}
  958. }
  959. Fl_Button item_labelbgcolor_button {
  960. label item_labelbgcolor
  961. callback {Fl_Color val = EditColor(tree->item_labelbgcolor()); // Let user edit the color
  962. tree->item_labelbgcolor(val); // apply modified color to tree
  963. item_labelbgcolor_button->color(val); // update modified color to button}
  964. tooltip {Sets the *default* label background color for new items created. Does NOT affect existing items.} xywh {828 345 16 16} box DOWN_BOX labelsize 12 align 7
  965. code0 {item_labelbgcolor_button->color(tree->item_labelbgcolor());}
  966. }
  967. Fl_Choice item_font_choice {
  968. label {Item label font}
  969. callback {Fl_Font val = (Fl_Font)item_font_choice->value(); // get chooser's current font value
  970. tree->item_labelfont(val); // change font in tree}
  971. tooltip {Sets the default font used for new items created. Does NOT affect existing items.} xywh {828 371 140 21} down_box BORDER_BOX labelsize 12 textsize 12
  972. code0 {o->value((int)tree->item_labelfont()); // get tree's current font, assign to chooser}
  973. } {
  974. MenuItem {} {
  975. label Helvetica
  976. xywh {20 20 36 21} labelsize 12
  977. }
  978. MenuItem {} {
  979. label {Helvetica Bold}
  980. xywh {30 30 36 21} labelsize 12
  981. }
  982. MenuItem {} {
  983. label {Helvetica Italic}
  984. xywh {45 45 36 21} labelsize 12
  985. }
  986. MenuItem {} {
  987. label {Helvetica Bold Italic}
  988. xywh {50 50 36 21} labelsize 12
  989. }
  990. MenuItem {} {
  991. label Courier
  992. xywh {60 60 36 21} labelsize 12
  993. }
  994. MenuItem {} {
  995. label {Courier Bold}
  996. xywh {70 70 36 21} labelsize 12
  997. }
  998. MenuItem {} {
  999. label {Courier Italic}
  1000. xywh {55 55 36 21} labelsize 12
  1001. }
  1002. MenuItem {} {
  1003. label {Courier Bold Italic}
  1004. xywh {60 60 36 21} labelsize 12
  1005. }
  1006. MenuItem {} {
  1007. label Times
  1008. xywh {70 70 36 21} labelsize 12
  1009. }
  1010. MenuItem {} {
  1011. label {Times Bold}
  1012. xywh {80 80 36 21} labelsize 12
  1013. }
  1014. MenuItem {} {
  1015. label {Times Italic}
  1016. xywh {65 65 36 21} labelsize 12
  1017. }
  1018. MenuItem {} {
  1019. label {Times Bold Italic}
  1020. xywh {70 70 36 21} labelsize 12
  1021. }
  1022. MenuItem {} {
  1023. label Symbol
  1024. xywh {80 80 36 21} labelsize 12
  1025. }
  1026. MenuItem {} {
  1027. label Screen
  1028. xywh {90 90 36 21} labelsize 12
  1029. }
  1030. MenuItem {} {
  1031. label {Screen bold}
  1032. xywh {75 75 36 21} labelsize 12
  1033. }
  1034. MenuItem {} {
  1035. label {Zapf Dingbats}
  1036. xywh {80 80 36 21} labelsize 12
  1037. }
  1038. }
  1039. Fl_Value_Slider item_labelsize_slider {
  1040. label item_labelsize
  1041. user_data tree
  1042. callback {tree->item_labelsize((int)item_labelsize_slider->value());}
  1043. tooltip {Sets the default labelsize used for new items. Does NOT affect existing items.} xywh {828 396 140 16} type Horizontal labelsize 12 align 4 step 0.01 textsize 12
  1044. code0 {o->value((int)tree->item_labelsize());}
  1045. code1 {o->range(1.0, 50.0);}
  1046. code2 {o->step(1.0);}
  1047. code3 {o->color(46); o->selection_color(FL_RED);}
  1048. }
  1049. }
  1050. Fl_Box resizer_box {
  1051. xywh {0 263 15 14}
  1052. }
  1053. }
  1054. code {// Initialize Tree
  1055. tree->root_label("ROOT");
  1056. RebuildTree();
  1057. /*tree->show_self();*/} {}
  1058. code {// FLTK stuff
  1059. //Fl::scheme("gtk+");
  1060. window->resizable(tree);
  1061. window->size_range(window->w(), window->h(), 0, 0);
  1062. if ( tree->when() == FL_WHEN_CHANGED ) whenmode_chooser->value(0);
  1063. else if ( tree->when() == FL_WHEN_RELEASE ) whenmode_chooser->value(1);
  1064. else if ( tree->when() == FL_WHEN_NEVER ) whenmode_chooser->value(2);} {}
  1065. }