csrss
05.06.2009, 14:30
Здрасте. Если кто знает помогите пожалста. Короче недавно занялса изучением gtkmm [c++] и вот такая проблема: как добавлять в окно проги текст, один за другим? Ну тоесть вот банальный пример того же в перле:
$buffer->insert ($buffer->get_end_iter, "test\n");
$buffer содержит текст который хотим показать / который уже находитса в окне
$buffer->get_end_iter - т.е. тут прога автоматом находит text iterator который в нашем случае является концом уже имеющегося текста.
И можно терь вызывать эту функцию скока угодно и текст в окошко проги будет добавлятся всё время. А щас, то что я уже пробовал (безрезультатно) в gtkmm (тут тока код с которым не могу разобратса):
using namespace Gtk;
class MainClass : public Window{
public:
MainClass();
virtual ~MainClass();
protected:
Glib::RefPtr<Gtk::TextBuffer::Tag> refTagMatch;
Glib::RefPtr<Gtk::TextBuffer::TagTable> refTagTable;
Glib::RefPtr<Gtk::TextBuffer> refBuffer, buff;
Glib::RefPtr<Gtk::TextBuffer::Mark> refMark;
Glib::RefPtr<Gtk::TextMark> m_Mark;
TextIter m_iter;
};
MainClass::MainClass()
{
refTagMatch = Gtk::TextBuffer::Tag::create();
refTagMatch->property_background() = "black";
refTagTable = Gtk::TextBuffer::TagTable::create();
refBuffer = Gtk::TextBuffer::create(refTagTable);
// refMark = refBuffer->get_buffer();
m_iter = refBuffer->end();
refBuffer->set_text("test\n");
buff = m_TextView.get_buffer();
// m_iter = buff->get_iter_at_line(1);
buff->insert(m_iter, "shit\n");
m_TextView.set_buffer(refBuffer);
// m_TextView.scroll_to(m_iter, true);
m_TextView.set_buffer(buff);
}
Всё это так сказать тупые попытки, так как документация gtkmm ну просто "чудесна и прекрасна хоть убейся башкой ап стенку" как для меня. Единственное, что получается - это показать один текст, потом прога его убирает и показывает другой. =/
$buffer->insert ($buffer->get_end_iter, "test\n");
$buffer содержит текст который хотим показать / который уже находитса в окне
$buffer->get_end_iter - т.е. тут прога автоматом находит text iterator который в нашем случае является концом уже имеющегося текста.
И можно терь вызывать эту функцию скока угодно и текст в окошко проги будет добавлятся всё время. А щас, то что я уже пробовал (безрезультатно) в gtkmm (тут тока код с которым не могу разобратса):
using namespace Gtk;
class MainClass : public Window{
public:
MainClass();
virtual ~MainClass();
protected:
Glib::RefPtr<Gtk::TextBuffer::Tag> refTagMatch;
Glib::RefPtr<Gtk::TextBuffer::TagTable> refTagTable;
Glib::RefPtr<Gtk::TextBuffer> refBuffer, buff;
Glib::RefPtr<Gtk::TextBuffer::Mark> refMark;
Glib::RefPtr<Gtk::TextMark> m_Mark;
TextIter m_iter;
};
MainClass::MainClass()
{
refTagMatch = Gtk::TextBuffer::Tag::create();
refTagMatch->property_background() = "black";
refTagTable = Gtk::TextBuffer::TagTable::create();
refBuffer = Gtk::TextBuffer::create(refTagTable);
// refMark = refBuffer->get_buffer();
m_iter = refBuffer->end();
refBuffer->set_text("test\n");
buff = m_TextView.get_buffer();
// m_iter = buff->get_iter_at_line(1);
buff->insert(m_iter, "shit\n");
m_TextView.set_buffer(refBuffer);
// m_TextView.scroll_to(m_iter, true);
m_TextView.set_buffer(buff);
}
Всё это так сказать тупые попытки, так как документация gtkmm ну просто "чудесна и прекрасна хоть убейся башкой ап стенку" как для меня. Единственное, что получается - это показать один текст, потом прога его убирает и показывает другой. =/