Ejemplo n.º 1
0
void RichTextLabel::_add_item(Item *p_item, bool p_enter, bool p_ensure_newline) {



	p_item->parent=current;
	p_item->E=current->subitems.push_back(p_item);
	p_item->index=current_idx++;


	if (p_enter)
		current=p_item;

	if (p_ensure_newline && current_frame->lines[current_frame->lines.size()-1].from) {
		_invalidate_current_line(current_frame);
		current_frame->lines.resize( current_frame->lines.size() +1 );

	}

	if (current_frame->lines[current_frame->lines.size()-1].from==NULL) {
		current_frame->lines[current_frame->lines.size()-1].from=p_item;
	}
	p_item->line=current_frame->lines.size()-1;

	_invalidate_current_line(current_frame);

}
Ejemplo n.º 2
0
void RichTextLabel::add_text(const String& p_text) {

	if (current->type==ITEM_TABLE)
		return; //can't add anything here

	int pos=0;

	while (pos<p_text.length()) {

		int end=p_text.find("\n",pos);
		String line;
		bool eol=false;
		if (end==-1) {

			end=p_text.length();
		} else {

			eol=true;
		}

		if (pos==0 && end==p_text.length())
			line=p_text;
		else
			line=p_text.substr(pos,end-pos);

		if (line.length()>0) {

			if (current->subitems.size() && current->subitems.back()->get()->type==ITEM_TEXT) {
				//append text condition!
				ItemText *ti = static_cast<ItemText*>(current->subitems.back()->get());
				ti->text+=line;
				_invalidate_current_line(main);

			} else {
				//append item condition
				ItemText *item = memnew( ItemText );
				item->text=line;
				_add_item(item,false);

			}


		}

		if (eol) {

			ItemNewline *item = memnew( ItemNewline );
			item->line=current_frame->lines.size();
			_add_item(item,false);
			current_frame->lines.resize(current_frame->lines.size()+1);
			current_frame->lines[current_frame->lines.size()-1].from=item;
			_invalidate_current_line(current_frame);

		}

		pos=end+1;
	}
}
Ejemplo n.º 3
0
void RichTextLabel::_add_item(Item *p_item, bool p_enter) {

    p_item->parent=current;
    p_item->E=current->subitems.push_back(p_item);
    p_item->index=current_idx++;

    if (p_enter)
        current=p_item;

    if (lines[lines.size()-1].from==NULL) {
        lines[lines.size()-1].from=p_item;
    }

    _invalidate_current_line();

}