You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kscope/src/queryresultsmenu.cpp

171 lines
4.7 KiB

/***************************************************************************
*
* Copyright (C) 2005 Elad Lahav (elad_lahav@users.sourceforge.net)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
***************************************************************************/
#include <tdelocale.h>
#include "queryresultsmenu.h"
/**
* Class constructor.
* @param pParent Parent widget
* @param szName Optional object name
*/
QueryResultsMenu::QueryResultsMenu(TQWidget* pParent, const char* szName) :
TQPopupMenu(pParent, szName),
m_pItem(NULL)
{
// Create the menu
insertItem(i18n("&View Source"), this, SLOT(slotViewSource()), 0,
ViewSource);
insertItem(i18n("Find &Definition"), this, SLOT(slotFindDef()), 0,
FindDef);
insertSeparator();
insertItem(i18n("&Copy"), this, SLOT(slotCopy()), 0, Copy);
insertSeparator();
insertItem(i18n("&Filter..."), this, SLOT(slotFilter()), 0, Filter);
insertItem(i18n("&Show All"), this, SIGNAL(showAll()), 0, ShowAll);
insertSeparator();
insertItem(i18n("&Remove Item"), this, SLOT(slotRemove()), 0, Remove);
}
/**
* Class destructor.
*/
QueryResultsMenu::~QueryResultsMenu()
{
}
/**
* Displays the popup-menu at the requested coordinates.
* @param pItem The item on which the menu was requested
* @param ptPos The requested position for the menu
* @param nCol The column over which the menu was requested, -1 if no
* column is associated with the request
*/
void QueryResultsMenu::slotShow(TQListViewItem* pItem, const TQPoint& ptPos,
int nCol)
{
// Save the requested item and column number to use in signals
m_pItem = pItem;
m_nCol = nCol;
if (m_pItem == NULL) {
// No item selected, disable everything but the "Filter" and "Show All"
// items
setItemEnabled(ViewSource, false);
setItemEnabled(FindDef, false);
setItemEnabled(Copy, false);
setItemEnabled(Remove, false);
}
else {
// Item selected, enable record-specific actions
setItemEnabled(ViewSource, true);
setItemEnabled(Copy, true);
setItemEnabled(Remove, true);
// The "Find Definition" item should only be enabled if the mouse
// was clicked over a valid function name
setItemEnabled(FindDef, (m_nCol == 0) &&
(m_pItem->text(0) != "<global>"));
// Set menu contents according to the column number
switch (m_nCol) {
case 0:
changeItem(Copy, "&Copy Function");
break;
case 1:
changeItem(Copy, "&Copy File");
break;
case 2:
changeItem(Copy, "&Copy Line Number");
break;
case 3:
changeItem(Copy, "&Copy Text");
break;
default:
m_nCol = 0;
}
}
// Show the menu
popup(ptPos);
}
/**
* Emits the viewSource() signal.
* This slot is activated when the "View Source" item is selected.
*/
void QueryResultsMenu::slotViewSource()
{
if (m_pItem != NULL)
emit viewSource(m_pItem);
}
/**
* Emits the findDef() signal.
* This slot is activated when the "Find Definition" item is selected.
*/
void QueryResultsMenu::slotFindDef()
{
if (m_pItem != NULL)
emit findDef(m_pItem->text(0));
}
/**
* Emits the copy() signal.
* This slot is activated when the "Copy [Column]" item is selected.
*/
void QueryResultsMenu::slotCopy()
{
if (m_pItem != NULL)
emit copy(m_pItem, m_nCol);
}
/**
* Emits the filter() signal.
* This slot is activated when the "Filter..." item is selected.
*/
void QueryResultsMenu::slotFilter()
{
emit filter(m_nCol);
}
/**
* Emits the remove() signal.
* This slot is activated when the "Remove" item is selected.
*/
void QueryResultsMenu::slotRemove()
{
if (m_pItem != NULL)
emit remove(m_pItem);
}
#include "queryresultsmenu.moc"