/* cdrdao - write audio CD-Rs in disc-at-once mode
*
* Copyright (C) 1998-2002 Andreas Mueller <andreas@daneb.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdio.h>
#include <limits.h>
#include <math.h>
#include <assert.h>
#include <gtkmm.h>
#include <gnome.h>
#include "RecordTocSource.h"
#include "MessageBox.h"
#include "xcdrdao.h"
#include "Settings.h"
#include "CdDevice.h"
#include "guiUpdate.h"
#include "TocEdit.h"
#include "DeviceList.h"
#include "util.h"
RecordTocSource::RecordTocSource(TocEdit *tocEdit)
{
Gtk::Table *table;
Gtk::Label *label;
active_ = false;
tocEdit_ = tocEdit;
// device settings
Gtk::Frame *infoFrame = manage(new Gtk::Frame(_(" Project Information ")));
table = manage(new Gtk::Table(5, 2, FALSE));
table->set_row_spacings(5);
table->set_col_spacings(5);
table->set_border_width(10);
label = manage(new Gtk::Label(_("Project name: "), 1));
table->attach(*label, 0, 1, 0, 1);
table->attach(projectLabel_, 1, 2, 0, 1);
label = manage(new Gtk::Label(_("Toc Type: "), 1));
table->attach(*label, 0, 1, 1, 2);
table->attach(tocTypeLabel_, 1, 2, 1, 2);
label = manage(new Gtk::Label(_("Tracks: "), 1));
table->attach(*label, 0, 1, 2, 3);
table->attach(nofTracksLabel_, 1, 2, 2, 3);
label = manage(new Gtk::Label(_("Length: "), 1));
table->attach(*label, 0, 1, 3, 4);
table->attach(tocLengthLabel_, 1, 2, 3, 4);
infoFrame->add(*table);
pack_start(*infoFrame, Gtk::PACK_SHRINK);
}
void RecordTocSource::start()
{
active_ = true;
update(UPD_ALL);
show_all();
}
void RecordTocSource::stop()
{
if (active_) {
hide();
active_ = false;
}
}
void RecordTocSource::update(unsigned long level)
{
update(level, tocEdit_);
}
void RecordTocSource::update(unsigned long level, TocEdit *tedit)
{
if (!active_)
return;
if (tocEdit_ != tedit) {
level = UPD_ALL;
tocEdit_ = tedit;
}
if (tocEdit_ == NULL) {
projectLabel_.set_text("");
tocTypeLabel_.set_text("");
nofTracksLabel_.set_text("");
tocLengthLabel_.set_text("");
}
else {
if (level & UPD_TOC_DATA) {
char label[256];
char buf[50];
const Toc *toc = tocEdit_->toc();
projectLabel_.set_text(tocEdit_->filename());
tocTypeLabel_.set_text(toc->tocType2String(toc->tocType()));
sprintf(label, "%d", toc->nofTracks());
nofTracksLabel_.set_text(label);
sprintf(buf, "%d:%02d:%02d", toc->length().min(),
toc->length().sec(), toc->length().frac());
tocLengthLabel_.set_text(buf);
}
}
}
syntax highlighted by Code2HTML, v. 0.9.1