forked from qt-creator/qt-creator
Core: Inline readonlyfilesdialog.ui
Change-Id: Ifefa5116b4af6ad85c964b55c306fa2d921f8759 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -33,7 +33,7 @@ add_qtc_plugin(Core
|
|||||||
dialogs/newdialogwidget.cpp dialogs/newdialogwidget.h
|
dialogs/newdialogwidget.cpp dialogs/newdialogwidget.h
|
||||||
dialogs/openwithdialog.cpp dialogs/openwithdialog.h
|
dialogs/openwithdialog.cpp dialogs/openwithdialog.h
|
||||||
dialogs/promptoverwritedialog.cpp dialogs/promptoverwritedialog.h
|
dialogs/promptoverwritedialog.cpp dialogs/promptoverwritedialog.h
|
||||||
dialogs/readonlyfilesdialog.cpp dialogs/readonlyfilesdialog.h dialogs/readonlyfilesdialog.ui
|
dialogs/readonlyfilesdialog.cpp dialogs/readonlyfilesdialog.h
|
||||||
dialogs/restartdialog.cpp dialogs/restartdialog.h
|
dialogs/restartdialog.cpp dialogs/restartdialog.h
|
||||||
dialogs/saveitemsdialog.cpp dialogs/saveitemsdialog.h
|
dialogs/saveitemsdialog.cpp dialogs/saveitemsdialog.h
|
||||||
dialogs/settingsdialog.cpp dialogs/settingsdialog.h
|
dialogs/settingsdialog.cpp dialogs/settingsdialog.h
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ Project {
|
|||||||
"newdialogwidget.cpp", "newdialogwidget.h",
|
"newdialogwidget.cpp", "newdialogwidget.h",
|
||||||
"openwithdialog.cpp", "openwithdialog.h",
|
"openwithdialog.cpp", "openwithdialog.h",
|
||||||
"promptoverwritedialog.cpp", "promptoverwritedialog.h",
|
"promptoverwritedialog.cpp", "promptoverwritedialog.h",
|
||||||
"readonlyfilesdialog.cpp", "readonlyfilesdialog.h", "readonlyfilesdialog.ui",
|
"readonlyfilesdialog.cpp", "readonlyfilesdialog.h",
|
||||||
"restartdialog.cpp", "restartdialog.h",
|
"restartdialog.cpp", "restartdialog.h",
|
||||||
"saveitemsdialog.cpp", "saveitemsdialog.h",
|
"saveitemsdialog.cpp", "saveitemsdialog.h",
|
||||||
"settingsdialog.cpp", "settingsdialog.h",
|
"settingsdialog.cpp", "settingsdialog.h",
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#include "readonlyfilesdialog.h"
|
#include "readonlyfilesdialog.h"
|
||||||
#include "ui_readonlyfilesdialog.h"
|
|
||||||
|
|
||||||
#include <coreplugin/editormanager/editormanager_p.h>
|
#include <coreplugin/editormanager/editormanager_p.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
@@ -36,15 +35,20 @@
|
|||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
#include <utils/fsengine/fileiconprovider.h>
|
#include <utils/fsengine/fileiconprovider.h>
|
||||||
#include <utils/hostosinfo.h>
|
#include <utils/hostosinfo.h>
|
||||||
|
#include <utils/layoutbuilder.h>
|
||||||
#include <utils/stringutils.h>
|
#include <utils/stringutils.h>
|
||||||
|
|
||||||
#include <QButtonGroup>
|
#include <QButtonGroup>
|
||||||
|
#include <QComboBox>
|
||||||
|
#include <QDialogButtonBox>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <QLabel>
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
#include <QRadioButton>
|
#include <QRadioButton>
|
||||||
|
#include <QTreeWidget>
|
||||||
|
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
@@ -107,7 +111,9 @@ public:
|
|||||||
QString versionControlOpenText;
|
QString versionControlOpenText;
|
||||||
const QString saveAsText;
|
const QString saveAsText;
|
||||||
|
|
||||||
Ui::ReadOnlyFilesDialog ui;
|
QLabel *m_msgLabel;
|
||||||
|
QTreeWidget *m_treeWidget;
|
||||||
|
QComboBox *m_setAll;
|
||||||
};
|
};
|
||||||
|
|
||||||
ReadOnlyFilesDialogPrivate::ReadOnlyFilesDialogPrivate(ReadOnlyFilesDialog *parent, IDocument *document, bool displaySaveAs)
|
ReadOnlyFilesDialogPrivate::ReadOnlyFilesDialogPrivate(ReadOnlyFilesDialog *parent, IDocument *document, bool displaySaveAs)
|
||||||
@@ -202,7 +208,7 @@ ReadOnlyFilesDialog::~ReadOnlyFilesDialog()
|
|||||||
*/
|
*/
|
||||||
void ReadOnlyFilesDialog::setMessage(const QString &message)
|
void ReadOnlyFilesDialog::setMessage(const QString &message)
|
||||||
{
|
{
|
||||||
d->ui.msgLabel->setText(message);
|
d->m_msgLabel->setText(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -346,7 +352,7 @@ QRadioButton *ReadOnlyFilesDialogPrivate::createRadioButtonForItem(QTreeWidgetIt
|
|||||||
auto radioButton = new QRadioButton(q);
|
auto radioButton = new QRadioButton(q);
|
||||||
group->addButton(radioButton, type);
|
group->addButton(radioButton, type);
|
||||||
item->setTextAlignment(type, Qt::AlignHCenter);
|
item->setTextAlignment(type, Qt::AlignHCenter);
|
||||||
ui.treeWidget->setItemWidget(item, type, radioButton);
|
m_treeWidget->setItemWidget(item, type, radioButton);
|
||||||
return radioButton;
|
return radioButton;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -392,11 +398,11 @@ void ReadOnlyFilesDialogPrivate::updateSelectAll()
|
|||||||
if (selectedOperation == -1) {
|
if (selectedOperation == -1) {
|
||||||
selectedOperation = groupForFile.group->checkedId();
|
selectedOperation = groupForFile.group->checkedId();
|
||||||
} else if (selectedOperation != groupForFile.group->checkedId()) {
|
} else if (selectedOperation != groupForFile.group->checkedId()) {
|
||||||
ui.setAll->setCurrentIndex(0);
|
m_setAll->setCurrentIndex(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ui.setAll->setCurrentIndex(setAllIndexForOperation[selectedOperation]);
|
m_setAll->setCurrentIndex(setAllIndexForOperation[selectedOperation]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -408,9 +414,48 @@ void ReadOnlyFilesDialogPrivate::updateSelectAll()
|
|||||||
*/
|
*/
|
||||||
void ReadOnlyFilesDialogPrivate::initDialog(const FilePaths &filePaths)
|
void ReadOnlyFilesDialogPrivate::initDialog(const FilePaths &filePaths)
|
||||||
{
|
{
|
||||||
ui.setupUi(q);
|
q->resize(639, 217);
|
||||||
ui.buttonBox->addButton(tr("Change &Permission"), QDialogButtonBox::AcceptRole);
|
q->setWindowTitle(tr("Files Without Write Permissions"));
|
||||||
ui.buttonBox->addButton(QDialogButtonBox::Cancel);
|
|
||||||
|
m_msgLabel = new QLabel(tr(
|
||||||
|
"The following files have no write permissions. Do you want to change the permissions?"));
|
||||||
|
|
||||||
|
m_treeWidget = new QTreeWidget;
|
||||||
|
auto headerItem = new QTreeWidgetItem;
|
||||||
|
headerItem->setText(0, tr("Make Writable"));
|
||||||
|
headerItem->setText(1, tr("Open with VCS"));
|
||||||
|
headerItem->setText(2, tr("Save As"));
|
||||||
|
headerItem->setText(3, tr("Filename"));
|
||||||
|
headerItem->setText(4, tr("Path"));
|
||||||
|
m_treeWidget->setSelectionMode(QAbstractItemView::NoSelection);
|
||||||
|
m_treeWidget->setTextElideMode(Qt::ElideLeft);
|
||||||
|
m_treeWidget->setIndentation(0);
|
||||||
|
m_treeWidget->setUniformRowHeights(true);
|
||||||
|
m_treeWidget->setItemsExpandable(false);
|
||||||
|
m_treeWidget->setColumnCount(5);
|
||||||
|
m_treeWidget->setHeaderItem(headerItem);
|
||||||
|
|
||||||
|
m_setAll = new QComboBox;
|
||||||
|
|
||||||
|
auto buttonBox = new QDialogButtonBox(QDialogButtonBox::NoButton);
|
||||||
|
buttonBox->addButton(tr("Change &Permission"), QDialogButtonBox::AcceptRole);
|
||||||
|
buttonBox->addButton(QDialogButtonBox::Cancel);
|
||||||
|
QObject::connect(buttonBox, &QDialogButtonBox::accepted, q, &QDialog::accept);
|
||||||
|
QObject::connect(buttonBox, &QDialogButtonBox::rejected, q, &QDialog::reject);
|
||||||
|
|
||||||
|
using namespace Layouting;
|
||||||
|
|
||||||
|
QWidget *setAllWidget = Row{tr("Select all, if possible: "), m_setAll, st}.emerge(
|
||||||
|
WithoutMargins);
|
||||||
|
|
||||||
|
// clang-format off
|
||||||
|
Column {
|
||||||
|
m_msgLabel,
|
||||||
|
m_treeWidget,
|
||||||
|
setAllWidget,
|
||||||
|
buttonBox
|
||||||
|
}.attachTo(q);
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
QString vcsOpenTextForAll;
|
QString vcsOpenTextForAll;
|
||||||
QString vcsMakeWritableTextForAll;
|
QString vcsMakeWritableTextForAll;
|
||||||
@@ -420,7 +465,7 @@ void ReadOnlyFilesDialogPrivate::initDialog(const FilePaths &filePaths)
|
|||||||
const FilePath directory = filePath.absolutePath();
|
const FilePath directory = filePath.absolutePath();
|
||||||
|
|
||||||
// Setup a default entry with filename folder and make writable radio button.
|
// Setup a default entry with filename folder and make writable radio button.
|
||||||
auto item = new QTreeWidgetItem(ui.treeWidget);
|
auto item = new QTreeWidgetItem(m_treeWidget);
|
||||||
item->setText(FileName, visibleName);
|
item->setText(FileName, visibleName);
|
||||||
item->setIcon(FileName, FileIconProvider::icon(filePath));
|
item->setIcon(FileName, FileIconProvider::icon(filePath));
|
||||||
item->setText(Folder, directory.shortNativePath());
|
item->setText(Folder, directory.shortNativePath());
|
||||||
@@ -472,69 +517,64 @@ void ReadOnlyFilesDialogPrivate::initDialog(const FilePaths &filePaths)
|
|||||||
|
|
||||||
// Apply the Mac file dialog style.
|
// Apply the Mac file dialog style.
|
||||||
if (Utils::HostOsInfo::isMacHost())
|
if (Utils::HostOsInfo::isMacHost())
|
||||||
ui.treeWidget->setAlternatingRowColors(true);
|
m_treeWidget->setAlternatingRowColors(true);
|
||||||
|
|
||||||
// Do not show any options to the user if he has no choice.
|
// Do not show any options to the user if he has no choice.
|
||||||
if (!useSaveAs && (!useVCS || !useMakeWritable)) {
|
if (!useSaveAs && (!useVCS || !useMakeWritable)) {
|
||||||
ui.treeWidget->setColumnHidden(MakeWritable, true);
|
m_treeWidget->setColumnHidden(MakeWritable, true);
|
||||||
ui.treeWidget->setColumnHidden(OpenWithVCS, true);
|
m_treeWidget->setColumnHidden(OpenWithVCS, true);
|
||||||
ui.treeWidget->setColumnHidden(SaveAs, true);
|
m_treeWidget->setColumnHidden(SaveAs, true);
|
||||||
ui.treeWidget->resizeColumnToContents(FileName);
|
m_treeWidget->resizeColumnToContents(FileName);
|
||||||
ui.treeWidget->resizeColumnToContents(Folder);
|
m_treeWidget->resizeColumnToContents(Folder);
|
||||||
ui.setAll->setVisible(false);
|
setAllWidget->setVisible(false);
|
||||||
ui.setAllLabel->setVisible(false);
|
|
||||||
ui.verticalLayout->removeItem(ui.setAllLayout);
|
|
||||||
if (useVCS)
|
if (useVCS)
|
||||||
ui.msgLabel->setText(tr("The following files are not checked out yet.\n"
|
m_msgLabel->setText(tr("The following files are not checked out yet.\n"
|
||||||
"Do you want to check them out now?"));
|
"Do you want to check them out now?"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there is just one file entry, there is no need to show the select all combo box
|
// If there is just one file entry, there is no need to show the select all combo box
|
||||||
if (filePaths.count() < 2) {
|
if (filePaths.count() < 2)
|
||||||
ui.setAll->setVisible(false);
|
setAllWidget->setVisible(false);
|
||||||
ui.setAllLabel->setVisible(false);
|
|
||||||
ui.verticalLayout->removeItem(ui.setAllLayout);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add items to the Set all combo box.
|
// Add items to the Set all combo box.
|
||||||
ui.setAll->addItem(mixedText);
|
m_setAll->addItem(mixedText);
|
||||||
setAllIndexForOperation[-1/*mixed*/] = ui.setAll->count() - 1;
|
setAllIndexForOperation[-1 /*mixed*/] = m_setAll->count() - 1;
|
||||||
if (useVCS) {
|
if (useVCS) {
|
||||||
// If the files are managed by just one version control system, the Open and Make Writable
|
// If the files are managed by just one version control system, the Open and Make Writable
|
||||||
// text for the specific system is used.
|
// text for the specific system is used.
|
||||||
if (!vcsOpenTextForAll.isEmpty() && vcsOpenTextForAll != versionControlOpenText) {
|
if (!vcsOpenTextForAll.isEmpty() && vcsOpenTextForAll != versionControlOpenText) {
|
||||||
versionControlOpenText = vcsOpenTextForAll;
|
versionControlOpenText = vcsOpenTextForAll;
|
||||||
ui.treeWidget->headerItem()->setText(OpenWithVCS, versionControlOpenText);
|
m_treeWidget->headerItem()->setText(OpenWithVCS, versionControlOpenText);
|
||||||
}
|
}
|
||||||
if (!vcsMakeWritableTextForAll.isEmpty() && vcsMakeWritableTextForAll != makeWritableText) {
|
if (!vcsMakeWritableTextForAll.isEmpty() && vcsMakeWritableTextForAll != makeWritableText) {
|
||||||
makeWritableText = vcsMakeWritableTextForAll;
|
makeWritableText = vcsMakeWritableTextForAll;
|
||||||
ui.treeWidget->headerItem()->setText(MakeWritable, makeWritableText);
|
m_treeWidget->headerItem()->setText(MakeWritable, makeWritableText);
|
||||||
}
|
}
|
||||||
ui.setAll->addItem(versionControlOpenText);
|
m_setAll->addItem(versionControlOpenText);
|
||||||
ui.setAll->setCurrentIndex(ui.setAll->count() - 1);
|
m_setAll->setCurrentIndex(m_setAll->count() - 1);
|
||||||
setAllIndexForOperation[OpenWithVCS] = ui.setAll->count() - 1;
|
setAllIndexForOperation[OpenWithVCS] = m_setAll->count() - 1;
|
||||||
}
|
}
|
||||||
if (useMakeWritable) {
|
if (useMakeWritable) {
|
||||||
ui.setAll->addItem(makeWritableText);
|
m_setAll->addItem(makeWritableText);
|
||||||
setAllIndexForOperation[MakeWritable] = ui.setAll->count() - 1;
|
setAllIndexForOperation[MakeWritable] = m_setAll->count() - 1;
|
||||||
if (ui.setAll->currentIndex() == -1)
|
if (m_setAll->currentIndex() == -1)
|
||||||
ui.setAll->setCurrentIndex(ui.setAll->count() - 1);
|
m_setAll->setCurrentIndex(m_setAll->count() - 1);
|
||||||
}
|
}
|
||||||
if (useSaveAs) {
|
if (useSaveAs) {
|
||||||
ui.setAll->addItem(saveAsText);
|
m_setAll->addItem(saveAsText);
|
||||||
setAllIndexForOperation[SaveAs] = ui.setAll->count() - 1;
|
setAllIndexForOperation[SaveAs] = m_setAll->count() - 1;
|
||||||
}
|
}
|
||||||
QObject::connect(ui.setAll, &QComboBox::activated, [this](int index) { setAll(index); });
|
QObject::connect(m_setAll, &QComboBox::activated, [this](int index) { setAll(index); });
|
||||||
|
|
||||||
// Filter which columns should be visible and resize them to content.
|
// Filter which columns should be visible and resize them to content.
|
||||||
for (int i = 0; i < NumberOfColumns; ++i) {
|
for (int i = 0; i < NumberOfColumns; ++i) {
|
||||||
if ((i == SaveAs && !useSaveAs) || (i == OpenWithVCS && !useVCS)
|
if ((i == SaveAs && !useSaveAs) || (i == OpenWithVCS && !useVCS)
|
||||||
|| (i == MakeWritable && !useMakeWritable)) {
|
|| (i == MakeWritable && !useMakeWritable)) {
|
||||||
ui.treeWidget->setColumnHidden(i, true);
|
m_treeWidget->setColumnHidden(i, true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ui.treeWidget->resizeColumnToContents(i);
|
m_treeWidget->resizeColumnToContents(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,145 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>Core::Internal::ReadOnlyFilesDialog</class>
|
|
||||||
<widget class="QDialog" name="Core::Internal::ReadOnlyFilesDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>639</width>
|
|
||||||
<height>217</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Files Without Write Permissions</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="msgLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>The following files have no write permissions. Do you want to change the permissions?</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QTreeWidget" name="treeWidget">
|
|
||||||
<property name="selectionMode">
|
|
||||||
<enum>QAbstractItemView::NoSelection</enum>
|
|
||||||
</property>
|
|
||||||
<property name="textElideMode">
|
|
||||||
<enum>Qt::ElideLeft</enum>
|
|
||||||
</property>
|
|
||||||
<property name="indentation">
|
|
||||||
<number>0</number>
|
|
||||||
</property>
|
|
||||||
<property name="uniformRowHeights">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="itemsExpandable">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="columnCount">
|
|
||||||
<number>5</number>
|
|
||||||
</property>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>Make Writable</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>Open with VCS</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>Save As</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string notr="true">Filename</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
<column>
|
|
||||||
<property name="text">
|
|
||||||
<string>Path</string>
|
|
||||||
</property>
|
|
||||||
</column>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="setAllLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="setAllLabel">
|
|
||||||
<property name="text">
|
|
||||||
<string>Select all, if possible: </string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QComboBox" name="setAll"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::NoButton</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources/>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>Core::Internal::ReadOnlyFilesDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>Core::Internal::ReadOnlyFilesDialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>316</x>
|
|
||||||
<y>260</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
||||||
Reference in New Issue
Block a user