19#include "kivioaddstencilsetpanel.h"
23#include <tqstringlist.h>
24#include <tqiconview.h>
25#include <tqgroupbox.h>
26#include <tqpushbutton.h>
27#include <tqtextbrowser.h>
28#include <tqsplitter.h>
30#include <kstandarddirs.h>
32#include <tdelistview.h>
34#include "kivio_stencil_spawner_set.h"
35#include "kivio_stencil_spawner.h"
36#include "kivio_stencil_spawner_info.h"
37#include "kivio_stencil.h"
38#include "kivioglobal.h"
41 AddStencilSetPanel::AddStencilSetPanel(TQWidget *parent,
const char *name)
42 : KivioStencilSetWidget(parent, name)
44 int height = m_stencilsetGBox->height() / 2;
45 TQValueList<int> sizes;
46 sizes << height << height;
47 m_stencilSetSplitter->setSizes(sizes);
50 connect(m_stencilSetLView, TQ_SIGNAL(selectionChanged(TQListViewItem*)),
this, TQ_SLOT(changeStencilSet(TQListViewItem*)));
51 connect(m_addToDocBtn, TQ_SIGNAL(clicked()),
this, TQ_SLOT(addToDocument()));
53 TQListViewItem* tmp = m_stencilSetLView->firstChild();
56 tmp = tmp->firstChild();
59 m_stencilSetLView->setSelected(tmp,
true);
60 m_stencilSetLView->ensureItemVisible(tmp);
63#if KDE_IS_VERSION(3,4,0)
64 m_stencilSetLView-> setShadeSortColumn(
false);
69 AddStencilSetPanel::~AddStencilSetPanel()
73 void AddStencilSetPanel::updateList()
75 TDEStandardDirs *dirs = TDEGlobal::dirs();
76 TQStringList dirList = dirs->findDirs(
"data",
"kivio/stencils");
78 m_stencilSetLView->clear();
80 for(TQStringList::Iterator it = dirList.begin(); it != dirList.end(); ++it)
87 void AddStencilSetPanel::loadCollections(
const TQString& dir)
91 rootDir.setFilter( TQDir::Dirs );
92 rootDir.setSorting( TQDir::Name );
94 const TQFileInfoList *colList = rootDir.entryInfoList();
95 TQFileInfoListIterator colIt( *colList );
99 while((colFInfo = colIt.current()))
101 if((colFInfo->fileName() !=
"..") && (colFInfo->fileName() !=
"."))
103 cId = KivioStencilSpawnerSet::readId(colFInfo->absFilePath());
104 TQListViewItem* li = m_stencilSetLView->firstChild();
107 if(li->text(1) == cId) {
111 li = li->nextSibling();
115 li =
new TDEListViewItem(m_stencilSetLView,
116 KivioStencilSpawnerSet::readTitle(colFInfo->absFilePath()),
117 KivioStencilSpawnerSet::readId(colFInfo->absFilePath()));
118 li->setPixmap(0, loadIcon(
"icon", colFInfo->absFilePath()));
121 loadStencilSet(li, dir +
"/" + colFInfo->fileName());
128 void AddStencilSetPanel::loadStencilSet(TQListViewItem* li,
const TQString& dir)
130 TQDir rootDir( dir );
132 rootDir.setFilter( TQDir::Dirs );
133 rootDir.setSorting( TQDir::Name );
135 const TQFileInfoList *setList = rootDir.entryInfoList();
136 TQFileInfoListIterator setIt( *setList );
137 TQFileInfo *setFInfo;
139 while( (setFInfo = setIt.current()) )
141 if( setFInfo->fileName() !=
".." && setFInfo->fileName() !=
"." )
143 TDEListViewItem* tmp =
new TDEListViewItem(li, KivioStencilSpawnerSet::readTitle(setFInfo->absFilePath()),
144 dir +
"/" + setFInfo->fileName());
145 tmp->setPixmap(0, loadIcon(
"icon", setFInfo->absFilePath()));
147 if(m_currentDir == setFInfo->absFilePath()) {
148 tmp->setSelected(
true);
149 m_stencilSetLView->ensureItemVisible(tmp);
157 TQPixmap AddStencilSetPanel::loadIcon(
const TQString& name,
const TQString& dir)
161 if( TQFile::exists(dir +
"/" + name +
".xpm") ) {
162 fs = dir +
"/" + name +
".xpm";
163 }
else if( TQFile::exists(dir +
"/" + name +
".png") ) {
164 fs = dir +
"/" + name +
".png";
169 return TQPixmap( fs );
172 void AddStencilSetPanel::changeStencilSet(TQListViewItem* li)
174 if(!li || !li->parent()) {
178 m_stencilsetGBox->setTitle(li->text(0));
179 m_addToDocBtn->setEnabled(
true);
180 KivioStencilSpawnerSet* spawnerSet =
new KivioStencilSpawnerSet(li->text(0));
182 m_currentDir = li->text(1);
183 spawnerSet->loadDir(m_currentDir);
184 TQStringList files = spawnerSet->files();
187 m_stencilIView->clear();
188 KivioStencilSpawner* spawner = 0;
189 KivioStencil* stencil = 0;
192 for(TQStringList::Iterator it = files.begin(); it != files.end(); ++it)
194 spawner = spawnerSet->loadFile(m_currentDir +
"/" + (*it));
197 stencil = spawner->newStencil();
200 (void)
new TQIconViewItem(m_stencilIView, spawner->info()->title(), Kivio::generatePixmapFromStencil(32, 32, stencil));
211 m_descriptionBrowser->setText(KivioStencilSpawnerSet::readDescription(m_currentDir));
216 void AddStencilSetPanel::addToDocument()
218 if(m_currentDir.isEmpty()) {
222 emit addStencilSet(m_currentDir);
226#include "kivioaddstencilsetpanel.moc"