12 Q_ASSERT(manager != NULL);
15 QVBoxLayout*
main =
new QVBoxLayout(
this);
16 QTabWidget* tab =
new QTabWidget(
this);
19 QWidget* details =
new QWidget(
this);
20 tab->addTab(details, tr(
"Details"));
23 QGridLayout*
layout =
new QGridLayout(details);
27 layout->addWidget(
new QLabel(tr(
"Path:"),
this), line, 0);
28 myPath =
new QLineEdit(
this);
29 layout->addWidget(
myPath, line++, 1);
31 layout->addWidget(
new QLabel(tr(
"Location:"),
this), line, 0, 1, 2);
33 layout->addWidget(
myLocation, line++, 1, 1, 2);
35 QGroupBox* box =
new QGroupBox(tr(
"Rules"));
36 layout->addWidget(box, line++, 0, 1, 4);
38 QGridLayout* rules =
new QGridLayout();
39 box->setLayout(rules);
42 rules->addWidget(
myRules, 0, 0, 4, 4);
44 labels << tr(
"match") << tr(
"pre") << tr(
"message") << tr(
"post") << tr(
"replies") << tr(
"include");
45 myRules->setHeaderLabels(labels);
49 QHBoxLayout* buttons =
new QHBoxLayout();
51 QPushButton* add =
new QPushButton(tr(
"add rule"),
this);
52 buttons->addWidget(add);
53 connect(add, SIGNAL(clicked(
bool)),
this, SLOT(
onAddRule(
bool)));
54 QPushButton*
remove =
new QPushButton(tr(
"remove rule"),
this);
55 buttons->addWidget(
remove);
56 connect(
remove, SIGNAL(clicked(
bool)),
this, SLOT(
onDeleteRule(
bool)));
58 QPushButton* up =
new QPushButton(tr(
"move up"),
this);
59 buttons->addWidget(up);
60 connect(up, SIGNAL(clicked(
bool)),
this, SLOT(
onMoveUp(
bool)));
61 QPushButton* down =
new QPushButton(tr(
"move down"),
this);
62 buttons->addWidget(down);
63 connect(down, SIGNAL(clicked(
bool)),
this, SLOT(
onMoveDown(
bool)));
65 QPushButton* copy =
new QPushButton(tr(
"copy"),
this);
66 buttons->addWidget(copy);
67 connect(copy, SIGNAL(clicked(
bool)),
this, SLOT(
onDuplicate(
bool)));
69 rules->addLayout(buttons, 4, 0, 1, 4);
75 myUse =
new QTreeWidget(
this);
76 tab->addTab(
myUse, tr(
"Use"));
77 myUse->setHeaderLabel(tr(
"Referenced by..."));
89 foreach(QStringList item, list)
90 data.append(item.join(
" "));
91 return data.join(
"\n");
98 myPath->setEnabled(message->
path() ==
"<new file>");
109 data << rule->
match().join(
"\n");
111 data << rule->
messages().join(
"\n");
115 new QTreeWidgetItem(
myRules, data);
118 if (
myRules->topLevelItemCount() != 0)
125 QTreeWidgetItem*
root = NULL;
128 root =
new QTreeWidgetItem(
myUse, QStringList(tr(
"Maps")));
129 root->setExpanded(
true);
132 new QTreeWidgetItem(root, QStringList(map->
path()));
142 QStringList includes = rule->
include();
143 foreach(QString include, includes)
145 if (include.isEmpty())
148 if (!include.startsWith(
'/'))
150 int last = file->
path().lastIndexOf(QDir::separator());
153 include = file->
path().left(last + 1) + include;
156 if (include == message->
path())
160 root =
new QTreeWidgetItem(
myUse, QStringList(tr(
"Messages")));
161 root->setExpanded(
true);
164 new QTreeWidgetItem(root, QStringList(file->
path()));
182 for (
int c = 0; c < item->columnCount(); c++)
183 item->setBackground(c, color);
196 int index =
myRules->indexOfTopLevelItem(current);
209 if (pre[0] !=
"token" && pre[0] !=
"npctoken")
212 QStringList acceptable = pre;
213 acceptable.removeFirst();
214 acceptable.removeFirst();
228 if ((post[0] !=
"settoken" && post[0] !=
"setnpctoken") || post[1] != pre[1] || !acceptable.contains(post[2]))
244 if (post[0] !=
"settoken" && post[0] !=
"setnpctoken")
259 if ((pre[0] !=
"token" && pre[0] !=
"npctoken") || pre[1] != post[1])
262 QStringList acceptable = pre;
263 acceptable.removeFirst();
264 acceptable.removeFirst();
265 if (!acceptable.contains(post[2]))
280 int index =
myRules->currentIndex().row();
287 item->setText(0, rule->
match().join(
"\n"));
289 item->setText(2, rule->
messages().join(
"\n"));
292 item->setText(5, rule->
include().join(
"\n"));
298 rule->
match().append(
"*");
301 new QTreeWidgetItem(
myRules, QStringList(
"*"));
306 int index =
myRules->currentIndex().row();
311 delete myRules->takeTopLevelItem(index);
322 int index =
myRules->currentIndex().row();
330 QTreeWidgetItem* item =
myRules->takeTopLevelItem(index - 1);
331 myRules->insertTopLevelItem(index, item);
338 int index =
myRules->currentIndex().row();
346 QTreeWidgetItem* item =
myRules->takeTopLevelItem(index + 1);
347 myRules->insertTopLevelItem(index, item);
354 int index =
myRules->currentIndex().row();
QList< MessageFile * > & messages()
void setBackgroundColor(QTreeWidgetItem *item, QBrush color)
CRERulePanel * myRulePanel
void currentRuleModified()
const QStringList & include() const
int main(int argc, char *argv[])
static AssetsManager * manager
void setModified(bool modified=true)
void setPath(const QString &path)
QList< MessageRule * > & rules()
void setModified(bool modified=true)
const QString & location() const
void currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem *previous)
void setMessageRule(MessageRule *rule)
void fillRuleItem(QTreeWidgetItem *item, MessageRule *rule)
const QStringList & match() const
const QList< QStringList > & preconditions() const
CREMessagePanel(const MessageManager *manager, const QuestManager *quests, QWidget *parent)
virtual void setItem(MessageFile *message)
const QStringList & messages() const
QBrush myDefaultBackground
void setLocation(const QString &location)
const QList< QStringList > & postconditions() const
const MessageManager * myMessageManager
virtual ~CREMessagePanel()
virtual void commitData()
static quest_definition * quests
const QString & path() const
QList< CREMapInformation * > & maps()
const QList< QStringList > & replies() const
QString toDisplay(const QList< QStringList > &list)