You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
k3b/src/projects/k3bview.cpp

177 lines
4.6 KiB

/*
*
* $Id: k3bview.cpp 619556 2007-01-03 17:38:12Z trueg $
* Copyright (C) 2003-2007 Sebastian Trueg <trueg@k3b.org>
*
* This file is part of the K3b project.
* Copyright (C) 1998-2007 Sebastian Trueg <trueg@k3b.org>
*
* 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.
* See the file "COPYING" for the exact licensing terms.
*/
// include files for TQt
#include <tqlayout.h>
#include <tqtoolbutton.h>
#include <tqtooltip.h>
#include <tqwhatsthis.h>
#include <tqptrlist.h>
#include <tqtoolbutton.h>
#include <kaction.h>
#include <kiconloader.h>
#include <klocale.h>
#include <kmessagebox.h>
#include <kdebug.h>
// application specific includes
#include "k3bview.h"
#include "k3bdoc.h"
#include "k3bfillstatusdisplay.h"
#include "k3bprojectburndialog.h"
#include "k3bprojectplugindialog.h"
#include <k3btoolbox.h>
#include <k3bpluginmanager.h>
#include <k3bprojectplugin.h>
#include <k3bcore.h>
K3bView::K3bView( K3bDoc* pDoc, TQWidget *parent, const char* name )
: TQWidget( parent, name ),
m_doc( pDoc )
{
TQGridLayout* grid = new TQGridLayout( this );
m_toolBox = new K3bToolBox( this, "toolbox" );
m_fillStatusDisplay = new K3bFillStatusDisplay( m_doc, this );
grid->addMultiCellWidget( m_toolBox, 0, 0, 0, 1 );
grid->addMultiCellWidget( m_fillStatusDisplay, 2, 2, 0, 1 );
// grid->addWidget( m_buttonBurn, 2, 1 );
grid->setRowStretch( 1, 1 );
grid->setColStretch( 0, 1 );
grid->setSpacing( 5 );
grid->setMargin( 2 );
KAction* burnAction = new KAction( i18n("&Burn"), "cdburn", CTRL + Key_B, TQT_TQOBJECT(this), TQT_SLOT(slotBurn()),
actionCollection(), "project_burn");
burnAction->setToolTip( i18n("Open the burn dialog for the current project") );
KAction* propAction = new KAction( i18n("&Properties"), "edit", CTRL + Key_P, TQT_TQOBJECT(this), TQT_SLOT(slotProperties()),
actionCollection(), "project_properties");
propAction->setToolTip( i18n("Open the properties dialog") );
m_toolBox->addButton( burnAction, true );
m_toolBox->addSeparator();
// this is just for testing (or not?)
// most likely every project type will have it's rc file in the future
setXML( "<!DOCTYPE kpartgui SYSTEM \"kpartgui.dtd\">"
"<kpartgui name=\"k3bproject\" version=\"1\">"
"<MenuBar>"
" <Menu name=\"project\"><text>&amp;Project</text>"
" <Action name=\"project_burn\"/>"
" <Action name=\"project_properties\"/>"
" </Menu>"
"</MenuBar>"
"</kpartgui>", true );
}
K3bView::~K3bView()
{
}
void K3bView::setMainWidget( TQWidget* w )
{
static_cast<TQGridLayout*>(layout())->addMultiCellWidget( w, 1, 1, 0, 1 );
}
void K3bView::slotBurn()
{
if( m_doc->numOfTracks() == 0 || m_doc->size() == 0 ) {
KMessageBox::information( this, i18n("Please add files to your project first."),
i18n("No Data to Burn"), TQString(), false );
}
else {
K3bProjectBurnDialog* dlg = newBurnDialog( this );
if( dlg ) {
dlg->execBurnDialog(true);
delete dlg;
}
else {
kdDebug() << "(K3bDoc) Error: no burndialog available." << endl;
}
}
}
void K3bView::slotProperties()
{
K3bProjectBurnDialog* dlg = newBurnDialog( this );
if( dlg ) {
dlg->execBurnDialog(false);
delete dlg;
}
else {
kdDebug() << "(K3bDoc) Error: no burndialog available." << endl;
}
}
// KActionCollection* K3bView::actionCollection() const
// {
// return m_actionCollection;
// }
void K3bView::addPluginButtons( int projectType )
{
TQPtrList<K3bPlugin> pl = k3bcore->pluginManager()->plugins( "ProjectPlugin" );
for( TQPtrListIterator<K3bPlugin> it( pl ); *it; ++it ) {
K3bProjectPlugin* pp = dynamic_cast<K3bProjectPlugin*>( *it );
if( pp && (pp->type() & projectType) ) {
TQToolButton* button = toolBox()->addButton( pp->text(),
pp->icon(),
pp->toolTip(),
pp->whatsThis(),
TQT_TQOBJECT(this),
TQT_SLOT(slotPluginButtonClicked()) );
m_plugins.insert( static_cast<void*>(button), pp );
}
}
}
void K3bView::slotPluginButtonClicked()
{
TQObject* o = TQT_TQOBJECT(const_cast<TQT_BASE_OBJECT_NAME*>(sender()));
if( K3bProjectPlugin* p = m_plugins[static_cast<void*>(o)] ) {
if( p->hasGUI() ) {
K3bProjectPluginDialog dlg( p, doc(), this );
dlg.exec();
}
else
p->activate( doc(), this );
}
}
void K3bView::addUrl( const KURL& url )
{
KURL::List urls(url);
addUrls( urls );
}
void K3bView::addUrls( const KURL::List& urls )
{
doc()->addUrls( urls );
}
#include "k3bview.moc"