20#include <tdeaboutdata.h>
22#include <kiconloader.h>
24#include <tdepopupmenu.h>
25#include <KoPartSelectAction.h>
29#include "kis_paint_layer.h"
30#include "kis_part_layer.h"
31#include "kis_adjustment_layer.h"
32#include "kis_filter.h"
33#include "kis_filter_configuration.h"
34#include "kis_filter_registry.h"
35#include "kis_layerlist.h"
38KisLayerList::KisLayerList( TQWidget *parent,
const char *name )
39 : super( parent, name )
41 m_partLayerAction =
new KoPartSelectAction( i18n(
"New &Object Layer" ),
"gear",
this );
44static const int ADJUSTMENT_LAYER = 5384;
46void KisLayerList::constructMenu( LayerItem *layer )
48 super::constructMenu( layer );
50 contextMenu()->removeItem( MenuItems::NewLayer );
51 contextMenu()->removeItem( MenuItems::NewFolder );
52 contextMenu()->changeItem( MenuItems::RemoveLayer, i18n(
"&Remove Layer" ) );
56 static TDEPopupMenu submenu;
58 submenu.insertItem( SmallIconSet(
"file" ), i18n(
"&Layer..." ), MenuItems::NewLayer );
59 submenu.insertItem( SmallIconSet(
"folder" ), i18n(
"&Group Layer..." ), MenuItems::NewFolder );
60 submenu.insertItem( SmallIconSet(
"tool_filter" ), i18n(
"&Adjustment Layer..." ), ADJUSTMENT_LAYER );
61 m_partLayerAction->setText( i18n(
"&Object Layer" ) );
62 m_partLayerAction->plug( &submenu );
64 contextMenu()->insertItem( SmallIconSet(
"document-new" ), i18n(
"&New" ), &submenu );
68 contextMenu()->insertItem( SmallIconSet(
"document-new" ), i18n(
"&New Layer..." ), MenuItems::NewLayer );
69 contextMenu()->insertItem( SmallIconSet(
"folder" ), i18n(
"New &Group Layer..." ), MenuItems::NewFolder );
70 contextMenu()->insertItem( SmallIconSet(
"tool_filter" ), i18n(
"New &Adjustment Layer..." ), ADJUSTMENT_LAYER );
71 m_partLayerAction->setText( i18n(
"New &Object Layer" ) );
72 m_partLayerAction->plug( contextMenu() );
76void KisLayerList::menuActivated(
int id, LayerItem *layer )
78 const TQValueList<LayerItem*> selected = selectedLayers();
79 LayerItem *parent = ( layer && layer->isFolder() ) ? layer : 0;
81 if( layer && !parent )
83 parent = layer->parent();
84 after = layer->prevSibling();
88 case MenuItems::NewLayer:
89 emit requestNewLayer( parent, after );
90 emit requestNewLayer( parent ? parent->id() : -1, after ? after->id() : -1 );
92 case MenuItems::NewFolder:
93 emit requestNewFolder( parent, after );
94 emit requestNewFolder( parent ? parent->id() : -1, after ? after->id() : -1 );
96 case ADJUSTMENT_LAYER:
97 emit requestNewAdjustmentLayer( parent, after );
98 emit requestNewAdjustmentLayer( parent ? parent->id() : -1, after ? after->id() : -1 );
100 case MenuItems::RemoveLayer:
102 TQValueList<int> ids;
103 for(
int i = 0, n = selected.count(); i < n; ++i )
105 ids.append( selected[i]->
id() );
106 emit requestRemoveLayer( selected[i]->
id() );
108 emit requestRemoveLayers( ids );
110 for(
int i = 0, n = selected.count(); i < n; ++i )
111 emit requestRemoveLayer( selected[i] );
112 emit requestRemoveLayers( selected );
114 case MenuItems::LayerProperties:
117 emit requestLayerProperties( layer );
118 emit requestLayerProperties( layer->id() );
122 if(
id >= MenuItems::COUNT && layer )
123 super::menuActivated(
id, layer );
126 emit requestNewObjectLayer( parent, after, m_partLayerAction->documentEntry() );
127 emit requestNewObjectLayer( parent ? parent->id() : -1, after ? after->id() : -1, m_partLayerAction->documentEntry() );
132KisLayerItem::KisLayerItem( LayerList* parent,
KisLayer* layer )
133 : super( layer->name(),
135 layer->prevSibling() ? parent->layer( layer->prevSibling()->id() ) : 0,
142KisLayerItem::KisLayerItem( LayerItem* parent,
KisLayer* layer )
143 : super( layer->name(),
145 layer->prevSibling() ? parent->listView()->layer( layer->prevSibling()->id() ) : 0,
152void KisLayerItem::init()
154 setPreviewImage( &m_preview );
158KisLayer* KisLayerItem::layer()
const
163void KisLayerItem::sync()
165 setProperty(
"visible", layer()->visible() );
166 setProperty(
"locked", layer()->locked() );
167 setDisplayName( layer()->name() );
171bool KisLayerItem::updatePreview()
173 m_preview = m_layer->createThumbnail( height()*2, height()*2 );
174 m_preview.setAlphaBuffer(
true );
176 return !m_preview.isNull();
179TQString KisLayerItem::tooltip()
const
181 TQString text = super::tooltip();
182 text = text.left( text.length() - 8 );
183 TQString row =
"<tr><td>%1</td><td>%2</td></tr>";
184 text += row.arg( i18n(
"Opacity:" ) ).arg(
"%1%" ).arg(
int(
float( m_layer->opacity() * 100 ) / 255 + 0.5 ) );
185 text += row.arg( i18n(
"Composite mode:" ) ).arg( m_layer->compositeOp().id().name() );
188 text += row.arg( i18n(
"Colorspace:" ) ).arg( player->paintDevice()->colorSpace()->id().name() );
189 if( KisProfile *profile = player->paintDevice()->colorSpace()->getProfile() )
190 text += row.arg( i18n(
"Profile:" ) ).arg( profile->productName() );
193 text += row.arg( i18n(
"Filter: " ) ).arg( KisFilterRegistry::instance()->get( alayer->filter()->name() )->id().name() );
195 TQString type = player->docType();
197 if( type.isEmpty() ) {
198 type = player->childDoc()->document()->instance()->aboutData()->programName();
201 text += row.arg( i18n(
"Document type: " ) ).arg( type );
208TQImage KisLayerItem::tooltipPreview()
const
210 TQImage img = m_layer->createThumbnail( 400, 400 );
213 img.setAlphaBuffer(
true );
214 const int size = kMin( 200, kMax( img.width(), img.height() ) );
215 return img.smoothScale( size, size, TQImage::ScaleMin );
220#include "kis_layerlist.moc"
Class that contains a KisFilter and optionally a KisSelection.
Abstract class that represents the concept of a Layer in Chalk.
This layer is of a type that can be painted on.
A PartLayer is a layer that contains a KOffice Part like a KWord document or a KSpread spreadsheet.