/***************************************************************************
* Copyright ( C ) 2003 - 2004 by David Saxton *
* david @ bluehaze . 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 . *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include "cnitem.h"
# include "cnitemgroup.h"
# include "itemeditor.h"
# include "orientationwidget.h"
# include "propertieslistview.h"
# include <klocale.h>
# include <kstandarddirs.h>
# include <tqlayout.h>
# include <tqlabel.h>
# include <tqpushbutton.h>
# include <tqwhatsthis.h>
# include <assert.h>
ItemEditor * ItemEditor : : m_pSelf = 0l ;
ItemEditor * ItemEditor : : self ( KateMDI : : ToolView * parent )
{
if ( ! m_pSelf )
{
assert ( parent ) ;
m_pSelf = new ItemEditor ( parent ) ;
}
return m_pSelf ;
}
ItemEditor : : ItemEditor ( KateMDI : : ToolView * parent )
: TQWidget ( ( TQWidget * ) parent , " Item Editor " )
{
TQWhatsThis : : add ( this , i18n ( " This allows editing of advanced properties of the selected item(s). Right click on the picture of the item to set the orientation. " ) ) ;
TQVBoxLayout * vlayout = new TQVBoxLayout ( this , 0 , 6 ) ;
m_nameLbl = new TQLabel ( this , " " ) ;
vlayout - > addWidget ( m_nameLbl ) ;
vlayout - > addSpacing ( 8 ) ;
propList = new PropertiesListView ( this ) ;
vlayout - > addWidget ( propList ) ;
TQWhatsThis : : add ( propList , i18n ( " <qt>Shows properties associated with the currently selected item(s).<p>Select a property to change its value. If multiple items are selected with different values then the property will appear greyed out, use " " Merge Properties " " to make them the same.<p>Select " " Defaults to set all properties to their default values " " " ) ) ;
TQHBoxLayout * h1Layout = new TQHBoxLayout ( vlayout , 4 ) ;
TQSpacerItem * spacer1 = new TQSpacerItem ( 1 , 1 ) ;
h1Layout - > addItem ( spacer1 ) ;
m_defaultsBtn = new TQPushButton ( i18n ( " Defaults " ) , this ) ;
m_defaultsBtn - > setEnabled ( false ) ;
connect ( m_defaultsBtn , TQT_SIGNAL ( clicked ( ) ) , propList , TQT_SLOT ( slotSetDefaults ( ) ) ) ;
h1Layout - > addWidget ( m_defaultsBtn ) ;
m_mergeBtn = new TQPushButton ( i18n ( " Merge properties " ) , this ) ;
m_mergeBtn - > setEnabled ( false ) ;
connect ( m_mergeBtn , TQT_SIGNAL ( clicked ( ) ) , this , TQT_SLOT ( mergeProperties ( ) ) ) ;
h1Layout - > addWidget ( m_mergeBtn ) ;
// Qt::Orientation widget stuff
TQHBoxLayout * h2Layout = new TQHBoxLayout ( vlayout , 6 ) ;
TQSpacerItem * spacer2 = new TQSpacerItem ( 1 , 1 ) ;
h2Layout - > addItem ( spacer2 ) ;
m_orientationWidget = new OrientationWidget ( this ) ;
h2Layout - > addWidget ( m_orientationWidget ) ;
TQWhatsThis : : add ( m_orientationWidget , i18n ( " Change the orientation of the selected item by selecting the appropriate button " ) ) ;
TQSpacerItem * spacer3 = new TQSpacerItem ( 1 , 1 ) ;
h2Layout - > addItem ( spacer3 ) ;
slotClear ( ) ;
}
ItemEditor : : ~ ItemEditor ( )
{
}
void ItemEditor : : mergeProperties ( )
{
propList - > slotMergeProperties ( ) ;
m_mergeBtn - > setEnabled ( false ) ;
}
void ItemEditor : : slotClear ( )
{
propList - > slotClear ( ) ;
m_orientationWidget - > slotClear ( ) ;
m_defaultsBtn - > setEnabled ( false ) ;
m_mergeBtn - > setEnabled ( false ) ;
updateNameLabel ( 0l ) ;
}
void ItemEditor : : slotMultipleSelected ( )
{
slotClear ( ) ;
m_nameLbl - > setText ( i18n ( " <h2>Multiple Items</h2> " ) ) ;
}
void ItemEditor : : slotUpdate ( ItemGroup * itemGroup )
{
if ( ! itemGroup ) {
slotClear ( ) ;
return ;
}
updateMergeDefaults ( itemGroup ) ;
propList - > slotCreate ( itemGroup ) ;
updateNameLabel ( itemGroup - > activeItem ( ) ) ;
}
void ItemEditor : : updateMergeDefaults ( ItemGroup * itemGroup )
{
if ( ! itemGroup )
{
m_defaultsBtn - > setEnabled ( false ) ;
m_mergeBtn - > setEnabled ( false ) ;
return ;
}
m_mergeBtn - > setEnabled ( ! itemGroup - > itemsHaveSameData ( ) ) ;
m_defaultsBtn - > setEnabled ( ! itemGroup - > itemsHaveDefaultData ( ) ) ;
propList - > slotUpdate ( itemGroup ) ;
}
void ItemEditor : : slotUpdate ( CNItem * item )
{
m_orientationWidget - > slotUpdate ( item ) ;
}
void ItemEditor : : updateNameLabel ( Item * item )
{
if ( item ) {
m_nameLbl - > setText ( " <h2> " + item - > name ( ) + " </h2> " ) ;
} else {
m_nameLbl - > setText ( i18n ( " <h2>No Item Selected</h2> " ) ) ;
}
}
# include "itemeditor.moc"