svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r22099:22130
[blender.git] / source / blender / editors / interface / interface_intern.h
index b96726a5eada91b9d064c274203d0fcefd9f06cc..04c0c417fdb9d19030cf899aed5b3823c07ef40d 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * $Id: interface.h 14444 2008-04-16 22:40:48Z hos $
+ * $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
  *
@@ -43,12 +43,18 @@ struct wmWindow;
 struct uiStyle;
 struct uiWidgetColors;
 struct uiLayout;
+struct bContextStore;
+struct Scene;
+struct ID;
 
 /* ****************** general defines ************** */
 
 /* visual types for drawing */
 /* for time being separated from functional types */
 typedef enum {
+       /* default */
+       UI_WTYPE_REGULAR,
+
        /* standard set */
        UI_WTYPE_LABEL,
        UI_WTYPE_TOGGLE,
@@ -76,7 +82,10 @@ typedef enum {
        UI_WTYPE_ICON,
        UI_WTYPE_SWATCH,
        UI_WTYPE_RGB_PICKER,
-       UI_WTYPE_NORMAL
+       UI_WTYPE_NORMAL,
+       UI_WTYPE_BOX,
+       UI_WTYPE_SCROLL,
+       UI_WTYPE_LISTITEM
        
 } uiWidgetTypeEnum;
 
@@ -96,7 +105,7 @@ typedef enum {
 #define UI_ACTIVE              4
 #define UI_HAS_ICON            8
 #define UI_TEXTINPUT   16
-
+#define UI_HIDDEN              32
 /* warn: rest of uiBut->flag in UI_interface.h */
 
 /* internal panel drawing defines */
@@ -162,17 +171,28 @@ struct uiBut {
        uiButHandleFunc func;
        void *func_arg1;
        void *func_arg2;
+       void *func_arg3;
 
        uiButHandleNFunc funcN;
        void *func_argN;
 
+       struct bContextStore *context;
+
        void (*embossfunc)(int , int , float, float, float, float, float, int);
        void (*sliderfunc)(int , float, float, float, float, float, float, int);
 
        uiButCompleteFunc autocomplete_func;
        void *autofunc_arg;
        
+       uiButSearchFunc search_func;
+       void *search_arg;
+
+       uiButHandleRenameFunc rename_func;
+       void *rename_arg1;
+       void *rename_orig;
+
        uiLink *link;
+       short linkto[2];
        
        char *tip, *lockstr;
 
@@ -188,7 +208,7 @@ struct uiBut {
        /* BLOCK data */
        uiBlockCreateFunc block_create_func;
 
-       /* HMENU data */
+       /* PULLDOWN/MENU data */
        uiMenuCreateFunc menu_create_func;
 
        /* RNA data */
@@ -196,6 +216,9 @@ struct uiBut {
        struct PropertyRNA *rnaprop;
        int rnaindex;
 
+       struct PointerRNA rnasearchpoin;
+       struct PropertyRNA *rnasearchprop;
+
        /* Operator data */
        struct wmOperatorType *optype;
        int opcontext;
@@ -222,8 +245,10 @@ struct uiBlock {
        Panel *panel;
        uiBlock *oldblock;
 
-       struct uiLayout *layout;
+       ListBase layouts;
        struct uiLayout *curlayout;
+
+       ListBase contexts;
        
        char name[UI_MAX_NAME_STR];
        
@@ -244,8 +269,12 @@ struct uiBlock {
        uiBlockHandleFunc handle_func;
        void *handle_func_arg;
        
+       /* custom extra handling */
+       int (*block_event_func)(const struct bContext *C, struct uiBlock *, struct wmEvent *);
+       
        /* extra draw function for custom blocks */
-       void (*drawextra)();
+       void (*drawextra)(const struct bContext *C, void *idv, void *argv, rcti *rect);
+       void *drawextra_arg;
 
        int afterval, flag;
        
@@ -267,6 +296,8 @@ struct uiBlock {
        int tooltipdisabled;            // to avoid tooltip after click
 
        int active;                                     // to keep blocks while drawing and free them afterwards
+
+       void *evil_C;                           // XXX hack for dynamic operator enums
 };
 
 typedef struct uiSafetyRct {
@@ -296,6 +327,8 @@ extern void ui_set_but_hsv(uiBut *but);
 extern void ui_get_but_vectorf(uiBut *but, float *vec);
 extern void ui_set_but_vectorf(uiBut *but, float *vec);
 
+extern void ui_hsvcircle_vals_from_pos(float *valrad, float *valdist, rcti *rect, float mx, float my);
+
 extern void ui_get_but_string(uiBut *but, char *str, int maxlen);
 extern int ui_set_but_string(struct bContext *C, uiBut *but, const char *str);
 extern int ui_get_but_string_max_length(uiBut *but);
@@ -345,6 +378,15 @@ uiBlock *ui_block_func_COL(struct bContext *C, uiPopupBlockHandle *handle, void
 struct ARegion *ui_tooltip_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
 void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
 
+/* searchbox for string button */
+ARegion *ui_searchbox_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
+int ui_searchbox_inside(struct ARegion *ar, int x, int y);
+void ui_searchbox_update(struct bContext *C, struct ARegion *ar, uiBut *but, int reset);
+void ui_searchbox_autocomplete(struct bContext *C, struct ARegion *ar, uiBut *but, char *str);
+void ui_searchbox_event(struct bContext *C, struct ARegion *ar, uiBut *but, struct wmEvent *event);
+void ui_searchbox_apply(uiBut *but, struct ARegion *ar);
+void ui_searchbox_free(struct bContext *C, struct ARegion *ar);
+
 typedef uiBlock* (*uiBlockHandleCreateFunc)(struct bContext *C, struct uiPopupBlockHandle *handle, void *arg1);
 
 uiPopupBlockHandle *ui_popup_block_create(struct bContext *C, struct ARegion *butregion, uiBut *but,
@@ -354,6 +396,7 @@ uiPopupBlockHandle *ui_popup_menu_create(struct bContext *C, struct ARegion *but
 void ui_popup_block_free(struct bContext *C, uiPopupBlockHandle *handle);
 
 void ui_set_name_menu(uiBut *but, int value);
+int ui_step_name_menu(uiBut *but, int step);
 
 struct AutoComplete;
 struct AutoComplete *autocomplete_begin(char *startname, int maxlen);
@@ -377,19 +420,30 @@ void ui_draw_but_CURVE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rct
 
 
 /* interface_handlers.c */
+extern void ui_button_activate_do(struct bContext *C, struct ARegion *ar, uiBut *but);
 extern void ui_button_active_cancel(const struct bContext *C, uiBut *but);
+extern int ui_button_is_active(struct ARegion *ar);
 
 /* interface_widgets.c */
 void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y3);
 void ui_draw_menu_back(struct uiStyle *style, uiBlock *block, rcti *rect);
-extern void ui_draw_but(ARegion *ar, struct uiStyle *style, uiBut *but, rcti *rect);
+void ui_draw_search_back(struct uiStyle *style, uiBlock *block, rcti *rect);
+void ui_draw_link_bezier(rcti *rect);
+
+extern void ui_draw_but(const struct bContext *C, ARegion *ar, struct uiStyle *style, uiBut *but, rcti *rect);
                /* theme color init */
 struct ThemeUI;
 void ui_widget_color_init(struct ThemeUI *tui);
 
+void ui_draw_menu_item(struct uiFontStyle *fstyle, rcti *rect, char *name, int iconid, int state);
+
 /* interface_style.c */
 void uiStyleInit(void);
 
+/* interface_icons.c */
+void ui_id_icon_render(struct Scene *scene, struct ID *id);
+int ui_id_icon_get(struct Scene *scene, struct ID *id);
+
 /* resources.c */
 void init_userdef_do_versions(void);
 void ui_theme_init_userdef(void);
@@ -397,7 +451,9 @@ void ui_resources_init(void);
 void ui_resources_free(void);
 
 /* interface_layout.c */
-void ui_layout_add_but(struct uiLayout *layout, uiBut *but);
+void ui_layout_add_but(uiLayout *layout, uiBut *but);
+int ui_but_can_align(uiBut *but);
+void ui_but_add_search(uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *searchptr, PropertyRNA *searchprop);
 
 /* interface_anim.c */
 void ui_but_anim_flag(uiBut *but, float cfra);
@@ -406,6 +462,9 @@ void ui_but_anim_delete_keyframe(struct bContext *C);
 void ui_but_anim_add_driver(struct bContext *C);
 void ui_but_anim_remove_driver(struct bContext *C);
 void ui_but_anim_menu(struct bContext *C, uiBut *but);
+int ui_but_anim_expression_get(uiBut *but, char *str, int maxlen);
+int ui_but_anim_expression_set(uiBut *but, const char *str);
+void ui_but_anim_autokey(uiBut *but, struct Scene *scene, float cfra);
 
 #endif