Cycles: svn merge -r41531:41613 ^/trunk/blender
[blender.git] / source / blender / blenkernel / BKE_suggestions.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2008, Blender Foundation
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): none yet.
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27 #ifndef BKE_SUGGESTIONS_H
28 #define BKE_SUGGESTIONS_H
29
30 /** \file BKE_suggestions.h
31  *  \ingroup bke
32  */
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 /* ****************************************************************************
39 Suggestions should be added in sorted order although a linear sorting method is
40 implemented. The list is then divided up based on the prefix provided by
41 update_suggestions:
42
43 Example:
44   Prefix: ab
45   aaa <-- first
46   aab
47   aba <-- firstmatch
48   abb <-- lastmatch
49   baa
50   bab <-- last
51 **************************************************************************** */
52
53 struct Text;
54
55 typedef struct SuggItem {
56         struct SuggItem *prev, *next;
57         char *name;
58         char type;
59 } SuggItem;
60
61 typedef struct SuggList {
62         SuggItem *first, *last;
63         SuggItem *firstmatch, *lastmatch;
64         SuggItem *selected;
65         int top;
66 } SuggList;
67
68 /* Free all text tool memory */
69 void free_texttools(void);
70
71 /* Used to identify which Text object the current tools should appear against */
72 void texttool_text_set_active(Text *text);
73 void texttool_text_clear(void);
74 short texttool_text_is_active(Text *text);
75
76 /* Suggestions */
77 void texttool_suggest_add(const char *name, char type);
78 void texttool_suggest_prefix(const char *prefix);
79 void texttool_suggest_clear(void);
80 SuggItem *texttool_suggest_first(void);
81 SuggItem *texttool_suggest_last(void);
82 void texttool_suggest_select(SuggItem *sel);
83 SuggItem *texttool_suggest_selected(void);
84 int *texttool_suggest_top(void);
85
86 /* Documentation */
87 void texttool_docs_show(const char *docs);
88 char *texttool_docs_get(void);
89 void texttool_docs_clear(void);
90
91 #ifdef __cplusplus
92 }
93 #endif
94
95 #endif