14 #include <fc_config.h>
17 #include <QApplication>
18 #include <QCloseEvent>
21 #include <QMainWindow>
22 #include <QMessageBox>
23 #include <QPushButton>
24 #include <QStackedLayout>
25 #include <QVBoxLayout>
79 QVBoxLayout *full_layout =
new QVBoxLayout();
80 QVBoxLayout *preload_layout =
new QVBoxLayout();
81 QWidget *preload_widget =
new QWidget();
82 QVBoxLayout *edit_layout =
new QVBoxLayout();
83 QWidget *edit_widget =
new QWidget();
84 QPushButton *ruleset_accept;
90 auto *central =
new QWidget;
91 main->setCentralWidget(central);
95 preload_layout->setSizeConstraint(QLayout::SetMaximumSize);
99 version_label->setAlignment(Qt::AlignHCenter);
100 version_label->setParent(central);
101 preload_layout->addWidget(version_label);
102 rs_label =
new QLabel(
103 QString::fromUtf8(
R__(
"Give ruleset to use as starting point.")));
104 rs_label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Fixed);
105 preload_layout->addWidget(rs_label);
115 ruleset_accept =
new QPushButton(QString::fromUtf8(
R__(
"Start editing")));
116 connect(ruleset_accept, &QAbstractButton::pressed,
this,
118 preload_layout->addWidget(ruleset_accept);
120 preload_widget->setLayout(preload_layout);
123 stack =
new QTabWidget(central);
130 stack->addTab(
bldg, QString::fromUtf8(
R__(
"Buildings")));
136 stack->addTab(
gov, QString::fromUtf8(
R__(
"Governments")));
148 edit_layout->addWidget(
stack);
150 edit_widget->setLayout(edit_layout);
156 new QLabel(QString::fromUtf8(
R__(
"Welcome to freeciv21-ruledit")));
159 msg_dspl->setAlignment(Qt::AlignHCenter);
163 central->setLayout(full_layout);
205 if (
game.
server.ruledit.nationlist !=
nullptr) {
242 msg_dspl->setText(QString::fromUtf8(msg));
254 requirers->
clear(title);
279 struct requirement_vector *preqs)
285 if (old_edit->req_vector == preqs) {
292 redit =
new req_edit(
this, target, preqs);
319 if (old_fixer->item() == item_info->
item()) {
358 struct universal *old = old_edit->filter_get();
360 if (uni !=
nullptr) {
365 }
else if (old->
kind == VUT_NONE && old_edit->efmc == efmc) {
401 const QString title = QString::fromUtf8(
R__(
"Freeciv21 Ruleset Editor"));
403 setWindowTitle(title);
412 QMessageBox ask(centralWidget());
415 ask.setText(
R__(
"Are you sure you want to quit?"));
416 ask.setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
417 ask.setDefaultButton(QMessageBox::Cancel);
418 ask.setIcon(QMessageBox::Warning);
419 ask.setWindowTitle(
R__(
"Quit?"));
423 case QMessageBox::Cancel:
427 case QMessageBox::Ok:
void add(const char *msg)
Add entry.
void rec_vec_may_have_changed(const requirement_vector *vec)
A requirement vector may have been changed.
Ruleset entity specific methods for the ruleset item having its requirements fixed.
virtual void close()=0
Tell the helper that it has outlived its usefulness.
virtual const void * item()=0
Returns a pointer to the ruleset item.
Widget for solving requirement vector problems for a ruleset item.
void rec_vec_may_have_changed(const requirement_vector *vec)
A requirement vector may have been changed.
bool refresh()
Find the next requirement vector problem and its suggested solutions.
void clear(const char *title)
Clear text area.
void add(const char *msg)
Add requirer entry.
void open_req_vec_fix(req_vec_fix_item *item_info)
Open req_vec_fix dialog.
void unregister_effect_edit(class effect_edit *e_edit)
Unregisted closed effect_edit dialog.
void flush_widgets()
Flush information from widgets to stores where it can be saved from.
void rec_vec_may_have_changed(const requirement_vector *vec)
A requirement vector may have been changed.
tab_multiplier * multipliers
QStackedLayout * main_layout
struct effect_edit_list * effect_edits
void display_msg(const char *msg)
Display status message.
void refresh_effect_edits()
Refresh all effect edit dialogs.
ruledit_gui(ruledit_main *main)
Setup GUI object.
void incoming_rec_vec_change(const requirement_vector *vec)
A requirement vector may have been changed.
void unregister_req_vec_fix(req_vec_fix *fixer)
Unregister closed req_vec_fix dialog.
void open_req_edit(const QString &target, struct requirement_vector *preqs)
Open req_edit dialog.
requirers_dlg * create_requirers(const char *title)
Create requirers dlg.
void launch_now()
User entered savedir.
struct req_edit_list * req_edits
struct req_vec_fix_list * req_vec_fixers
void show_required(requirers_dlg *requirers, const char *msg)
Add entry to requirers dlg.
QLineEdit * ruleset_select
~ruledit_gui() override
Destructor.
void open_effect_edit(const QString &target, struct universal *uni, enum effect_filter_main_class efmc)
Open effect_edit dialog.
void unregister_req_edit(class req_edit *redit)
Unregisted closed req_edit dialog.
ruledit_main()
Main window constructor.
void closeEvent(QCloseEvent *cevent) override
User clicked windows close button.
void refresh()
Refresh the information.
void refresh()
Refresh the information.
void refresh()
Refresh the information.
void refresh()
Refresh the information.
void refresh()
Refresh the information.
void refresh()
Refresh the information.
void flush_widgets()
Flush information from widgets to stores where it can be saved from.
void refresh()
Refresh the information.
void refresh()
Refresh the information.
void refresh()
Refresh the information.
#define GAME_DEFAULT_RULESETDIR
bool are_universals_equal(const struct universal *psource1, const struct universal *psource2)
Return TRUE iff the two sources are equivalent.
struct ruledit_arguments reargs
void ruledit_qt_display_requirers(const char *msg, void *data)
Display requirer list.
static void conversion_log_cb(const char *msg)
Ruleset conversion log callback.
static conversion_log * convlog
#define effect_edit_list_iterate_end
#define req_edit_list_iterate(reqeditlist, preqedit)
#define req_vec_fix_list_iterate(reqvecfixlist, preqvecfix)
#define effect_edit_list_iterate(effecteditlist, peffectedit)
#define req_edit_list_iterate_end
#define req_vec_fix_list_iterate_end
bool load_rulesets(const char *restore, const char *alt, bool compat_mode, rs_conversion_logger logger, bool act, bool buffer_script, bool load_luadata)
Loads the rulesets.
struct civ_game::@28::@32 server
#define sz_strlcpy(dest, src)
const char * freeciv21_version()
Returns the raw version string.