~ubuntu-branches/ubuntu/utopic/ardour3/utopic

« back to all changes in this revision

Viewing changes to gtk2_ardour/ardour_dialog.cc

  • Committer: Package Import Robot
  • Author(s): Felipe Sateler
  • Date: 2013-09-21 19:05:02 UTC
  • Revision ID: package-import@ubuntu.com-20130921190502-8gsftrku6jnzhd7v
Tags: upstream-3.4~dfsg
ImportĀ upstreamĀ versionĀ 3.4~dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
    Copyright (C) 2002 Paul Davis
 
3
 
 
4
    This program is free software; you can redistribute it and/or modify
 
5
    it under the terms of the GNU General Public License as published by
 
6
    the Free Software Foundation; either version 2 of the License, or
 
7
    (at your option) any later version.
 
8
 
 
9
    This program is distributed in the hope that it will be useful,
 
10
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
    GNU General Public License for more details.
 
13
 
 
14
    You should have received a copy of the GNU General Public License
 
15
    along with this program; if not, write to the Free Software
 
16
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
17
 
 
18
*/
 
19
 
 
20
#include <iostream>
 
21
#include <sigc++/bind.h>
 
22
 
 
23
#include <gtkmm2ext/doi.h>
 
24
 
 
25
#include "ardour_dialog.h"
 
26
#include "ardour_ui.h"
 
27
#include "keyboard.h"
 
28
#include "splash.h"
 
29
#include "utils.h"
 
30
#include "window_manager.h"
 
31
 
 
32
using namespace std;
 
33
using namespace Gtk;
 
34
using namespace Gtkmm2ext;
 
35
 
 
36
ArdourDialog::ArdourDialog (string title, bool modal, bool use_seperator)
 
37
        : Dialog (title, modal, use_seperator)
 
38
        , proxy (0)
 
39
        , _splash_pushed (false)
 
40
{
 
41
        init ();
 
42
        set_position (Gtk::WIN_POS_MOUSE);
 
43
}
 
44
 
 
45
ArdourDialog::ArdourDialog (Gtk::Window& parent, string title, bool modal, bool use_seperator)
 
46
        : Dialog (title, parent, modal, use_seperator)
 
47
        , _splash_pushed (false)
 
48
{
 
49
        init ();
 
50
        set_position (Gtk::WIN_POS_CENTER_ON_PARENT);
 
51
}
 
52
 
 
53
ArdourDialog::~ArdourDialog ()
 
54
{
 
55
        if (_splash_pushed) {
 
56
                Splash* spl = Splash::instance();
 
57
                
 
58
                if (spl) {
 
59
                        spl->pop_front();
 
60
                }
 
61
        }
 
62
        WM::Manager::instance().remove (proxy);
 
63
}
 
64
 
 
65
bool
 
66
ArdourDialog::on_key_press_event (GdkEventKey* ev)
 
67
{
 
68
        return relay_key_press (ev, this);
 
69
}
 
70
 
 
71
bool
 
72
ArdourDialog::on_enter_notify_event (GdkEventCrossing *ev)
 
73
{
 
74
        Keyboard::the_keyboard().enter_window (ev, this);
 
75
        return Dialog::on_enter_notify_event (ev);
 
76
}
 
77
 
 
78
bool
 
79
ArdourDialog::on_leave_notify_event (GdkEventCrossing *ev)
 
80
{
 
81
        Keyboard::the_keyboard().leave_window (ev, this);
 
82
        return Dialog::on_leave_notify_event (ev);
 
83
}
 
84
 
 
85
void
 
86
ArdourDialog::on_unmap ()
 
87
{
 
88
        Keyboard::the_keyboard().leave_window (0, this);
 
89
        Dialog::on_unmap ();
 
90
}
 
91
 
 
92
void
 
93
ArdourDialog::on_show ()
 
94
{
 
95
        Dialog::on_show ();
 
96
 
 
97
        // never allow the splash screen to obscure any dialog
 
98
 
 
99
        Splash* spl = Splash::instance();
 
100
 
 
101
        if (spl && spl->is_visible()) {
 
102
                spl->pop_back_for (*this);
 
103
                _splash_pushed = true;
 
104
        }
 
105
}
 
106
 
 
107
bool
 
108
ArdourDialog::on_delete_event (GdkEventAny*)
 
109
{
 
110
        hide ();
 
111
        return false;
 
112
}
 
113
 
 
114
void
 
115
ArdourDialog::init ()
 
116
{
 
117
        set_border_width (10);
 
118
 
 
119
        set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG);
 
120
 
 
121
        Gtk::Window* parent = WM::Manager::instance().transient_parent();
 
122
 
 
123
        if (parent) {
 
124
                set_transient_for (*parent);
 
125
        }
 
126
 
 
127
        ARDOUR_UI::CloseAllDialogs.connect (sigc::bind (sigc::mem_fun (*this, &ArdourDialog::response), RESPONSE_CANCEL));
 
128
 
 
129
        proxy = new WM::ProxyTemporary (get_title(), this);
 
130
        WM::Manager::instance().register_window (proxy);
 
131
}