96extern G_MODULE_EXPORT
void show_sg_info (GtkButton * but, gpointer data);
100extern int build_crystal (gboolean visible,
project * this_proj,
int c_step, gboolean to_wrap, gboolean show_clones,
cell_info * cell, GtkWidget * widg);
102gchar *
crystal_sytems[7] = {
"Triclinic",
"Monoclinic",
"Othorhombic",
"Tetragonal",
"Trigonal",
"Hexagonal",
"Cubic"};
104 {
"Primitive",
"Base-centered", NULL, NULL},
105 {
"Primitive",
"Base-centered",
"Body-centered",
"Face-centered"},
106 {
"Primitive",
"Body-centered", NULL, NULL},
107 {
"Hexagonal axes",
"Rhombohedral axes", NULL, NULL},
108 {
"Hexagonal", NULL, NULL, NULL},
109 {
"Primitive",
"Body-centered",
"Face-centered", NULL}};
111gchar *
latt_info[7]={
"<i>a</i> ≠ <i>b</i> ≠ <i>c</i>\nα ≠ β ≠ ɣ",
112 "<i>a</i> ≠ <i>b</i> ≠ <i>c</i>\nα = β = 90° ≠ ɣ\n\tor\nα = ɣ = 90° ≠ β",
113 "<i>a</i> ≠ <i>b</i> ≠ <i>c</i>\nα = β = ɣ = 90°",
114 "<i>a</i> = <i>b</i> ≠ <i>c</i>\nα = β = ɣ = 90°",
115 "<i>a</i> = <i>b</i> = <i>c</i>\nα = β = γ ≠ 90°",
116 "<i>a</i> = <i>b</i> ≠ <i>c</i>\nα = β = 90° and ɣ = 120°",
117 "<i>a</i> = <i>b</i> = <i>c</i>\nα = β = ɣ = 90°"};
118int nsg_bv[7]={2, 13, 59, 68, 25, 27, 36};
119int min_bv[7]={0, 2, 15, 74, 142, 167, 194};
148 if (
groups[spg-1][0] ==
'R')
182 if (
groups[spg-1][0] ==
'P')
193 if (
groups[spg-1][0] ==
'P')
197 else if (
groups[spg-1][0] ==
'I')
201 else if (
groups[spg-1][0] ==
'A' ||
groups[spg-1][0] ==
'C')
212 if (
groups[spg-1][0] ==
'P')
223 if (
groups[spg-1][0] ==
'R')
238 if (
groups[spg-1][0] ==
'P')
242 else if (
groups[spg-1][0] ==
'I')
273 return g_strdup_printf (
"%s", end);
308 gchar * str =
replace_markup (spg -> settings[
id].name,
"s",
"/");
311 if (spg -> settings[
id].origin)
313 str = g_strdup_printf (
"%s (%d)", str, spg -> settings[
id].origin);
328 GtkTreeStore * store;
330 store = gtk_tree_store_new (1, G_TYPE_STRING);
331 if (! spg)
return GTK_TREE_MODEL (store);
334 for (i=0; i<spg -> nums; i++)
336 gtk_tree_store_append (store, &iter, NULL);
337 gtk_tree_store_set (store, & iter, 0,
get_so_string (spg, i), -1);
342 gtk_tree_store_append (store, &iter, NULL);
343 gtk_tree_store_set (store, & iter, 0,
groups[spg ->
id-1], -1);
345 return GTK_TREE_MODEL (store);
359 GtkTreeStore * store;
363 store = gtk_tree_store_new (1, G_TYPE_STRING);
367 if (! bvid || csid == 5)
373 if (csid == 1 || csid == 3)
375 if ((bvid == 1 &&
groups[i][0] ==
'P') || (bvid == 2 &&
groups[i][0] !=
'P')) doit = TRUE;
379 if ((bvid == 1 &&
groups[i][0] ==
'P') || (bvid == 2 &&
groups[i][0] ==
'A') || (bvid == 2 &&
groups[i][0] ==
'C') ||
380 (bvid == 3 &&
groups[i][0] ==
'I') || (bvid == 4 &&
groups[i][0] ==
'F'))
387 if ((bvid == 1 &&
groups[i][0] ==
'P') || (bvid == 2 &&
groups[i][0] ==
'R')) doit = TRUE;
391 if ((bvid == 1 &&
groups[i][0] ==
'P') || (bvid == 2 &&
groups[i][0] ==
'I') || (bvid == 3 &&
groups[i][0] ==
'F'))
399 gtk_tree_store_append (store, &iter, NULL);
400 str = g_strdup_printf (
"%3d: %s", i+1,
groups[i]);
401 gtk_tree_store_set (store, & iter, 0, str, -1);
405 return GTK_TREE_MODEL (store);
417 gchar * lat[2]={
"<b><i>a</i></b>, <b><i>b</i></b>, <b><i>c</i></b>, α β ɣ",
"Vectors"};
419 store = gtk_tree_store_new (1, G_TYPE_STRING);
422 gtk_tree_store_append (store, &iter, NULL);
423 gtk_tree_store_set (store, & iter, 0, lat[i], -1);
425 return GTK_TREE_MODEL (store);
438 GtkTreeModel * cmodel = gtk_combo_box_get_model (
box);
443 if (gtk_combo_box_get_active_iter (
box, & iter))
445 gtk_tree_model_get_value (cmodel, & iter, 0, &
val);
446 str = g_strdup_printf (
"%s", (
char *)g_value_get_string (&
val));
449 num = g_strdup_printf (
"%c%c%c", str[0], str[1], str[2]);
468 j =
get_sg_num (GTK_COMBO_BOX(cbuilder -> sg_combo));
475 box -> vect[0][1] =
box -> vect[0][2] = 0.0;
476 box -> vect[2][0] =
box -> vect[2][1] = 0.0;
480 box -> vect[0][1] =
box -> vect[0][2] = 0.0;
481 box -> vect[1][0] =
box -> vect[1][2] = 0.0;
482 box -> vect[2][0] =
box -> vect[2][1] = 0.0;
490 if (cbuilder -> cell.sp_group -> name[0] ==
'R')
499 box -> vect[1][1] =
box -> vect[0][0];
500 box -> vect[0][1] =
box -> vect[0][2] = 0.0;
501 box -> vect[1][0] =
box -> vect[1][2] = 0.0;
507 box -> vect[0][1] =
box -> vect[0][2] = 0.0;
508 box -> vect[1][0] =
box -> vect[1][2] = 0.0;
513 box -> vect[1][1] =
box -> vect[2][2] =
box -> vect[0][0];
514 box -> vect[0][1] =
box -> vect[0][2] = 0.0;
515 box -> vect[1][0] =
box -> vect[1][2] = 0.0;
516 box -> vect[2][0] =
box -> vect[2][1] = 0.0;
521 if (cbuilder -> cell.ltype)
527 if (cbuilder -> ventry[i][j])
529 if (GTK_IS_WIDGET(cbuilder -> ventry[i][j]))
543 if (cbuilder -> bentry[i][j])
545 if (GTK_IS_WIDGET(cbuilder -> bentry[i][j]))
552 if (cbuilder -> bentry[0][1])
554 if (GTK_IS_WIDGET(cbuilder -> bentry[0][1]))
560 if (cbuilder -> bentry[0][2])
562 if (GTK_IS_WIDGET(cbuilder -> bentry[0][2]))
564 widget_set_sensitive (cbuilder -> bentry[0][2], (k > 5 || (k == 4 && cbuilder -> cell.sp_group -> name[0] ==
'R')) ? 0 : 1);
565 if (k > 5 || (k == 4 && cbuilder -> cell.sp_group -> name[0] ==
'R'))
update_entry_text (GTK_ENTRY(cbuilder -> bentry[0][2]),
"");
570 if (cbuilder -> bentry[1][i])
572 if (GTK_IS_WIDGET(cbuilder -> bentry[1][i]))
575 if (k == 4 && cbuilder -> cell.sp_group -> name[0] ==
'R')
640 GtkWidget * table = gtk_grid_new ();
645 for (j=0; j<3; j++, k++)
647 if (i < 2) cbuilder -> cell.box[0].param[i][j] = 0.0;
648 cbuilder -> cell.box[0].vect[i][j] = 0.0;
653 cbuilder -> cell.ltype = type;
654 if (cbuilder -> cell.ltype)
674 update_entry_double (GTK_ENTRY(cbuilder -> ventry[i-1][j-1]), cbuilder -> cell.box[0].vect[i-1][j-1]);
675 gtk_grid_attach (GTK_GRID (table), cbuilder -> ventry[i-1][j-1], j, i, 1, 1);
688 gtk_grid_attach (GTK_GRID (table),
markup_label(
" ", 20, -1, 0.5, 0.5), 0, i, 1, 1);
689 for (j=0; j<3; j++, k++)
691 gtk_grid_attach (GTK_GRID (table),
markup_label(
box_prop[i][j], -1, -1, 0.5, 0.5), j+1, i+2*i, 1, 1);
693 update_entry_double (GTK_ENTRY(cbuilder -> bentry[i][j]), cbuilder -> cell.box[0].param[i][j]);
694 gtk_grid_attach (GTK_GRID (table), cbuilder -> bentry[i][j], j+1, i+2*i+1, 1, 1);
717 add_box_child_start (GTK_ORIENTATION_VERTICAL, cbuilder -> lattice_box, cbuilder -> lattice_grid, FALSE, FALSE, 5);
729G_MODULE_EXPORT
void set_so (GtkComboBox *
box, gpointer data)
734 gchar * str = g_strdup_printf (
"(%s,%s,%s)", cbuilder -> cell.sp_group -> settings[i].pos[0],
735 cbuilder -> cell.sp_group -> settings[i].pos[1],
736 cbuilder -> cell.sp_group -> settings[i].pos[2]);
740 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> so_box, cbuilder -> so_info, FALSE, FALSE, 10);
742 cbuilder -> cell.sp_group -> sid = i;
756 gchar * str = g_strdup_printf (
"%s group info",
groups[sg]);
779 sgfile = g_strdup_printf (
"%s\\space_groups\\%d-%s.sgl",
PACKAGE_LIB_DIR, spg+1, sgfile);
781 sgfile = g_strdup_printf (
"%s/space_groups/%d-%s.sgl",
PACKAGE_LIB_DIR, spg+1, sgfile);
787 res = (cbuilder -> cell.sp_group) ? 1 : 0;
808 for (i=0; i<230; i++)
810 if (g_strcmp0(
groups[i], sg_name) == 0)
return i+1;
825 gtk_combo_box_set_model (GTK_COMBO_BOX(cbuilder -> so_combo),
model);
826 g_object_unref (
model);
830 if (cbuilder -> cell.sp_group)
get_origin (cbuilder -> cell.sp_group);
845 gtk_widget_set_size_request (cbuilder -> bv_img, 200, 200);
846 gtk_widget_set_hexpand (cbuilder -> bv_img, TRUE);
847 gtk_widget_set_vexpand (cbuilder -> bv_img, TRUE);
849 add_box_child_start (GTK_ORIENTATION_VERTICAL, cbuilder -> bv_box[1], cbuilder -> bv_img, FALSE, FALSE, 5);
861 if (cbuilder -> ltc_cons) cbuilder -> ltc_cons =
destroy_this_widget(cbuilder -> ltc_cons);
863 cbuilder -> ltc_cons =
markup_label(str, 150, -1, 0.0, 0.5);
865 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> ltc_box, cbuilder -> ltc_cons, FALSE, FALSE, 5);
876G_MODULE_EXPORT
void set_sg (GtkComboBox *
box, gpointer data)
886 cbuilder -> sg_but =
sg_info (i-1, data);
887 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> sg_box, cbuilder -> sg_but, FALSE, FALSE, 10);
897 show_error (
"Cannot read space group *.sgl file ?!\nPlease check the program library !", 0, cbuilder -> win);
914 gtk_combo_box_set_model (GTK_COMBO_BOX(cbuilder -> sg_combo),
model);
915 g_object_unref (
model);
929G_MODULE_EXPORT
void set_bl (GtkComboBox *
box, gpointer data)
955 i = (cs == 0 || cs == 5) ? 0 : 1;
958 g_signal_connect (G_OBJECT(
cbox),
"changed", G_CALLBACK(
set_bl), data);
959 gtk_widget_set_size_request (
cbox, 150, 25);
971G_MODULE_EXPORT
void set_cs (GtkComboBox *
box, gpointer data)
977 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> bl_box, cbuilder -> bl_combo, FALSE, FALSE, 0);
991G_MODULE_EXPORT
void set_wr (GtkCheckButton * but, gpointer data)
1001G_MODULE_EXPORT
void set_wr (GtkToggleButton * but, gpointer data)
1017G_MODULE_EXPORT
void set_shc (GtkCheckButton * but, gpointer data)
1027G_MODULE_EXPORT
void set_shc (GtkToggleButton * but, gpointer data)
1046 cbuilder -> cell.cextra[bid ->
b] = gtk_spin_button_get_value_as_int(
res);
1059 int id = GPOINTER_TO_INT(data);
1081 int id = GPOINTER_TO_INT(data);
1083 this_proj -> modelgl -> search_widg[7] =
free_this_search_data (this_proj -> modelgl -> search_widg[7]);
1098G_MODULE_EXPORT gboolean
delete_build (GtkWindow * widg, gpointer data)
1109G_MODULE_EXPORT gboolean
delete_build (GtkWidget * widg, GdkEvent * event, gpointer data)
1127G_MODULE_EXPORT
void toggle_occ (GtkCheckButton * but, gpointer data)
1137G_MODULE_EXPORT
void toggle_occ (GtkToggleButton * but, gpointer data)
1153G_MODULE_EXPORT
void toggle_overlap (GtkCheckButton * Button, gpointer data)
1196 GtkWidget * info =
dialogmodal (
"Occupancy set-up", GTK_WINDOW(cbuilder -> win));
1199 gchar * boccup[5] = {
"<b>Random for the initial cell only</b>",
1200 "<b>Random cell by cell</b>",
1201 "<b>Completely random</b>",
1202 "<b>Successively</b>",
1203 "<b>Alternatively</b>"};
1204 gchar * occup[5] = {
"<i>Sites are filled randomly in the initial cell only,\n"
1205 " then the initial cell is simply replicated.</i>",
1206 "<i>Sites are filled randomly for each cell, cell by cell separately.</i>",
1207 "<i>Sites are filled randomly for the entire network,\n"
1208 " the final crystal is considered as a whole.</i>",
1209 "<i>Sites are filled successively: all object(s) A, then all object(s) B ... </i>",
1210 "<i>Sites are filled alternatively: object A, object B, object A ...</i>"};
1212 GtkWidget * occ_but[5];
1217 occp[i].
a = this_proj -> id;
1224 gtk_check_button_set_group ((GtkCheckButton *)occ_but[i], (GtkCheckButton *)occ_but[0]);
1233 occ_but[i] = gtk_radio_button_new_from_widget (GTK_RADIO_BUTTON(occ_but[0]));
1237 if (i) g_signal_connect (G_OBJECT(occ_but[i]),
"toggled", G_CALLBACK(
toggle_occ), &
occp[i]);
1239 gtk_button_set_has_frame (GTK_BUTTON(occ_but[i]), FALSE);
1248 add_box_child_start (GTK_ORIENTATION_VERTICAL,
vbox,
check_button (
"<b>Allow overlapping</b>", -1, 25, cbuilder -> overlapping, G_CALLBACK(
toggle_overlap), (gpointer)cbuilder), FALSE, FALSE, 0);
1251 gchar * overlap =
"<i>Instead of ensuring that sites are filled by a single object,\n"
1252 "this allows object(s) to share the same crystalline position. \n"
1253 "The option above describes how filled and empty positions alternate.</i>\n";
1261 gtk_widget_set_size_request (rounding, -1, 30);
1264 g_signal_connect(G_OBJECT(rounding),
"changed", G_CALLBACK(
on_rounding_changed), & cbuilder);
1266 gchar * str = g_strdup_printf (
"\t<b>Lowest integer: </b>\n"
1267 "\t\t Occupancy %s\n\t\t\t ex:\t ⌊8.75⌋ = 8\n"
1268 "\t<b>Highest integer: </b>\n"
1269 "\t\t Occupancy %s\n\t\t\t ex:\t ⌈5.39⌉ = 6\n"
1270 "\t<b>Nearest integer: </b>\n"
1271 "\t\t Occupancy %s\n\t\t\t ex:\t ⌊6.82⌉ = 7\t\t and\t ⌊4.31⌉ = 4\n"
1291 gchar * str = (! this_proj -> natomes) ? g_strdup_printf (
"Crystal builder - %s", this_proj -> name) : g_strdup_printf (
"Crystal builder");
1293 GtkWidget * win =
create_win (str, this_proj -> modelgl -> win, FALSE, FALSE);
1303 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> bh_box, cbuilder -> bv_box[i], FALSE, FALSE, 0);
1314 gtk_widget_set_size_request (cbuilder -> cs_combo, 150, 25);
1316 g_signal_connect (G_OBJECT(cbuilder -> cs_combo),
"changed", G_CALLBACK(
set_cs), (gpointer)cbuilder);
1320 add_box_child_start (GTK_ORIENTATION_VERTICAL, cbuilder -> bv_box[0], cbuilder -> bl_box, FALSE, FALSE, 0);
1323 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> bl_box, cbuilder -> bl_combo, FALSE, FALSE, 0);
1328 cbuilder -> ltc_cons =
markup_label(str, 150, -1, 0.0, 0.5);
1330 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> ltc_box, cbuilder -> ltc_cons, FALSE, FALSE, 5);
1331 add_box_child_start (GTK_ORIENTATION_VERTICAL, cbuilder -> bv_box[0], cbuilder -> ltc_box, FALSE, FALSE, 5);
1341 cbuilder -> sg_combo = gtk_combo_box_new_with_model (
model);
1342 g_object_unref (
model);
1343 GtkCellRenderer * renderer = gtk_cell_renderer_combo_new ();
1344 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cbuilder -> sg_combo), renderer, TRUE);
1345 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbuilder -> sg_combo), renderer,
"text", 0, NULL);
1346 g_signal_connect (G_OBJECT(cbuilder -> sg_combo),
"changed", G_CALLBACK(
set_sg), data);
1347 gtk_widget_set_size_request (cbuilder -> sg_combo, 150, 25);
1348 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> sg_box, cbuilder -> sg_combo, FALSE, FALSE, 0);
1356 cbuilder -> so_combo = gtk_combo_box_new_with_model (
model);
1357 g_object_unref (
model);
1358 renderer = gtk_cell_renderer_combo_new ();
1359 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cbuilder -> so_combo), renderer, TRUE);
1360 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbuilder -> so_combo), renderer,
"text", 0, NULL);
1361 gtk_widget_set_size_request (cbuilder -> so_combo, 150, 25);
1362 add_box_child_start (GTK_ORIENTATION_HORIZONTAL, cbuilder -> so_box, cbuilder -> so_combo, FALSE, FALSE, 0);
1365 g_signal_connect (G_OBJECT(cbuilder -> so_combo),
"changed", G_CALLBACK(
set_so), data);
1370 cbuilder -> cell.cextra[i] = 1;
1373 cbuilder -> pointers[i][j].a = this_proj -> id;
1374 cbuilder -> pointers[i][j].b = i;
1375 cbuilder -> pointers[i][j].c = j;
1378 if (cbuilder -> cell.sp_group)
get_origin (cbuilder -> cell.sp_group);
1385 cbuilder -> la_combo = gtk_combo_box_new_with_model (lmodel);
1386 g_object_unref (lmodel);
1387 renderer = gtk_cell_renderer_combo_new ();
1388 gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cbuilder -> la_combo), renderer, TRUE);
1389 gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbuilder -> la_combo), renderer,
"text", 0, NULL);
1390 gtk_widget_set_size_request (cbuilder -> la_combo, 150, 25);
1391 g_signal_connect (G_OBJECT(cbuilder -> la_combo),
"changed", G_CALLBACK(
set_lattice), data);
1404 GtkWidget * ax_cell[3];
1407 ax_cell[i] =
spin_button (G_CALLBACK(
add_cryst_cell), cbuilder -> cell.cextra[i], 1, 1000, 1, 0, 100, & cbuilder -> pointers[i][0]);
1408 str = g_strdup_printf (
"%s x ",
box_prop[0][i]);
1414 add_box_child_start (GTK_ORIENTATION_VERTICAL,
vbox,
check_button (
" Wrap all atoms in the unit cell after building", -1, -1, FALSE, G_CALLBACK(
set_wr), (gpointer)cbuilder), FALSE, FALSE, 10);
1415 add_box_child_start (GTK_ORIENTATION_VERTICAL,
vbox,
check_button (
" Show/hide clones after building", -1, -1, FALSE, G_CALLBACK(
set_shc), (gpointer)cbuilder), FALSE, FALSE, 0);
1422 gtk_widget_set_size_request (cbuilder -> add_combo, 110, -1);
1424 add_box_child_start (GTK_ORIENTATION_HORIZONTAL,
hbox,
create_button (
"Occupancy",
IMG_STOCK,
DPROPERTIES, -1, -1, GTK_RELIEF_NORMAL, G_CALLBACK(
adjust_occupancy), this_proj), FALSE, FALSE, 5);
1431 cbuilder -> pbut =
create_button ((this_proj -> natomes) ?
"Build (new project)" :
"Build",
IMG_STOCK,
APPLY, -1, -1, GTK_RELIEF_NORMAL, G_CALLBACK(
apply_build), GINT_TO_POINTER(this_proj ->
id));
1456 this_proj -> modelgl ->
builder_win -> cell.box = g_malloc0(
sizeof*this_proj -> modelgl ->
builder_win -> cell.box);
1458 this_proj -> modelgl ->
builder_win -> rounding = 2;
1473G_MODULE_EXPORT
void crystal_window (GSimpleAction *
action, GVariant * parameter, gpointer data)
void prepare_atom_edition(gpointer data, gboolean visible)
prepare atom edition
atom_search * allocate_atom_search(int proj, int action, int searchid, int tsize)
allocate atom search data structure
GtkWidget * create_action_combo(int id, project *this_proj)
create action combo box
Binding to the Fortran90 subroutines.
gchar * substitute_string(gchar *init, gchar *o_motif, gchar *n_motif)
substitute all patterns in string
gboolean crystal_low_warning
int occupancy(double occ, int cif_occ)
handle occupancy integer rouding
gboolean crystal_dist_chk
void adjust_sg_combo(builder_edition *cbuilder, int cs, int bl)
adjust the space group combo box to use pango markup
void adjust_bv_img(builder_edition *cbuilder)
adjust the bravais lattice image
G_MODULE_EXPORT void toggle_overlap(GtkToggleButton *Button, gpointer data)
adjust overlapping toggle callback GTK3
G_MODULE_EXPORT void adjust_occupancy(GtkButton *but, gpointer data)
adjust occupancy create dialog callback
G_MODULE_EXPORT void toggle_occ(GtkToggleButton *but, gpointer data)
occupancy toggle callback GTK3
G_MODULE_EXPORT void set_wr(GtkToggleButton *but, gpointer data)
wrap or not atomic coordinates after crystal building toggle callback GTK3
G_MODULE_EXPORT void apply_build(GtkButton *but, gpointer data)
build crystall callback
G_MODULE_EXPORT void set_sg(GtkComboBox *box, gpointer data)
change space group
G_MODULE_EXPORT void show_sg_info(GtkButton *but, gpointer data)
G_MODULE_EXPORT void set_cs(GtkComboBox *box, gpointer data)
change the crystal system
G_MODULE_EXPORT void add_cryst_cell(GtkSpinButton *res, gpointer data)
add cell callback spin
GtkWidget * create_bl_combo(int cs, gpointer data)
create the bravais lattice combo box
G_MODULE_EXPORT void set_so(GtkComboBox *box, gpointer data)
set space group setting
GtkWidget * sg_info(int sg, gpointer data)
create the space group information button
void adjust_lattice_constraints(builder_edition *cbuilder)
adjust lattice constraints
GtkTreeModel * la_combo_tree()
create the lattice system combo box tree model
gchar * get_num_string(gchar *str)
get description string for entry string
gchar * frac_string(gchar *init)
get pango string for fraction string
int get_crystal_id(int spg)
get the bravais lattice id from space group id
G_MODULE_EXPORT void set_bl(GtkComboBox *box, gpointer data)
change bravais lattice
int build_crystal(gboolean visible, project *this_proj, int c_step, gboolean to_wrap, gboolean show_clones, cell_info *cell, GtkWidget *widg)
build crystal
int read_space_group(builder_edition *cbuilder, int spg)
read space group N°spg data from file
G_MODULE_EXPORT void set_shc(GtkToggleButton *but, gpointer data)
show / hide clones after crystal building toggle callback GTK3
G_MODULE_EXPORT void close_build(GtkButton *but, gpointer data)
close crystal builder and free associated data pointers
int get_bravais_img_id(int spg)
get bravais image from space group id
gchar * bravais_keys[7][4]
void get_origin(space_group *spg)
get space group origin matrices
void adjust_lattice_parameters(builder_edition *cbuilder)
adjust lattice parameters depending on space group
G_MODULE_EXPORT void update_cb_box(GtkEntry *entry, gpointer data)
update lattice box parameter callback
G_MODULE_EXPORT void set_lattice(GtkComboBox *box, gpointer data)
change the lattice system
G_MODULE_EXPORT void crystal_window(GtkWidget *widg, gpointer data)
create the crystal build window callback GTK3
G_MODULE_EXPORT gboolean delete_build(GtkWidget *widg, GdkEvent *event, gpointer data)
crystal builder delete event callback GTK3
int get_group_id_from_name(gchar *sg_name)
get space group id from name
G_MODULE_EXPORT void update_cb_vect(GtkEntry *entry, gpointer data)
update lattice vector callback
int get_sg_num(GtkComboBox *box)
get space group number from active iter in tree model of combo box
void prepare_crystal_builder(gpointer data)
create the crystal builder
int test_lattice(builder_edition *cbuilder, cell_info *cif_cell)
test lattice parameters
GtkTreeModel * sg_combo_tree(int csid, int bvid)
create the space group combo box tree model
GtkWidget * builder_win(project *this_proj, gpointer data)
create crystal builder window
GtkWidget * prepare_lattice_grid(int type, builder_edition *cbuilder, glwin *glview)
prepare the lattice parameters grid widget
GtkTreeModel * so_combo_tree(space_group *spg)
create the space group setting combo box tree model
gchar * get_so_string(space_group *spg, int id)
get space group setting descrption string
G_MODULE_EXPORT void on_rounding_changed(GtkComboBox *box, gpointer data)
changed rounding method for occupancy
void adjust_so_combo(builder_edition *cbuilder)
adjust the space group setting combo box to use pango markup
gchar * crystal_sytems[7]
Function declarations for the crystal builder.
GtkWidget * create_atoms_tree(atom_search *asearch, project *this_proj, int na)
create atom search tree view
gchar * replace_markup(char *init, char *key, char *rep)
replace pattern in string
space_group * read_sg_xml_file(const char *filetoread)
read space group data from XML file
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_scroll(GtkWidget *box, int dimx, int dimy, int shadow)
create a scroll window
GtkWidget * dialogmodal(gchar *str, GtkWindow *parent)
Create a new dialog modal window.
GtkWidget * create_win(gchar *str, GtkWidget *parent, gboolean modal, gboolean resiz)
create a new GtkWindow
void combo_set_markup(GtkWidget *combo)
use pango markup in combo widget
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 add_gtk_close_event(GtkWidget *widg, GCallback handler, gpointer data)
add a close event signal and callback to a GtkWidget
void button_set_status(GtkWidget *button, int status)
set status of check / toggle button
GtkWidget * radio_button(gchar *text, int dimx, int dimy, gboolean state, GCallback handler, gpointer data)
create a radio button
GtkWidget * spin_button(GCallback handler, double value, double start, double end, double step, int digits, int dim, gpointer data)
create a spin 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
GtkWidget * cbox(GtkWidget *box, char *lab)
box creating routine, to help design faster elements for the GUI
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_box_child_end(GtkWidget *widg, GtkWidget *child, gboolean expand, gboolean fill, int padding)
Add a GtkWidget in a GtkBox at the end position.
void update_entry_text(GtkEntry *entry, gchar *text)
update the content of a GtkEntry as string
void add_container_child(int type, GtkWidget *widg, GtkWidget *child)
Add a GtkWidget into another 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
project * get_project_by_id(int p)
get project pointer using id number
Variable declarations related to the OpenGL window Function declarations related to the OpenGL wind...
atom_search * free_this_search_data(atom_search *this_search)
free atom search data structure
void show_error(char *error, int val, GtkWidget *win)
show error message
gchar * cif_occupancies[3]
Messaging function declarations.
integer(kind=c_int) function lattice(totl, lid, vectors, vmod, angles, lat, cfrac, apbc)
Function declarations for reading atomes project file Function declarations for saving atomes proje...
Functions declaration to read atomic coordinates.
Function declarations for workspace managment.