UI: add UILayout.direction
authorCampbell Barton <ideasman42@gmail.com>
Thu, 20 Dec 2018 00:59:31 +0000 (11:59 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 20 Dec 2018 00:59:31 +0000 (11:59 +1100)
Read only attribute, needed for introspection.

source/blender/editors/include/UI_interface.h
source/blender/editors/interface/interface_layout.c
source/blender/makesrna/intern/rna_ui.c

index 80ac5e7286858f37e2b40feb9ce87180aa4cf3b9..31956877d1b69bb0160a1f9ed6fcb5db23adb95a 100644 (file)
@@ -1003,6 +1003,7 @@ void uiLayoutSetUnitsY(uiLayout *layout, float unit);
 void uiLayoutSetEmboss(uiLayout *layout, char emboss);
 void uiLayoutSetPropSep(uiLayout *layout, bool is_sep);
 void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep);
+int uiLayoutGetLocalDir(const uiLayout *layout);
 
 int uiLayoutGetOperatorContext(uiLayout *layout);
 bool uiLayoutGetActive(uiLayout *layout);
index afcbcbbdf5294005b5cda77c1c287b5dfa6e3914..9b145fdba922ddd5e2e1f11a5221f54314079083 100644 (file)
@@ -380,7 +380,7 @@ static void ui_item_move(uiItem *item, int delta_xmin, int delta_xmax)
 
 /******************** Special RNA Items *********************/
 
-static int ui_layout_local_dir(uiLayout *layout)
+int uiLayoutGetLocalDir(const uiLayout *layout)
 {
        switch (layout->item.type) {
                case ITEM_LAYOUT_ROW:
@@ -402,7 +402,7 @@ static uiLayout *ui_item_local_sublayout(uiLayout *test, uiLayout *layout, bool
 {
        uiLayout *sub;
 
-       if (ui_layout_local_dir(test) == UI_LAYOUT_HORIZONTAL)
+       if (uiLayoutGetLocalDir(test) == UI_LAYOUT_HORIZONTAL)
                sub = uiLayoutRow(layout, align);
        else
                sub = uiLayoutColumn(layout, align);
@@ -731,7 +731,7 @@ static void ui_item_enum_expand_exec(
                        UI_but_func_set(but, ui_item_enum_expand_handle, but, POINTER_FROM_INT(value));
                }
 
-               if (ui_layout_local_dir(layout) != UI_LAYOUT_HORIZONTAL)
+               if (uiLayoutGetLocalDir(layout) != UI_LAYOUT_HORIZONTAL)
                        but->drawflag |= UI_BUT_TEXT_LEFT;
 
                /* Allow quick, inaccurate swipe motions to switch tabs (no need to keep cursor over them). */
@@ -1749,7 +1749,7 @@ void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index
                                /* Expanded enums each have their own name. */
 
                                /* Often expanded enum's are better arranged into a row, so check the existing layout. */
-                               if (ui_layout_local_dir(layout) == UI_LAYOUT_HORIZONTAL) {
+                               if (uiLayoutGetLocalDir(layout) == UI_LAYOUT_HORIZONTAL) {
                                        layout = uiLayoutRow(layout_split, true);
                                }
                                else {
index ea39ce725984f4d6eb586dac21a55134375004d5..7c792f04f02379c336888c1772a8d0263e4a6e32 100644 (file)
@@ -950,6 +950,11 @@ static void rna_UILayout_alignment_set(PointerRNA *ptr, int value)
        uiLayoutSetAlignment(ptr->data, value);
 }
 
+static int rna_UILayout_direction_get(PointerRNA *ptr)
+{
+       return uiLayoutGetLocalDir(ptr->data);
+}
+
 static float rna_UILayout_scale_x_get(PointerRNA *ptr)
 {
        return uiLayoutGetScaleX(ptr->data);
@@ -1035,6 +1040,12 @@ static void rna_def_ui_layout(BlenderRNA *brna)
                {0, NULL, 0, NULL, NULL}
        };
 
+       static const EnumPropertyItem direction_items[] = {
+               {UI_LAYOUT_HORIZONTAL, "HORIZONTAL", 0, "Horizontal", ""},
+               {UI_LAYOUT_VERTICAL, "VERTICAL", 0, "Vertical", ""},
+               {0, NULL, 0, NULL, NULL}
+       };
+
        static const EnumPropertyItem emboss_items[] = {
                {UI_EMBOSS, "NORMAL", 0, "Normal", "Draw standard button emboss style"},
                {UI_EMBOSS_NONE, "NONE", 0, "None", "Draw only text and icons"},
@@ -1067,6 +1078,11 @@ static void rna_def_ui_layout(BlenderRNA *brna)
        RNA_def_property_enum_items(prop, alignment_items);
        RNA_def_property_enum_funcs(prop, "rna_UILayout_alignment_get", "rna_UILayout_alignment_set", NULL);
 
+       prop = RNA_def_property(srna, "direction", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_items(prop, direction_items);
+       RNA_def_property_enum_funcs(prop, "rna_UILayout_direction_get", NULL, NULL);
+       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+
 #if 0
        prop = RNA_def_property(srna, "keep_aspect", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_funcs(prop, "rna_UILayout_keep_aspect_get", "rna_UILayout_keep_aspect_set");