gtkmm + Dateidialog
-
Hallo
Ich habe mich jetzt endlich an GTKmm ran gemacht und mit gtkmm.org komm ich auch schon recht weit.
Ich habe momentan eine Ein_Fenster_Anwendung mit Glade und C++ stehen. Jetzt würde ich gerne Text in meinen TextView laden bzw daraus speichern.
Als Dateidialog ist wohl Gtk::FileChooserDialog die richtige lösung aber ich bekomm das nich zum laufen.
Aus meiner Delphizeit kenn ich noch die VCL-Dialoge - Dialog.execute() und dann auf die Eigenschaft zugreifen.
Kann ich das in GTKmm ähnlich lösen?
__
OS: Ubuntu/Linux 6.10
IDE: Eclipse 3.2
Compiler: g++ 4.1.2
-
darthdespotism schrieb:
Als Dateidialog ist wohl Gtk::FileChooserDialog die richtige lösung aber ich bekomm das nich zum laufen.
Hi, was kriegst du nicht ans laufen, was funktioniert denn nicht ??
Eventuell bissl Code ...
-
Anzeigen kein Problem - aber keine Ahnung wie ich die Buttons steuern kann
Die Dialoge sollen aufgerufen werden, wenn ein Button betätigt wird, daher die Funktionen.
In der ersten habe ich mir mal gedanken gemacht ob ich so vll weiterkomme
void MK_Window::on_button_clicked_load() { Gtk::FileChooserDialog * Dlg; xml_load = Gnome::Glade::Xml::create("mk_gui.glade", "loadDlg"); xml_load->get_widget("loadDlg", Dlg); } void MK_Window::on_button_clicked_save() { xml_save = Gnome::Glade::Xml::create("mk_gui.glade", "saveDlg"); }
Edit:
An dieser Stelle muss es nicht glade sein, hatte ich nur offen daher der Verusch das zu verwenden.Ein entsprechendes Stück sourcecode mit funktionierendem Dialog wäre warscheinlich alles, was ich brauche.
Edit:
wo die gtkmm-Resourcen versagen Hilft manchmal die Gtk+ Hilfe weiter - Beispiel gefunden und umgesetzt:void MK_Window::on_button_clicked_save() { std::string filename; Glib::RefPtr<Gnome::Glade::Xml> xml_save; Gtk::FileChooserDialog * Dlg; xml_save = Gnome::Glade::Xml::create("mk_gui.glade", "saveDlg"); xml_save->get_widget("saveDlg", Dlg); if(Dlg->run() == Gtk::RESPONSE_ACCEPT) { filename = Dlg->get_filename(); std::ofstream dest(filename.c_str()); dest << output->get_buffer()->get_text(); dest.close(); } delete Dlg; }