mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 06:44:57 +01:00
Merged with trunk R1761
git-svn-id: svn://localhost/ardour2/branches/midi@1762 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
490e18d80a
commit
b3fe7cfc89
34 changed files with 255 additions and 118 deletions
32
SConstruct
32
SConstruct
|
|
@ -16,7 +16,7 @@ import SCons.Node.FS
|
|||
SConsignFile()
|
||||
EnsureSConsVersion(0, 96)
|
||||
|
||||
ardour_version = '2.0rc1'
|
||||
ardour_version = '2.0rc2'
|
||||
|
||||
subst_dict = { }
|
||||
|
||||
|
|
@ -382,14 +382,22 @@ env.Append (BUILDERS = {'Tarball' : tarball_bld})
|
|||
#
|
||||
|
||||
if env['VST']:
|
||||
sys.stdout.write ("Are you building Ardour for personal use (rather than distribution to others)? [no]: ")
|
||||
answer = sys.stdin.readline ()
|
||||
answer = answer.rstrip().strip()
|
||||
if answer != "yes" and answer != "y":
|
||||
print 'You cannot build Ardour with VST support for distribution to others.\nIt is a violation of several different licenses. Build with VST=false.'
|
||||
sys.exit (-1);
|
||||
if os.path.isfile('.personal_use_only'):
|
||||
print "Enabling VST support. Note that distributing a VST-enabled ardour\nis a violation of several different licences.\nBuild with VST=false if you intend to distribute ardour to others."
|
||||
else:
|
||||
print "OK, VST support will be enabled"
|
||||
sys.stdout.write ("Are you building Ardour for personal use (rather than distribution to others)? [no]: ")
|
||||
answer = sys.stdin.readline ()
|
||||
answer = answer.rstrip().strip()
|
||||
if answer == "yes" or answer == "y":
|
||||
fh = open('.personal_use_only', 'w')
|
||||
fh.close()
|
||||
print "OK, VST support will be enabled"
|
||||
else:
|
||||
print 'You cannot build Ardour with VST support for distribution to others.\nIt is a violation of several different licenses. Build with VST=false.'
|
||||
sys.exit (-1);
|
||||
else:
|
||||
if os.path.isfile('.personal_use_only'):
|
||||
os.remove('.personal_use_only')
|
||||
|
||||
|
||||
#######################
|
||||
|
|
@ -1091,7 +1099,13 @@ if not conf.CheckFunc('posix_memalign'):
|
|||
|
||||
env = conf.Finish()
|
||||
|
||||
# generate the per-user and system rc files from the same source
|
||||
|
||||
rcbuild = env.SubstInFile ('ardour.rc','ardour.rc.in', SUBST_DICT = subst_dict)
|
||||
sysrcbuild = env.SubstInFile ('ardour_system.rc','ardour.rc.in', SUBST_DICT = subst_dict)
|
||||
|
||||
# add to the substitution dictionary
|
||||
|
||||
subst_dict['%VERSION%'] = ardour_version[0:3]
|
||||
subst_dict['%EXTRA_VERSION%'] = ardour_version[3:]
|
||||
subst_dict['%REVISION_STRING%'] = ''
|
||||
|
|
@ -1107,6 +1121,7 @@ env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour
|
|||
env.Alias('install', env.Install(os.path.join(config_prefix, 'ardour2'), 'ardour.rc'))
|
||||
|
||||
Default (rcbuild)
|
||||
Default (sysrcbuild)
|
||||
|
||||
# source tarball
|
||||
|
||||
|
|
@ -1116,7 +1131,6 @@ env.Distribute (env['DISTTREE'],
|
|||
[ 'SConstruct', 'svn_revision.h',
|
||||
'COPYING', 'PACKAGER_README', 'README',
|
||||
'ardour.rc.in',
|
||||
'ardour_system.rc',
|
||||
'tools/config.guess',
|
||||
'icons/icon/ardour_icon_mac_mask.png',
|
||||
'icons/icon/ardour_icon_mac.png',
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
<Option name="quieten-at-speed" value="1.000000"/>
|
||||
<Option name="use-vst" value="yes"/>
|
||||
<Option name="use-tranzport" value="yes"/>
|
||||
<Option name="disk-choice-space-threshold" value="57600000"/>
|
||||
<Option name="destructive-xfade-msecs" value="20"/>
|
||||
<Option name="periodic-safety-backups" value="1"/>
|
||||
<Option name="periodic-safety-backup-interval" value="120"/>
|
||||
|
|
@ -40,3 +41,4 @@
|
|||
<Keyboard edit-button="3" edit-modifier="4" delete-button="3" delete-modifier="1" snap-modifier="32"/>
|
||||
</extra>
|
||||
</Ardour>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Ardour>
|
||||
<Config>
|
||||
<Option name="minimum-disk-io-bytes" value="262144"/>
|
||||
<Option name="track-buffer-seconds" value="5.000000"/>
|
||||
<Option name="mute-affects-pre-fader" value="yes"/>
|
||||
<Option name="mute-affects-post-fader" value="yes"/>
|
||||
<Option name="mute-affects-control-outs" value="yes"/>
|
||||
<Option name="mute-affects-main-outs" value="yes"/>
|
||||
<Option name="solo-latch" value="yes"/>
|
||||
<Option name="pixmap-path" value="/usr/share/ardour/pixmaps:/usr/local/share/ardour/pixmaps"/>
|
||||
<Option name="disk-choice-space-threshold" value="57600000"/>
|
||||
<Option name="mtc-port" value="trident"/>
|
||||
<Option name="mmc-port" value="trident"/>
|
||||
<Option name="monitor-inputs" value="no"/>
|
||||
</Config>
|
||||
</Ardour>
|
||||
|
|
@ -17,9 +17,9 @@ cTransportMarkerBar 0.60 0.60 0.64 1.0
|
|||
cTimeStretchFill 0.89 0.71 0.71 0.59
|
||||
cTimeStretchOutline 0.39 0.39 0.39 0.59
|
||||
cAutomationLine 0.27 0.74 0.35 1.0
|
||||
cLeftPanAutomationLine 0.77 0.24 0.01 1.0
|
||||
cLeftPanAutomationLine 0.87 0.44 0.11 1.0
|
||||
cRightPanAutomationLine 0.03 0.26 0.73 1.0
|
||||
cRedirectAutomationLine 0.28 0.34 0.74 1.0
|
||||
cRedirectAutomationLine 0.48 0.64 0.98 1.0
|
||||
cControlPointFill 0 0 0 1.0
|
||||
cControlPointOutline 0 0 0 1.0
|
||||
cEnteredControlPointOutline 1.0 0.21 0.21 1.0
|
||||
|
|
|
|||
|
|
@ -449,6 +449,7 @@ style "editor_hscrollbar" = "ardour_adjusters"
|
|||
# make it bigger.
|
||||
#
|
||||
GtkRange::slider_width = 27
|
||||
GtkScrollbar::slider_width = 27
|
||||
}
|
||||
|
||||
style "ardour_progressbars" = "default_buttons_menus"
|
||||
|
|
|
|||
|
|
@ -951,9 +951,30 @@ ARDOUR_UI::filter_ardour_session_dirs (const FileFilter::Info& info)
|
|||
return S_ISREG (statbuf.st_mode);
|
||||
}
|
||||
|
||||
bool
|
||||
ARDOUR_UI::check_audioengine ()
|
||||
{
|
||||
if (engine) {
|
||||
if (!engine->connected()) {
|
||||
MessageDialog msg (_("Ardour is not connected to JACK\n"
|
||||
"You cannot open or close sessions in this condition"));
|
||||
msg.run ();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::open_session ()
|
||||
{
|
||||
if (!check_audioengine()) {
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
/* popup selector window */
|
||||
|
||||
if (open_session_selector == 0) {
|
||||
|
|
@ -1789,9 +1810,7 @@ ARDOUR_UI::new_session (std::string predetermined_path)
|
|||
string session_name;
|
||||
string session_path;
|
||||
|
||||
if (!engine->connected()) {
|
||||
MessageDialog msg (_("Ardour is not connected to JACK at this time. Creating new sessions is not possible."));
|
||||
msg.run ();
|
||||
if (!check_audioengine()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -1801,14 +1820,13 @@ ARDOUR_UI::new_session (std::string predetermined_path)
|
|||
new_session_dialog->set_name (predetermined_path);
|
||||
new_session_dialog->reset_recent();
|
||||
new_session_dialog->show();
|
||||
new_session_dialog->set_current_page (0);
|
||||
|
||||
do {
|
||||
response = new_session_dialog->run ();
|
||||
|
||||
if (!engine->connected()) {
|
||||
if (!check_audioengine()) {
|
||||
new_session_dialog->hide ();
|
||||
MessageDialog msg (_("Ardour is not connected to JACK at this time. Creating new sessions is not possible."));
|
||||
msg.run ();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -2001,6 +2019,10 @@ ARDOUR_UI::new_session (std::string predetermined_path)
|
|||
void
|
||||
ARDOUR_UI::close_session()
|
||||
{
|
||||
if (!check_audioengine()) {
|
||||
return;
|
||||
}
|
||||
|
||||
unload_session();
|
||||
new_session ();
|
||||
}
|
||||
|
|
@ -2012,6 +2034,10 @@ ARDOUR_UI::load_session (const string & path, const string & snap_name, string*
|
|||
int x;
|
||||
session_loaded = false;
|
||||
|
||||
if (!check_audioengine()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
x = unload_session ();
|
||||
|
||||
if (x < 0) {
|
||||
|
|
@ -2068,8 +2094,14 @@ ARDOUR_UI::build_session (const string & path, const string & snap_name,
|
|||
Session *new_session;
|
||||
int x;
|
||||
|
||||
if (!check_audioengine()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
session_loaded = false;
|
||||
|
||||
x = unload_session ();
|
||||
|
||||
if (x < 0) {
|
||||
return -1;
|
||||
} else if (x > 0) {
|
||||
|
|
|
|||
|
|
@ -263,6 +263,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI
|
|||
ARDOUR::AudioEngine *engine;
|
||||
ARDOUR::Session *session;
|
||||
|
||||
bool check_audioengine();
|
||||
|
||||
Gtk::Tooltips _tooltips;
|
||||
|
||||
void goto_editor_window ();
|
||||
|
|
|
|||
|
|
@ -288,13 +288,27 @@ AudioStreamView::playlist_changed (boost::shared_ptr<Diskstream> ds)
|
|||
playlist_connections.push_back (apl->NewCrossfade.connect (mem_fun (*this, &AudioStreamView::add_crossfade)));
|
||||
}
|
||||
|
||||
void
|
||||
AudioStreamView::add_crossfade_weak (boost::weak_ptr<Crossfade> crossfade)
|
||||
{
|
||||
boost::shared_ptr<Crossfade> sp (crossfade.lock());
|
||||
|
||||
if (!sp) {
|
||||
return;
|
||||
}
|
||||
|
||||
add_crossfade (sp);
|
||||
}
|
||||
|
||||
void
|
||||
AudioStreamView::add_crossfade (boost::shared_ptr<Crossfade> crossfade)
|
||||
{
|
||||
AudioRegionView* lview = 0;
|
||||
AudioRegionView* rview = 0;
|
||||
|
||||
/* we do not allow shared_ptr<T> to be bound to slots */
|
||||
|
||||
ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::add_crossfade), crossfade));
|
||||
ENSURE_GUI_THREAD (bind (mem_fun (*this, &AudioStreamView::add_crossfade_weak), boost::weak_ptr<Crossfade> (crossfade)));
|
||||
|
||||
/* first see if we already have a CrossfadeView for this Crossfade */
|
||||
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ class AudioStreamView : public StreamView
|
|||
void playlist_changed (boost::shared_ptr<ARDOUR::Diskstream>);
|
||||
|
||||
void add_crossfade (boost::shared_ptr<ARDOUR::Crossfade>);
|
||||
void add_crossfade_weak (boost::weak_ptr<ARDOUR::Crossfade>);
|
||||
void remove_crossfade (boost::shared_ptr<ARDOUR::Crossfade>);
|
||||
|
||||
void color_handler (ColorID id, uint32_t val);
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ AutomationTimeAxisView::AutomationTimeAxisView (Session& s, boost::shared_ptr<Ro
|
|||
base_rect = new SimpleRect(*canvas_display);
|
||||
base_rect->property_x1() = 0.0;
|
||||
base_rect->property_y1() = 0.0;
|
||||
base_rect->property_x2() = max_frames;
|
||||
base_rect->property_x2() = editor.frame_to_pixel (max_frames);
|
||||
base_rect->property_outline_color_rgba() = color_map[cAutomationTrackOutline];
|
||||
/* outline ends and bottom */
|
||||
base_rect->property_outline_what() = (guint32) (0x1|0x2|0x8);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
#include <pbd/convert.h>
|
||||
#include <pbd/error.h>
|
||||
#include <pbd/stacktrace.h>
|
||||
#include <pbd/enumwriter.h>
|
||||
#include <pbd/memento_command.h>
|
||||
|
||||
#include <glibmm/miscutils.h>
|
||||
|
|
@ -2042,6 +2042,10 @@ Editor::set_state (const XMLNode& node)
|
|||
edit_cursor->set_position (0);
|
||||
}
|
||||
|
||||
if ((prop = node.property ("mixer-width"))) {
|
||||
editor_mixer_strip_width = Width (string_2_enum (prop->value(), editor_mixer_strip_width));
|
||||
}
|
||||
|
||||
if ((prop = node.property ("zoom-focus"))) {
|
||||
set_zoom_focus ((ZoomFocus) atoi (prop->value()));
|
||||
}
|
||||
|
|
@ -2182,6 +2186,8 @@ Editor::get_state ()
|
|||
node->add_child_nocopy (*geometry);
|
||||
}
|
||||
|
||||
maybe_add_mixer_strip_width (*node);
|
||||
|
||||
snprintf (buf, sizeof(buf), "%d", (int) zoom_focus);
|
||||
node->add_property ("zoom-focus", buf);
|
||||
snprintf (buf, sizeof(buf), "%f", frames_per_unit);
|
||||
|
|
@ -3777,7 +3783,7 @@ Editor::idle_visual_changer ()
|
|||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0; /* this is always a one-shot call */
|
||||
}
|
||||
|
||||
struct EditorOrderTimeAxisSorter {
|
||||
|
|
|
|||
|
|
@ -264,6 +264,7 @@ class Editor : public PublicEditor
|
|||
TrackViewList* get_valid_views (TimeAxisView*, ARDOUR::RouteGroup* grp = 0);
|
||||
|
||||
Width editor_mixer_strip_width;
|
||||
void maybe_add_mixer_strip_width (XMLNode&);
|
||||
void show_editor_mixer (bool yn);
|
||||
void set_selected_mixer_strip (TimeAxisView&);
|
||||
void hide_track_in_display (TimeAxisView& tv);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@
|
|||
#include <glibmm/miscutils.h>
|
||||
#include <gtkmm2ext/utils.h>
|
||||
#include <gtkmm2ext/window_title.h>
|
||||
|
||||
#include <pbd/enumwriter.h>
|
||||
|
||||
#include <ardour/audioengine.h>
|
||||
|
||||
#include "editor.h"
|
||||
|
|
@ -32,6 +35,7 @@
|
|||
#include "i18n.h"
|
||||
|
||||
using namespace Gtkmm2ext;
|
||||
using namespace PBD;
|
||||
|
||||
void
|
||||
Editor::editor_mixer_button_toggled ()
|
||||
|
|
@ -107,8 +111,8 @@ Editor::show_editor_mixer (bool yn)
|
|||
current_mixer_strip->set_embedded (true);
|
||||
current_mixer_strip->Hiding.connect (mem_fun(*this, &Editor::current_mixer_strip_hidden));
|
||||
current_mixer_strip->GoingAway.connect (mem_fun(*this, &Editor::current_mixer_strip_removed));
|
||||
current_mixer_strip->set_width (editor_mixer_strip_width);
|
||||
|
||||
current_mixer_strip->set_width (editor_mixer_strip_width, (void*) this);
|
||||
|
||||
global_hpacker.pack_start (*current_mixer_strip, Gtk::PACK_SHRINK );
|
||||
global_hpacker.reorder_child (*current_mixer_strip, 0);
|
||||
|
||||
|
|
@ -355,3 +359,11 @@ Editor::session_going_away ()
|
|||
|
||||
session = 0;
|
||||
}
|
||||
|
||||
void
|
||||
Editor::maybe_add_mixer_strip_width (XMLNode& node)
|
||||
{
|
||||
if (current_mixer_strip) {
|
||||
node.add_property ("mixer-width", enum_2_string (current_mixer_strip->get_width()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1622,7 +1622,6 @@ Editor::end_grab (ArdourCanvas::Item* item, GdkEvent* event)
|
|||
stop_canvas_autoscroll ();
|
||||
|
||||
if (drag_info.item == 0) {
|
||||
cerr << "end grab with no item\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -2770,7 +2769,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
|
|||
drag_info.want_move_threshold = false; // don't copy again
|
||||
|
||||
/* duplicate the region(s) */
|
||||
|
||||
|
||||
vector<RegionView*> new_regionviews;
|
||||
|
||||
for (list<RegionView*>::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ++i) {
|
||||
|
|
@ -2804,7 +2803,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
|
|||
/* reset drag_info data to reflect the fact that we are dragging the copies */
|
||||
|
||||
drag_info.data = new_regionviews.front();
|
||||
|
||||
|
||||
swap_grab (new_regionviews.front()->get_canvas_group (), 0, event->motion.time);
|
||||
}
|
||||
|
||||
|
|
@ -3237,6 +3236,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
RouteTimeAxisView* rtv;
|
||||
bool regionview_y_movement;
|
||||
bool regionview_x_movement;
|
||||
vector<RegionView*> copies;
|
||||
|
||||
/* first_move is set to false if the regionview has been moved in the
|
||||
motion handler.
|
||||
|
|
@ -3244,6 +3244,12 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
|
||||
if (drag_info.first_move) {
|
||||
/* just a click */
|
||||
|
||||
if (drag_info.copy) {
|
||||
for (list<RegionView*>::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
|
||||
copies.push_back (*i);
|
||||
}
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
@ -3257,6 +3263,13 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
|
||||
if (drag_info.brushing) {
|
||||
/* all changes were made during motion event handlers */
|
||||
|
||||
if (drag_info.copy) {
|
||||
for (list<RegionView*>::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
|
||||
copies.push_back (*i);
|
||||
}
|
||||
}
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
|
@ -3299,7 +3312,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
vector<RegionView*> new_selection;
|
||||
|
||||
for (list<RegionView*>::const_iterator i = selection->regions.by_layer().begin(); i != selection->regions.by_layer().end(); ) {
|
||||
|
||||
|
||||
RegionView* rv = (*i);
|
||||
|
||||
double ix1, ix2, iy1, iy2;
|
||||
|
|
@ -3335,6 +3348,12 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
session->add_command (new MementoCommand<Playlist>(*from_playlist, &from_playlist->get_state(), 0));
|
||||
from_playlist->remove_region ((rv->region()));
|
||||
session->add_command (new MementoCommand<Playlist>(*from_playlist, 0, &from_playlist->get_state()));
|
||||
|
||||
} else {
|
||||
|
||||
/* the regionview we dragged around is a temporary copy, queue it for deletion */
|
||||
|
||||
copies.push_back (rv);
|
||||
}
|
||||
|
||||
latest_regionview = 0;
|
||||
|
|
@ -3349,11 +3368,6 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
new_selection.push_back (latest_regionview);
|
||||
}
|
||||
|
||||
if (drag_info.copy) {
|
||||
// get rid of the copy
|
||||
delete rv;
|
||||
}
|
||||
|
||||
/* OK, this is where it gets tricky. If the playlist was being used by >1 tracks, and the region
|
||||
was selected in all of them, then removing it from the playlist will have removed all
|
||||
trace of it from the selection (i.e. there were N regions selected, we removed 1,
|
||||
|
|
@ -3366,12 +3380,19 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
here. if the region selection is not empty, then restart the loop because we know that
|
||||
we must have removed at least the region(view) we've just been working on as well as any
|
||||
that we processed on previous iterations.
|
||||
|
||||
EXCEPT .... if we are doing a copy drag, then the selection hasn't been modified and
|
||||
we can just iterate.
|
||||
*/
|
||||
|
||||
if (selection->regions.empty()) {
|
||||
break;
|
||||
} else {
|
||||
i = selection->regions.by_layer().begin();
|
||||
if (drag_info.copy) {
|
||||
++i;
|
||||
} else {
|
||||
if (selection->regions.empty()) {
|
||||
break;
|
||||
} else {
|
||||
i = selection->regions.by_layer().begin();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3465,10 +3486,8 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
|
||||
session->add_command (new MementoCommand<Playlist>(*to_playlist, 0, &to_playlist->get_state()));
|
||||
|
||||
/* get rid of the copy */
|
||||
|
||||
if (drag_info.copy) {
|
||||
delete rv;
|
||||
copies.push_back (rv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3478,6 +3497,10 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
|
|||
if (!nocommit) {
|
||||
commit_reversible_command ();
|
||||
}
|
||||
|
||||
for (vector<RegionView*>::iterator x = copies.begin(); x != copies.end(); ++x) {
|
||||
delete *x;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -4764,7 +4787,7 @@ Editor::mouse_rename_region (ArdourCanvas::Item* item, GdkEvent* event)
|
|||
string str;
|
||||
prompter.get_result(str);
|
||||
if (str.length()) {
|
||||
clicked_regionview->region()->set_name (str);
|
||||
clicked_regionview->region()->set_name (str);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include <pbd/enumwriter.h>
|
||||
|
||||
#include "audio_clock.h"
|
||||
#include "enums.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace PBD;
|
||||
|
|
@ -33,6 +34,7 @@ setup_gtk_ardour_enums ()
|
|||
vector<string> s;
|
||||
|
||||
AudioClock::Mode clock_mode;
|
||||
Width width;
|
||||
|
||||
#define REGISTER(e) enum_writer.register_distinct (typeid(e).name(), i, s); i.clear(); s.clear()
|
||||
#define REGISTER_BITS(e) enum_writer.register_bits (typeid(e).name(), i, s); i.clear(); s.clear()
|
||||
|
|
@ -45,4 +47,8 @@ setup_gtk_ardour_enums ()
|
|||
REGISTER_CLASS_ENUM (AudioClock, Frames);
|
||||
REGISTER_CLASS_ENUM (AudioClock, Off);
|
||||
REGISTER (clock_mode);
|
||||
|
||||
REGISTER_ENUM (Wide);
|
||||
REGISTER_ENUM (Narrow);
|
||||
REGISTER (width);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
#include <sigc++/bind.h>
|
||||
|
||||
#include <pbd/convert.h>
|
||||
#include <pbd/enumwriter.h>
|
||||
|
||||
#include <gtkmm2ext/gtk_ui.h>
|
||||
#include <gtkmm2ext/utils.h>
|
||||
|
|
@ -111,6 +112,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr<Route> rt
|
|||
ignore_speed_adjustment = false;
|
||||
comment_window = 0;
|
||||
comment_area = 0;
|
||||
_width_owner = 0;
|
||||
|
||||
width_button.add (*(manage (new Gtk::Image (::get_icon("strip_width")))));
|
||||
hide_button.add (*(manage (new Gtk::Image (::get_icon("hide")))));
|
||||
|
|
@ -174,7 +176,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr<Route> rt
|
|||
bottom_button_table.set_col_spacings (0);
|
||||
bottom_button_table.set_homogeneous (true);
|
||||
bottom_button_table.attach (group_button, 0, 1, 0, 1);
|
||||
|
||||
|
||||
if (is_audio_track()) {
|
||||
|
||||
rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press), false);
|
||||
|
|
@ -366,22 +368,13 @@ void
|
|||
MixerStrip::set_stuff_from_route ()
|
||||
{
|
||||
XMLProperty *prop;
|
||||
|
||||
|
||||
ensure_xml_node ();
|
||||
|
||||
/* if width is not set, it will be set by the MixerUI or editor */
|
||||
|
||||
if ((prop = xml_node->property ("strip_width")) != 0) {
|
||||
if (prop->value() == "wide") {
|
||||
set_width (Wide);
|
||||
} else if (prop->value() == "narrow") {
|
||||
set_width (Narrow);
|
||||
}
|
||||
else {
|
||||
error << string_compose(_("unknown strip width \"%1\" in XML GUI information"), prop->value()) << endmsg;
|
||||
set_width (Wide);
|
||||
}
|
||||
}
|
||||
else {
|
||||
set_width (Wide);
|
||||
set_width (Width (string_2_enum (prop->value(), _width)), this);
|
||||
}
|
||||
|
||||
if ((prop = xml_node->property ("shown_mixer")) != 0) {
|
||||
|
|
@ -397,14 +390,17 @@ MixerStrip::set_stuff_from_route ()
|
|||
}
|
||||
|
||||
void
|
||||
MixerStrip::set_width (Width w)
|
||||
MixerStrip::set_width (Width w, void* owner)
|
||||
{
|
||||
/* always set the gpm width again, things may be hidden */
|
||||
|
||||
gpm.set_width (w);
|
||||
panners.set_width (w);
|
||||
pre_redirect_box.set_width (w);
|
||||
post_redirect_box.set_width (w);
|
||||
|
||||
|
||||
_width_owner = owner;
|
||||
|
||||
if (_width == w) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -412,11 +408,14 @@ MixerStrip::set_width (Width w)
|
|||
ensure_xml_node ();
|
||||
|
||||
_width = w;
|
||||
|
||||
|
||||
if (_width_owner == this) {
|
||||
xml_node->add_property ("strip_width", enum_2_string (_width));
|
||||
}
|
||||
|
||||
switch (w) {
|
||||
case Wide:
|
||||
set_size_request (-1, -1);
|
||||
xml_node->add_property ("strip_width", "wide");
|
||||
|
||||
if (rec_enable_button) {
|
||||
((Gtk::Label*)rec_enable_button->get_child())->set_text (_("record"));
|
||||
|
|
@ -440,8 +439,6 @@ MixerStrip::set_width (Width w)
|
|||
break;
|
||||
|
||||
case Narrow:
|
||||
xml_node->add_property ("strip_width", "narrow");
|
||||
|
||||
if (rec_enable_button) {
|
||||
((Gtk::Label*)rec_enable_button->get_child())->set_text (_("Rec"));
|
||||
}
|
||||
|
|
@ -562,7 +559,7 @@ MixerStrip::input_press (GdkEventButton *ev)
|
|||
msg.run ();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
switch (ev->button) {
|
||||
|
||||
case 1:
|
||||
|
|
@ -691,7 +688,7 @@ void
|
|||
MixerStrip::connect_to_pan ()
|
||||
{
|
||||
ENSURE_GUI_THREAD(mem_fun(*this, &MixerStrip::connect_to_pan));
|
||||
|
||||
|
||||
panstate_connection.disconnect ();
|
||||
panstyle_connection.disconnect ();
|
||||
|
||||
|
|
@ -772,7 +769,8 @@ MixerStrip::output_changed (IOChange change, void *src)
|
|||
|
||||
|
||||
void
|
||||
MixerStrip::comment_editor_done_editing() {
|
||||
MixerStrip::comment_editor_done_editing()
|
||||
{
|
||||
string str = comment_area->get_buffer()->get_text();
|
||||
if (_route->comment() != str) {
|
||||
_route->set_comment (str, this);
|
||||
|
|
@ -972,12 +970,11 @@ void
|
|||
MixerStrip::build_route_ops_menu ()
|
||||
{
|
||||
using namespace Menu_Helpers;
|
||||
|
||||
route_ops_menu = manage (new Menu);
|
||||
route_ops_menu->set_name ("ArdourContextMenu");
|
||||
|
||||
MenuList& items = route_ops_menu->items();
|
||||
|
||||
|
||||
items.push_back (MenuElem (_("Rename"), mem_fun(*this, &RouteUI::route_rename)));
|
||||
items.push_back (SeparatorElem());
|
||||
items.push_back (CheckMenuElem (_("Active"), mem_fun (*this, &RouteUI::toggle_route_active)));
|
||||
|
|
@ -1002,6 +999,11 @@ MixerStrip::name_button_button_press (GdkEventButton* ev)
|
|||
{
|
||||
if (ev->button == 1) {
|
||||
list_route_operations ();
|
||||
|
||||
Menu_Helpers::MenuList& items = route_ops_menu->items();
|
||||
/* do not allow rename if the track is record-enabled */
|
||||
static_cast<MenuItem*> (&items.front())->set_sensitive (!_route->record_enabled());
|
||||
|
||||
route_ops_menu->popup (1, ev->time);
|
||||
}
|
||||
return FALSE;
|
||||
|
|
@ -1089,10 +1091,10 @@ MixerStrip::width_clicked ()
|
|||
{
|
||||
switch (_width) {
|
||||
case Wide:
|
||||
set_width (Narrow);
|
||||
set_width (Narrow, this);
|
||||
break;
|
||||
case Narrow:
|
||||
set_width (Wide);
|
||||
set_width (Wide, this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,12 +85,13 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
|
|||
MixerStrip (Mixer_UI&, ARDOUR::Session&, boost::shared_ptr<ARDOUR::Route>, bool in_mixer = true);
|
||||
~MixerStrip ();
|
||||
|
||||
void set_width (Width);
|
||||
void set_width (Width, void* owner);
|
||||
Width get_width() const { return _width; }
|
||||
void* width_owner() const { return _width_owner; }
|
||||
|
||||
void fast_update ();
|
||||
void set_embedded (bool);
|
||||
|
||||
|
||||
ARDOUR::RouteGroup* mix_group() const;
|
||||
|
||||
protected:
|
||||
|
|
@ -107,6 +108,7 @@ class MixerStrip : public RouteUI, public Gtk::EventBox
|
|||
bool _embedded;
|
||||
bool _packed;
|
||||
Width _width;
|
||||
void* _width_owner;
|
||||
|
||||
Gtk::Button hide_button;
|
||||
Gtk::Button width_button;
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ Mixer_UI::show_window ()
|
|||
|
||||
for (ri = rows.begin(); ri != rows.end(); ++ri) {
|
||||
ms = (*ri)[track_columns.strip];
|
||||
ms->set_width (ms->get_width());
|
||||
ms->set_width (ms->get_width(), ms->width_owner());
|
||||
}
|
||||
_visible = true;
|
||||
}
|
||||
|
|
@ -274,7 +274,10 @@ Mixer_UI::add_strip (Session::RouteList& routes)
|
|||
strip = new MixerStrip (*this, *session, route);
|
||||
strips.push_back (strip);
|
||||
|
||||
strip->set_width (_strip_width);
|
||||
if (strip->width_owner() != strip) {
|
||||
strip->set_width (_strip_width, this);
|
||||
}
|
||||
|
||||
show_strip (strip);
|
||||
|
||||
no_track_list_redisplay = true;
|
||||
|
|
@ -1040,7 +1043,7 @@ Mixer_UI::set_strip_width (Width w)
|
|||
_strip_width = w;
|
||||
|
||||
for (list<MixerStrip*>::iterator i = strips.begin(); i != strips.end(); ++i) {
|
||||
(*i)->set_width (w);
|
||||
(*i)->set_width (w, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -575,7 +575,12 @@ int
|
|||
NewSessionDialog::get_current_page()
|
||||
{
|
||||
return m_notebook->get_current_page();
|
||||
|
||||
}
|
||||
|
||||
void
|
||||
NewSessionDialog::set_current_page(int page)
|
||||
{
|
||||
return m_notebook->set_current_page (page);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ public:
|
|||
bool connect_outs_to_master() const;
|
||||
bool connect_outs_to_physical() const ;
|
||||
int get_current_page();
|
||||
void set_current_page (int);
|
||||
void reset_recent();
|
||||
|
||||
// reset everything to default values.
|
||||
|
|
|
|||
|
|
@ -1776,3 +1776,10 @@ RouteTimeAxisView::reset_redirect_automation_curves ()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
RouteTimeAxisView::update_rec_display ()
|
||||
{
|
||||
RouteUI::update_rec_display ();
|
||||
name_entry.set_sensitive (!_route->record_enabled());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -159,6 +159,8 @@ protected:
|
|||
void route_name_changed (void *);
|
||||
void name_entry_changed ();
|
||||
|
||||
void update_rec_display ();
|
||||
|
||||
virtual void label_view ();
|
||||
|
||||
void add_edit_group_menu_item (ARDOUR::RouteGroup *, Gtk::RadioMenuItem::Group*);
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ class RouteUI : public virtual AxisView
|
|||
void disconnect_input ();
|
||||
void disconnect_output ();
|
||||
|
||||
void update_rec_display ();
|
||||
virtual void update_rec_display ();
|
||||
void update_mute_display ();
|
||||
|
||||
bool was_solo_safe;
|
||||
|
|
|
|||
|
|
@ -112,16 +112,16 @@ StreamView::set_height (gdouble h)
|
|||
return -1;
|
||||
}
|
||||
|
||||
if (canvas_rect->property_y2() == h) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
canvas_rect->property_y2() = h;
|
||||
|
||||
for (RegionViewList::iterator i = region_views.begin(); i != region_views.end(); ++i) {
|
||||
(*i)->set_height (h);
|
||||
}
|
||||
|
||||
/*for (CrossfadeViewList::iterator i = crossfade_views.begin(); i != crossfade_views.end(); ++i) {
|
||||
(*i)->set_height (h);
|
||||
}*/
|
||||
|
||||
for (vector<RecBoxInfo>::iterator i = rec_rects.begin(); i != rec_rects.end(); ++i) {
|
||||
RecBoxInfo &recbox = (*i);
|
||||
recbox.rectangle->property_y2() = h - 1.0;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
|
||||
#include <pbd/error.h>
|
||||
#include <pbd/stacktrace.h>
|
||||
|
||||
#include <ardour/types.h>
|
||||
#include <ardour/ardour.h>
|
||||
|
|
@ -571,7 +572,7 @@ TimeAxisViewItem::set_name_text(const ustring& new_name)
|
|||
* @param h the new height
|
||||
*/
|
||||
void
|
||||
TimeAxisViewItem::set_height(double height)
|
||||
TimeAxisViewItem::set_height (double height)
|
||||
{
|
||||
if (name_highlight) {
|
||||
if (height < NAME_HIGHLIGHT_THRESH) {
|
||||
|
|
@ -975,8 +976,7 @@ TimeAxisViewItem::reset_name_width (double pixel_width)
|
|||
}
|
||||
|
||||
if (n == 0) {
|
||||
/* nothing will fit */
|
||||
name_text->hide ();
|
||||
name_text->property_text() = "";
|
||||
last_name_text_width = pixel_width;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include <ardour/crossfade.h>
|
||||
#include <ardour/crossfade_compare.h>
|
||||
#include <ardour/session.h>
|
||||
#include <pbd/enumwriter.h>
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
|
|
@ -386,6 +387,7 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh)
|
|||
}
|
||||
|
||||
|
||||
|
||||
OverlapType c = top->coverage (bottom->position(), bottom->last_frame());
|
||||
|
||||
try {
|
||||
|
|
@ -416,7 +418,7 @@ AudioPlaylist::check_dependents (boost::shared_ptr<Region> r, bool norefresh)
|
|||
|
||||
xfade = boost::shared_ptr<Crossfade> (new Crossfade (top, bottom, xfade_length, top->first_frame(), StartOfIn));
|
||||
add_crossfade (xfade);
|
||||
|
||||
|
||||
if (top_region_at (top->last_frame() - 1) == top) {
|
||||
/*
|
||||
only add a fade out if there is no region on top of the end of 'top' (which
|
||||
|
|
|
|||
|
|
@ -764,6 +764,7 @@ AudioEngine::halted (void *arg)
|
|||
ae->_running = false;
|
||||
ae->_buffer_size = 0;
|
||||
ae->_frame_rate = 0;
|
||||
ae->_jack = 0;
|
||||
|
||||
ae->Halted(); /* EMIT SIGNAL */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ ControlProtocolManager::drop_session ()
|
|||
for (list<ControlProtocolInfo*>::iterator p = control_protocol_info.begin(); p != control_protocol_info.end(); ++p) {
|
||||
// otherwise the ControlProtocol instances are not recreated in set_session
|
||||
(*p)->requested = true;
|
||||
(*p)->protocol = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -424,7 +424,7 @@ PluginInsert::automation_run (BufferSet& bufs, nframes_t nframes, nframes_t offs
|
|||
|
||||
while (nframes) {
|
||||
|
||||
nframes_t cnt = min (((nframes_t) floor (next_event.when) - now), nframes);
|
||||
nframes_t cnt = min (((nframes_t) ceil (next_event.when) - now), nframes);
|
||||
|
||||
connect_and_run (bufs, cnt, offset, true, now);
|
||||
|
||||
|
|
|
|||
|
|
@ -81,8 +81,9 @@ Session::memento_command_factory(XMLNode *n)
|
|||
/* create command */
|
||||
string obj_T = n->property ("type_name")->value();
|
||||
if (obj_T == typeid (AudioRegion).name() || obj_T == typeid (MidiRegion).name() || obj_T == typeid (Region).name()) {
|
||||
if (regions.count(id))
|
||||
if (regions.count(id)) {
|
||||
return new MementoCommand<Region>(*regions[id], before, after);
|
||||
}
|
||||
} else if (obj_T == typeid (AudioSource).name() || obj_T == typeid (MidiSource).name()) {
|
||||
if (sources.count(id))
|
||||
return new MementoCommand<Source>(*sources[id], before, after);
|
||||
|
|
@ -107,6 +108,7 @@ Session::memento_command_factory(XMLNode *n)
|
|||
|
||||
/* we failed */
|
||||
error << string_compose (_("could not reconstitute MementoCommand from XMLNode. object type = %1 id = %2"), obj_T, id.to_s()) << endmsg;
|
||||
|
||||
return 0 ;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -708,7 +708,7 @@ Session::save_state (string snapshot_name, bool pending)
|
|||
tmp_path += snapshot_name;
|
||||
tmp_path += ".tmp";
|
||||
|
||||
cerr << "actually writing state to " << xml_path << endl;
|
||||
// cerr << "actually writing state to " << xml_path << endl;
|
||||
|
||||
if (!tree.write (tmp_path)) {
|
||||
error << string_compose (_("state could not be saved to %1"), tmp_path) << endmsg;
|
||||
|
|
@ -770,7 +770,7 @@ Session::load_state (string snapshot_name)
|
|||
xmlpath += snapshot_name;
|
||||
xmlpath += _pending_suffix;
|
||||
|
||||
if (!access (xmlpath.c_str(), F_OK)) {
|
||||
if (Glib::file_test (xmlpath, Glib::FILE_TEST_EXISTS)) {
|
||||
|
||||
/* there is pending state from a crashed capture attempt */
|
||||
|
||||
|
|
@ -785,8 +785,8 @@ Session::load_state (string snapshot_name)
|
|||
xmlpath += snapshot_name;
|
||||
xmlpath += _statefile_suffix;
|
||||
}
|
||||
|
||||
if (access (xmlpath.c_str(), F_OK)) {
|
||||
|
||||
if (!Glib::file_test (xmlpath, Glib::FILE_TEST_EXISTS)) {
|
||||
error << string_compose(_("%1: session state information file \"%2\" doesn't exist!"), _name, xmlpath) << endmsg;
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -828,8 +828,10 @@ Session::load_state (string snapshot_name)
|
|||
if (is_old) {
|
||||
string backup_path;
|
||||
|
||||
backup_path = xmlpath;
|
||||
backup_path += ".1";
|
||||
backup_path = _path;
|
||||
backup_path += snapshot_name;
|
||||
backup_path += "-1";
|
||||
backup_path += _statefile_suffix;
|
||||
|
||||
info << string_compose (_("Copying old session file %1 to %2\nUse %2 with Ardour versions before 2.0 from now on"),
|
||||
xmlpath, backup_path)
|
||||
|
|
@ -1614,7 +1616,7 @@ Session::path_from_region_name (string name, string identifier)
|
|||
snprintf (buf, sizeof(buf), "%s/%s-%" PRIu32 ".wav", dir.c_str(), name.c_str(), n);
|
||||
}
|
||||
|
||||
if (!g_file_test (buf, G_FILE_TEST_EXISTS)) {
|
||||
if (!Glib::file_test (buf, Glib::FILE_TEST_EXISTS)) {
|
||||
return buf;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __ardour_svn_revision_h__
|
||||
#define __ardour_svn_revision_h__
|
||||
static const char* ardour_svn_revision = "1681";
|
||||
static const char* ardour_svn_revision = "1745";
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -448,6 +448,7 @@ style "editor_hscrollbar" = "ardour_adjusters"
|
|||
# make it bigger.
|
||||
#
|
||||
GtkRange::slider_width = 27
|
||||
GtkScrollbar::slider_width = 27
|
||||
}
|
||||
|
||||
style "ardour_progressbars" = "default_buttons_menus"
|
||||
|
|
|
|||
|
|
@ -111,6 +111,7 @@ class Data(object):
|
|||
sessions[session_name]['collabs'][collab_name]['sounds'] = []
|
||||
sessions[session_name]['collabs'][collab_name]['ip'] = ip_address
|
||||
sessions[session_name]['collabs'][collab_name]['port'] = port
|
||||
sessions[session_name]['collabs'][collab_name]['v2paths'] = true
|
||||
self._data['sessions'] = sessions
|
||||
|
||||
client = ExchangeClientFactory(session_name, collab_name, None, self.debug_mode)
|
||||
|
|
@ -129,6 +130,10 @@ class Data(object):
|
|||
sessions[session_name]['collabs'][self._data['user']] = {}
|
||||
sessions[session_name]['collabs'][self._data['user']]['snaps'] = []
|
||||
sessions[session_name]['collabs'][self._data['user']]['sounds'] = []
|
||||
if os.path.test (os.path.join (session_path,'sounds')):
|
||||
sessions[session_name]['collabs'][collab_name]['v2paths'] = False
|
||||
else:
|
||||
sessions[session_name]['collabs'][collab_name]['v2paths'] = True
|
||||
|
||||
self._data['sessions'] = sessions
|
||||
|
||||
|
|
@ -150,7 +155,8 @@ class Data(object):
|
|||
def create_session(self, session_path):
|
||||
try:
|
||||
os.mkdir(session_path)
|
||||
os.mkdir(session_path+"/sounds")
|
||||
os.mkdir(os.path.join (session_path,'interchange',session_name,'audiofiles'))
|
||||
|
||||
except OSError:
|
||||
raise_error("Could not create session directory", g_display.window)
|
||||
return
|
||||
|
|
@ -230,7 +236,10 @@ class Data(object):
|
|||
|
||||
def _scan_sounds(self, session):
|
||||
sounds = []
|
||||
files = os.listdir(session+'/sounds')
|
||||
if v2paths:
|
||||
files = os.listdir(os.path.join (session,'interchange', session, 'audiofiles'))
|
||||
else:
|
||||
files = os.listdir(os.path.join (session,'sounds'))
|
||||
pattern = re.compile(r'\.peak$')
|
||||
for file in files:
|
||||
if not pattern.search(file):
|
||||
|
|
@ -755,21 +764,21 @@ class ArdourShareWindow(object):
|
|||
#need to hold a reference to the item_factory or the menubar will disappear.
|
||||
self.item_factory = gtk.ItemFactory(gtk.MenuBar, '<main>', accel_group)
|
||||
self.item_factory.create_items(menu_items, self.window)
|
||||
main_box.pack_start(self.item_factory.get_widget('<main>'), gtk.FALSE)
|
||||
main_box.pack_start(self.item_factory.get_widget('<main>'), False)
|
||||
|
||||
pane1 = gtk.HPaned()
|
||||
pane2 = gtk.HPaned()
|
||||
pane1.pack2(pane2, gtk.TRUE, gtk.FALSE)
|
||||
pane1.pack2(pane2, True, False)
|
||||
|
||||
scroll1 = gtk.ScrolledWindow()
|
||||
scroll1.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
||||
pane1.pack1(scroll1, gtk.TRUE, gtk.FALSE)
|
||||
pane1.pack1(scroll1, True, False)
|
||||
scroll2 = gtk.ScrolledWindow()
|
||||
scroll2.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
||||
pane2.pack1(scroll2, gtk.TRUE, gtk.FALSE)
|
||||
pane2.pack1(scroll2, True, False)
|
||||
scroll3 = gtk.ScrolledWindow()
|
||||
scroll3.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
|
||||
pane2.pack2(scroll3, gtk.TRUE, gtk.FALSE)
|
||||
pane2.pack2(scroll3, True, False)
|
||||
|
||||
self.session_model = gtk.ListStore(gobject.TYPE_STRING)
|
||||
view1 = gtk.TreeView(self.session_model)
|
||||
|
|
@ -797,10 +806,10 @@ class ArdourShareWindow(object):
|
|||
self.snap_selection.connect("changed", self.cb_snap_selection_changed)
|
||||
scroll3.add(view3)
|
||||
|
||||
main_box.pack_start(pane1, gtk.TRUE, gtk.TRUE)
|
||||
main_box.pack_start(pane1, True, True)
|
||||
|
||||
self.status_bar = gtk.Statusbar()
|
||||
main_box.pack_start(self.status_bar, gtk.FALSE)
|
||||
main_box.pack_start(self.status_bar, False)
|
||||
self._status_cid = self.status_bar.get_context_id('display')
|
||||
self._status_mid = ''
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue