78extern void print_cp2k (
int f, GtkTextBuffer * buffer);
82extern GtkWidget *
cpmd_box (GtkWidget *
box, gchar *
lab,
int v_space,
int h_space,
int dim);
88double default_cp2k_options[41] = {0.0, 86400.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 300.0,
89 4.0, 0.0, 0.0, 50.0, 0.000001, 20.0, 0.00001, 2.0, 0.0, 0.0,
90 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
91 0.0, 7.0, 10000.0, 2.5, 300.0, 1.0, 10000.0, 0.0001, 10.0, 0.0,
95double default_cp2k_extra[3][4] = {{0.0, 0.0, 0.0, 0.0}, {0.0, 0.0, 0.0, 0.0}, {-1.0, -1.0, 1.0, 0.0}};
97gchar *
cp2k_unit[6]={
"s",
"Ry",
"fs",
"K",
"a.u.",
"steps"};
99int cp2k_default_num[12] = {7, 3, 3, 4, 3, 11, 8, 4, 10, 9, 4, 2};
102 "VIBRATIONAL_ANALYSIS",
"LINEAR_RESPONSE",
"EHRENFEST_DYN",
" ",
" ",
" ",
" "},
103 {
"LOW",
"MEDIUM",
"HIGH",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
104 {
"GPW",
"GAPW",
"GAPW_XC",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
105 {
"ATOMIC",
"CORE",
"RANDOM",
"RESTART",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
106 {
"BROYDEN",
"CG",
"DIIS",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
107 {
"BLYP",
"B3LYP",
"BEEFVDW",
"BP",
"HCTH120",
"LDA",
"OLYP",
"PADE",
"PBE",
"PBE0",
"TPSS"},
108 {
"XYZ",
"XY",
"XZ",
"YZ",
"X",
"Y",
"Z",
"NONE",
" ",
" ",
" "},
109 {
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
110 {
"CUBIC",
"HEXAGONAL",
"ORTHORHOMBIC",
"RHOMBOHEDRAL",
111 "TETRAGONAL_AB",
"TETRAGONAL_AC",
"TETRAGONAL_BC",
"MONOCLINIC",
"TRICLINIC",
"NONE",
" "},
112 {
"ISOKIN",
"LANGEVIN",
"NPE_F",
"NPE_I",
"NPT_F",
"NPT_I",
"NVE",
"NVT",
"NVT_ADIABATIC",
" ",
" "},
113 {
"BFGS",
"CG",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "}};
115gchar *
cp2k_vdw_keywords[2][3] = {{
"DRSLL",
"LMKLL",
"RVV10"}, {
"DFTD2",
"DFTD3",
"DFTD3(BJ)"}};
118 "Single point energy and forces calculation",
119 "Geometry optimization",
"Molecular dynamics",
120 "Vibrational analysis",
"Linear response calculation",
"Ehrenfest dynamics",
" ",
" ",
" ",
" "},
121 {
"Low",
"Medium",
"High",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
122 {
"Gaussian and plane waves method",
123 "Gaussian and augmented plane waves method",
124 "Gaussian and augmented plane waves method only for XC",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
125 {
"Generate an atomic density using the atomic code",
126 "Diagonalize the core Hamiltonian",
127 "Use random wave-function coefficients",
128 "Use the RESTART file",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
129 {
"Broyden mixing approximating the inverse Hessian",
130 "Conjugate Gradients",
"Direct inversion in the iterative subspace",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
131 {
"Becke + Lee-Yang-Parr",
"Becke three-parameters hybrid + LYP",
"Bayesian error estimation + van der Walls",
132 "Becke + Perdew",
"Hamprecht-Cohen-Tozer-Handy",
"Local Density Approximation",
"Handy-Cohen + LYP",
"Padé",
133 "Perdew + Burke-Ernzerhof",
"Parameter-free PBE",
"Tao-Perdew-Staroverov-Scuseria"},
134 {
"3 dimensional (XYZ)",
"2 dimensional (XY)",
"2 dimensional (XZ)",
"2 dimensional (YZ)",
135 "1 dimensional (X)",
"1 dimensional (Y)",
"1 dimensional (Z)",
"Isolated system",
" ",
" ",
" "},
136 {
"Box parameters (a,b,c and α,β,γ)",
"Lattice vectors",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "},
137 {
"Cubic (a = b = c, α = β = γ = 90°)",
"Hexagonal (a = b ≠ c, α = β = 90°, γ = 60°)",
138 "Orthorhombic (a ≠ b ≠ c, α = β = γ = 90°)",
"Rhombohedral (a = b = c, α = β = γ ≠ 90°)",
139 "Tetragonal (a = b ≠ c, α = β = γ = 90°)",
"Tetragonal (a = c ≠ b, α = β = γ = 90°)",
"Tetragonal (a ≠ b = c, α = β = γ = 90°)",
140 "Monoclinic (a ≠ b ≠ c ≠ a, α = γ = 90°, β ≠ 90°)",
"Triclinic (a ≠ b ≠ c ≠ a, α ≠ β ≠ γ ≠ α ≠ 90°)",
"No cell symmetry",
" "},
141 {
"Constant kinetic energy",
"Langevin dynamics (constant temperature)",
"Constant pressure ensemble (no thermostat)",
142 "Constant pressure ensemble using an isotropic cell (no thermostat)",
"Constant temperature and pressure using a flexible cell",
143 "Constant temperature and pressure using an isotropic cell",
"Constant energy (µ-canonical)",
"Constant temperature and volume (canonical)",
144 "Adiabatic dynamics in constant temperature and volume ensemble (CAFES)",
" ",
" "},
145 {
"Diagonalization of a full Hessian matrix",
"Conjugate gradients",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" "}};
147gchar *
cp2k_vdw_text[2][3] = {{
"Dion-Rydberg-Schroeder-Langreth-Lundqvist non-local van der Waals density functional",
148 "Lee-Murray-Kong-Lundqvist-Langreth non-local van der Waals density functional",
149 "Revised Vydrov-van Voorhis non-local van der Waals density functional"},
150 {
"Grimme D2 method",
"Grimme D3 method (zero damping)",
"Grimme D3 method (Becke-Johnson damping)"}};
156 "Use restart information:",
157 "File that contains the restart information:",
158 "File that contains the basis set(s):",
159 "File that contains the pseudo-potential(s):",
160 "File that contains the wave-function:",
162 "Density cutoff for the finest grid level:",
163 "Number of multi-grids:",
165 "Initial guess for the wave-function:",
166 "Maximum inner-SCF cycle(s):",
167 "Convergence threshold:",
168 "Maximum outer-SCF cycle(s):",
169 "Convergence threshold:",
170 "Orbital transformation minimizer:",
172 "Spin unrestricted calculation",
174 "Use van der Waals interactions",
175 "Restricted Open Kohn-Sham 'ROKS'",
178 "Mulliken population",
182 "Lattice parameters:",
185 "Maximum number of MD steps:",
187 "Initial temperature:",
188 "Geometry optimizer:",
189 "Maximum number of optimization steps:",
190 "Atomic forces convergence criterion:",
191 "Save information every:",
192 "Add constraint(s)"};
195 "provides the general control parameters for the calculation to be performed",
196 "describes how the interatomic forces will be evaluated",
197 "describes the model: symmetry, periodicity and atomic species, pseudo-potentials and coordinates",
198 "describes the displacement of the atoms for molecular dynamics of geometry optimization",
199 "To describe the thermostat(s) for molecular dynamics",
200 "To describe the parameters required for restart"};
208 {
"TIMECON",
" ",
" ",
" "},
209 {
" ",
" ",
" ",
" "},
210 {
"LENGTH",
"MTS",
"TIMECON",
"YOSHIDA"}};
215int cp2k_opts_type[4][
NC2OP] = {{ 2, 1, 2, 3, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
216 { 1, 1, 1, 2, 2, 1, 1, 1, 1, 2, 2, 3, 1, 3, 3, 3, 3, 3, 3, 3},
217 { 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
218 { 2, -2, 1, 1, 1, 2, 1, 1, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
251 gtk_text_buffer_get_start_iter (
qmbuffer[0], & bStart);
252 gtk_text_buffer_get_end_iter (
qmbuffer[0], & bEnd);
253 gtk_text_buffer_delete (
qmbuffer[0], & bStart, & bEnd);
269 i = GPOINTER_TO_INT(data);
275 if (v > 0.0)
tmp_cp2k -> extra_opts[0][2] = v;
279 if (v > 0.0)
tmp_cp2k -> extra_opts[1][0] = v;
283 if ((
int)v == -1 || (
int)v > 0)
tmp_cp2k -> extra_opts[2][i-
CP2POR] = v;
313 i = GPOINTER_TO_INT(data);
331 i = GPOINTER_TO_INT(data);
363 gchar * cp2k_vdw_vars[2] = {
"Type of potential:",
"Cutoff:"};
366 i = (
id == 0) ? 2 : 3;
467 i = GPOINTER_TO_INT(data);
470 gchar * cp2k_vdw_options[2] = {
"Non-local potential",
"Pair potential"};
471 gchar * cp2k_roks_options[2] = {
"Energy scaling:",
"Spin configuration <sup>*</sup>:"};
472 gchar * cp2k_orb_options[2] = {
"Number of HOMO levels (-1 for all):",
"Number of LUMO levels (-1 for all):"};
474 gchar * str = g_strdup_printf (
"%s - options",
global_opts[i]);
516 add_box_child_start (GTK_ORIENTATION_VERTICAL,
vbox, gtk_label_new (
"* for the singly occupied orbitals"), FALSE, FALSE, 5);
550 i = GPOINTER_TO_INT(data);
591 i = GPOINTER_TO_INT(data);
633 i = GPOINTER_TO_INT(data) -
CP2FRE;
636 gtk_text_buffer_get_start_iter (textbuf, & bStart);
637 gtk_text_buffer_get_end_iter (textbuf, & bEnd);
641 tmp_cp2k -> files[i] = g_strdup_printf (
"%s", gtk_text_buffer_get_text (textbuf, & bStart, & bEnd, FALSE));
648 if (
tmp_cp2k -> spec_files[j][k] != NULL) g_free (
tmp_cp2k -> spec_files[j][k]);
649 tmp_cp2k -> spec_files[j][k] = g_strdup_printf (
"%s", gtk_text_buffer_get_text (textbuf, & bStart, & bEnd, FALSE));
650 if (g_strcmp0 (
tmp_cp2k -> spec_files[j][k],
"") == 0)
652 tmp_cp2k -> spec_files[j][k] = NULL;
674 gchar * info[2] = {
"<b>-</b> Select and use set of parameters from the database: ",
675 "<b>-</b> Define and use other set of parameters: "};
676 gchar * data_name[2][2] = {{
"\t\tAvailable basis set for ",
"\t\tAvailable pseudo-potential for "},
677 {
"\t\tBasis set for ",
"\t\tPseudo-potential for "}};
693 if (
tmp_cp2k -> spec_data[spec][j] > -1)
706 GINT_TO_POINTER(j+10),
tmp_cp2k -> spec_files[spec][j]),
730 i = GPOINTER_TO_INT(data);
750 gtk_assistant_remove_page (GTK_ASSISTANT(
qm_assistant), 5);
762 gtk_assistant_insert_page (assist, page, 5);
764 gtk_assistant_set_page_type (assist, page, GTK_ASSISTANT_PAGE_CONTENT);
765 gtk_assistant_set_page_complete (assist, page, TRUE);
771 if (j == 2 || j == 3)
820 for (i=0; i<
NC2OP; i++)
890 g_signal_connect (G_OBJECT (widg),
"changed", G_CALLBACK(
changed_cp2k_box), GINT_TO_POINTER(j));
930 gchar * str = g_strdup_printf (
" %s provides official CP2K atomic basis sets and pseudo-potentials, are included:",
PACKAGE);
934 "<sup><tt>\t - GTH_BASIS_SETS\t\t(CP2K v9.1, released: <b>2021-12-31</b>)</tt></sup>\n"
935 "<sup><tt>\t - BASIS_SET\t\t(CP2K v9.1, released: <b>2021-12-31</b>)</tt></sup>\n"
936 "<sup><tt>\t - POTENTIAL\t\t(CP2K v9.1, released: <b>2021-12-31</b>)</tt></sup>",
937 -1, -1, 0.1, 0.5), FALSE, FALSE, 0);
938 add_box_child_start (GTK_ORIENTATION_VERTICAL,
vbox,
markup_label(
" Following your selection the files that contains the parameters for your calculation will be generated automatically.\n"
939 " Alternatively it is possible to define and use your own set of parameters.",
940 -1, -1, 0.0, 0.5), FALSE, FALSE, 20);
968 return g_strdup_printf (
"Details of the <b>%s</b> section that %s",
cpsect[p],
cpelemts[p+1]);
972 return g_strdup_printf (
"%s",
cpelemts[p+1]);
1002 tmp_cp2k -> input_type = GPOINTER_TO_INT (data);
1017 GtkWidget * main_box;
1018 gchar * filename[4] = {
"CP2K main input file '*.inp'",
"forces.inc",
"system.inc",
"motion.inc"};
1019 gchar * filetext[4] = {
"<b>&GLOBAL</b>\n...\n<b>&END GLOBAL</b>\n\n<b>@INCLUDE</b> 'forces.inc'\n\n<b>@INCLUDE</b> 'motion.inc'",
1020 "<b>&FORCE_EVAL</b>\n...\n<b>@INCLUDE</b> 'system.inc'\n<b>&END FORCE_EVAL</b>",
1021 "<b>&SUBSYS</b>\n...\n<b>&END SUBSYS</b>",
1022 "<b>&MOTION</b>\n...\n<b>&END MOTION</b>"};
1023 GtkWidget *
vbox, * vbx, * hbx;
1030 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbx, gtk_label_new (
"CP2K input file '*.inp'"), FALSE, FALSE, 5);
1031 vframe = gtk_frame_new (NULL);
1032 gtk_frame_set_label_widget (GTK_FRAME(vframe), hbx);
1034 gtk_frame_set_shadow_type (GTK_FRAME(vframe), GTK_SHADOW_ETCHED_IN);
1044 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbx,
markup_label(
"<b>&SUBSYS</b>\n...\n<b>&END SUBSYS</b>", 150, -1, 0.0, 0.5), FALSE, FALSE, 10);
1058 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbx, gtk_label_new (filename[i]), FALSE, FALSE, 5);
1059 vframe = gtk_frame_new (NULL);
1060 gtk_frame_set_label_widget (GTK_FRAME(vframe), hbx);
1062 gtk_frame_set_shadow_type (GTK_FRAME(vframe), GTK_SHADOW_ETCHED_IN);
1088 gchar *
text =
"The CP2K input system offers to have the information gathered in a single, rather long, file\n"
1089 "or separated in several files each of them dedicated to a particular section of the input: ";
1094 gchar * ftext[2] = {
"Single input file",
"Multiple files"};
1100 gtk_widget_set_size_request (
vfbox[i], (i==0) ? 200 : 400, -1);
1109 if (i) gtk_check_button_set_group ((GtkCheckButton *)
filebut[i], (GtkCheckButton *)
filebut[0]);
1117 filebut[i] = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON(
filebut[0]), ftext[i]);
1140 return g_strdup_printf (
"The CP2K input structure");
1144 return g_strdup_printf (
"The %s section",
cpsect[p-1]);
1148 return g_strdup_printf (
"The MOTION section - thermostat(s)");
1152 return g_strdup_printf (
"The MOTION section - restart(s)");
1205 gtk_assistant_append_page (assist, page);
1207 gtk_assistant_set_page_type (assist, page, GTK_ASSISTANT_PAGE_CONTENT);
1208 gtk_assistant_set_page_complete (assist, page, TRUE);
1211 info = g_strdup_printf (
"<b> Finalize the creation of the CP2K input files now !</b>");
1214 add_box_child_start (GTK_ORIENTATION_VERTICAL, conclu,
markup_label(
"\n \t<b>Note: </b>You can re-open this assistant later if required to adjust your choices\n", -1, -1, 0.0, 0.5), FALSE, FALSE, 0);
1215 gtk_assistant_append_page (assist, conclu);
1216 gtk_assistant_set_page_title (assist, conclu,
"Create the input files now !");
1217 gtk_assistant_set_page_type (assist, conclu, GTK_ASSISTANT_PAGE_CONFIRM);
1218 gtk_assistant_set_page_complete (assist, conclu, TRUE);
1219 gtk_assistant_update_buttons_state (assist);
1238 box ->
param[1][0] == 90.0)
return 0;
1242 box ->
param[1][0] != 90.0)
return 3;
GtkTextBuffer * qmbuffer[MAXDATAQM+2]
Variable declarations for the MD input preparation assistants.
Callback declarations for main window.
integer(kind=c_int) function chemistry()
Variable declarations for the creation of the CP2K input file(s)
GtkWidget * prepare_basis_combo(int sp, int obj)
prepare basis set / pseudopotential combo box
G_MODULE_EXPORT void update_cp2k_option(GtkEntry *res, gpointer data)
update CP2K option entry callback
void cp2k_fix_molecule()
CP2K assistant fixing fragment(s) - creating the dialog.
void print_cp2k(int f, GtkTextBuffer *buffer)
print the CP2K input file section
GtkWidget * option_box[4]
gchar * cp2k_default_text[11][11]
GtkWidget * cp2k_section_box(int s)
create the CP2K assistant section box
void field_unselect_all()
unselect all atoms
int cp2k_opts_type[4][NC2OP]
gchar * cp_section_name(int p)
get CP2K section name
GtkWidget * cp2k_spec_combo
void create_selection_button(GtkWidget *box, int num, int id, gpointer data)
create thermostat atom(s) selection button
GtkWidget * checked_box[2]
GtkWidget * cpmd_box(GtkWidget *box, gchar *lab, int v_space, int h_space, int dim)
prepare a labelled box widget for the CPMD input creation assistant
GtkWidget * create_cp2k_spec_box(int spec)
create a CP2K chemical species option combo box
GtkWidget * cp2k_spec_box[2]
double default_cp2k_extra[3][4]
void add_cp2k_pages()
add pages to the CP2 assistant
GtkWidget * init_cp2k()
initialize the CP2K input creation assistant
gchar * cp2k_vdw_keywords[2][3]
G_MODULE_EXPORT void update_cp2k_check(GtkToggleButton *but, gpointer data)
update some CP2K parameter toggle callback GTK3
ColRGBA init_color(int id, int numid)
initialize color based id number over total number of elements
G_MODULE_EXPORT void cp2k_file_info(GtkTextBuffer *textbuf, gpointer data)
update the C2PK information textview
GtkWidget * qm_preview_box(int c, int s, int l)
prepare preview section widgets
int find_cp2k_sym()
find the CP2K symmetry parameter based on the cell properties
GtkWidget * cp2k_vdw_box[2]
G_MODULE_EXPORT void changed_cp2k_option_box(GtkComboBox *box, gpointer data)
change a GtkComboBox while creating a CP2K input file
G_MODULE_EXPORT void update_cp2k_parameter(GtkEntry *res, gpointer data)
update some CP2K parameters
GtkWidget * vbox_cp2k(int s)
create the CP2K assistant page vertical box
gchar * cp2k_default_keywords[11][11]
double default_vdw_cut[2]
gchar * cp2k_vdw_text[2][3]
void print_start_buffer()
update of the GtkTextBuffer showing the CP2K input
G_MODULE_EXPORT void select_input_type(GtkToggleButton *but, gpointer data)
select the input file type
GtkWidget * motion_box[2]
GtkWidget * create_vdw_box(int id)
create the VdW informaiton and option(s) widgets
G_MODULE_EXPORT void changed_cp2k_box(GtkComboBox *box, gpointer data)
change CP2K option
G_MODULE_EXPORT void update_cp2k_option_check(GtkToggleButton *but, gpointer data)
CP2K option toggle callback GTK3.
double default_cp2k_options[41]
int var_by_cp2sections[4]
void cp2k_option_box(GtkWidget *box, int id)
create a CP2K option combo box
gboolean cp2k_with_motion()
CP2K MD calculation ?
GtkWidget * thermo_box()
create the thermostat configuration widgets
gchar * page_name_cp2k(int p)
get CP2K assistant page name
char * k_thermo[CP2NTHERM][4]
GtkWidget * spec_data_combo[2]
GtkWidget * file_info(int id)
create the assistant page that present the input file(s) properties
GtkWidget * cp2k_thermo_box
G_MODULE_EXPORT void cp2k_option_dialog(GtkWidget *but, gpointer data)
CP2K option dialog - creating the dialog.
Variable declarations for the creation of the CPMD input file.
void label(cairo_t *cr, double val, int axe, int p, project *this_proj)
draw axis label
double string_to_double(gpointer string)
convert string to double
Global variable declarations Global convenience function declarations Global data structure defin...
void run_this_gtk_dialog(GtkWidget *dial, GCallback handler, gpointer data)
run a GTK (3 and 4) basic GtkDialog
int combo_get_active(GtkWidget *combo)
retrieve the active item's position
GtkWidget * create_entry(GCallback handler, int dim, int cdim, gboolean key_release, gpointer data)
Create a GtkEntry.
void update_entry_double(GtkEntry *entry, double doubleval)
update the content of a GtkEntry as double
GtkWidget * create_text_view(int dimx, int dimy, int edit, int mono, GCallback handler, gpointer data, gchar *text)
create a GtkTextView and display some text
GtkWidget * dialogmodal(gchar *str, GtkWindow *parent)
Create a new dialog modal window.
void combo_set_active(GtkWidget *combo, int pos)
set the active item's position
const gchar * entry_get_text(GtkEntry *entry)
get the text in a GtkEntry
void update_entry_int(GtkEntry *entry, int intval)
update the content of a GtkEntry as int
GtkWidget * stock_image(const gchar *stock_id)
create a GtkImage for the Gtk database
GtkWidget * radio_button(gchar *text, int dimx, int dimy, gboolean state, GCallback handler, gpointer data)
create a radio button
GtkWidget * check_button(gchar *text, int dimx, int dimy, gboolean state, GCallback handler, gpointer data)
create a check button
GtkWidget * create_button(gchar *text, int image_format, gchar *image, int dimx, int dimy, int relief, GCallback handler, gpointer data)
create a simple button
GtkWidget * create_combo()
create a GtkCombox widget, note deprecated in GTK4
GtkWidget * dialog_get_content_area(GtkWidget *widg)
prepare GtkWidget to insert content in a GtkDialog window
GtkWidget * markup_label(gchar *text, int dimx, int dimy, float ax, float ay)
create a GtkLabel with pango markup
void add_box_child_start(int orientation, GtkWidget *widg, GtkWidget *child, gboolean expand, gboolean fill, int padding)
Add a GtkWidget in a GtkBox at the initial position.
void widget_set_sensitive(GtkWidget *widg, gboolean sensitive)
Set sensitivity for a GtkWidget, ensuring it is a GtkWidget.
GtkWidget * create_hbox(int spacing)
create a GtkBox with horizontal orientation
void combo_text_append(GtkWidget *combo, gchar *text)
append text in GtkComboBox widget
G_MODULE_EXPORT void run_destroy_dialog(GtkDialog *dialog, gint response_id, gpointer data)
to destroy a GtkDialog when the dialog emit the closing signal
GtkWidget * destroy_this_widget(GtkWidget *widg)
destroy a GtkWidget
void add_container_child(int type, GtkWidget *widg, GtkWidget *child)
Add a GtkWidget into another GtkWidget.
void hide_the_widgets(GtkWidget *widg)
hide GtkWidget
GtkWidget * create_vbox(int spacing)
create a GtkBox with vertical orientation
int button_get_status(GtkWidget *button)
get status of check / toggle button
void show_the_widgets(GtkWidget *widg)
show GtkWidget
void motion(glwin *view, gint x, gint y, GdkModifierType state)
mouse motion in the OpenGL window
Variable declarations related to the OpenGL window Function declarations related to the OpenGL wind...
Function declarations for the creation of the OpenGL window.
Messaging function declarations.
Function declarations for reading atomes project file Function declarations for saving atomes proje...