21#include "KWDocument.h"
24#include "KWDocStruct.h"
25#include "KWDocStruct.moc"
26#include "KWTableFrameSet.h"
27#include "KWPartFrameSet.h"
28#include "KWFormulaFrameSet.h"
29#include "KWPictureFrameSet.h"
30#include "KWTextDocument.h"
33#include <KoParagCounter.h>
38#include <kiconloader.h>
40#include <tdelistviewsearchline.h>
41#include <tdeglobalsettings.h>
44#include <tdetoolbar.h>
45#include <tdetoolbarbutton.h>
53KWOrderedFrameSet::KWOrderedFrameSet(
KWFrameSet* fs) :
56KWOrderedFrameSet::KWOrderedFrameSet() :
61 if (!m_frameset)
return false;
63 if (!frame1)
return false;
65 if (!frameset2)
return false;
67 if (!frame2)
return false;
68 KoPoint p1 = frame1->topLeft();
69 KoPoint p2 = frame2->topLeft();
70 return (p1.y() < p2.y() || (p1.y() == p2.y() && p1.x() < p2.x()));
77KWDocListViewItem::KWDocListViewItem(TQListViewItem* parent,
const TQString& text)
78 : TDEListViewItem(parent, text)
82KWDocListViewItem::KWDocListViewItem(TQListViewItem* parent, TQListViewItem* after,
const TQString& text )
83 :TDEListViewItem(parent, after, text)
87KWDocListViewItem::KWDocListViewItem(TQListView* parent,
const TQString& text)
88 :TDEListViewItem(parent, text)
92void KWDocListViewItem::deleteAllChildren()
94 if ( childCount() > 0 )
96 TQListViewItem *child = firstChild();
97 TQListViewItem *delChild;
102 child = child->nextSibling();
108KWDocument* KWDocListViewItem::doc()
110 return dynamic_cast<KWDocStructTree *
>(listView())->doc();
113KWGUI* KWDocListViewItem::gui()
115 return dynamic_cast<KWDocStructTree *
>(listView())->gui();
123KWDocStructParagItem::KWDocStructParagItem(TQListViewItem* parent,
const TQString& text,
KWTextParag* parag )
124 : KWDocListViewItem(parent, text), m_parag(parag)
128KWDocStructParagItem::KWDocStructParagItem(TQListViewItem* parent, TQListViewItem* after,
130 : KWDocListViewItem(parent, after, text), m_parag(parag)
134void KWDocStructParagItem::contextMenu(TQListViewItem* item,
const TQPoint& p,
int )
139 gui()->getView()->openDocStructurePopupMenu(p, fs, m_parag);
143void KWDocStructParagItem::selectItem()
146 TQPoint iPoint = m_parag->rect().topLeft();
149 TQPoint nPoint = fs->kWordDocument()->zoomPoint(dPoint);
150 gui()->canvasWidget()->scrollToOffset(fs->kWordDocument()->unzoomPoint(nPoint));
154void KWDocStructParagItem::editItem()
156 gui()->canvasWidget()->editTextFrameSet(m_parag->kwTextDocument()->textFrameSet(), m_parag, 0);
159void KWDocStructParagItem::deleteItem()
164void KWDocStructParagItem::editProperties()
166 gui()->canvasWidget()->editTextFrameSet(m_parag->kwTextDocument()->textFrameSet(), m_parag, 0);
167 gui()->getView()->formatParagraph();
170void KWDocStructParagItem::speakItem()
173 KoParagCounter* tmpCounter = m_parag->counter();
175 text = tmpCounter->text(m_parag) +
" ";
176 text += m_parag->toString();
177 if (!text.isEmpty()) {
178 kospeaker->queueSpeech(text, m_parag->paragraphFormat()->language(),
true);
179 kospeaker->startSpeech();
188KWDocStructTextFrameItem::KWDocStructTextFrameItem(TQListViewItem* parent,
const TQString& text,
190 : KWDocListViewItem(parent, text), m_frame(frame), m_frameset(frameset)
194KWDocStructTextFrameItem::KWDocStructTextFrameItem(TQListViewItem* parent, TQListViewItem* after,
196 : KWDocListViewItem(parent, after, text), m_frame(frame), m_frameset(frameset)
200void KWDocStructTextFrameItem::setupTextParags()
203 TQPtrList<KWTextParag> paragPtrs;
204 paragPtrs.setAutoDelete(
false);
205 KoTextParag* textParag = 0;
206 KoTextParag* lastParag = 0;
209 KoPoint dPoint = m_frame->topLeft() + KoPoint(2,2);
211 m_frameset->findPosition(dPoint, textParag, index);
213 dPoint = m_frame->bottomRight() - KoPoint(2,2);
215 m_frameset->findPosition(dPoint, lastParag, index);
221 TQString text = parag->toString().stripWhiteSpace();
222 if ( text.length() > 0)
223 paragPtrs.append(parag);
225 if (textParag == lastParag)
228 textParag = textParag->next();
233 KWDocStructParagItem* item =
dynamic_cast<KWDocStructParagItem *
>(firstChild());
234 KWDocStructParagItem* delItem;
237 item =
dynamic_cast<KWDocStructParagItem *
>(item->nextSibling());
238 if (paragPtrs.containsRef(delItem->parag()) == 0)
delete delItem;
242 KWDocStructParagItem* after = 0;
243 for (uint j = 0; j < paragPtrs.count(); j++) {
245 TQString text = parag->toString().stripWhiteSpace();
246 TQString name = text.left(20);
247 KoParagCounter* tmpCounter = parag->counter();
249 name.prepend(tmpCounter->text(parag) +
" ");
250 KWDocStructParagItem* child = findTextParagItem(parag);
252 child->setText(0, name);
255 child =
new KWDocStructParagItem(
this, after, name, parag);
257 child =
new KWDocStructParagItem(
this, name, parag);
263void KWDocStructTextFrameItem::contextMenu(TQListViewItem* item,
const TQPoint& p,
int )
266 gui()->getView()->openDocStructurePopupMenu(p, m_frameset, 0);
269void KWDocStructTextFrameItem::selectItem()
271 gui()->canvasWidget()->scrollToOffset(m_frame->topLeft());
274void KWDocStructTextFrameItem::editItem()
276 KoTextParag* parag = 0L;
279 KoPoint dPoint = m_frame->topLeft() + KoPoint(2,2);
280 m_frameset->findPosition(dPoint, parag, index);
281 gui()->canvasWidget()->editTextFrameSet(m_frameset, parag, 0);
284void KWDocStructTextFrameItem::deleteItem()
286 gui()->getView()->deleteFrameSet(m_frameset);
289void KWDocStructTextFrameItem::editProperties()
291 gui()->canvasWidget()->editFrameProperties(m_frameset);
294void KWDocStructTextFrameItem::speakItem()
296 KoTextParag* textParag = 0;
297 KoTextParag* lastParag = 0;
300 KoPoint dPoint = m_frame->topLeft() + KoPoint(2,2);
302 m_frameset->findPosition(dPoint, textParag, index);
304 dPoint = m_frame->bottomRight() - KoPoint(2,2);
306 m_frameset->findPosition(dPoint, lastParag, index);
308 if (textParag && lastParag) {
313 TQString text = parag->toString().stripWhiteSpace();
314 if ( text.length() > 0) {
315 kospeaker->queueSpeech(text, parag->paragraphFormat()->language(), first);
319 if (textParag == lastParag)
322 textParag = textParag->next();
324 kospeaker->startSpeech();
328KWDocStructParagItem* KWDocStructTextFrameItem::findTextParagItem(
const KWTextParag* parag)
330 if ( childCount() > 0 )
332 TQListViewItem *child = firstChild();
335 if (
dynamic_cast<KWDocStructParagItem *
>(child)->parag() == parag)
336 return dynamic_cast<KWDocStructParagItem *
>(child);
337 child = child->nextSibling();
348KWDocStructTextFrameSetItem::KWDocStructTextFrameSetItem(TQListViewItem* parent,
const TQString& text,
350 : KWDocListViewItem(parent, text ), m_frameset(frameset)
354KWDocStructTextFrameSetItem::KWDocStructTextFrameSetItem(TQListViewItem* parent, TQListViewItem* after,
356 : KWDocListViewItem(parent, after, text), m_frameset(frameset)
360void KWDocStructTextFrameSetItem::setupTextFrames()
364 TQPtrList<KWFrame> framePtrs;
365 framePtrs.setAutoDelete(
false);
366 for (uint j = 0; j < m_frameset->frameCount(); j++)
367 framePtrs.append(m_frameset->frame(j));
370 KWDocStructTextFrameItem* item =
dynamic_cast<KWDocStructTextFrameItem *
>(firstChild());
371 KWDocStructTextFrameItem* delItem;
374 item =
dynamic_cast<KWDocStructTextFrameItem *
>(item->nextSibling());
375 if (framePtrs.containsRef(delItem->frame()) == 0)
delete delItem;
379 KWDocument* dok = doc();
380 KWDocStructTextFrameItem* after = 0;
381 for (uint j = 0; j < framePtrs.count(); j++)
383 KWFrame* frame = framePtrs.at(j);
385 if ( TDEListViewItem::parent()->firstChild() ==
this && dok->processingType() == KWDocument::WP )
387 if ( dok->numColumns() == 1 )
388 name=i18n(
"Page %1" ).arg(TQString::number(j + 1));
390 name=i18n(
"Column %1" ).arg(TQString::number(j + 1));
393 name=i18n(
"Text Frame %1" ).arg(TQString::number(j + 1));
394 KWDocStructTextFrameItem* child = findTextFrameItem(frame);
396 child->setText(0, name);
399 child =
new KWDocStructTextFrameItem(
this, after, name, m_frameset, frame);
401 child =
new KWDocStructTextFrameItem(
this, name, m_frameset, frame);
403 child->setupTextParags();
408void KWDocStructTextFrameSetItem::contextMenu(TQListViewItem* item,
const TQPoint& p,
int )
411 gui()->getView()->openDocStructurePopupMenu(p, m_frameset, 0);
414void KWDocStructTextFrameSetItem::selectItem()
416 KWFrame* frame = m_frameset->frame(0);
418 gui()->canvasWidget()->scrollToOffset(frame->topLeft());
421void KWDocStructTextFrameSetItem::editItem()
423 gui()->canvasWidget()->editTextFrameSet(m_frameset, 0L, 0);
426void KWDocStructTextFrameSetItem::deleteItem()
428 gui()->getView()->deleteFrameSet(m_frameset);
431void KWDocStructTextFrameSetItem::editProperties()
433 gui()->canvasWidget()->editFrameProperties(m_frameset);
436void KWDocStructTextFrameSetItem::speakItem()
438 KoTextParag* parag = m_frameset->textDocument()->firstParag();
439 kospeaker->queueSpeech(parag->toString(), parag->paragraphFormat()->language(),
true);
440 parag = parag->next();
441 for ( ; parag ; parag = parag->next() )
442 kospeaker->queueSpeech(parag->toString(), parag->paragraphFormat()->language(),
false);
443 kospeaker->startSpeech();
446KWDocStructTextFrameItem* KWDocStructTextFrameSetItem::findTextFrameItem(
const KWFrame* frame)
448 if ( childCount() > 0 )
450 TQListViewItem *child = firstChild();
453 if (
dynamic_cast<KWDocStructTextFrameItem *
>(child)->frame() == frame)
454 return dynamic_cast<KWDocStructTextFrameItem *
>(child);
455 child = child->nextSibling();
466KWDocStructTableItem::KWDocStructTableItem(TQListViewItem* parent,
const TQString& text,
468 :KWDocListViewItem(parent, text), m_table(table)
472KWDocStructTableItem::KWDocStructTableItem(TQListViewItem* parent, TQListViewItem* after,
474 :KWDocListViewItem(parent, after, text), m_table(table)
478void KWDocStructTableItem::setupCells()
482 TQPtrList<KWTextFrameSet> cellPtrs;
483 cellPtrs.setAutoDelete(
false);
484 for (uint row = 0; row < m_table->getRows(); ++row)
485 for (uint col = 0; col < m_table->getColumns(); ++ col) {
488 cellPtrs.append(cell);
492 KWDocStructTextFrameItem* item =
dynamic_cast<KWDocStructTextFrameItem *
>(firstChild());
493 KWDocStructTextFrameItem* delItem;
496 item =
dynamic_cast<KWDocStructTextFrameItem *
>(item->nextSibling());
497 if (cellPtrs.containsRef(delItem->frameSet()) == 0)
delete delItem;
503 KWDocStructTextFrameItem* child;
504 KWDocStructTextFrameItem* after = 0;
505 for (uint j = 0; j < cellPtrs.count(); j++)
510 TQString name = cell->
name();
511 child = findCellItem(cell);
513 child->setText(0, name);
516 child =
new KWDocStructTextFrameItem(
this, after, name, cell, frame);
518 child =
new KWDocStructTextFrameItem(
this, name, cell, frame);
520 child->setupTextParags();
526void KWDocStructTableItem::contextMenu(TQListViewItem* item,
const TQPoint& p,
int )
529 gui()->getView()->openDocStructurePopupMenu(p, m_table, 0);
532void KWDocStructTableItem::selectItem()
534 KWFrame* frame = m_table->cell( 0, 0 )->frame( 0 );
535 gui()->canvasWidget()->scrollToOffset(frame->topLeft());
538void KWDocStructTableItem::editItem()
541 gui()->canvasWidget()->editTextFrameSet(m_table->cell(0,0), 0L, 0);
544void KWDocStructTableItem::deleteItem()
547 gui()->getView()->deselectAllFrames();
548 gui()->getView()->deleteFrameSet(m_table);
551void KWDocStructTableItem::editProperties()
553 gui()->canvasWidget()->editFrameProperties(m_table);
556void KWDocStructTableItem::speakItem()
559 for (uint row = 0; row < m_table->getRows(); ++row) {
560 for (uint col = 0; col < m_table->getColumns(); ++ col) {
561 KoTextParag* parag = m_table->cell(row, col)->textDocument()->firstParag();
562 kospeaker->queueSpeech(parag->toString(), parag->paragraphFormat()->language(), first);
564 parag = parag->next();
565 for ( ; parag ; parag = parag->next() )
566 kospeaker->queueSpeech(parag->toString(), parag->paragraphFormat()->language(),
false);
569 kospeaker->startSpeech();
572KWDocStructTextFrameItem* KWDocStructTableItem::findCellItem(
const KWTextFrameSet* cell)
574 if ( childCount() > 0 )
576 TQListViewItem *child = firstChild();
579 if (
dynamic_cast<KWDocStructTextFrameItem *
>(child)->frameSet() == cell)
580 return dynamic_cast<KWDocStructTextFrameItem *
>(child);
581 child = child->nextSibling();
592KWDocStructPictureItem::KWDocStructPictureItem(TQListViewItem* parent,
const TQString& text,
593 KWPictureFrameSet* pic)
594 : KWDocListViewItem(parent, text), m_pic(pic)
598void KWDocStructPictureItem::contextMenu(TQListViewItem* item,
const TQPoint& p,
int )
601 gui()->getView()->openDocStructurePopupMenu(p, m_pic, 0);
605void KWDocStructPictureItem::selectItem()
607 KWFrame *frame = m_pic->frame(0);
608 gui()->canvasWidget()->scrollToOffset(frame->topLeft() );
612void KWDocStructPictureItem::editItem()
618void KWDocStructPictureItem::deleteItem()
620 gui()->getView()->deleteFrameSet(m_pic);
623void KWDocStructPictureItem::editProperties()
625 gui()->canvasWidget()->editFrameProperties(m_pic);
632KWDocStructFormulaItem::KWDocStructFormulaItem(TQListViewItem* parent,
const TQString& text,
633 KWFormulaFrameSet* form)
634 : KWDocListViewItem(parent, text), m_form(form)
638void KWDocStructFormulaItem::contextMenu(TQListViewItem* item,
const TQPoint& p,
int )
641 gui()->getView()->openDocStructurePopupMenu(p, m_form, 0);
644void KWDocStructFormulaItem::selectItem()
646 KWFrame* frame = m_form->frame( 0 );
647 gui()->canvasWidget()->scrollToOffset(frame->topLeft());
650void KWDocStructFormulaItem::editItem()
654 gui()->canvasWidget()->editFrameSet(m_form);
658void KWDocStructFormulaItem::deleteItem()
660 gui()->getView()->deleteFrameSet(m_form);
663void KWDocStructFormulaItem::editProperties()
665 gui()->canvasWidget()->editFrameProperties(m_form);
668void KWDocStructFormulaItem::speakItem()
678KWDocStructPartItem::KWDocStructPartItem(TQListViewItem* parent,
const TQString& text,
680 : KWDocListViewItem(parent, text), m_part(part)
684void KWDocStructPartItem::contextMenu(TQListViewItem* item,
const TQPoint& p,
int )
687 gui()->getView()->openDocStructurePopupMenu(p, m_part, 0);
691void KWDocStructPartItem::selectItem()
693 KWFrame* frame = m_part->frame(0);
694 gui()->canvasWidget()->scrollToOffset(frame->topLeft());
697void KWDocStructPartItem::editItem()
704void KWDocStructPartItem::deleteItem()
706 gui()->getView()->deleteFrameSet(m_part);
709void KWDocStructPartItem::editProperties()
711 gui()->canvasWidget()->editFrameProperties(m_part);
718KWDocStructRootItem::KWDocStructRootItem(TQListView* parent,
const TQString& text,
719 TypeStructDocItem type )
720 : KWDocListViewItem(parent, text), m_type(type)
724 setPixmap( 0, TDEGlobal::iconLoader()->loadIcon(
"tree_arrange", TDEIcon::Small ) );
727 setPixmap( 0, TDEGlobal::iconLoader()->loadIcon(
"frame_text", TDEIcon::Small ) );
729 case FormulaFrames: {
730 setPixmap( 0, TDEGlobal::iconLoader()->loadIcon(
"frame_formula", TDEIcon::Small ) );
733 setPixmap( 0, TDEGlobal::iconLoader()->loadIcon(
"inline_table", TDEIcon::Small ) );
736 setPixmap( 0, TDEGlobal::iconLoader()->loadIcon(
"frame_image", TDEIcon::Small ) );
739 setPixmap( 0, TDEGlobal::iconLoader()->loadIcon(
"frame_query", TDEIcon::Small ) );
744void KWDocStructRootItem::setOpen(
bool o)
754 setupTextFrameSets();
757 setupFormulaFrames();
770 TQListViewItem::setOpen(o);
773void KWDocStructRootItem::setupArrangement()
777 TQIntDict<KWDocStructParagItem> parags;
778 parags.setAutoDelete(
false );
782 KoTextDocument* textdoc = 0L;
784 KWDocument* dok = doc();
785 KWDocStructTextFrameSetItem *item = 0L;
788 for (
int i = dok->frameSetCount() - 1; i >= 0; i-- )
790 frameset = dok->frameSet( i );
794 item =
new KWDocStructTextFrameSetItem(
this, frameset->
name(), tmpParag);
795 textdoc= tmpParag->textDocument();
796 parag =
static_cast<KWTextParag *
>(textdoc->firstParag());
799 KoParagCounter *tmpCounter = parag->counter();
800 if (tmpCounter !=0 && (tmpCounter->style() != KoParagCounter::STYLE_NONE) && (tmpCounter->numbering() == KoParagCounter::NUM_CHAPTER) )
802 int _depth = tmpCounter->depth();
805 if ( item->childCount() == 0 )
806 parags.replace( _depth,
new KWDocStructParagItem( item,TQString( tmpCounter->text(parag) +
" " +parag->string()->toString().mid( 0, parag->string()->length() ) ),parag) );
808 parags.replace( _depth,
new KWDocStructParagItem( item, parags[ _depth ],TQString( tmpCounter->text(parag) +
" " +parag->string()->toString().mid( 0, parag->string()->length() ) ),parag) );
812 if (parags[ _depth - 1 ]==0)
813 parags.replace( _depth,
new KWDocStructParagItem( item,TQString( tmpCounter->text(parag) +
" " +parag->string()->toString().mid( 0, parag->string()->length() ) ), parag) );
814 else if ( parags[ _depth - 1 ]->childCount() == 0 )
815 parags.replace( _depth,
new KWDocStructParagItem( parags[ _depth - 1 ],TQString( tmpCounter->text(parag) +
" " +parag->string()->toString().mid( 0, parag->string()->length() ) ), parag) );
817 parags.replace( _depth,
new KWDocStructParagItem( parags[ _depth - 1 ], parags[ _depth ],TQString( tmpCounter->text(parag) +
" " +parag->string()->toString().mid( 0, parag->string()->length() ) ), parag) );
825 if ( childCount() == 0 )
826 (
void )
new TDEListViewItem(
this, i18n(
"Empty" ) );
830void KWDocStructRootItem::setupTextFrameSets()
834 TQListViewItem* lvItem = firstChild();
835 if (lvItem && (lvItem->text(0) == i18n(
"Empty")))
delete lvItem;
838 KWDocument* dok = doc();
839 TQValueList<KWOrderedFrameSet> orderedFrameSets;
840 for (
int i = dok->frameSetCount() - 1; i >= 0; i-- ) {
842 if ( frameset->
type() == FT_TEXT && frameset->
frameSetInfo() == KWFrameSet::FI_BODY &&
847 qHeapSort(orderedFrameSets);
850 TQPtrList<KWTextFrameSet> frameSetPtrs;
851 frameSetPtrs.setAutoDelete(
false);
852 for ( uint i = 0; i < orderedFrameSets.count(); i++ )
853 frameSetPtrs.append(
dynamic_cast<KWTextFrameSet *
>(orderedFrameSets[i].frameSet()));
856 KWDocStructTextFrameSetItem* item =
dynamic_cast<KWDocStructTextFrameSetItem *
>(firstChild());
857 KWDocStructTextFrameSetItem* delItem;
860 item =
dynamic_cast<KWDocStructTextFrameSetItem *
>(item->nextSibling());
861 if (frameSetPtrs.containsRef(delItem->frameSet()) == 0)
delete delItem;
865 KWDocStructTextFrameSetItem* after = 0L;
866 for ( uint i = 0; i < orderedFrameSets.count(); i++ )
869 item = findTextFrameSetItem(textFrameset);
871 item->setText(0, textFrameset->
name());
874 item =
new KWDocStructTextFrameSetItem(
875 this, after, textFrameset->
name(), textFrameset);
877 item =
new KWDocStructTextFrameSetItem(
this, textFrameset->
name(), textFrameset);
880 item->setupTextFrames();
883 if ( childCount() == 0 )
884 ( void )
new TDEListViewItem(
this, i18n(
"Empty" ) );
887void KWDocStructRootItem::setupFormulaFrames()
893 KWDocStructFormulaItem* child;
894 KWDocument* dok = doc();
896 for (
int i = dok->frameSetCount() - 1; i >= 0; i-- )
898 frameset = dok->frameSet( i );
899 if ( frameset->
type() == FT_FORMULA &&
902 _name=i18n(
"Formula Frame %1").arg(TQString::number(i+1));
903 child =
new KWDocStructFormulaItem(
this, _name,
dynamic_cast<KWFormulaFrameSet*
>( frameset ));
907 if ( childCount() == 0 )
908 ( void )
new TDEListViewItem(
this, i18n(
"Empty" ) );
911void KWDocStructRootItem::setupTables()
914 TQListViewItem* lvItem = firstChild();
915 if (lvItem && (lvItem->text(0) == i18n(
"Empty")))
delete lvItem;
918 KWDocument* dok = doc();
919 TQValueList<KWOrderedFrameSet> orderedFrameSets;
920 for (
int i = dok->frameSetCount() - 1; i >= 0; i-- ) {
922 if ( frameset->
type() == FT_TABLE)
925 qHeapSort(orderedFrameSets);
928 TQPtrList<KWTableFrameSet> frameSetPtrs;
929 frameSetPtrs.setAutoDelete(
false);
930 for ( uint i = 0; i < orderedFrameSets.count(); i++ )
931 frameSetPtrs.append(
dynamic_cast<KWTableFrameSet *
>(orderedFrameSets[i].frameSet()));
934 KWDocStructTableItem* item =
dynamic_cast<KWDocStructTableItem *
>(firstChild());
935 KWDocStructTableItem* delItem;
938 item =
dynamic_cast<KWDocStructTableItem *
>(item->nextSibling());
939 if (frameSetPtrs.containsRef(delItem->table()) == 0)
delete delItem;
943 KWDocStructTableItem* after = 0L;
944 for ( uint i = 0; i < orderedFrameSets.count(); i++ )
947 item = findTableItem(tableFrameset);
949 item->setText(0, tableFrameset->
name());
952 item =
new KWDocStructTableItem(
953 this, after, tableFrameset->
name(), tableFrameset);
955 item =
new KWDocStructTableItem(
this, tableFrameset->
name(), tableFrameset);
961 if ( childCount() == 0 )
962 ( void )
new TDEListViewItem(
this, i18n(
"Empty" ) );
965void KWDocStructRootItem::setupPictures()
971 KWDocStructPictureItem* child;
972 KWDocument* dok = doc();
975 for (
int i = dok->frameSetCount() - 1; i >= 0; i-- )
977 frameset = dok->frameSet( i );
980 _name=i18n(
"Picture (%1) %2").arg(
dynamic_cast<KWPictureFrameSet*
>( frameset )->key().filename()).arg(++j);
981 child =
new KWDocStructPictureItem(
this, _name,
dynamic_cast<KWPictureFrameSet*
>( frameset ));
985 if ( childCount() == 0 )
986 ( void )
new TDEListViewItem(
this, i18n(
"Empty" ) );
989void KWDocStructRootItem::setupEmbedded()
995 KWDocStructPartItem* child;
996 KWDocument* dok = doc();
998 for (
int i = dok->frameSetCount() - 1; i >= 0; i-- )
1000 frameset = dok->frameSet( i );
1004 _name=frameset->
name();
1005 child =
new KWDocStructPartItem(
this, _name,
dynamic_cast<KWPartFrameSet*
>( frameset ));
1009 if ( childCount() == 0 )
1010 ( void )
new TDEListViewItem(
this, i18n(
"Empty" ) );
1013KWDocStructTextFrameSetItem* KWDocStructRootItem::findTextFrameSetItem(
const KWFrameSet* frameset)
1015 if ( childCount() > 0 )
1017 TQListViewItem *child = firstChild();
1020 if (
dynamic_cast<KWDocStructTextFrameSetItem *
>(child)->frameSet() == frameset)
1021 return dynamic_cast<KWDocStructTextFrameSetItem *
>(child);
1022 child = child->nextSibling();
1028KWDocStructTableItem* KWDocStructRootItem::findTableItem(
const KWFrameSet* frameset)
1030 if ( childCount() > 0 )
1032 TQListViewItem *child = firstChild();
1035 if (
dynamic_cast<KWDocStructTableItem *
>(child)->table() == frameset)
1036 return dynamic_cast<KWDocStructTableItem *
>(child);
1037 child = child->nextSibling();
1049KWDocStructTree::KWDocStructTree(TQWidget* parent, KWDocument* doc, KWGUI* gui)
1050 : TDEListView(parent), m_doc(doc), m_gui(gui)
1052 embedded =
new KWDocStructRootItem(
this, i18n(
"Embedded Objects" ), Embedded);
1053 formulafrms =
new KWDocStructRootItem(
this, i18n(
"Formula Frames" ), FormulaFrames);
1054 tables =
new KWDocStructRootItem(
this, i18n(
"Tables" ), Tables);
1055 pictures =
new KWDocStructRootItem(
this, i18n(
"Pictures" ), Pictures);
1056 textfrms =
new KWDocStructRootItem(
this, i18n(
"Text Frames/Frame Sets" ), TextFrames);
1059 addColumn( i18n(
"Document Structure" ) );
1060 setFullWidth(
true );
1062 connect(
this, TQ_SIGNAL( doubleClicked(TQListViewItem*) ),
1063 this, TQ_SLOT( slotDoubleClicked(TQListViewItem*)) );
1064 connect(
this, TQ_SIGNAL( returnPressed(TQListViewItem*) ),
1065 this, TQ_SLOT( slotReturnPressed(TQListViewItem* )) );
1066 connect(
this, TQ_SIGNAL(rightButtonClicked(TQListViewItem*,
const TQPoint&,
int)),
1067 this, TQ_SLOT( slotRightButtonClicked(TQListViewItem *,
const TQPoint&,
int)));
1068 connect(
this, TQ_SIGNAL(contextMenu(TDEListView*, TQListViewItem*,
const TQPoint&)),
1069 this, TQ_SLOT(slotContextMenu(TDEListView*, TQListViewItem*,
const TQPoint&)) );
1072KWDocStructTree::~KWDocStructTree()
1082void KWDocStructTree::setup()
1084 setRootIsDecorated(
true );
1086 refreshTree((
int)(TextFrames | FormulaFrames | Tables | Pictures | Embedded));
1089void KWDocStructTree::refreshTree(
int type)
1092 TQString curItemText;
1093 if (currentItem()) curItemText = currentItem()->text(0);
1096 if(((
int)TextFrames) & type)
1097 textfrms->setupTextFrameSets();
1098 if(((
int)FormulaFrames) & type)
1099 formulafrms->setupFormulaFrames();
1100 if(((
int)Tables) & type)
1101 tables->setupTables();
1102 if(((
int)Pictures) & type)
1103 pictures->setupPictures();
1104 if(((
int)Embedded) & type)
1105 embedded->setupEmbedded();
1106 if (!curItemText.isEmpty()) {
1107 TQListViewItem* item = findItem(curItemText, 0);
1108 if (item) setCurrentItem(item);
1112void KWDocStructTree::selectItem()
1114 TQListViewItem* select = currentItem ();
1115 KWDocListViewItem* tmp =
dynamic_cast<KWDocListViewItem *
>(select);
1120void KWDocStructTree::editItem()
1122 TQListViewItem* select = currentItem();
1123 KWDocListViewItem* tmp =
dynamic_cast<KWDocListViewItem *
>(select);
1129void KWDocStructTree::deleteItem()
1131 TQListViewItem* select = currentItem();
1132 KWDocListViewItem *tmp =
dynamic_cast<KWDocListViewItem *
>(select);
1137void KWDocStructTree::editProperties()
1139 TQListViewItem* select = currentItem();
1140 KWDocListViewItem* tmp =
dynamic_cast<KWDocListViewItem *
>(select);
1142 tmp->editProperties();
1145void KWDocStructTree::speakItem()
1147 TQListViewItem* select = currentItem();
1148 KWDocListViewItem* tmp =
dynamic_cast<KWDocListViewItem *
>(select);
1153void KWDocStructTree::slotContextMenu(TDEListView* lv, TQListViewItem* i,
const TQPoint& p)
1157 KWDocListViewItem *item =
dynamic_cast<KWDocListViewItem *
>(i);
1159 item->contextMenu(item, p, 0);
1162void KWDocStructTree::slotRightButtonClicked(TQListViewItem* i,
const TQPoint& p,
int)
1164 KWDocListViewItem* item =
dynamic_cast<KWDocListViewItem *
>(i);
1166 item->contextMenu(item, p, 0);
1169void KWDocStructTree::slotDoubleClicked(TQListViewItem* i)
1171 KWDocListViewItem* item =
dynamic_cast<KWDocListViewItem *
>(i);
1176void KWDocStructTree::slotReturnPressed(TQListViewItem* i)
1178 KWDocListViewItem* item =
dynamic_cast<KWDocListViewItem *
>(i);
1182 m_gui->canvasWidget()->setFocus();
1191KWDocStruct::KWDocStruct(TQWidget* parent, KWDocument* doc, KWGUI* gui)
1192 : TQWidget(parent), m_doc(doc), m_gui(gui)
1194 m_layout =
new TQVBoxLayout(
this );
1196 TDEToolBar* searchBar =
new TDEToolBar(
this );
1197 searchBar->setFlat(
true );
1198 searchBar->setMovingEnabled(
false );
1200 TDEToolBarButton* eraseButton =
new TDEToolBarButton(
"locationbar_erase", 0, searchBar );
1201 m_tree =
new KWDocStructTree(
this, doc, gui );
1202 m_tree->setAlternateBackground( TDEGlobalSettings::alternateBackgroundColor() );
1203 TDEListViewSearchLine* searchLine =
new TDEListViewSearchLine( searchBar, m_tree );
1204 searchBar->setStretchableWidget( searchLine );
1205 connect( eraseButton, TQ_SIGNAL( clicked() ), searchLine, TQ_SLOT( clear() ) );
1207 m_layout->addWidget(searchBar);
1208 m_layout->addWidget(m_tree);
1213void KWDocStruct::paintEvent (TQPaintEvent* ev)
1215 if (dirtyTreeTypes) {
1216 m_tree->refreshTree(dirtyTreeTypes);
1219 TQWidget::paintEvent(ev);
1222void KWDocStruct::refreshTree(
int type)
1224 if ((dirtyTreeTypes | type) != dirtyTreeTypes) {
1225 dirtyTreeTypes |= type;
1230void KWDocStruct::refreshEntireTree()
1232 refreshTree((
int)(TextFrames | FormulaFrames | Tables | Pictures | Embedded));
1235void KWDocStruct::setFocusHere()
1238 if (m_tree->isVisible()) m_tree->setFocus();
1241void KWDocStruct::selectItem()
1243 m_tree->selectItem();
1246void KWDocStruct::editItem()
1251void KWDocStruct::deleteItem()
1253 m_tree->deleteItem();
1256void KWDocStruct::editProperties()
1258 m_tree->editProperties();
1261void KWDocStruct::speakItem()
1263 m_tree->speakItem();
Class: KWFrameSet Base type, a frameset holds content as well as frames to show that content.
virtual FrameSetType type() const
The type of frameset.
unsigned int frameCount() const
Get number of child frames.
KWTableFrameSet * groupmanager() const
returns the groupManager this frameset belongs to.
KWFrame * frame(unsigned int _num) const
get a frame by number
TQString name() const
get/set frameset name. For tables in particular, this must be unique
Info frameSetInfo() const
Returns the type of TextFrameSet this is.
This class represents a single frame.
Provides a way to sort framesets using a TQValueList based on their top left corner.
A frameset that contains an embedded object (a KWDocumentChild)
This class implements tables by acting as the manager for the frame(set)s which make up the table cel...
KWTextFrameSet * textFrameSet() const
Return the text frameset in which this document is.
Class: KWTextFrameSet Contains text (KoTextObject) and frames to display that text.
KWFrame * internalToDocument(const KoPoint &relPoint, KoPoint &dPoint) const
Convert the in the internal qtextdoc coordinates (in layout units) into a point in the document coord...
This class extends KoTextParag for KWord-specific formatting stuff, custom items, loading and saving.