示例#1
0
        //cons
        public SignalsWindow()
        {
            InitializeComponent();
            //waverly = new Waverly(this);
            currentProject = null;

            //control panel
            controlPanel          = new ControlPanel(this);
            controlPanel.Location = new Point(0, SignalsMenu.Height);
            controlPanel.Width    = this.ClientSize.Width;
            this.Controls.Add(controlPanel);

            //track panel
            trackPanel          = new TrackPanel(this);
            trackPanel.Location = new Point(0, controlPanel.Bottom);
            trackPanel.Size     = new Size(this.ClientSize.Width, SignalsStatus.Top - controlPanel.Bottom);
            this.Controls.Add(trackPanel);

            //mixer window
            mixerWindow              = new MixerWindow(this);
            mixerWindow.FormClosing += new FormClosingEventHandler(MixerWindow_FormClosing);
            shuttingdown             = false;

            isPaused  = false;
            playSpeed = 0;
        }
示例#2
0
        public bool closeCurrentProject()
        {
            //save current project if we have one
            if (currentProject != null)
            {
                if (currentProject.isChanged)
                {
                    String       msg    = "Save changes to project " + currentProject.projectName + "?";
                    DialogResult result = MessageBox.Show(msg, "Not so fast...", MessageBoxButtons.YesNoCancel);
                    if (result == DialogResult.Cancel)
                    {
                        return(false);
                    }
                    if (result == DialogResult.Yes)
                    {
                        //save current project, but if they cancel the saving then cancel the closing as well
                        if (!saveCurrentProject(false))
                        {
                            return(false);
                        }
                    }
                }

                currentProject.close();
            }

            trackPanel.clearProject(currentProject);
            mixerWindow.clearProject(currentProject);
            controlPanel.clearProject(currentProject);
            enableWithTracks(false);
            enableWithProject(false);
            this.Text      = "Signals X-1 [none]";
            currentProject = null;
            return(true);
        }
示例#3
0
 public void setProject(X1Project _project)
 {
     project = _project;
     foreach (TrackView trackView in tracks)
     {
         trackView.updateTrackNumber();
         trackView.trackData.Invalidate();
     }
 }
示例#4
0
        //-----------------------------------------------------------------------------

        public void setProject(X1Project _project)
        {
            project           = _project;
            mixmaster.project = project;
            mixmaster.updateSettings();
            foreach (MixerStrip strip in mixerStrips)
            {
                strip.updateSettings();
            }
        }
示例#5
0
//- actions -------------------------------------------------------------------

        //project actions
        public void setCurrentProject(X1Project project)
        {
            currentProject = project;
            this.Text      = "Signals X-1 [" + currentProject.projectName + "]";
            trackPanel.setProject(project);
            mixerWindow.setProject(project);
            controlPanel.setProject(project);
            enableWithProject(true);
            if (currentProject.tracks.Count > 0)
            {
                enableWithTracks(true);
            }
        }
示例#6
0
        public int trackWidth;     //width of data portion of track view for horizontal scrolling in pixels

        public TrackPanel(SignalsWindow _signalsWindow)
        {
            signalsWindow = _signalsWindow;
            project       = null;
            InitializeComponent();

            ruler       = new TrackRuler(this);
            ruler.Width = this.Width;
            ruler.Dock  = DockStyle.Top;
            Controls.Add(ruler);

            tracks       = new List <TrackView>();
            zoomfactor   = ZOOMFACTOR;
            tracksHeight = 10;          //bottom gutter
            trackWidth   = 0;
        }
示例#7
0
        public MixerMaster(MixerWindow _mixer)
        {
            mixerWindow = _mixer;
            project     = mixerWindow.project;
            InitializeComponent();
            chkLock.Checked = true;
            fadersAreLocked = true;

            leftMeter          = new LevelMeter(this);
            leftMeter.Location = new Point(45, 26);
            this.Controls.Add(leftMeter);
            leftMeter.BringToFront();

            rightMeter          = new LevelMeter(this);
            rightMeter.Location = new Point(80, 26);
            rightMeter.BringToFront();
            this.Controls.Add(rightMeter);
        }
示例#8
0
        public MixerWindow(SignalsWindow _signalsWindow)
        {
            signalsWindow = _signalsWindow;
            project       = null;
            InitializeComponent();

            //mix master goes on right of mixer window
            mixmaster      = new MixerMaster(this);
            mixmaster.Dock = DockStyle.Right;
            this.Controls.Add(mixmaster);

            //strip scroll bar runs along bottom of window under channel strips
            stripScroll               = new HScrollBar();
            stripScroll.Minimum       = 0;
            stripScroll.Location      = new Point(0, MixerStrip.STRIPHEIGHT);
            stripScroll.Size          = new Size(MixerStrip.STRIPWIDTH, 20);
            stripScroll.LargeChange   = MixerStrip.STRIPWIDTH / 2;
            stripScroll.ValueChanged += new EventHandler(stripScroll_ValueChanged);
            this.Controls.Add(stripScroll);

            //strip panel contains the channel strips
            stripPanel          = new Panel();
            stripPanel.Location = new Point(0, 0);
            stripPanel.Size     = new Size(0, 0);
            stripPanel.TabStop  = false;
            this.Controls.Add(stripPanel);

            mixerStrips = new List <MixerStrip>();
            stripCount  = 0;

            //fix height & width for initial one strip view
            this.ClientSize  = new Size(mixmaster.Width + MixerStrip.STRIPWIDTH, MixerStrip.STRIPHEIGHT + stripScroll.Height);
            this.MinimumSize = new Size(this.Width, this.Height);

            addMixerStrip(null);
            addMixerStrip(null);
            addMixerStrip(null);
            addMixerStrip(null);
            addMixerStrip(null);
            addMixerStrip(null);
        }
示例#9
0
        private void openFileMenuItem_Click(object sender, EventArgs e)
        {
            if (!closeCurrentProject())
            {
                return;
            }

            //call get new project filename dialog box
            String filename = "";

            openFileDialog.InitialDirectory = Application.StartupPath;
            openFileDialog.DefaultExt       = "*.sx1";
            openFileDialog.Filter           = "Signals X-1 project files|*.sx1|All files|*.*";
            openFileDialog.ShowDialog();
            filename = openFileDialog.FileName;
            if (filename.Length == 0)
            {
                return;
            }

            X1Project project = X1Project.open(this, filename);

            setCurrentProject(project);
        }
示例#10
0
//- file events ---------------------------------------------------------------

        private void newFileMenuItem_Click(object sender, EventArgs e)
        {
            if (!closeCurrentProject())
            {
                return;
            }

            //call get import filename dialog box
            newProjectDialog newDialog = new newProjectDialog();

            newDialog.ShowDialog();
            if (newDialog.DialogResult == DialogResult.Cancel)
            {
                return;
            }

            String projectName = newDialog.projectName;
            int    sampleRate  = newDialog.sampleRate;
            int    duration    = newDialog.duration;

            X1Project project = new X1Project(this, projectName, sampleRate, duration);

            setCurrentProject(project);
        }
示例#11
0
 public void clearProject(X1Project _project)
 {
     //ruler
     project = null;
 }
示例#12
0
 public void clearProject(X1Project _project)
 {
     project = null;
     enableTransport(false);
 }
示例#13
0
 public void setProject(X1Project _project)
 {
     project = _project;
     enableTransport(true);
 }
示例#14
0
 public void clearProject(X1Project _project)
 {
     project           = null;
     mixmaster.project = null;
     stop();
 }