From 556bae77a9f8167ed4fbbf4f9e4a8149409194f5 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Tue, 10 Mar 2015 17:16:58 +0300 Subject: [PATCH] support tab control placement at bottom --- src/dlangui/dialogs/msgbox.d | 1 - src/dlangui/widgets/editors.d | 2 +- src/dlangui/widgets/styles.d | 6 ++++++ src/dlangui/widgets/tabs.d | 20 +++++++++++++----- .../res/mdpi/tab_btn_dark_down_focused.9.png | Bin 0 -> 195 bytes .../mdpi/tab_btn_dark_down_focused_dark.9.png | Bin 0 -> 214 bytes .../tab_btn_dark_down_focused_selected.9.png | Bin 0 -> 188 bytes ..._btn_dark_down_focused_selected_dark.9.png | Bin 0 -> 196 bytes views/res/mdpi/tab_btn_dark_down_hover.9.png | Bin 0 -> 195 bytes .../mdpi/tab_btn_dark_down_hover_dark.9.png | Bin 0 -> 213 bytes views/res/mdpi/tab_btn_dark_down_normal.9.png | Bin 0 -> 195 bytes .../mdpi/tab_btn_dark_down_normal_dark.9.png | Bin 0 -> 214 bytes .../res/mdpi/tab_btn_dark_down_selected.9.png | Bin 0 -> 194 bytes .../tab_btn_dark_down_selected_dark.9.png | Bin 0 -> 214 bytes .../tab_down_background_dark_focused.9.png | Bin 0 -> 195 bytes ...ab_down_background_dark_focused_dark.9.png | Bin 0 -> 201 bytes .../tab_down_background_dark_normal.9.png | Bin 0 -> 193 bytes ...tab_down_background_dark_normal_dark.9.png | Bin 0 -> 193 bytes views/res/tab_btn_dark_down.xml | 17 +++++++++++++++ views/res/tab_btn_dark_down_dark.xml | 17 +++++++++++++++ views/res/tab_down_background_dark.xml | 8 +++++++ views/res/tab_down_background_theme_dark.xml | 8 +++++++ views/res/theme_dark.xml | 9 ++++++++ views/res/theme_default.xml | 9 ++++++++ views/standard_resources.list | 18 ++++++++++++++++ 25 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 views/res/mdpi/tab_btn_dark_down_focused.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_focused_dark.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_focused_selected.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_focused_selected_dark.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_hover.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_hover_dark.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_normal.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_normal_dark.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_selected.9.png create mode 100644 views/res/mdpi/tab_btn_dark_down_selected_dark.9.png create mode 100644 views/res/mdpi/tab_down_background_dark_focused.9.png create mode 100644 views/res/mdpi/tab_down_background_dark_focused_dark.9.png create mode 100644 views/res/mdpi/tab_down_background_dark_normal.9.png create mode 100644 views/res/mdpi/tab_down_background_dark_normal_dark.9.png create mode 100644 views/res/tab_btn_dark_down.xml create mode 100644 views/res/tab_btn_dark_down_dark.xml create mode 100644 views/res/tab_down_background_dark.xml create mode 100644 views/res/tab_down_background_theme_dark.xml diff --git a/src/dlangui/dialogs/msgbox.d b/src/dlangui/dialogs/msgbox.d index a6563082..fd4c11c0 100644 --- a/src/dlangui/dialogs/msgbox.d +++ b/src/dlangui/dialogs/msgbox.d @@ -56,7 +56,6 @@ class MessageBox : Dialog { /// override to implement creation of dialog controls override void init() { TextWidget msg = new TextWidget("msg", _message); - backgroundColor(0xE0E0E0); padding(Rect(10, 10, 10, 10)); msg.padding(Rect(10, 10, 10, 10)); addChild(msg); diff --git a/src/dlangui/widgets/editors.d b/src/dlangui/widgets/editors.d index d81eaeb8..83103518 100644 --- a/src/dlangui/widgets/editors.d +++ b/src/dlangui/widgets/editors.d @@ -471,7 +471,7 @@ class EditWidgetBase : ScrollWidgetBase, EditableContentListener, MenuItemAction /// returns mouse cursor type for widget override uint getCursorType(int x, int y) { - return CursorType.IBeam; + return x < _pos.left + _leftPaneWidth ? CursorType.Arrow : CursorType.IBeam; } diff --git a/src/dlangui/widgets/styles.d b/src/dlangui/widgets/styles.d index a212fba1..d0246c82 100644 --- a/src/dlangui/widgets/styles.d +++ b/src/dlangui/widgets/styles.d @@ -143,6 +143,12 @@ immutable string STYLE_TAB_UP_DARK = "TAB_UP_DARK"; immutable string STYLE_TAB_UP_BUTTON_DARK = "TAB_UP_BUTTON_DARK"; /// standard style id for tab control tab button text in dock frame immutable string STYLE_TAB_UP_BUTTON_DARK_TEXT = "TAB_UP_BUTTON_DARK_TEXT"; +/// standard style id for tab control in dock frame +immutable string STYLE_TAB_DOWN_DARK = "TAB_DOWN_DARK"; +/// standard style id for tab control tab button in dock frame +immutable string STYLE_TAB_DOWN_BUTTON_DARK = "TAB_DOWN_BUTTON_DARK"; +/// standard style id for tab control tab button text in dock frame +immutable string STYLE_TAB_DOWN_BUTTON_DARK_TEXT = "TAB_DOWN_BUTTON_DARK_TEXT"; /// standard style id for tooltip popup immutable string STYLE_TOOLTIP = "TOOLTIP"; diff --git a/src/dlangui/widgets/tabs.d b/src/dlangui/widgets/tabs.d index 12071b7c..fa18fd7d 100644 --- a/src/dlangui/widgets/tabs.d +++ b/src/dlangui/widgets/tabs.d @@ -231,13 +231,18 @@ class TabControl : WidgetGroupDefaultDrawing { /// signal on tab close button Signal!TabCloseHandler onTabCloseListener; + protected Align _tabAlignment; + @property Align tabAlignment() { return _tabAlignment; } + @property void tabAlignment(Align a) { _tabAlignment = a; } + /// empty parameter list constructor - for usage by factory this() { this(null); } /// create with ID parameter - this(string ID) { + this(string ID, Align tabAlignment = Align.Top) { super(ID); + _tabAlignment = tabAlignment; setStyles(STYLE_TAB_UP, STYLE_TAB_UP_BUTTON, STYLE_TAB_UP_BUTTON_TEXT); _items = new TabItemList(); _moreButton = new ImageButton("MORE", "tab_more"); @@ -628,15 +633,20 @@ class TabWidget : VerticalLayout, TabHandler, TabCloseHandler { this(null); } /// create with ID parameter - this(string ID) { + this(string ID, Align tabAlignment = Align.Top) { super(ID); - _tabControl = new TabControl("TAB_CONTROL"); + _tabControl = new TabControl("TAB_CONTROL", tabAlignment); _tabHost = new TabHost("TAB_HOST", _tabControl); _tabControl.onTabChangedListener.connect(this); _tabControl.onTabCloseListener.connect(this); styleId = STYLE_TAB_WIDGET; - addChild(_tabControl); - addChild(_tabHost); + if (tabAlignment == Align.Top) { + addChild(_tabControl); + addChild(_tabHost); + } else { + addChild(_tabHost); + addChild(_tabControl); + } focusGroup = true; } diff --git a/views/res/mdpi/tab_btn_dark_down_focused.9.png b/views/res/mdpi/tab_btn_dark_down_focused.9.png new file mode 100644 index 0000000000000000000000000000000000000000..0ea1b0f95f5597da05f3db74e46242d0ac6d1448 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_zAk1if^7LAuAbW|YuPgg~W-eZ9zAMG&n}9+Ao-U3d7N?UX&>)78&qol`;+08l49dH?_b literal 0 HcmV?d00001 diff --git a/views/res/mdpi/tab_btn_dark_down_focused_dark.9.png b/views/res/mdpi/tab_btn_dark_down_focused_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..81af9e1b2b395dfc8776de50041827dc89de24c3 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_zAk1if^7LAuAbW|YuPgg~W-eZ9wTH*jD}X}Do-U3d7N_4{UMSdLAmDOwza$Hr zr}T*mDGx@IiBXrhQkRITu$4;$F^JE8|NiWph@(>&SEL)(i3E!^NImeK|IBJ#x*_A4 z(^+y4cIq=F*y^)bNgrTfaEhL~e8wiVhFtq6b3b#-RETbQrMK-3&^iWBS3j3^P6o>Zxm!u6krlRenV~T zX|>!3c9mQL!6$DjCWKZqE->tFz7oeYfid&T+Xn{z0`3hyFQrq( cr@Z>ZsHQ1)@=qDt0idA_p00i_>zopr01+2FtpET3 literal 0 HcmV?d00001 diff --git a/views/res/mdpi/tab_btn_dark_down_focused_selected_dark.9.png b/views/res/mdpi/tab_btn_dark_down_focused_selected_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..dbdea76517757b55d6a68ca722e11e8dae7fcd02 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_zAk1if^7LAuAbW|YuPgg~W-dMkv7fKmwgQC$JzX3_EKa|jY$$lZfQLDL-#Nxm zCRV|in_UJhSC%pgRG)qSYcku(Vul6R&a%yOW{7Ii`IWn~;PpO+ch5_=IWnyC;pmb% lD9CW6DwOTKV(9xnj2{-sNFLW|;sYAa;OXk;vd$@?2>>k;Kgj?9 literal 0 HcmV?d00001 diff --git a/views/res/mdpi/tab_btn_dark_down_hover.9.png b/views/res/mdpi/tab_btn_dark_down_hover.9.png new file mode 100644 index 0000000000000000000000000000000000000000..65a3dbac477a144cbf96532ed36669f9a1210063 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_zAk1if^7LAuAbW|YuPgg~W-dMkRX6MO#Xz9|PZ!4!i_^&_pHHVJ0D;BU%t!TX zLJc$H?Ub2;K=}+q5u@@IlT9Y`Z<&0w=brL+evG(5;3CO1hQliu7qbOqG3XdioGm4p gSlKx7&Kn+vpGyUQ^yFOT2b#^`>FVdQ&MBb@0MH>jN&o-= literal 0 HcmV?d00001 diff --git a/views/res/mdpi/tab_btn_dark_down_hover_dark.9.png b/views/res/mdpi/tab_btn_dark_down_hover_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..881958d2ad1fc29b0b99a5ed5f246e0b70d42e57 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_zAk1if^7LAuAbW|YuPgg~W-dMk3sqb0Dxgr3r;B5V#p$<~7Ya5Q2)JC_FUiB? zEqY0_8IdMU2WmdKI;Vst0Pw~;ng9R* literal 0 HcmV?d00001 diff --git a/views/res/mdpi/tab_btn_dark_down_normal_dark.9.png b/views/res/mdpi/tab_btn_dark_down_normal_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..b62d21b6984053fb0df425e46a5a90db17c241d2 GIT binary patch literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_zAk1if^7LAuAbW|YuPgg~W-dNP`I$QX0YIT-PZ!4!i_>o}FBEJr5OBG;Uy_H( zQ}RZIln0~9#HdSLsY^svm?|ZL7{q74e}8sP#L+2?E7A??M1sW{q#pRre`d8V-H`Fj z=`6ViJN20oZ1q{Jqz^DKI7LrgK4X(wL$3Xkxu3aZN<=q{JzDP!w2r~k)z4*}Q$iB} D!KXtm literal 0 HcmV?d00001 diff --git a/views/res/mdpi/tab_btn_dark_down_selected.9.png b/views/res/mdpi/tab_btn_dark_down_selected.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ae72ecb2b2090f696e613873fb414415da60a7 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G_zAk1if^7LAuAbW|YuPgg~W-dNP1Eas2IDta`o-U3d7N_4%-YCeR$aDCK{k3Fv zwS@^nWeEo^OkljXWrtVt+-{GpybRag9PGbh#C5Iy_XrOqg|ngUfk0uReUTdso1 zS6nBXB-nLMVJcv`l*=f0Q(pTygTuwiy-#JBE->fF{#*9KL{I;;c}D2>|4b4F2?rV) kFE?(g{}Zis$Ay90kc)5AuG4#`0nKLcboFyt=akR{03XLdAc};cpQIw)seTsfyd>dy*5Lj zgaga2s>ANKYa1W7H0N$o`OEanX!$8)h6{zWTPxcbo=DEQzWK|K@HC?zm3r|84B^Zs q7aW**O*U9Ne6`o`Z}n#Rz_fg);HKzP-+O>IFnGH9xvXy hJM{_v$5fdr81w>o#aDcvaT{ndgQu&X%Q~loCIAy%Jg@)& literal 0 HcmV?d00001 diff --git a/views/res/mdpi/tab_down_background_dark_normal_dark.9.png b/views/res/mdpi/tab_down_background_dark_normal_dark.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d9cb44c2f8f9bbb61e6f477e7c6b40b35b227657 GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjY)RhkE)4%caKYZ?lYt_f1s;*b z3=G_zAk1if^7LAuAbW|YuPgg~W-eZH%LCP_jX)tkPZ!4!kK=EzI`T3oiZEZ)Tr{Ck zbV~xOy hJM{_v$5fdr81w>o#aDcvaT{ndgQu&X%Q~loCIBfjJmmlY literal 0 HcmV?d00001 diff --git a/views/res/tab_btn_dark_down.xml b/views/res/tab_btn_dark_down.xml new file mode 100644 index 00000000..666103a6 --- /dev/null +++ b/views/res/tab_btn_dark_down.xml @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/views/res/tab_btn_dark_down_dark.xml b/views/res/tab_btn_dark_down_dark.xml new file mode 100644 index 00000000..22f7f9be --- /dev/null +++ b/views/res/tab_btn_dark_down_dark.xml @@ -0,0 +1,17 @@ + + + + + + + + diff --git a/views/res/tab_down_background_dark.xml b/views/res/tab_down_background_dark.xml new file mode 100644 index 00000000..0412fb26 --- /dev/null +++ b/views/res/tab_down_background_dark.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/views/res/tab_down_background_theme_dark.xml b/views/res/tab_down_background_theme_dark.xml new file mode 100644 index 00000000..825a1cf4 --- /dev/null +++ b/views/res/tab_down_background_theme_dark.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/views/res/theme_dark.xml b/views/res/theme_dark.xml index 137ddc2a..27337e30 100644 --- a/views/res/theme_dark.xml +++ b/views/res/theme_dark.xml @@ -147,6 +147,15 @@ + + + +