C++ + Gtkmm2
-
Hi, ich habe ein kleines Problem mit Gtkmm, ich schreibe mir zur Zeit einen kleinen Editor, leider habe ich bis her keine möglichkeit entdecken können mit
der ich ein Objekt speichern kann, schlieslich will ich ja den Text, den ich mit meinem Editor verfasse auch mal speichern wollen
Ich gebe hier mal einen minimalen Quellcode an, vielleicht hilf es irgend wem ja.
in EditorWindow::on_menu_file_save() sollte dann die funktion hinein, ich habe schon etliches ausprobiert, nichts hat aber wirklich funktioniert.die Header-Datei: unstable_editor.h #include <gtkmm.h> class EditorWindow : public Gtk::Window { public: EditorWindow(); virtual ~EditorWindow(); protected: Gtk::HBox m_HBox; Gtk::VBox m_VBox; Gtk::Toolbar m_Toolbar; Gtk::TextView m_Textview; Gtk::TextBuffer m_b; // Menubars Gtk::MenuBar m_Menubar; Gtk::Menu m_Menu_File; Glib::RefPtr<Gtk::TextBuffer> m_buffer,hallo; // Virtual virtual void on_menu_file_quit(); virtual void on_menu_file_save(); virtual void on_menu_file_new(); // virtual void fill_buffer(); };
Die dazugehörige unstable_editor.cpp #include <gtkmm.h> #include <iostream> #include "editor_unstable.h" EditorWindow::EditorWindow() { // Window settings set_default_size(700, 600); set_title("Editor::Editor"); add(m_VBox); // Menu File m_Menubar.items().push_back( Gtk::Menu_Helpers::MenuElem("_Datei", m_Menu_File) ); { Gtk::Menu::MenuList& menulist = m_Menu_File.items(); // Programm beenden menulist.push_back( Gtk::Menu_Helpers::MenuElem("_Beenden", Gtk::Menu::AccelKey("<control>q"), SigC::slot(*this, &EditorWindow::on_menu_file_quit) ) ); // Speicherfunktion menulist.push_back( Gtk::Menu_Helpers::MenuElem("_Speichern", Gtk::Menu::AccelKey("<control>s"), SigC::slot(*this, &EditorWindow::on_menu_file_save) ) ); // Neu menulist.push_back( Gtk::Menu_Helpers::MenuElem("_Neu", Gtk::Menu::AccelKey("<control>n"), SigC::slot(*this, &EditorWindow::on_menu_file_new) ) ); } // Add Menu m_VBox.pack_start( m_Menubar, Gtk::PACK_SHRINK ); // TextFläche m_VBox.pack_start(m_Textview); show_all_children(); } EditorWindow::~EditorWindow() { } void EditorWindow::on_menu_file_quit() { hide(); } void EditorWindow::on_menu_file_save() { m_buffer = Gtk::TextBuffer::create(); } void EditorWindow::on_menu_file_new() { }
-
du kannst doch einfach die Gtk::Textbuffer::get_text Funktion nehmen, den Text auslesen und via. std::wofstream in eine Datei schreiben (für UTF-8/16 Ausgabe müsstest du dir aber eigene Ausgabe Funktionen schreiben!)
http://www.gtkmm.org/gtkmm2/docs/reference/html/classGtk_1_1TextBuffer.html#a33