Unified Code Counter (UCC) by the USC Center for Systems and Software Engineering, SLOC counter sources
http://csse.usc.edu/ucc_new/wordpress/
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.
384 lines
9.1 KiB
384 lines
9.1 KiB
//! GExtensionDialog class methods.
|
|
/*!
|
|
* \file GExtensionDialog.cpp
|
|
*
|
|
* This file contains the GExtensionDialog class methods.
|
|
*/
|
|
|
|
#include <QFile>
|
|
#include <QInputDialog>
|
|
#include <QMenu>
|
|
#include <QMessageBox>
|
|
#include "GExtensionDialog.h"
|
|
#include <QFileDialog> //Modification: 2018.04
|
|
#include "QFileInfo" //Modification: 2018.04
|
|
#include "GMainWindow.h" //Modification: 2018.04
|
|
|
|
/*!
|
|
* Constructs a GExtensionDialog object.
|
|
*
|
|
* \param extensionMapDefault map of default language extensions
|
|
* \param extensionMapCustom map of custom language extensions
|
|
* \param parent parent widget
|
|
* \param f window flags
|
|
*/
|
|
GExtensionDialog::GExtensionDialog(QMap<QString, QStringList *> *extensionMapDefault, QMap<QString, QStringList *> *extensionMapCustom,
|
|
QWidget *parent, Qt::WindowFlags f)
|
|
: QDialog(parent, f)
|
|
{
|
|
ui.setupUi(this);
|
|
|
|
extMapDefault = extensionMapDefault;
|
|
extMapCustom = extensionMapCustom;
|
|
customChanged = false;
|
|
extChanged = false;
|
|
|
|
QListWidgetItem *lwItem;
|
|
QFont font;
|
|
foreach (QString name, extMapDefault->keys())
|
|
{
|
|
ui.lwLanguages->addItem(name);
|
|
if (extMapCustom->contains(name))
|
|
{
|
|
lwItem = ui.lwLanguages->item(ui.lwLanguages->count() - 1);
|
|
font = lwItem->font();
|
|
font.setBold(true);
|
|
lwItem->setFont(font);
|
|
}
|
|
}
|
|
|
|
//Modification: 2018.04 Integration changes
|
|
bool flag = ((GMainWindow*)parent)->checkButtonClicked;
|
|
if(flag){
|
|
ui.pushButton_2->hide();
|
|
}
|
|
|
|
ui.tblExtensions->horizontalHeader()->setStretchLastSection(true);
|
|
connect(ui.lwLanguages, SIGNAL(itemClicked(QListWidgetItem *)), this, SLOT(languageSelected(QListWidgetItem *)));
|
|
connect(ui.tblExtensions, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(itemCustomContextMenuRequested(const QPoint &)));
|
|
}
|
|
|
|
/*!
|
|
* Destroys a GExtensionDialog object.
|
|
*/
|
|
GExtensionDialog::~GExtensionDialog()
|
|
{
|
|
}
|
|
|
|
/*!
|
|
* Updates list of extensions when a language is selected.
|
|
*
|
|
* \param lwItem selected list item
|
|
*/
|
|
void GExtensionDialog::languageSelected(QListWidgetItem *lwItem)
|
|
{
|
|
if (lwItem)
|
|
{
|
|
if (extChanged)
|
|
{
|
|
this->updateCustomExtensions();
|
|
extChanged = false;
|
|
}
|
|
|
|
QTableWidgetItem *tblItem;
|
|
//QStringList *extList; warning
|
|
QStringList *extList=NULL;
|
|
QString selLang = lwItem->text();
|
|
int i, cnt = 0;
|
|
|
|
for (i = ui.tblExtensions->rowCount() - 1; i >= 0; i--)
|
|
delete(ui.tblExtensions->takeItem(i, 0));
|
|
|
|
if (extMapCustom->contains(selLang))
|
|
extList = extMapCustom->value(selLang, 0);
|
|
else if (extMapDefault->contains(selLang))
|
|
extList = extMapDefault->value(selLang, 0);
|
|
|
|
ui.tblExtensions->setRowCount(extList->count());
|
|
if (extList->count() > 0)
|
|
{
|
|
for (i = 0; i < extList->count(); i++)
|
|
{
|
|
if (!extList->at(i).isEmpty())
|
|
{
|
|
tblItem = new QTableWidgetItem(extList->at(cnt));
|
|
tblItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
ui.tblExtensions->setItem(cnt, 0, tblItem);
|
|
cnt++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* Updates list of custom extensions.
|
|
*/
|
|
void GExtensionDialog::updateCustomExtensions()
|
|
{
|
|
if (extChanged)
|
|
{
|
|
QList<QListWidgetItem *> lwItems = ui.lwLanguages->selectedItems();
|
|
QListWidgetItem *lwItem;
|
|
QStringList *extList;
|
|
QString selLang;
|
|
int i;
|
|
|
|
if (lwItems.count() > 0)
|
|
{
|
|
lwItem = lwItems.first();
|
|
selLang = lwItem->text();
|
|
if (extMapCustom->contains(selLang))
|
|
extList = extMapCustom->value(selLang);
|
|
else
|
|
{
|
|
extList = new QStringList();
|
|
extMapCustom->insert(selLang, extList);
|
|
}
|
|
extList->clear();
|
|
|
|
for (i = 0; i < ui.tblExtensions->rowCount(); i++)
|
|
extList->append(ui.tblExtensions->item(i, 0)->text());
|
|
}
|
|
extChanged = false;
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* Loads a custom context menu for the extension table.
|
|
*
|
|
* \param pos location of mouse selection
|
|
*/
|
|
void GExtensionDialog::itemCustomContextMenuRequested(const QPoint &pos)
|
|
{
|
|
QMenu menu;
|
|
QAction *aItem = 0;
|
|
aItem = menu.addAction("Revert Selected Language Extensions", this, SLOT(revertSelLangExt()));
|
|
aItem = menu.addAction("Revert All Language Extensions", this, SLOT(revertAllLangExt()));
|
|
menu.exec(this->mapToGlobal(pos));
|
|
//Warning fix 11.25.16
|
|
(void)aItem;
|
|
}
|
|
|
|
/*!
|
|
* Reverts list of custom extensions to defaults for selected language.
|
|
*/
|
|
void GExtensionDialog::revertSelLangExt()
|
|
{
|
|
QList<QListWidgetItem *> lwItems = ui.lwLanguages->selectedItems();
|
|
QListWidgetItem *lwItem;
|
|
QFont font;
|
|
QStringList *extList;
|
|
QString langName;
|
|
|
|
if (lwItems.count() < 1)
|
|
return;
|
|
|
|
lwItem = lwItems.first();
|
|
langName = lwItem->text();
|
|
if (extMapCustom->contains(langName))
|
|
{
|
|
font = lwItem->font();
|
|
font.setBold(false);
|
|
lwItem->setFont(font);
|
|
|
|
extList = extMapCustom->value(langName);
|
|
delete(extList);
|
|
extMapCustom->remove(langName);
|
|
customChanged = true;
|
|
extChanged = false;
|
|
|
|
this->languageSelected(lwItem);
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* Reverts all custom extensions to defaults.
|
|
*/
|
|
void GExtensionDialog::revertAllLangExt()
|
|
{
|
|
QList<QListWidgetItem *> lwItems = ui.lwLanguages->selectedItems();
|
|
QListWidgetItem *lwItem;
|
|
QFont font;
|
|
QList<QStringList *> extLists;
|
|
int i;
|
|
|
|
if (extMapCustom->count() < 1)
|
|
return;
|
|
|
|
for (i = 0; i < ui.lwLanguages->count(); i++)
|
|
{
|
|
lwItem = ui.lwLanguages->item(i);
|
|
font = lwItem->font();
|
|
font.setBold(false);
|
|
lwItem->setFont(font);
|
|
}
|
|
|
|
extLists = extMapCustom->values();
|
|
for (i = extLists.count() - 1; i >= 0; i--)
|
|
delete(extLists.takeAt(i));
|
|
extMapCustom->clear();
|
|
|
|
if (lwItems.count() > 0)
|
|
{
|
|
lwItem = lwItems.first();
|
|
this->languageSelected(lwItem);
|
|
}
|
|
customChanged = true;
|
|
extChanged = false;
|
|
}
|
|
|
|
/*!
|
|
* Adds a new extension to the list.
|
|
*/
|
|
void GExtensionDialog::on_btnAddExt_clicked()
|
|
{
|
|
QList<QTableWidgetItem *> tblItems = ui.tblExtensions->selectedItems();
|
|
QList<QListWidgetItem *> lwItems = ui.lwLanguages->selectedItems();
|
|
QTableWidgetItem *tblItem;
|
|
QListWidgetItem *lwItem;
|
|
QFont font;
|
|
QString ext;
|
|
int i, row;
|
|
bool ok;
|
|
|
|
if (lwItems.count() < 1)
|
|
{
|
|
QMessageBox::warning(this, tr("Add Error"), tr("Unable to add an extension without a selected language."));
|
|
return;
|
|
}
|
|
lwItem = lwItems.first();
|
|
ext = QInputDialog::getText(this, tr("Add Extension"), tr("Please enter an extension for %1").arg(lwItem->text()),
|
|
QLineEdit::Normal, "", &ok);
|
|
if (ok && !ext.isEmpty())
|
|
{
|
|
if (!ext.startsWith("."))
|
|
{
|
|
QMessageBox::warning(this, tr("Add Error"), tr("Unable to add extension for %1. Extension must begin with a '.' character."));
|
|
return;
|
|
}
|
|
for (i = 0; i < ui.tblExtensions->rowCount(); i++)
|
|
{
|
|
if (ui.tblExtensions->item(i, 0)->text() == ext)
|
|
break;
|
|
}
|
|
if (i < ui.tblExtensions->rowCount())
|
|
{
|
|
QMessageBox::warning(this, tr("Add Error"), tr("Unable to add extension for %1. Extension already exists."));
|
|
return;
|
|
}
|
|
|
|
if (tblItems.count() > 0)
|
|
{
|
|
tblItem = tblItems.first();
|
|
row = tblItem->row() + 1;
|
|
}
|
|
else
|
|
row = ui.tblExtensions->rowCount();
|
|
ui.tblExtensions->insertRow(row);
|
|
|
|
tblItem = new QTableWidgetItem(ext);
|
|
tblItem->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
|
|
ui.tblExtensions->setItem(row, 0, tblItem);
|
|
|
|
font = lwItem->font();
|
|
font.setBold(true);
|
|
lwItem->setFont(font);
|
|
|
|
customChanged = true;
|
|
extChanged = true;
|
|
|
|
this->updateCustomExtensions();
|
|
extChanged = false;
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* Removes the selected extension(s).
|
|
*/
|
|
void GExtensionDialog::on_btnRemoveExt_clicked()
|
|
{
|
|
QList<QTableWidgetItem *> tblItems = ui.tblExtensions->selectedItems();
|
|
QList<QListWidgetItem *> lwItems = ui.lwLanguages->selectedItems();
|
|
QListWidgetItem *lwItem;
|
|
QFont font;
|
|
int i, row;
|
|
|
|
if (lwItems.count() < 1 || tblItems.count() < 1)
|
|
return;
|
|
|
|
lwItem = lwItems.first();
|
|
font = lwItem->font();
|
|
font.setBold(true);
|
|
lwItem->setFont(font);
|
|
|
|
for (i = 0; i < tblItems.count(); i++)
|
|
{
|
|
row = tblItems.at(i)->row();
|
|
delete(ui.tblExtensions->takeItem(row, 0));
|
|
ui.tblExtensions->removeRow(row);
|
|
customChanged = true;
|
|
extChanged = true;
|
|
this->updateCustomExtensions();
|
|
extChanged = false;
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* Closes the dialog
|
|
*/
|
|
void GExtensionDialog::on_btnClose_clicked()
|
|
{
|
|
this->close();
|
|
}
|
|
|
|
/*!
|
|
* Processes a close event sent to the form.
|
|
*/
|
|
void GExtensionDialog::closeEvent(QCloseEvent *)
|
|
{
|
|
if (customChanged)
|
|
{
|
|
((GMainWindow*)(parent()))->writeExtensionsFile();
|
|
customChanged = false;
|
|
this->accept();
|
|
}
|
|
else
|
|
this->reject();
|
|
}
|
|
|
|
//Modification: 2018.04 USC starts
|
|
void GExtensionDialog::on_pushButton_clicked()
|
|
{
|
|
if (customChanged)
|
|
{
|
|
((GMainWindow*)(parent()))->writeExtensionsFile();
|
|
customChanged = false;
|
|
this->accept();
|
|
}
|
|
else
|
|
this->reject();
|
|
}
|
|
|
|
void GExtensionDialog::on_pushButton_2_clicked()
|
|
{
|
|
QString extensionFile="extensions.txt";
|
|
extensionFile = QFileDialog::getSaveFileName(this,
|
|
tr("Extension File"), extensionFile, tr("Extension File (*.txt)"), 0, QFileDialog::DontConfirmOverwrite);
|
|
if(extensionFile == "")
|
|
return;
|
|
QFileInfo fi(extensionFile);
|
|
|
|
if (!fi.exists())
|
|
{QFile file(extensionFile);
|
|
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
|
|
{
|
|
QMessageBox::warning(this, tr("File Error"), tr("Unable to open extension file: ") + extensionFile + "\n" + file.errorString() );
|
|
return;
|
|
}
|
|
file.close();
|
|
((GMainWindow*)(parent()))->ui.txtExtensionFile->setText(extensionFile);
|
|
}
|
|
this->close();
|
|
}
|
|
//Modification: 2018.04 USC ends
|