-work in progress implementation of NDEE's theme It's NOT DONE YET

This commit is contained in:
Juan Linietsky 2015-10-20 23:54:24 -03:00
parent 97f483af0a
commit d241b2ec1b
21 changed files with 131 additions and 89 deletions

View file

@ -229,6 +229,18 @@ void TabContainer::_notification(int p_what) {
int w=0;
int idx=0;
Vector<int> offsets;
Vector<Control*> controls;
int from=0;
int limit=get_size().width;
if (popup) {
top_size.width-=menu->get_width();
limit-=menu->get_width();
}
bool notdone=false;
last_tab_cache=-1;
for(int i=0;i<get_child_count();i++) {
Control *c = get_child(i)->cast_to<Control>();
@ -236,7 +248,20 @@ void TabContainer::_notification(int p_what) {
continue;
if (c->is_set_as_toplevel())
continue;
if (idx<tab_display_ofs) {
idx++;
from=idx;
continue;
}
if (w>=get_size().width) {
buttons_visible_cache=true;
notdone=true;
break;
}
offsets.push_back(w);
controls.push_back(c);
String s = c->has_meta("_tab_name")?String(XL_MESSAGE(String(c->get_meta("_tab_name")))):String(c->get_name());
w+=font->get_string_size(s).width;
@ -257,55 +282,46 @@ void TabContainer::_notification(int p_what) {
w+=tab_bg->get_minimum_size().width;
}
if (idx<tab_display_ofs) {
}
last_tab_cache=idx;
idx++;
}
int ofs;
int limit=get_size().width;
if (popup) {
top_size.width-=menu->get_width();
limit-=menu->get_width();
}
switch(align) {
if (w<=limit) {
switch(align) {
case ALIGN_LEFT: ofs = side_margin; break;
case ALIGN_CENTER: ofs = (int(limit) - w)/2; break;
case ALIGN_RIGHT: ofs = int(limit) - w - side_margin; break;
};
case ALIGN_LEFT: ofs = side_margin; break;
case ALIGN_CENTER: ofs = (int(limit) - w)/2; break;
case ALIGN_RIGHT: ofs = int(limit) - w - side_margin; break;
};
tab_display_ofs=0;
buttons_visible_cache=false;
} else {
ofs=0;
limit-=incr->get_width()+decr->get_width();
buttons_visible_cache=true;
}
tab_display_ofs=0;
tabs_ofs_cache=ofs;
last_tab_cache=-1;
idx=0;
bool notdone=false;
for(int i=0;i<get_child_count();i++) {
Control *c = get_child(i)->cast_to<Control>();
if (!c)
continue;
if (c->is_set_as_toplevel())
continue;
for(int i=0;i<controls.size();i++) {
if (idx<tab_display_ofs) {
idx++;
continue;
idx=i+from;
if (current>=from && current<from+controls.size()-1) {
//current is visible! draw it last.
if (i==controls.size()-1) {
idx=current;
} else if (idx>=current) {
idx+=1;
}
}
Control *c = controls[idx-from];
String s = c->has_meta("_tab_name")?String(c->get_meta("_tab_name")):String(c->get_name());
int w=font->get_string_size(s).width;
Ref<Texture> icon;
@ -336,14 +352,12 @@ void TabContainer::_notification(int p_what) {
col=color_bg;
}
int lofs = ofs + offsets[idx-from];
Size2i sb_ms = sb->get_minimum_size();
Rect2 sb_rect = Rect2( ofs, 0, w+sb_ms.width, top_margin);
Rect2 sb_rect = Rect2( lofs, 0, w+sb_ms.width, top_margin);
if (sb_ms.width+w+ofs > limit) {
notdone=true;
break;
}
sb->draw(ci, sb_rect );
Point2i lpos = sb_rect.pos;
@ -357,8 +371,7 @@ void TabContainer::_notification(int p_what) {
}
font->draw(ci, Point2i( lpos.x, sb->get_margin(MARGIN_TOP)+((sb_rect.size.y-sb_ms.y)-font->get_height())/2+font->get_ascent() ), s, col );
ofs+=sb_ms.x+w;
last_tab_cache=idx;
//ofs+=sb_ms.x+w;
/*
int sb_mw = sb->get_minimum_size().width;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 3 KiB

View file

@ -60,6 +60,16 @@ static Ref<StyleBoxTexture> make_stylebox(T p_src,float p_left, float p_top, flo
return style;
}
static Ref<StyleBoxTexture> sb_expand(Ref<StyleBoxTexture> p_sbox,float p_left, float p_top, float p_right, float p_botton) {
p_sbox->set_expand_margin_size(MARGIN_LEFT,p_left);
p_sbox->set_expand_margin_size(MARGIN_TOP,p_top);
p_sbox->set_expand_margin_size(MARGIN_RIGHT,p_right);
p_sbox->set_expand_margin_size(MARGIN_BOTTOM,p_botton);
return p_sbox;
}
template<class T>
static Ref<Texture> make_icon(T p_src) {
@ -195,18 +205,24 @@ void make_default_theme() {
Ref<StyleBoxTexture> focus = make_stylebox( focus_png,5,5,5,5);
for(int i=0;i<4;i++) {
focus->set_expand_margin_size(Margin(i),2);
focus->set_expand_margin_size(Margin(i),1);
}
// Button
t->set_stylebox("normal","Button", make_stylebox( button_normal_png,4,4,4,4,8,4,8,4) );
t->set_stylebox("pressed","Button", make_stylebox( button_pressed_png,4,4,4,4) );
t->set_stylebox("hover","Button", make_stylebox( button_hover_png,4,4,4,4) );
t->set_stylebox("disabled","Button", make_stylebox( button_disabled_png,4,4,4,4) );
t->set_stylebox("focus","Button", focus );
Ref<StyleBox> sb_button_normal = sb_expand( make_stylebox( button_normal_png,4,4,4,4,6,2,6,2),2,2,2,2);
Ref<StyleBox> sb_button_pressed = sb_expand( make_stylebox( button_pressed_png,4,4,4,4,6,2,6,2),2,2,2,2);
Ref<StyleBox> sb_button_hover = sb_expand( make_stylebox( button_hover_png,4,4,4,4,6,2,6,2),2,2,2,2);
Ref<StyleBox> sb_button_disabled = sb_expand( make_stylebox( button_disabled_png,4,4,4,4,6,2,6,2),2,2,2,2);
Ref<StyleBox> sb_button_focus = sb_expand( make_stylebox( button_focus_png,4,4,4,4,6,2,6,2),2,2,2,2);
t->set_stylebox("normal","Button", sb_button_normal);
t->set_stylebox("pressed","Button", sb_button_pressed);
t->set_stylebox("hover","Button", sb_button_hover);
t->set_stylebox("disabled","Button", sb_button_disabled);
t->set_stylebox("focus","Button", sb_button_focus);
t->set_font("font","Button", default_font );
@ -221,11 +237,11 @@ void make_default_theme() {
// ColorPickerButton
t->set_stylebox("normal","ColorPickerButton", make_stylebox( button_normal_png,4,4,4,4) );
t->set_stylebox("pressed","ColorPickerButton", make_stylebox( button_pressed_png,4,4,4,4) );
t->set_stylebox("hover","ColorPickerButton", make_stylebox( button_hover_png,4,4,4,4) );
t->set_stylebox("disabled","ColorPickerButton", make_stylebox( button_disabled_png,4,4,4,4) );
t->set_stylebox("focus","ColorPickerButton", focus );
t->set_stylebox("normal","ColorPickerButton", sb_button_normal);
t->set_stylebox("pressed","ColorPickerButton", sb_button_pressed);
t->set_stylebox("hover","ColorPickerButton", sb_button_hover);
t->set_stylebox("disabled","ColorPickerButton", sb_button_disabled);
t->set_stylebox("focus","ColorPickerButton", sb_button_focus);
t->set_font("font","ColorPickerButton", default_font );
@ -263,11 +279,17 @@ void make_default_theme() {
// OptionButton
t->set_stylebox("normal","OptionButton", make_stylebox( option_button_normal_png,5,5,21,5,8,4,8,4) );
t->set_stylebox("pressed","OptionButton", make_stylebox( option_button_pressed_png,5,5,21,5) );
t->set_stylebox("hover","OptionButton", make_stylebox( option_button_hover_png,5,5,21,5) );
t->set_stylebox("disabled","OptionButton", make_stylebox( option_button_disabled_png,5,5,21,5) );
t->set_stylebox("focus","OptionButton", focus );
Ref<StyleBox> sb_optbutton_normal = sb_expand( make_stylebox( option_button_normal_png,4,4,21,4,6,2,21,2),2,2,2,2);
Ref<StyleBox> sb_optbutton_pressed = sb_expand( make_stylebox( option_button_pressed_png,4,4,21,4,6,2,21,2),2,2,2,2);
Ref<StyleBox> sb_optbutton_hover = sb_expand( make_stylebox( option_button_hover_png,4,4,21,4,6,2,21,2),2,2,2,2);
Ref<StyleBox> sb_optbutton_disabled = sb_expand( make_stylebox( option_button_disabled_png,4,4,21,4,6,2,21,2),2,2,2,2);
Ref<StyleBox> sb_optbutton_focus = sb_expand( make_stylebox( button_focus_png,4,4,4,4,6,2,6,2),2,2,2,2);
t->set_stylebox("normal","OptionButton", sb_optbutton_normal );
t->set_stylebox("pressed","OptionButton", sb_optbutton_pressed );
t->set_stylebox("hover","OptionButton", sb_optbutton_hover );
t->set_stylebox("disabled","OptionButton", sb_optbutton_disabled );
t->set_stylebox("focus","OptionButton", sb_button_focus );
t->set_icon("arrow","OptionButton", make_icon( option_arrow_png ) );
@ -285,9 +307,9 @@ void make_default_theme() {
// MenuButton
t->set_stylebox("normal","MenuButton", make_stylebox( button_normal_png,4,4,4,4,8,4,8,4) );
t->set_stylebox("pressed","MenuButton", make_stylebox( tool_button_pressed_png ,4,4,4,4) );
t->set_stylebox("hover","MenuButton", make_stylebox( button_normal_png,4,4,4,4) );
t->set_stylebox("normal","MenuButton", sb_button_normal );
t->set_stylebox("pressed","MenuButton", sb_button_pressed );
t->set_stylebox("hover","MenuButton", sb_button_pressed );
t->set_stylebox("disabled","MenuButton", make_empty_stylebox(0,0,0,0) );
t->set_font("font","MenuButton", default_font );
@ -497,10 +519,10 @@ void make_default_theme() {
// WindowDialog
Ref<StyleBoxTexture> style_pp_win = make_stylebox( popup_window_png,6,28,6,7);
for(int i=0;i<4;i++)
Ref<StyleBoxTexture> style_pp_win = sb_expand(make_stylebox( popup_window_png,10,30,10,8),8,26,8,4);
/*for(int i=0;i<4;i++)
style_pp_win->set_expand_margin_size((Margin)i,3);
style_pp_win->set_expand_margin_size(MARGIN_TOP,26);
style_pp_win->set_expand_margin_size(MARGIN_TOP,26);*/
t->set_stylebox("panel","WindowDialog", style_pp_win );
@ -520,7 +542,7 @@ void make_default_theme() {
// Popup
Ref<StyleBoxTexture> style_pp = make_stylebox( popup_bg_png,4,4,4,4,8,8,8,8);
Ref<StyleBoxTexture> style_pp = sb_expand( make_stylebox( popup_bg_png,5,5,5,5,4,4,4,4),2,2,2,2);
Ref<StyleBoxTexture> selected = make_stylebox( selection_png,6,6,6,6);
for(int i=0;i<4;i++) {
@ -644,16 +666,13 @@ void make_default_theme() {
// TabContainer
Ref<StyleBoxTexture> tc_sb = make_stylebox( tab_container_bg_png,4,4,4,4);
for(int i=0;i<4;i++) {
tc_sb->set_default_margin(Margin(i),4);
tc_sb->set_expand_margin_size(Margin(i),2);
}
Ref<StyleBoxTexture> tc_sb = sb_expand( make_stylebox( tab_container_bg_png,4,4,4,4,4,4,4,4),3,3,3,3);
tc_sb->set_expand_margin_size(MARGIN_TOP,2);
tc_sb->set_default_margin(MARGIN_TOP,8);
t->set_stylebox("tab_fg","TabContainer", make_stylebox( tab_current_png,4,4,4,4,16,4,16,4) );
t->set_stylebox("tab_bg","TabContainer", make_stylebox( tab_behind_png,4,4,4,4,16,6,16,4) );
t->set_stylebox("tab_fg","TabContainer", sb_expand( make_stylebox( tab_current_png,4,4,4,1,16,4,16,4),2,2,2,2) );
t->set_stylebox("tab_bg","TabContainer", sb_expand( make_stylebox( tab_behind_png,5,5,5,1,16,6,16,4),3,0,3,3) );
t->set_stylebox("panel","TabContainer", tc_sb );
t->set_icon("increment","TabContainer",make_icon( scroll_button_right_png));
@ -678,9 +697,9 @@ void make_default_theme() {
// Tabs
t->set_stylebox("tab_fg","Tabs", make_stylebox( tab_current_png,4,4,4,4,16,4,16,4) );
t->set_stylebox("tab_bg","Tabs", make_stylebox( tab_behind_png,4,4,4,4,16,6,16,4) );
t->set_stylebox("panel","Tabs", make_stylebox( tab_container_bg_png,4,4,4,4) );
t->set_stylebox("tab_fg","Tabs", sb_expand( make_stylebox( tab_current_png,4,4,4,1,16,4,16,4),2,2,2,2) );
t->set_stylebox("tab_bg","Tabs", sb_expand( make_stylebox( tab_behind_png,5,5,5,1,16,6,16,4),3,3,3,3) );
t->set_stylebox("panel","Tabs",tc_sb );
t->set_stylebox("button_pressed","Tabs", make_stylebox( button_pressed_png,4,4,4,4) );
t->set_stylebox("button","Tabs", make_stylebox( button_normal_png,4,4,4,4) );

Binary file not shown.

Before

Width:  |  Height:  |  Size: 459 B

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 368 B

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 B

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 508 B

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 394 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

After

Width:  |  Height:  |  Size: 3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 3 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 309 B