|
@@ -180,6 +180,13 @@ ImageLabeler::ImageLabeler(QWidget *aParent) :
|
|
popup_label_list_->addAction(action_toggle_priority_);
|
|
popup_label_list_->addAction(action_toggle_priority_);
|
|
popup_label_list_->addAction(action_delete_label_);
|
|
popup_label_list_->addAction(action_delete_label_);
|
|
|
|
|
|
|
|
+ popup_images_list_ = new QMenu;
|
|
|
|
+
|
|
|
|
+ action_remove_image_ = new QAction(this);
|
|
|
|
+ action_remove_image_->setText(tr("&remove image"));
|
|
|
|
+
|
|
|
|
+ popup_images_list_->addAction(action_remove_image_);
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* widgets part begins
|
|
* widgets part begins
|
|
*/
|
|
*/
|
|
@@ -228,7 +235,7 @@ ImageLabeler::ImageLabeler(QWidget *aParent) :
|
|
list_areas_ = new QListWidget(central_widget_);
|
|
list_areas_ = new QListWidget(central_widget_);
|
|
list_areas_->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
list_areas_->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
list_images_widget_ = new QListWidget(central_widget_);
|
|
list_images_widget_ = new QListWidget(central_widget_);
|
|
- //list_images_widget_->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
|
|
|
|
+ list_images_widget_->setContextMenuPolicy(Qt::CustomContextMenu);
|
|
// addLabel(0, false, "BACKGROUND");
|
|
// addLabel(0, false, "BACKGROUND");
|
|
// list_label_->item(0)->setFlags(Qt::ItemIsSelectable);
|
|
// list_label_->item(0)->setFlags(Qt::ItemIsSelectable);
|
|
//QListWidgetItem *background = list_label_->item(0);
|
|
//QListWidgetItem *background = list_label_->item(0);
|
|
@@ -544,6 +551,12 @@ ImageLabeler::ImageLabeler(QWidget *aParent) :
|
|
this,
|
|
this,
|
|
SLOT(selectImage(QListWidgetItem *))
|
|
SLOT(selectImage(QListWidgetItem *))
|
|
);
|
|
);
|
|
|
|
+ connect(
|
|
|
|
+ list_images_widget_,
|
|
|
|
+ SIGNAL(customContextMenuRequested(const QPoint &)),
|
|
|
|
+ this,
|
|
|
|
+ SLOT(imageListPopupMenu(const QPoint &))
|
|
|
|
+ );
|
|
connect(
|
|
connect(
|
|
action_delete_area_,
|
|
action_delete_area_,
|
|
SIGNAL(triggered()),
|
|
SIGNAL(triggered()),
|
|
@@ -574,6 +587,12 @@ ImageLabeler::ImageLabeler(QWidget *aParent) :
|
|
this,
|
|
this,
|
|
SLOT(removeLabel())
|
|
SLOT(removeLabel())
|
|
);
|
|
);
|
|
|
|
+ connect(
|
|
|
|
+ action_remove_image_,
|
|
|
|
+ SIGNAL(triggered()),
|
|
|
|
+ this,
|
|
|
|
+ SLOT(removeImage())
|
|
|
|
+ );
|
|
connect(
|
|
connect(
|
|
image_holder_,
|
|
image_holder_,
|
|
SIGNAL(selectionStarted()),
|
|
SIGNAL(selectionStarted()),
|
|
@@ -653,6 +672,10 @@ ImageLabeler::~ImageLabeler()
|
|
|
|
|
|
delete popup_label_list_;
|
|
delete popup_label_list_;
|
|
|
|
|
|
|
|
+ delete action_remove_image_;
|
|
|
|
+
|
|
|
|
+ delete popup_images_list_;
|
|
|
|
+
|
|
delete image_;
|
|
delete image_;
|
|
delete image_holder_;
|
|
delete image_holder_;
|
|
|
|
|
|
@@ -1592,6 +1615,10 @@ ImageLabeler::loadInfo()
|
|
return;
|
|
return;
|
|
/* NOTREACHED */
|
|
/* NOTREACHED */
|
|
}
|
|
}
|
|
|
|
+ if (!image_->load(string)) {
|
|
|
|
+ return;
|
|
|
|
+ /* NOTREACHED */
|
|
|
|
+ }
|
|
addImage(&string);
|
|
addImage(&string);
|
|
current_image_ = string;
|
|
current_image_ = string;
|
|
image_ID_ = list_images_widget_->count() - 1;
|
|
image_ID_ = list_images_widget_->count() - 1;
|
|
@@ -1602,7 +1629,7 @@ ImageLabeler::loadInfo()
|
|
winTitle.append(current_image_);
|
|
winTitle.append(current_image_);
|
|
setWindowTitle(winTitle);
|
|
setWindowTitle(winTitle);
|
|
|
|
|
|
- image_->load(current_image_);
|
|
|
|
|
|
+
|
|
image_holder_->resize(image_->size());
|
|
image_holder_->resize(image_->size());
|
|
image_holder_->setPixmap(*image_);
|
|
image_holder_->setPixmap(*image_);
|
|
}
|
|
}
|
|
@@ -1675,7 +1702,12 @@ ImageLabeler::loadImage()
|
|
}
|
|
}
|
|
|
|
|
|
QFileDialog fileDialog(0, tr("Load image"));
|
|
QFileDialog fileDialog(0, tr("Load image"));
|
|
- fileDialog.setFileMode(QFileDialog::AnyFile);
|
|
|
|
|
|
+ fileDialog.setFileMode(QFileDialog::ExistingFile);
|
|
|
|
+ QStringList filters;
|
|
|
|
+ filters << "Image files (*.jpeg *.jpg *.gif *.png *.bmp *.tiff)"
|
|
|
|
+ << "Any files (*)";
|
|
|
|
+
|
|
|
|
+ fileDialog.setNameFilters(filters);
|
|
QString filename;
|
|
QString filename;
|
|
|
|
|
|
if (fileDialog.exec()) {
|
|
if (fileDialog.exec()) {
|
|
@@ -1695,7 +1727,17 @@ ImageLabeler::loadImage()
|
|
clearAllTool();
|
|
clearAllTool();
|
|
|
|
|
|
|
|
|
|
- addImage(&filename);
|
|
|
|
|
|
+ QString winTitle;
|
|
|
|
+ winTitle.append("ImageLabeler - ");
|
|
|
|
+ winTitle.append(current_image_);
|
|
|
|
+ setWindowTitle(winTitle);
|
|
|
|
+
|
|
|
|
+ if (!image_->load(filename)) {
|
|
|
|
+ return;
|
|
|
|
+ /* NOTREACHED */
|
|
|
|
+ }
|
|
|
|
+ image_holder_->resize(image_->size());
|
|
|
|
+ image_holder_->setPixmap(*image_);
|
|
|
|
|
|
if (!list_images_widget_->count()) {
|
|
if (!list_images_widget_->count()) {
|
|
return;
|
|
return;
|
|
@@ -1706,14 +1748,8 @@ ImageLabeler::loadImage()
|
|
image_ID_ = list_images_widget_->count() - 1;
|
|
image_ID_ = list_images_widget_->count() - 1;
|
|
list_images_widget_->setCurrentRow(image_ID_);
|
|
list_images_widget_->setCurrentRow(image_ID_);
|
|
|
|
|
|
- QString winTitle;
|
|
|
|
- winTitle.append("ImageLabeler - ");
|
|
|
|
- winTitle.append(current_image_);
|
|
|
|
- setWindowTitle(winTitle);
|
|
|
|
|
|
|
|
- image_->load(current_image_);
|
|
|
|
- image_holder_->resize(image_->size());
|
|
|
|
- image_holder_->setPixmap(*image_);
|
|
|
|
|
|
+ addImage(&filename);
|
|
|
|
|
|
enableTools();
|
|
enableTools();
|
|
}
|
|
}
|
|
@@ -1778,6 +1814,10 @@ ImageLabeler::loadImages()
|
|
/* NOTREACHED */
|
|
/* NOTREACHED */
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (!image_->load(list_images_->at(0))) {
|
|
|
|
+ return;
|
|
|
|
+ /* NOTREACHED */
|
|
|
|
+ }
|
|
current_image_ = list_images_->at(0);
|
|
current_image_ = list_images_->at(0);
|
|
image_ID_ = 0;
|
|
image_ID_ = 0;
|
|
list_images_widget_->setCurrentRow(image_ID_);
|
|
list_images_widget_->setCurrentRow(image_ID_);
|
|
@@ -1787,7 +1827,6 @@ ImageLabeler::loadImages()
|
|
winTitle.append(current_image_);
|
|
winTitle.append(current_image_);
|
|
setWindowTitle(winTitle);
|
|
setWindowTitle(winTitle);
|
|
|
|
|
|
- image_->load(current_image_);
|
|
|
|
image_holder_->resize(image_->size());
|
|
image_holder_->resize(image_->size());
|
|
image_holder_->setPixmap(*image_);
|
|
image_holder_->setPixmap(*image_);
|
|
|
|
|
|
@@ -2718,6 +2757,36 @@ ImageLabeler::selectImage(QListWidgetItem *anItem)
|
|
image_holder_->resize(image_->size());
|
|
image_holder_->resize(image_->size());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void
|
|
|
|
+ImageLabeler::imageListPopupMenu(const QPoint &aPos)
|
|
|
|
+{
|
|
|
|
+ QPoint globalPos = list_images_widget_->mapToGlobal(aPos);
|
|
|
|
+ QModelIndex index = list_images_widget_->indexAt(aPos);
|
|
|
|
+
|
|
|
|
+ if (-1 == index.row()) {
|
|
|
|
+ return;
|
|
|
|
+ /* NOTREACHED */
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ list_images_widget_->item(index.row())->setSelected(true);
|
|
|
|
+
|
|
|
|
+ popup_images_list_->exec(globalPos);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
|
|
+ImageLabeler::removeImage()
|
|
|
|
+{
|
|
|
|
+ int num = list_images_widget_->currentRow();
|
|
|
|
+ list_images_widget_->takeItem(num);
|
|
|
|
+ list_images_->takeAt(num);
|
|
|
|
+
|
|
|
|
+ for (int i = num ; i < list_images_widget_->count(); i++) {
|
|
|
|
+ QString newStr = getFilenameFromPath(&(list_images_->at(i)));
|
|
|
|
+ newStr.prepend(QString("%1: ").arg(i));
|
|
|
|
+ list_images_widget_->item(i)->setText(newStr);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
void
|
|
void
|
|
ImageLabeler::resizeEvent (QResizeEvent *anEvent)
|
|
ImageLabeler::resizeEvent (QResizeEvent *anEvent)
|
|
{
|
|
{
|
|
@@ -2781,6 +2850,12 @@ ImageLabeler::keyPressEvent(QKeyEvent *anEvent)
|
|
QWidget::keyPressEvent(anEvent);
|
|
QWidget::keyPressEvent(anEvent);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void
|
|
|
|
+ImageLabeler::keyReleaseEvent(QKeyEvent *anEvent)
|
|
|
|
+{
|
|
|
|
+ keyboard_modifier_ = anEvent->modifiers();
|
|
|
|
+}
|
|
|
|
+
|
|
void
|
|
void
|
|
ImageLabeler::wheelEvent(QWheelEvent *anEvent)
|
|
ImageLabeler::wheelEvent(QWheelEvent *anEvent)
|
|
{
|
|
{
|