cppAdaptive1
view release on metacpan or search on metacpan
src/dlib/gui_widgets/widgets.cpp view on Meta::CPAN
void text_field::
enable (
)
{
drawable::enable();
right_click_menu.enable();
}
// ----------------------------------------------------------------------------------------
void text_field::
give_input_focus (
)
{
auto_mutex M(m);
has_focus = true;
cursor_visible = true;
parent.invalidate_rectangle(rect);
t.start();
}
// ----------------------------------------------------------------------------------------
bool text_field::
has_input_focus (
) const
{
auto_mutex M(m);
return has_focus;
}
// ----------------------------------------------------------------------------------------
void text_field::
select_all_text (
)
{
auto_mutex M(m);
on_select_all();
}
// ----------------------------------------------------------------------------------------
void text_field::
on_cut (
)
{
on_copy();
on_delete_selected();
}
// ----------------------------------------------------------------------------------------
void text_field::
on_copy (
)
{
if (highlight_start <= highlight_end)
{
put_on_clipboard(text_.substr(highlight_start, highlight_end-highlight_start+1));
}
}
// ----------------------------------------------------------------------------------------
void text_field::
on_paste (
)
{
ustring temp_str;
get_from_clipboard(temp_str);
// If this is a multi line string then just take the first line.
ustring::size_type pos = temp_str.find_first_of('\n');
if (pos != ustring::npos)
{
temp_str = temp_str.substr(0,pos);
}
if (highlight_start <= highlight_end)
{
text_ = text_.substr(0,highlight_start) + temp_str +
text_.substr(highlight_end+1,text_.size()-highlight_end-1);
move_cursor(highlight_start+temp_str.size());
highlight_start = 0;
highlight_end = -1;
parent.invalidate_rectangle(rect);
on_no_text_selected();
// send out the text modified event
if (text_modified_handler.is_set())
text_modified_handler();
}
else
{
text_ = text_.substr(0,cursor_pos) + temp_str +
text_.substr(cursor_pos,text_.size()-cursor_pos);
move_cursor(cursor_pos+temp_str.size());
// send out the text modified event
if (temp_str.size() != 0 && text_modified_handler.is_set())
text_modified_handler();
}
}
// ----------------------------------------------------------------------------------------
void text_field::
on_select_all (
)
{
move_cursor(static_cast<long>(text_.size()));
highlight_start = 0;
highlight_end = static_cast<long>(text_.size()-1);
if (highlight_start <= highlight_end)
on_text_is_selected();
parent.invalidate_rectangle(rect);
}
// ----------------------------------------------------------------------------------------
void text_field::
on_delete_selected (
)
{
if (highlight_start <= highlight_end)
{
text_ = text_.erase(highlight_start,highlight_end-highlight_start+1);
move_cursor(highlight_start);
highlight_start = 0;
highlight_end = -1;
src/dlib/gui_widgets/widgets.cpp view on Meta::CPAN
break;
}
}
}
scroll_to_rect(get_bg_rect(row,col));
// redraw our box
parent.invalidate_rectangle(text_rect);
}
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// text_field object methods
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
rectangle text_box::
get_text_rect (
) const
{
const unsigned long padding = style->get_padding(*mfont);
rectangle text_rect;
text_rect.set_left(total_rect().left()+padding);
text_rect.set_top(total_rect().top()+padding);
text_rect.set_right(total_rect().right()-padding);
text_rect.set_bottom(total_rect().bottom()-padding);
return text_rect;
}
// ----------------------------------------------------------------------------------------
void text_box::
enable (
)
{
scrollable_region::enable();
right_click_menu.enable();
}
// ----------------------------------------------------------------------------------------
void text_box::
on_cut (
)
{
on_copy();
on_delete_selected();
}
// ----------------------------------------------------------------------------------------
void text_box::
on_copy (
)
{
if (highlight_start <= highlight_end)
{
put_on_clipboard(text_.substr(highlight_start, highlight_end-highlight_start+1));
}
}
// ----------------------------------------------------------------------------------------
void text_box::
on_paste (
)
{
ustring temp_str;
get_from_clipboard(temp_str);
if (highlight_start <= highlight_end)
{
text_ = text_.substr(0,highlight_start) + temp_str +
text_.substr(highlight_end+1,text_.size()-highlight_end-1);
move_cursor(highlight_start+temp_str.size());
highlight_start = 0;
highlight_end = -1;
parent.invalidate_rectangle(rect);
on_no_text_selected();
// send out the text modified event
if (text_modified_handler.is_set())
text_modified_handler();
}
else
{
text_ = text_.substr(0,cursor_pos) + temp_str +
text_.substr(cursor_pos,text_.size()-cursor_pos);
move_cursor(cursor_pos+temp_str.size());
// send out the text modified event
if (temp_str.size() != 0 && text_modified_handler.is_set())
text_modified_handler();
}
adjust_total_rect();
}
// ----------------------------------------------------------------------------------------
void text_box::
on_select_all (
)
{
move_cursor(static_cast<long>(text_.size()));
highlight_start = 0;
highlight_end = static_cast<long>(text_.size()-1);
if (highlight_start <= highlight_end)
on_text_is_selected();
parent.invalidate_rectangle(rect);
}
// ----------------------------------------------------------------------------------------
void text_box::
on_delete_selected (
)
{
if (highlight_start <= highlight_end)
{
text_ = text_.erase(highlight_start,highlight_end-highlight_start+1);
move_cursor(highlight_start);
highlight_start = 0;
highlight_end = -1;
on_no_text_selected();
// send out the text modified event
if (text_modified_handler.is_set())
( run in 1.203 second using v1.01-cache-2.11-cpan-81fc1098f69 )