atomes 1.2.1
atomes: an atomic scale modeling tool box
Loading...
Searching...
No Matches
w_atoms.c
Go to the documentation of this file.
1/* This file is part of the 'atomes' software
2
3'atomes' is free software: you can redistribute it and/or modify it under the terms
4of the GNU Affero General Public License as published by the Free Software Foundation,
5either version 3 of the License, or (at your option) any later version.
6
7'atomes' is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
8without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9See the GNU General Public License for more details.
10
11You should have received a copy of the GNU Affero General Public License along with 'atomes'.
12If not, see <https://www.gnu.org/licenses/>
13
14Copyright (C) 2022-2025 by CNRS and University of Strasbourg */
15
22/*
23* This file: 'w_atoms.c'
24*
25* Contains:
26*
27
28 - The functions to create the atom(s) / clone(s) advanced configuration window
29
30*
31* List of functions:
32
33 G_MODULE_EXPORT gboolean close_event_model (GtkWindow * widg, gpointer data);
34 G_MODULE_EXPORT gboolean close_event_model (GtkWidget * widg, GdkEvent * event, gpointer data);
35
36 void atoms_input_win (GtkWidget * win, project * this_proj, int nspec, int aoc, double * val);
37
38 G_MODULE_EXPORT void update_atom_size (GtkEntry * res, gpointer data);
39 G_MODULE_EXPORT void set_atom_parameter (GtkWidget * widg, gpointer data);
40 G_MODULE_EXPORT void set_atom_color (GtkColorChooser * colob, gpointer data);
41 G_MODULE_EXPORT void toggled_show_hide_atom (GtkCheckButton * but, gpointer data);
42 G_MODULE_EXPORT void toggled_show_hide_atom (GtkToggleButton * but, gpointer data);
43 G_MODULE_EXPORT void toggled_show_hide_label (GtkCheckButton * but, gpointer data);
44 G_MODULE_EXPORT void toggled_show_hide_label (GtkToggleButton * but, gpointer data);
45 G_MODULE_EXPORT void close_model (GtkButton * but, gpointer data);
46 G_MODULE_EXPORT void atom_properties (GtkWidget * widg, gpointer data);
47 G_MODULE_EXPORT void atom_properties (GSimpleAction * action, GVariant * parameter, gpointer data);
48
49 GtkWidget * prop_tab (glwin * view, int aoc);
50 GtkWidget * advance_atom_notebook (glwin * view, int atom_or_clone);
51 GtkWidget * advanced_atom_properties (int atom_or_clone, glwin * view);
52
53*/
54
55#include "global.h"
56#include "interface.h"
57#include "glview.h"
58#include "glwindow.h"
59#include "color_box.h"
60
61extern atom_search * allocate_atom_search (int proj, int action, int searchid, int tsize);
62extern void check_hidden_visible (project * this_proj);
63extern gchar * label_atpts (project * this_proj, glwin * view, int id);
64extern GtkWidget * labels_tab (glwin * view, int id);
65extern GtkWidget * selection_tab (atom_search * asearch, int nats);
66extern GtkTreeStore * atom_model;
67
76G_MODULE_EXPORT void update_atom_size (GtkEntry * res, gpointer data)
77{
78 int j;
79 gchar * str;
80 tint * the_data = (tint *)data;
81 int a, t;
82 a = the_data -> c;
83 project * this_proj = get_project_by_id (the_data -> a);
84 j = this_proj -> modelgl -> anim -> last -> img -> style;
85 const gchar * m = entry_get_text (res);
86 double v = string_to_double ((gpointer)m);
87 int s = this_proj -> nspec;
88 if (j == WIREFRAME || j == PUNT)
89 {
90 if (v > 0.0)
91 {
92 this_proj -> modelgl -> anim -> last -> img -> pointrad[a] = v;
93 int shaders[2] = {ATOMS, SELEC};
94 re_create_md_shaders (2, shaders, this_proj);
95 this_proj -> modelgl -> create_shaders[PICKS] = TRUE;
96 this_proj -> modelgl -> create_shaders[LABEL] = TRUE;
97 }
98 v = this_proj -> modelgl -> anim -> last -> img -> pointrad[a];
99 t = PUNT;
100 }
101 else
102 {
103 if (v > 0.0)
104 {
105 this_proj -> modelgl -> anim -> last -> img -> sphererad[a] = v;
106 int shaders[2] = {ATOMS, SELEC};
107 re_create_md_shaders (2, shaders, this_proj);
108 this_proj -> modelgl -> create_shaders[PICKS] = TRUE;
109 this_proj -> modelgl -> create_shaders[LABEL] = TRUE;
110 }
111 v = this_proj -> modelgl -> anim -> last -> img -> sphererad[a];
112 t = SPHERES;
113 }
115 if (a < s)
116 {
117 str = label_atpts (this_proj, this_proj -> modelgl, t/PUNT);
118#ifdef GTK3
119 gtk_menu_item_set_label (GTK_MENU_ITEM(this_proj -> modelgl -> ogl_atoms[t-2]), str);
120#endif
121 }
122 else
123 {
124 str = label_atpts (opengl_project, opengl_project -> modelgl, 2+t/PUNT);
125#ifdef GTK3
126 gtk_menu_item_set_label (GTK_MENU_ITEM(opengl_project -> modelgl -> ogl_atoms[t+2]), str);
127#endif
128 }
129 g_free (str);
130 update (this_proj -> modelgl);
131}
132
144void atoms_input_win (GtkWidget * win, project * this_proj, int nspec, int aoc, double * val)
145{
146 int i, j, k;
147 GtkWidget * vbox = dialog_get_content_area (win);
148 GtkWidget * hbo;
149 GtkWidget * rad;
150 gchar * dim[2]={" pts"," Å "};
151 gchar * str;
152 if (this_proj -> modelgl -> anim -> last -> img -> style == WIREFRAME || this_proj -> modelgl -> anim -> last -> img -> style == PUNT)
153 {
154 k = 0;
155 }
156 else
157 {
158 k = 1;
159 }
160 for (i=0; i<nspec; i++)
161 {
162 hbo = create_hbox (0);
163 gtk_widget_set_size_request (hbo, 250, -1);
164 add_box_child_start (GTK_ORIENTATION_VERTICAL, vbox, hbo, TRUE, TRUE, 0);
165 if (aoc == 0)
166 {
167 str = g_strdup_printf (" %s", this_proj -> chemistry -> label[i]);
168 }
169 else
170 {
171 str = g_strdup_printf (" %s*", this_proj -> chemistry -> label[i]);
172 }
173 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbo, markup_label(str, 100, -1, 0.2, 0.5), FALSE, FALSE, 0);
174 g_free (str);
175 j = i + aoc*nspec;
176 rad = create_entry (G_CALLBACK(update_atom_size), 120, 15, FALSE, (gpointer)& this_proj -> modelgl -> colorp[0][j]);
177 update_entry_double (GTK_ENTRY(rad), val[j]);
178 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbo, rad, FALSE, FALSE, 0);
179 if (this_proj -> modelgl -> anim -> last -> img -> style == SPACEFILL) widget_set_sensitive (rad, 0);
180 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbo, markup_label(dim[k], 30, -1, 0.0, 0.5), FALSE, FALSE, 0);
181 }
183}
184
193G_MODULE_EXPORT void set_atom_parameter (GtkWidget * widg, gpointer data)
194{
195 tint * the_data = (tint *)data;
196 gchar * title[2][2] = {{"Adjust atom sphere radius", "Adjust clone sphere radius"},
197 {"Adjust atom point size", "Adjust clone point size"}};
198
199 opengl_project_changed (the_data -> a);
200 int s = opengl_project -> nspec;
201 double * val;
202 int id = the_data -> b;
203 int jd = the_data -> c;
204 if (jd)
205 {
206 val = opengl_project -> modelgl -> anim -> last -> img -> pointrad;
207 }
208 else if (opengl_project -> modelgl -> anim -> last -> img -> style == SPACEFILL)
209 {
210 val = opengl_project -> modelgl -> anim -> last -> img -> atomicrad;
211 }
212 else
213 {
214 val = opengl_project -> modelgl -> anim -> last -> img -> sphererad;
215 }
216 GtkWidget * win = dialogmodal (title[jd][id], GTK_WINDOW(opengl_project -> modelgl -> win));
217 atoms_input_win (win, opengl_project, s, id, val);
218 run_this_gtk_dialog (win, G_CALLBACK(run_destroy_dialog), NULL);
219}
220
229G_MODULE_EXPORT void set_atom_color (GtkColorChooser * colob, gpointer data)
230{
231 tint * the_data = (tint *)data;
232 int a;
233 project * this_proj = get_project_by_id(the_data -> a);
234 a = the_data -> c;
235 this_proj -> modelgl -> anim -> last -> img -> at_color[a] = get_button_color (colob);
236 int shaders[2] = {ATOMS, BONDS};
237 re_create_md_shaders (2, shaders, this_proj);
238 update (this_proj -> modelgl);
239}
240
241#ifdef GTK4
250G_MODULE_EXPORT void toggled_show_hide_atom (GtkCheckButton * but, gpointer data)
251#else
260G_MODULE_EXPORT void toggled_show_hide_atom (GtkToggleButton * but, gpointer data)
261#endif
262{
263 tint * id = (tint *)data;
264 int i, j, k;
265 i = id -> a;
266 j = id -> b;
267 k = id -> c;
268 gboolean show = button_get_status ((GtkWidget *)but);
269#ifdef GTK4
270 project * this_proj = get_project_by_id (i);
271 int l, m;
272 for (l=0; l<this_proj -> steps; l++)
273 {
274 for (m=0; m<this_proj -> natomes; m++)
275 {
276 if (this_proj -> atoms[l][m].sp == k)
277 {
278 this_proj -> atoms[l][m].show[j] = show;
279 }
280 }
281 }
282 this_proj -> modelgl -> anim -> last -> img -> show_atom[j][k] = show;
283 check_hidden_visible (this_proj);
284 init_default_shaders (this_proj -> modelgl);
285 update_menu_bar (this_proj -> modelgl);
286#else
287 gtk_check_menu_item_set_active ((GtkCheckMenuItem *)get_project_by_id(i) -> modelgl -> ogl_spec[j][k], show);
288#endif
289}
290
291#ifdef GTK4
300G_MODULE_EXPORT void toggled_show_hide_label (GtkCheckButton * but, gpointer data)
301#else
310G_MODULE_EXPORT void toggled_show_hide_label (GtkToggleButton * but, gpointer data)
311#endif
312{
313 tint * id = (tint *)data;
314 int i, j, k;
315 i = id -> a;
316 j = id -> b;
317 k = id -> c;
318 gboolean show = button_get_status ((GtkWidget *)but);
319 project * this_proj = get_project_by_id (i);
320#ifdef GTK4
321 int l, m;
322 for (l=0; l<this_proj -> steps; l++)
323 {
324 for (m=0; m<this_proj -> natomes; m++)
325 {
326 if (this_proj -> atoms[l][m].sp == k)
327 {
328 this_proj -> atoms[l][m].label[j] = show;
329 }
330 }
331 }
332 this_proj -> modelgl -> labelled = check_label_numbers (this_proj, j);
333 this_proj -> modelgl -> create_shaders[LABEL] = TRUE;
334 update (this_proj -> modelgl);
335 update_menu_bar (this_proj -> modelgl);
336#else
337 // GTK3 Menu Action To Check
338 gtk_check_menu_item_set_active ((GtkCheckMenuItem *)this_proj -> modelgl -> ogl_lab[j][k], show);
339#endif
340}
341
350GtkWidget * prop_tab (glwin * view, int aoc)
351{
352 int i, j, k;
353 gchar * str;
354 GtkWidget * lab;
355 GtkWidget * prop_box;
356 GtkWidget * hbox;
357 GtkWidget * but;
358 GtkWidget * entry;
359 project * this_proj = get_project_by_id(view -> proj);
360 gchar * col[5] = {"<b>Color</b>",
361 "<b>Radius [Å]</b>",
362 "<b>Show</b>",
363 "<b>Label</b>",
364 "<b>Size [pts]</b>"};
365 int csize[5] = {60, 0, 25, 0, 0};
366
367 GtkWidget * prop = create_layout (-1, -1);
368 GtkWidget * vbox = add_vbox_to_layout (prop, -1, -1);
369
370 k = view -> anim -> last -> img -> style;
371 prop_box = create_hbox (0);
372 gtk_widget_set_size_request (prop_box, -1, -1);
373 add_box_child_start (GTK_ORIENTATION_VERTICAL, vbox, prop_box, FALSE, TRUE, 0);
374 for (i=0; i<4; i++)
375 {
376 if (i == 1 && (k == WIREFRAME || k == PUNT))
377 {
378 lab = markup_label(col[4], -1, -1, 0.0, 0.0);
379 }
380 else
381 {
382 lab = markup_label (col[i], -1, -1, 0.0, 0.0);
383 }
384 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, prop_box, lab, FALSE, FALSE, csize[i]);
385 }
386 for (i=0; i< this_proj -> nspec; i++)
387 {
388 hbox = create_hbox (0);
389 //gtk_widget_set_size_request (hbox, -1, -1);
390 add_box_child_start (GTK_ORIENTATION_VERTICAL, vbox, hbox, FALSE, TRUE, 0);
391 j = i + aoc * this_proj -> nspec;
392 if (aoc == 0)
393 {
394 str = g_strdup_printf (" <b>%s</b>", this_proj -> chemistry -> label[i]);
395 }
396 else
397 {
398 str = g_strdup_printf (" <b>%s<sup>*</sup></b>", this_proj -> chemistry -> label[i]);
399 }
400 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbox, markup_label(str, 30, -1, 0.0, 0.5), FALSE, FALSE, 10);
401 g_free (str);
402
403 but = color_button (view -> anim -> last -> img -> at_color[j], TRUE, 80, -1, G_CALLBACK(set_atom_color), & view -> colorp[0][j]);
404 if (aoc == 0)
405 {
406 str = g_strdup_printf ("%s atom(s) color", this_proj -> chemistry -> label[i]);
407 }
408 else
409 {
410 str = g_strdup_printf ("%s clone(s) color", this_proj -> chemistry -> label[i]);
411 }
412 gtk_color_button_set_title (GTK_COLOR_BUTTON(but), str);
413 g_free (str);
414 if (this_proj -> modelgl -> anim -> last -> img -> color_map[0] != 0)
415 {
416 widget_set_sensitive (but, 0);
417 }
418 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbox, but, FALSE, FALSE, 5);
419
420 // Raduis entry
421 entry = create_entry (G_CALLBACK(update_atom_size), 80, 10, FALSE, (gpointer)& this_proj -> modelgl -> colorp[0][j]);
422 if (k == WIREFRAME || k == PUNT)
423 {
424 update_entry_double (GTK_ENTRY(entry), view -> anim -> last -> img -> pointrad[j]);
425 }
426 else if (k == BALL_AND_STICK || k == SPHERES)
427 {
428 update_entry_double (GTK_ENTRY(entry), view -> anim -> last -> img -> sphererad[j]);
429 }
430 else if (k == SPACEFILL)
431 {
432 update_entry_double (GTK_ENTRY(entry), view -> anim -> last -> img -> atomicrad[j]);
433 widget_set_sensitive (entry, 0);
434 }
435 else
436 {
437 if (k == CYLINDERS)
438 {
439 update_entry_double (GTK_ENTRY(entry), view -> anim -> last -> img -> radall[aoc]);
440 }
441 widget_set_sensitive (entry, 0);
442 }
443 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbox, entry, FALSE, FALSE, 0);
444
445 // Show/Hide check button
446 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbox, check_button (NULL, -1, -1, view -> anim -> last -> img -> show_atom[aoc][i], G_CALLBACK(toggled_show_hide_atom), & view -> colorp[aoc][i]), FALSE, FALSE, 30);
447 // Show/Hide label check button
448 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbox, check_button (NULL, -1, -1, view -> anim -> last -> img -> show_label[aoc][i], G_CALLBACK(toggled_show_hide_label), & view -> colorp[aoc][i]), FALSE, FALSE, 5);
449 }
450 return prop;
451}
452
461G_MODULE_EXPORT void close_model (GtkButton * but, gpointer data)
462{
463 tint * dat = (tint *)data;
464 project * this_proj = get_project_by_id(dat -> a);
465 this_proj -> modelgl -> model_win[dat -> b] -> win = destroy_this_widget (this_proj -> modelgl -> model_win[dat -> b] -> win);
466 g_free (this_proj -> modelgl -> model_win[dat -> b]);
467 this_proj -> modelgl -> model_win[dat -> b] = NULL;
468 g_free (this_proj -> modelgl -> search_widg[dat -> b]);
469 this_proj -> modelgl -> search_widg[dat -> b] = NULL;
470}
471
472#ifdef GTK4
481G_MODULE_EXPORT gboolean close_event_model (GtkWindow * widg, gpointer data)
482#else
492G_MODULE_EXPORT gboolean close_event_model (GtkWidget * widg, GdkEvent * event, gpointer data)
493#endif
494{
495 close_model (NULL, data);
496 return FALSE;
497}
498
507GtkWidget * advance_atom_notebook (glwin * view, int atom_or_clone)
508{
509 GtkWidget * notebook = gtk_notebook_new ();
510 gtk_notebook_append_page (GTK_NOTEBOOK(notebook), prop_tab (view, atom_or_clone), gtk_label_new ("Display properties"));
511 gtk_notebook_append_page (GTK_NOTEBOOK(notebook), labels_tab (view, atom_or_clone), gtk_label_new ("Label properties"));
512
513 if (view -> search_widg[atom_or_clone] == NULL)
514 {
515 view -> search_widg[atom_or_clone] = allocate_atom_search (view -> proj, atom_or_clone, atom_or_clone, get_project_by_id(view -> proj) -> natomes);
516 }
517 gtk_notebook_append_page (GTK_NOTEBOOK(notebook),
518 selection_tab (view -> search_widg[atom_or_clone], get_project_by_id(view -> proj) -> natomes),
519 gtk_label_new ((atom_or_clone) ? "Clone(s) selection" : "Atom(s) selection"));
520 return notebook;
521}
522
531GtkWidget * advanced_atom_properties (int atom_or_clone, glwin * view)
532{
533 GtkWidget * aprop;
534 gchar * win_title[2]={"Atom(s) configuration - ", "Clone(s) configuration - "};
535 gchar * str = g_strdup_printf ("%s%s", win_title[atom_or_clone], prepare_for_title(get_project_by_id(view -> proj)->name));
536 aprop = create_win (str, view -> win, FALSE, FALSE);
537 int i = (get_project_by_id(view -> proj)-> natomes > 10000) ? 170 : 0;
538 gtk_widget_set_size_request (aprop, -1, 580+i);
539 GtkWidget * vbox = create_vbox (5);
541 view -> model_win[atom_or_clone] -> notebook = advance_atom_notebook (view, atom_or_clone);
542 add_box_child_start (GTK_ORIENTATION_VERTICAL, vbox, view -> model_win[atom_or_clone] -> notebook, TRUE, TRUE, 0);
543 GtkWidget * hbox = create_hbox (5);
544 add_box_child_start (GTK_ORIENTATION_VERTICAL, vbox, hbox, FALSE, FALSE, 5);
545 GtkWidget * but = create_button ("Close", IMG_STOCK, FCLOSE, -1, -1, GTK_RELIEF_NORMAL, G_CALLBACK(close_model), & view -> colorp[atom_or_clone][0]);
546 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, hbox, but, FALSE, FALSE, 5);
547 add_gtk_close_event (aprop, G_CALLBACK(close_event_model), & view -> colorp[atom_or_clone][0]);
548 return aprop;
549}
550
551#ifdef GTK3
560G_MODULE_EXPORT void atom_properties (GtkWidget * widg, gpointer data)
561#else
571G_MODULE_EXPORT void atom_properties (GSimpleAction * action, GVariant * parameter, gpointer data)
572#endif
573{
574 tint * the_data = (tint *) data;
575 int atom_or_clone = the_data -> b;
576 project * this_proj = get_project_by_id (the_data -> a);
577 if (this_proj -> modelgl -> model_win[atom_or_clone] == NULL)
578 {
579 this_proj -> modelgl -> model_win[atom_or_clone] = g_malloc0 (sizeof*this_proj -> modelgl -> model_win[atom_or_clone]);
580 this_proj -> modelgl -> model_win[atom_or_clone] -> win = advanced_atom_properties (atom_or_clone, this_proj -> modelgl);
581 show_the_widgets (this_proj -> modelgl -> model_win[atom_or_clone] -> win);
582 if (this_proj -> natomes < 10000)
583 {
584 hide_the_widgets (this_proj -> modelgl -> search_widg[atom_or_clone] -> info[1]);
585 }
586 else
587 {
588 hide_the_widgets (this_proj -> modelgl -> search_widg[atom_or_clone] -> id_box);
589 }
590 }
591 if (GTK_IS_WIDGET(this_proj -> modelgl -> model_win[atom_or_clone] -> win))
592 {
593 gtk_notebook_set_current_page (GTK_NOTEBOOK (this_proj -> modelgl -> model_win[atom_or_clone] -> notebook), the_data -> c);
594 }
595 else
596 {
597 show_warning (g_strdup_printf ("Error impossible to display the model window for %s !", (atom_or_clone) ? "clones" : "atoms"), this_proj -> modelgl -> win);
598 }
599}
integer(kind=c_int) function chemistry()
Definition chemistry.F90:22
Structure definitions for color management Function declarations for color management.
color colorp[64]
void label(cairo_t *cr, double val, int axe, int p, project *this_proj)
draw axis label
Definition labels.c:56
ColRGBA col
Definition d_measures.c:77
int atoms[NUM_STYLES][2]
float val
Definition dlp_init.c:117
void init_default_shaders(glwin *view)
re-initialize the default OpenGL shaders
double string_to_double(gpointer string)
convert string to double
Definition global.c:624
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
Definition gtk-misc.c:501
@ IMG_STOCK
Definition global.h:266
GtkWidget * create_entry(GCallback handler, int dim, int cdim, gboolean key_release, gpointer data)
Create a GtkEntry.
Definition gtk-misc.c:1375
void update_entry_double(GtkEntry *entry, double doubleval)
update the content of a GtkEntry as double
Definition gtk-misc.c:643
GtkWidget * dialogmodal(gchar *str, GtkWindow *parent)
Create a new dialog modal window.
Definition gtk-misc.c:520
GtkWidget * create_win(gchar *str, GtkWidget *parent, gboolean modal, gboolean resiz)
create a new GtkWindow
Definition gtk-misc.c:454
project * proj
GtkWidget * add_vbox_to_layout(GtkWidget *layout, int size_x, int size_y)
Insert a vertical GtkBox in a GtkLatout then send back the GtkBox.
Definition gtk-misc.c:874
const gchar * entry_get_text(GtkEntry *entry)
get the text in a GtkEntry
Definition gtk-misc.c:607
void opengl_project_changed(int id)
change the OpenGL project
Definition update_p.c:245
void add_gtk_close_event(GtkWidget *widg, GCallback handler, gpointer data)
add a close event signal and callback to a GtkWidget
Definition gtk-misc.c:2522
GtkWidget * check_button(gchar *text, int dimx, int dimy, gboolean state, GCallback handler, gpointer data)
create a check button
Definition gtk-misc.c:1893
@ CONTAINER_WIN
Definition global.h:252
GtkWidget * create_button(gchar *text, int image_format, gchar *image, int dimx, int dimy, int relief, GCallback handler, gpointer data)
create a simple button
Definition gtk-misc.c:1955
GtkWidget * dialog_get_content_area(GtkWidget *widg)
prepare GtkWidget to insert content in a GtkDialog window
Definition gtk-misc.c:835
GtkWidget * markup_label(gchar *text, int dimx, int dimy, float ax, float ay)
create a GtkLabel with pango markup
Definition gtk-misc.c:1646
project * opengl_project
Definition project.c:54
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.
Definition gtk-misc.c:308
ColRGBA get_button_color(GtkColorChooser *colob)
get the ColRGBA color from a GtkColorChooser button
Definition gtk-misc.c:2371
void widget_set_sensitive(GtkWidget *widg, gboolean sensitive)
Set sensitivity for a GtkWidget, ensuring it is a GtkWidget.
Definition gtk-misc.c:215
GtkWidget * create_hbox(int spacing)
create a GtkBox with horizontal orientation
Definition gtk-misc.c:823
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
Definition gtk-misc.c:2237
GtkWidget * create_layout(int x, int y)
create a GtkLayout / GtkFixed widget
Definition gtk-misc.c:890
GtkWidget * destroy_this_widget(GtkWidget *widg)
destroy a GtkWidget
Definition gtk-misc.c:2169
GtkWidget * color_button(ColRGBA col, gboolean alpha, int dimx, int dimy, GCallback handler, gpointer data)
create a color selection button
Definition gtk-misc.c:1789
gchar * prepare_for_title(gchar *init)
prepare a string for a window title, getting rid of all markup
Definition tools.c:71
void add_container_child(int type, GtkWidget *widg, GtkWidget *child)
Add a GtkWidget into another GtkWidget.
Definition gtk-misc.c:235
void hide_the_widgets(GtkWidget *widg)
hide GtkWidget
Definition gtk-misc.c:198
GtkWidget * create_vbox(int spacing)
create a GtkBox with vertical orientation
Definition gtk-misc.c:811
int button_get_status(GtkWidget *button)
get status of check / toggle button
Definition gtk-misc.c:1855
#define FCLOSE
Definition global.h:213
void show_the_widgets(GtkWidget *widg)
show GtkWidget
Definition gtk-misc.c:182
project * get_project_by_id(int p)
get project pointer using id number
Definition project.c:120
void update(glwin *view)
update the rendering of the OpenGL window
Definition glview.c:450
Variable declarations related to the OpenGL window Function declarations related to the OpenGL wind...
void re_create_md_shaders(int nshaders, int shaders[nshaders], project *this_proj)
re-initialize some MD dependent OpenGL shaders
action
Definition glview.h:198
int check_label_numbers(project *this_proj, int types)
check how many atom label(s) are visible
Definition popup.c:1039
@ SPHERES
Definition glview.h:185
@ SPACEFILL
Definition glview.h:184
@ BALL_AND_STICK
Definition glview.h:182
@ CYLINDERS
Definition glview.h:186
@ WIREFRAME
Definition glview.h:183
@ PUNT
Definition glview.h:187
shaders
The different types of shaders in the atomes program.
Definition glwin.h:88
@ BONDS
Definition glwin.h:90
@ PICKS
Definition glwin.h:97
@ LABEL
Definition glwin.h:98
@ SELEC
Definition glwin.h:91
@ ATOMS
Definition glwin.h:89
Function declarations for the creation of the OpenGL window.
void show_warning(char *warning, GtkWidget *win)
show warning
Definition interface.c:260
Messaging function declarations.
Definition glwin.h:965
Definition global.h:106
int b
Definition tab-1.c:95
int c
Definition tab-1.c:95
int a
Definition tab-1.c:95
G_MODULE_EXPORT void atom_properties(GSimpleAction *action, GVariant *parameter, gpointer data)
atom(s) property callback GTK4
Definition w_atoms.c:571
GtkWidget * labels_tab(glwin *view, int id)
create atomic label(s) tab for the atom(s) / clone(s) window
Definition w_labels.c:624
gchar * label_atpts(project *this_proj, glwin *view, int id)
prepare the text of a menu item in the 'Model -> Atom(s)' submenu
Definition m_atoms.c:73
G_MODULE_EXPORT void set_atom_color(GtkColorChooser *colob, gpointer data)
set atom color callback
Definition w_atoms.c:229
GtkWidget * selection_tab(atom_search *asearch, int nats)
create the search widget
Definition w_search.c:4128
GtkWidget * advance_atom_notebook(glwin *view, int atom_or_clone)
create atom(s) advanced properties notebook
Definition w_atoms.c:507
void check_hidden_visible(project *this_proj)
check how many atom(s) are visible
Definition popup.c:868
G_MODULE_EXPORT void toggled_show_hide_atom(GtkToggleButton *but, gpointer data)
toggle show/hide atom(s) callback GTK3
Definition w_atoms.c:260
G_MODULE_EXPORT void update_atom_size(GtkEntry *res, gpointer data)
update atom radius callback
Definition w_atoms.c:76
atom_search * allocate_atom_search(int proj, int action, int searchid, int tsize)
allocate atom search data structure
Definition atom_edit.c:386
G_MODULE_EXPORT gboolean close_event_model(GtkWidget *widg, GdkEvent *event, gpointer data)
close event callback GTK3
Definition w_atoms.c:492
GtkTreeStore * atom_model
GtkWidget * advanced_atom_properties(int atom_or_clone, glwin *view)
create atom advanced properties window 'model_win'
Definition w_atoms.c:531
void atoms_input_win(GtkWidget *win, project *this_proj, int nspec, int aoc, double *val)
prepare atom radii entry list
Definition w_atoms.c:144
G_MODULE_EXPORT void toggled_show_hide_label(GtkToggleButton *but, gpointer data)
toggle show/hide label(s) callback GTK3
Definition w_atoms.c:310
G_MODULE_EXPORT void set_atom_parameter(GtkWidget *widg, gpointer data)
set atom parameter - creating the dialog
Definition w_atoms.c:193
G_MODULE_EXPORT void close_model(GtkButton *but, gpointer data)
free 'model_win' data
Definition w_atoms.c:461
GtkWidget * prop_tab(glwin *view, int aoc)
create atom(s)/clone(s) properties tab
Definition w_atoms.c:350
GtkWidget * res[2]
Definition w_encode.c:212
GtkWidget * hbox
Definition workspace.c:71
GtkWidget * img
Definition workspace.c:70
GtkWidget * vbox
Definition workspace.c:72
GtkWidget * lab
Definition workspace.c:73