ardour
session_import_dialog.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2008 Paul Davis
3  Author: Sakari Bergen
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; either version 2 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program; if not, write to the Free Software
17  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 
19 */
20 
21 #ifndef __session_import_dialog_h__
22 #define __session_import_dialog_h__
23 
24 #include <string>
25 #include <list>
26 #include <utility>
27 
28 #include <boost/shared_ptr.hpp>
29 #include <gtkmm.h>
30 
31 #include "pbd/xml++.h"
32 
33 #include "ardour_dialog.h"
34 namespace ARDOUR {
35  class ElementImportHandler;
36  class ElementImporter;
37  class Session;
38 }
39 
41 {
42  private:
44  typedef std::list<HandlerPtr> HandlerList;
45 
47  typedef std::list<ElementPtr> ElementList;
48 
49  public:
51 
52  virtual Gtk::FileChooserAction browse_action() const { return Gtk::FILE_CHOOSER_ACTION_OPEN; }
53 
54  private:
55 
56  void load_session (const std::string& filename);
57  void fill_list ();
58  void browse ();
59  void do_merge ();
60  void end_dialog ();
61  void update (std::string path);
62  void show_info(const Gtk::TreeModel::Path& path, Gtk::TreeViewColumn* column);
63 
64  std::pair<bool, std::string> open_rename_dialog (std::string text, std::string name);
65  bool open_prompt_dialog (std::string text);
66 
67  // Data
68  HandlerList handlers;
70 
71  // GUI
72  Gtk::Frame file_frame;
73  Gtk::HBox file_hbox;
74  Gtk::Entry file_entry;
75  Gtk::Button file_browse_button;
76 
77  struct SessionBrowserColumns : public Gtk::TreeModel::ColumnRecord
78  {
79  public:
80  Gtk::TreeModelColumn<std::string> name;
81  Gtk::TreeModelColumn<bool> queued;
82  Gtk::TreeModelColumn<ElementPtr> element;
83  Gtk::TreeModelColumn<std::string> info;
84 
85  SessionBrowserColumns() { add (name); add (queued); add (element); add (info); }
86  };
87 
89  Glib::RefPtr<Gtk::TreeStore> session_tree;
90  Gtk::TreeView session_browser;
91  Gtk::ScrolledWindow session_scroll;
92 
93  Gtk::Button* ok_button;
94  Gtk::Button* cancel_button;
95 
97 };
98 
99 #endif
void show_info(const Gtk::TreeModel::Path &path, Gtk::TreeViewColumn *column)
std::pair< bool, std::string > open_rename_dialog(std::string text, std::string name)
PBD::ScopedConnectionList connections
void update(std::string path)
Glib::RefPtr< Gtk::TreeStore > session_tree
Definition: xml++.h:55
Gtk::TreeModelColumn< ElementPtr > element
void load_session(const std::string &filename)
Definition: amp.h:29
Gtk::TreeModelColumn< std::string > info
virtual Gtk::FileChooserAction browse_action() const
const char * name
boost::shared_ptr< ARDOUR::ElementImportHandler > HandlerPtr
SessionBrowserColumns sb_cols
bool open_prompt_dialog(std::string text)
std::list< ElementPtr > ElementList
std::list< HandlerPtr > HandlerList
Gtk::ScrolledWindow session_scroll
Gtk::TreeModelColumn< std::string > name
boost::shared_ptr< ARDOUR::ElementImporter > ElementPtr
SessionImportDialog(ARDOUR::Session *target)