21#include "kivioarrowheadaction.h"
22#include "kivioglobal.h"
29#include <tqwhatsthis.h>
31#include <tdepopupmenu.h>
32#include <tdetoolbar.h>
35#include <tdeapplication.h>
36#include <tdetoolbarbutton.h>
37#include <kstandarddirs.h>
38#include <kiconloader.h>
40KivioArrowHeadAction::KivioArrowHeadAction(
const TQString &text,
const TQString &pix,
41 TQObject* parent,
const char *name)
42 : TDEActionMenu(text, pix, parent, name)
45 setShortcutConfigurable(
false );
46 m_popup =
new TDEPopupMenu(0L,
"KivioArrowHeadAction::popup");
47 m_startPopup =
new TDEPopupMenu;
48 m_endPopup =
new TDEPopupMenu;
49 m_startPopup->setCheckable(
true);
50 m_endPopup->setCheckable(
true);
51 m_popup->insertItem(SmallIconSet(
"start_arrowhead", 16), i18n(
"Arrowhead at Origin"), m_startPopup);
52 m_popup->insertItem(SmallIconSet(
"end_arrowhead", 16), i18n(
"Arrowhead at End"), m_endPopup);
53 loadArrowHeads(m_startPopup);
54 loadArrowHeads(m_endPopup);
55 m_currentStart = m_currentEnd = 0;
56 m_startPopup->setItemChecked(0,
true);
57 m_endPopup->setItemChecked(0,
true);
58 connect(m_startPopup, TQ_SIGNAL(activated(
int)), TQ_SLOT(setCurrentStartArrow(
int)));
59 connect(m_endPopup, TQ_SIGNAL(activated(
int)), TQ_SLOT(setCurrentEndArrow(
int)));
62KivioArrowHeadAction::~KivioArrowHeadAction()
72TDEPopupMenu* KivioArrowHeadAction::popupMenu()
const
77void KivioArrowHeadAction::popup(
const TQPoint& global )
79 popupMenu()->popup(global);
82int KivioArrowHeadAction::plug( TQWidget* widget,
int index)
85 if (kapp && !kapp->authorizeTDEAction(name()))
87 kdDebug(129) <<
"TDEAction::plug( " << widget <<
", " << index <<
" )" << endl;
88 if ( widget->inherits(
"TQPopupMenu") )
90 TQPopupMenu* menu =
static_cast<TQPopupMenu*
>( widget );
94 id = menu->insertItem( iconSet(), text(), popupMenu(), -1, index );
96 id = menu->insertItem( kapp->iconLoader()->loadIcon(icon(), TDEIcon::Small),
97 text(), popupMenu(), -1, index );
100 menu->setItemEnabled(
id,
false );
102 addContainer( menu,
id );
103 connect( menu, TQ_SIGNAL( destroyed() ),
this, TQ_SLOT( slotDestroyed() ) );
105 return containerCount() - 1;
107 else if ( widget->inherits(
"TDEToolBar" ) )
109 TDEToolBar *bar =
static_cast<TDEToolBar *
>( widget );
111 int id_ = TDEAction::getToolButtonID();
113 if ( icon().isEmpty() && !iconSet().isNull() )
114 bar->insertButton( iconSet().pixmap(), id_, TQ_SIGNAL( clicked() ),
this,
115 TQ_SLOT( slotActivated() ), isEnabled(), plainText(),
119 TDEInstance *instance;
121 if ( m_parentCollection )
122 instance = m_parentCollection->instance();
124 instance = TDEGlobal::instance();
126 bar->insertButton( icon(), id_, TQ_SIGNAL( clicked() ),
this,
127 TQ_SLOT( slotActivated() ), isEnabled(), plainText(),
131 addContainer( bar, id_ );
133 if (!whatsThis().isEmpty())
134 TQWhatsThis::add( bar->getButton(id_), whatsThis() );
136 connect( bar, TQ_SIGNAL( destroyed() ),
this, TQ_SLOT( slotDestroyed() ) );
138 bar->getButton(id_)->setPopup(popupMenu(),
true );
140 return containerCount() - 1;
142 else if ( widget->inherits(
"TQMenuBar" ) )
144 TQMenuBar *bar =
static_cast<TQMenuBar *
>( widget );
148 id = bar->insertItem( text(), popupMenu(), -1, index );
151 bar->setItemEnabled(
id,
false );
153 addContainer( bar,
id );
154 connect( bar, TQ_SIGNAL( destroyed() ),
this, TQ_SLOT( slotDestroyed() ) );
156 return containerCount() - 1;
162void KivioArrowHeadAction::loadArrowHeads(TDEPopupMenu* popup)
165 TQPixmap pixAll = Kivio::arrowHeadPixmap();
166 TQPixmap pix(pixAll.width(), 17);
167 TQPainter p(&pix, popup);
171 popup->insertItem(i18n(
"no line end",
"None"),cindex++);
173 for (
int y = 0; y < pixAll.height(); y += 17 ) {
175 p.drawPixmap(0, 0, pixAll, 0, y, pix.width(), pix.height());
176 popup->insertItem(pix, cindex++);
182int KivioArrowHeadAction::currentStartArrow()
184 return m_currentStart;
187int KivioArrowHeadAction::currentEndArrow()
192void KivioArrowHeadAction::setCurrentStartArrow(
int c)
194 m_startPopup->setItemChecked(m_currentStart,
false);
196 m_startPopup->setItemChecked(m_currentStart,
true);
199 emit startChanged(m_currentStart);
203void KivioArrowHeadAction::setCurrentEndArrow(
int c)
205 m_endPopup->setItemChecked(m_currentEnd,
false);
207 m_endPopup->setItemChecked(m_currentEnd,
true);
210 emit endChanged(m_currentEnd);
214#include "kivioarrowheadaction.moc"