merge AudioDiskstream playback code into DiskReader
[ardour.git] / libs / gtkmm2ext / gtkmm2ext / textviewer.h
1 /*
2     Copyright (C) 1999 Paul Barton-Davis
3     This program is free software; you can redistribute it and/or modify
4     it under the terms of the GNU General Public License as published by
5     the Free Software Foundation; either version 2 of the License, or
6     (at your option) any later version.
7
8     This program is distributed in the hope that it will be useful,
9     but WITHOUT ANY WARRANTY; without even the implied warranty of
10     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11     GNU General Public License for more details.
12
13     You should have received a copy of the GNU General Public License
14     along with this program; if not, write to the Free Software
15     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16
17 */
18
19 #ifndef __pbd_gtkmm_textviewer_h__
20 #define __pbd_gtkmm_textviewer_h__
21
22 #include <string>
23
24 #include <gtkmm/box.h>
25 #include <gtkmm/button.h>
26 #include <gtkmm/textview.h>
27 #include <gtkmm/scrolledwindow.h>
28 #include <gtkmm/window.h>
29
30 #include "pbd/transmitter.h"
31
32 #include "gtkmm2ext/visibility.h"
33
34 namespace Gtkmm2ext {
35
36 class LIBGTKMM2EXT_API TextViewer : public Gtk::Window, public Transmitter
37 {
38         Gtk::TextView etext;
39         Gtk::VBox vbox1;
40         Gtk::VBox vbox2;
41         Gtk::ScrolledWindow scrollwin;
42         Gtk::Button dismiss;
43         bool _editable;
44
45         void toggle_edit ();
46         void toggle_word_wrap ();
47         void signal_released_handler ();
48
49  public:
50         TextViewer (size_t width, size_t height);
51         Gtk::TextView& text()         { return etext; }
52         Gtk::Button& dismiss_button() { return dismiss; }
53
54         void scroll_to_bottom ();
55
56         void deliver ();
57 };
58
59 } /* namespace */
60
61 #endif  // __pbd_gtkmm_textviewer_h__