15 #include <QGridLayout>
17 #include <QListWidget>
19 #include <QPushButton>
20 #include <QRadioButton>
21 #include <QToolButton>
43 QVBoxLayout *main_layout =
new QVBoxLayout(
this);
44 QGridLayout *tech_layout =
new QGridLayout();
46 QPushButton *effects_button;
47 QPushButton *add_button;
48 QPushButton *delete_button;
55 connect(
tech_list, &QListWidget::itemSelectionChanged,
this,
59 tech_layout->setSizeConstraint(QLayout::SetMaximumSize);
61 label =
new QLabel(QString::fromUtf8(
R__(
"Rule Name")));
62 label->setParent(
this);
63 rname =
new QLineEdit(
this);
64 rname->setText(QStringLiteral(
"None"));
66 tech_layout->addWidget(label, 0, 0);
67 tech_layout->addWidget(
rname, 0, 2);
69 label =
new QLabel(QString::fromUtf8(
R__(
"Name")));
70 label->setParent(
this);
72 connect(
same_name, &QAbstractButton::toggled,
this,
74 name =
new QLineEdit(
this);
75 name->setText(QStringLiteral(
"None"));
77 tech_layout->addWidget(label, 1, 0);
79 tech_layout->addWidget(
name, 1, 2);
81 label =
new QLabel(QString::fromUtf8(
R__(
"Req1")));
82 label->setParent(
this);
86 connect(
req1_button, &QAbstractButton::pressed,
this,
88 tech_layout->addWidget(label, 2, 0);
91 label =
new QLabel(QString::fromUtf8(
R__(
"Req2")));
92 label->setParent(
this);
95 connect(
req2_button, &QAbstractButton::pressed,
this,
97 tech_layout->addWidget(label, 3, 0);
100 label =
new QLabel(QString::fromUtf8(
R__(
"Root Req")));
101 label->setParent(
this);
107 tech_layout->addWidget(label, 4, 0);
110 effects_button =
new QPushButton(QString::fromUtf8(
R__(
"Effects")),
this);
111 connect(effects_button, &QAbstractButton::pressed,
this,
113 tech_layout->addWidget(effects_button, 5, 2);
116 add_button =
new QPushButton(QString::fromUtf8(
R__(
"Add tech")),
this);
118 tech_layout->addWidget(add_button, 6, 0);
122 new QPushButton(QString::fromUtf8(
R__(
"Remove this tech")),
this);
123 connect(delete_button, &QAbstractButton::pressed,
this,
125 tech_layout->addWidget(delete_button, 6, 2);
131 main_layout->addLayout(tech_layout);
133 setLayout(main_layout);
163 QMenu *menu =
new QMenu();
165 button->setToolButtonStyle(Qt::ToolButtonTextOnly);
166 button->setPopupMode(QToolButton::MenuButtonPopup);
183 button->setMenu(menu);
205 return QString::fromUtf8(
R__(
"Never"));
222 name->setText(dispn);
223 rname->setText(rulen);
225 if (dispn == rulen) {
226 name->setEnabled(
false);
230 name->setEnabled(
true);
237 name->setText(QStringLiteral(
"None"));
238 rname->setText(QStringLiteral(
"None"));
243 name->setEnabled(
false);
252 QList<QListWidgetItem *> select_list =
tech_list->selectedItems();
254 if (!select_list.isEmpty()) {
257 tn_bytes = select_list.at(0)->text().toUtf8();
301 an_bytes =
action->text().toUtf8();
319 an_bytes =
action->text().toUtf8();
337 an_bytes =
action->text().toUtf8();
353 QByteArray name_bytes;
354 QByteArray rname_bytes;
359 rname_bytes =
rname->text().toUtf8();
372 name_bytes =
name->text().toUtf8();
373 rname_bytes =
rname->text().toUtf8();
460 name->setEnabled(!checked);
475 uni.
kind = VUT_ADVANCE;
void display_msg(const char *msg)
Display status message.
requirers_dlg * create_requirers(const char *title)
Create requirers dlg.
void open_effect_edit(const QString &target, struct universal *uni, enum effect_filter_main_class efmc)
Open effect_edit dialog.
QToolButton * root_req_button
void same_name_toggle(bool checked)
Toggled whether rule_name and name should be kept identical.
bool initialize_new_tech(struct advance *padv)
Initialize new tech for use.
void select_tech()
User selected tech from the list.
QToolButton * req1_button
void req1_menu(QAction *action)
User selected tech to be req1.
void edit_effects()
User wants to edit effects.
void refresh()
Refresh the information.
struct advance * selected
void delete_now()
User requested tech deletion.
static void techs_to_menu(QMenu *fill_menu)
Fill menu with all possible tech values.
void add_now()
User requested new tech.
QMenu * prepare_req_button(QToolButton *button, enum tech_req rn)
Build tech req button.
void req2_jump()
Req2 of the current tech selected.
void req2_menu(QAction *action)
User selected tech to be req2.
void root_req_menu(QAction *action)
User selected tech to be root_req.
void req1_jump()
Req1 of the current tech selected.
void root_req_jump()
Root req of the current tech selected.
void name_given()
User entered name for tech.
QToolButton * req2_button
tab_tech(ruledit_gui *ui_in)
Setup tab_tech object.
static QString tech_name(struct advance *padv)
Display name of the tech.
void update_tech_info(struct advance *adv)
Update info of the tech.
#define fc_assert(condition)
static void name_set(struct name_translation *ptrans, const char *domain, const char *vernacular_name)
static const char * untranslated_name(const struct name_translation *ptrans)
static const char * rule_name_get(const struct name_translation *ptrans)
static void names_set(struct name_translation *ptrans, const char *domain, const char *vernacular_name, const char *rule_name)
void show_experimental(QWidget *wdg)
Show widget if experimental features enabled, hide otherwise.
void ruledit_qt_display_requirers(const char *msg, void *data)
Display requirer list.
struct advance * require[AR_SIZE]
struct name_translation name
struct packet_ruleset_control control
struct advance * advance_by_rule_name(const char *name)
Does a linear search of advances[].name.vernacular Returns nullptr when none match.
const char * advance_rule_name(const struct advance *padvance)
Return the (untranslated) rule name of the advance/technology.
struct advance * advance_by_number(const Tech_type_id atype)
Return the advance for the given advance index.
Tech_type_id advance_index(const struct advance *padvance)
Return the advance index.
Tech_type_id advance_number(const struct advance *padvance)
Return the advance index.
#define advance_iterate(_start, _p)
#define advance_iterate_end
bool is_tech_needed(struct advance *padv, requirers_cb cb, void *data)
Check if anything in ruleset needs tech.