Freeciv21
Develop your civilization from humble roots to a global empire
ruledit_qt.h
Go to the documentation of this file.
1 /*__ ___ ***************************************
2 / \ / \ Copyright (c) 1996-2020 Freeciv21 and Freeciv
3 \_ \ / __/ contributors. This file is part of Freeciv21.
4  _\ \ / /__ Freeciv21 is free software: you can redistribute it
5  \___ \____/ __/ and/or modify it under the terms of the GNU General
6  \_ _/ Public License as published by the Free Software
7  | @ @ \_ Foundation, either version 3 of the License,
8  | or (at your option) any later version.
9  _/ /\ You should have received a copy of the GNU
10  /o) (o/\ \_ General Public License along with Freeciv21.
11  \_____/ / If not, see https://www.gnu.org/licenses/.
12  \____/ ********************************************************/
13 
14 #ifndef FC__RULEDIT_QT_H
15 #define FC__RULEDIT_QT_H
16 
17 // Qt
18 #include <QLabel>
19 #include <QMainWindow>
20 #include <QObject>
21 #include <QTabWidget>
22 
23 // ruledit
24 #include "effect_edit.h"
25 #include "rulesave.h"
26 
27 class QLineEdit;
28 class QStackedLayout;
29 
30 class requirers_dlg;
31 class tab_building;
32 class tab_good;
33 class tab_gov;
34 class tab_misc;
35 class tab_multiplier;
36 class tab_tech;
37 class tab_unit;
38 class tab_nation;
39 class tab_enabler;
40 class tab_extras;
41 class tab_terrains;
42 class req_edit;
43 class req_vec_fix;
44 class req_vec_fix_item;
45 
46 class ruledit_main : public QMainWindow {
47  Q_OBJECT
48 
49 public:
50  ruledit_main();
51 
52 protected:
53  void closeEvent(QCloseEvent *cevent) override;
54 };
55 
56 // get 'struct req_edit_list' and related functions:
57 #define SPECLIST_TAG req_edit
58 #define SPECLIST_TYPE class req_edit
59 #include "speclist.h"
60 
61 #define req_edit_list_iterate(reqeditlist, preqedit) \
62  TYPED_LIST_ITERATE(class req_edit, reqeditlist, preqedit)
63 #define req_edit_list_iterate_end LIST_ITERATE_END
64 
65 // get 'struct effect_edit_list' and related functions:
66 #define SPECLIST_TAG effect_edit
67 #define SPECLIST_TYPE class effect_edit
68 #include "speclist.h"
69 
70 #define effect_edit_list_iterate(effecteditlist, peffectedit) \
71  TYPED_LIST_ITERATE(class effect_edit, effecteditlist, peffectedit)
72 #define effect_edit_list_iterate_end LIST_ITERATE_END
73 
74 // get 'struct req_vec_fix_list' and related functions:
75 #define SPECLIST_TAG req_vec_fix
76 #define SPECLIST_TYPE class req_vec_fix
77 #include "speclist.h"
78 
79 #define req_vec_fix_list_iterate(reqvecfixlist, preqvecfix) \
80  TYPED_LIST_ITERATE(class req_vec_fix, reqvecfixlist, preqvecfix)
81 #define req_vec_fix_list_iterate_end LIST_ITERATE_END
82 
83 class ruledit_gui : public QObject {
84  Q_OBJECT
85 
86 public:
88  ~ruledit_gui() override;
89 
90  void display_msg(const char *msg);
91  requirers_dlg *create_requirers(const char *title);
92  void show_required(requirers_dlg *requirers, const char *msg);
93  void flush_widgets();
94 
95  void open_req_edit(const QString &target,
96  struct requirement_vector *preqs);
97  void unregister_req_edit(class req_edit *redit);
98 
99  void open_req_vec_fix(req_vec_fix_item *item_info);
100  void unregister_req_vec_fix(req_vec_fix *fixer);
101 
102  void open_effect_edit(const QString &target, struct universal *uni,
103  enum effect_filter_main_class efmc);
104  void unregister_effect_edit(class effect_edit *e_edit);
106 
107  struct rule_data data;
108 
109 signals:
110  /********************************************************************/
114  void rec_vec_may_have_changed(const requirement_vector *vec);
115 
116 private:
117  QLabel *msg_dspl;
118  QTabWidget *stack;
119  QLineEdit *ruleset_select;
120  QStackedLayout *main_layout;
121 
133 
134  struct req_edit_list *req_edits;
135  struct req_vec_fix_list *req_vec_fixers;
136  struct effect_edit_list *effect_edits;
137 
138 private slots:
139  void launch_now();
140  void incoming_rec_vec_change(const requirement_vector *vec);
141 };
142 
143 void ruledit_qt_display_requirers(const char *msg, void *data);
144 
145 #endif // FC__RULEDIT_QT_H
Ruleset entity specific methods for the ruleset item having its requirements fixed.
Definition: req_vec_fix.h:44
Widget for solving requirement vector problems for a ruleset item.
Definition: req_vec_fix.h:146
tab_nation * nation
Definition: ruledit_qt.h:132
tab_unit * unit
Definition: ruledit_qt.h:125
void open_req_vec_fix(req_vec_fix_item *item_info)
Open req_vec_fix dialog.
Definition: ruledit_qt.cpp:313
tab_good * good
Definition: ruledit_qt.h:126
tab_enabler * enablers
Definition: ruledit_qt.h:128
void unregister_effect_edit(class effect_edit *e_edit)
Unregisted closed effect_edit dialog.
Definition: ruledit_qt.cpp:382
void flush_widgets()
Flush information from widgets to stores where it can be saved from.
Definition: ruledit_qt.cpp:273
void rec_vec_may_have_changed(const requirement_vector *vec)
A requirement vector may have been changed.
tab_multiplier * multipliers
Definition: ruledit_qt.h:130
QStackedLayout * main_layout
Definition: ruledit_qt.h:120
struct rule_data data
Definition: ruledit_qt.h:107
tab_misc * misc
Definition: ruledit_qt.h:123
struct effect_edit_list * effect_edits
Definition: ruledit_qt.h:136
tab_extras * extras
Definition: ruledit_qt.h:129
tab_terrains * terrains
Definition: ruledit_qt.h:131
void display_msg(const char *msg)
Display status message.
Definition: ruledit_qt.cpp:240
void refresh_effect_edits()
Refresh all effect edit dialogs.
Definition: ruledit_qt.cpp:390
tab_gov * gov
Definition: ruledit_qt.h:127
ruledit_gui(ruledit_main *main)
Setup GUI object.
Definition: ruledit_qt.cpp:77
void incoming_rec_vec_change(const requirement_vector *vec)
A requirement vector may have been changed.
Definition: ruledit_qt.cpp:232
void unregister_req_vec_fix(req_vec_fix *fixer)
Unregister closed req_vec_fix dialog.
Definition: ruledit_qt.cpp:342
void open_req_edit(const QString &target, struct requirement_vector *preqs)
Open req_edit dialog.
Definition: ruledit_qt.cpp:278
tab_building * bldg
Definition: ruledit_qt.h:122
requirers_dlg * create_requirers(const char *title)
Create requirers dlg.
Definition: ruledit_qt.cpp:248
tab_tech * tech
Definition: ruledit_qt.h:124
void launch_now()
User entered savedir.
Definition: ruledit_qt.cpp:191
struct req_edit_list * req_edits
Definition: ruledit_qt.h:134
QTabWidget * stack
Definition: ruledit_qt.h:118
struct req_vec_fix_list * req_vec_fixers
Definition: ruledit_qt.h:135
void show_required(requirers_dlg *requirers, const char *msg)
Add entry to requirers dlg.
Definition: ruledit_qt.cpp:262
QLabel * msg_dspl
Definition: ruledit_qt.h:117
QLineEdit * ruleset_select
Definition: ruledit_qt.h:119
~ruledit_gui() override
Destructor.
Definition: ruledit_qt.cpp:176
void open_effect_edit(const QString &target, struct universal *uni, enum effect_filter_main_class efmc)
Open effect_edit dialog.
Definition: ruledit_qt.cpp:350
void unregister_req_edit(class req_edit *redit)
Unregisted closed req_edit dialog.
Definition: ruledit_qt.cpp:305
ruledit_main()
Main window constructor.
Definition: ruledit_qt.cpp:399
void closeEvent(QCloseEvent *cevent) override
User clicked windows close button.
Definition: ruledit_qt.cpp:409
effect_filter_main_class
Definition: effect_edit.h:31
void ruledit_qt_display_requirers(const char *msg, void *data)
Display requirer list.
Definition: ruledit_qt.cpp:67