59G_MODULE_EXPORT
void box_advanced (GtkWidget * widg, gpointer data);
61extern G_MODULE_EXPORT
void window_bonds (GSimpleAction *
action, GVariant * parameter, gpointer data);
63extern G_MODULE_EXPORT
void window_bonds (GtkWidget * widg, gpointer data);
78G_MODULE_EXPORT
void to_box_advanced (GSimpleAction *
action, GVariant * parameter, gpointer data)
96 if (view -> box_win -> show_hide && GTK_IS_WIDGET(view -> box_win -> show_hide))
103 if (view -> axis_win)
105 if (view -> axis_win -> show_hide && GTK_IS_WIDGET(view -> axis_win -> show_hide))
131 k = (
n) ? view -> anim -> last ->
img -> xyz ->
axis : view -> anim -> last ->
img ->
abc ->
box;
136 if (k != j && gtk_check_menu_item_get_active ((GtkCheckMenuItem *)widg))
140 view -> anim -> last ->
img -> xyz ->
axis =
NONE - 1;
146 gtk_check_menu_item_set_active ((GtkCheckMenuItem *)view -> ogl_box_axis[n][l], FALSE);
149 if (widg != view -> ogl_box_axis[n][(k ==
NONE) ? 1 : m])
151 gtk_check_menu_item_set_active ((GtkCheckMenuItem *)view -> ogl_box_axis[n][(k ==
NONE) ? 1 : m], TRUE);
164 else if (k == j && ! gtk_check_menu_item_get_active ((GtkCheckMenuItem *)widg))
166 gtk_check_menu_item_set_active ((GtkCheckMenuItem *)view -> ogl_box_axis[n][(k ==
NONE) ? 1 : m], TRUE);
172 gtk_check_menu_item_set_active ((GtkCheckMenuItem *)view -> ogl_box_axis[n][i], FALSE);
177 for (i=6;
i<dim[
n];
i++)
181 if (widg != view -> ogl_box_axis[n][0]) gtk_check_menu_item_set_active ((GtkCheckMenuItem *)view -> ogl_box_axis[n][0], FALSE);
204 if (view -> box_win ->
styles && GTK_IS_WIDGET(view -> box_win ->
styles))
211 if (view -> axis_win)
213 if (view -> axis_win ->
styles && GTK_IS_WIDGET(view -> axis_win ->
styles))
221 view -> create_shaders[
n+
MDBOX] = TRUE;
236GtkWidget * create_box_axis_menu (
char * name,
int val,
int box, GtkWidget * menu,
tint * data)
239 FALSE, 0, 0, TRUE, (data ->
b != 0) ? TRUE : FALSE, (
box ==
val &&
val !=
NONE) ? TRUE : FALSE);
259GtkWidget * create_color_widget (GtkWidget * widg,
glwin * view,
int va)
261 GtkWidget * color_widget =
color_box(view, -1, 0, 0);
262 gtk_menu_item_set_submenu ((GtkMenuItem *)widg, color_widget);
283 gtk_menu_shell_append ((GtkMenuShell *)menu,
layout);
301 gchar * menu_title[2]={
"Box",
"Axis"};
303 GtkWidget * menu_ab = gtk_menu_new ();
304 if (
id == 0 && ab == 0)
307 gtk_menu_item_set_submenu ((GtkMenuItem *)view -> ogl_box[0], menu_ab);
313 gtk_menu_item_set_submenu ((GtkMenuItem *)ab_menu, menu_ab);
318 int i = (
ab) ? view -> anim -> last ->
img -> xyz ->
axis : view -> anim -> last ->
img ->
abc ->
box;
321 view -> ogl_box_axis[
ab][0] = create_box_axis_menu (
"Show/_Hide", i, i, menu_ab, & view ->
colorp[0][ab]);
325 widg = create_box_axis_menu (
"Show/Hide", i, i, menu_ab, & view ->
colorp[0][ab]);
328 gtk_menu_shell_append ((GtkMenuShell *)menu_ab, widg);
329 GtkWidget * menus = gtk_menu_new ();
330 gtk_menu_item_set_submenu ((GtkMenuItem *)widg, menus);
332 str = g_strdup_printf (
"Width [ %f pts ]", (ab) ? view -> anim -> last ->
img -> xyz -> line : view -> anim -> last ->
img -> abc -> line);
333 int box_axis = (
ab) ? view -> anim -> last ->
img -> xyz ->
axis : view -> anim -> last ->
img ->
abc ->
box;
336 view -> ogl_box_axis[
ab][1] = create_box_axis_menu (
text_styles[1], i, 1, menus, & view ->
colorp[1][ab]);
337 view -> ogl_box_axis[
ab][2] = create_box_axis_menu (
text_styles[4], i, 4, menus, & view ->
colorp[4][ab]);
339 gtk_menu_shell_append ((GtkMenuShell *)menu_ab, view -> ogl_box_axis[ab][3]);
340 menul = gtk_menu_new ();
341 gtk_menu_item_set_submenu ((GtkMenuItem *)view -> ogl_box_axis[ab][3], menul);
351 gtk_menu_shell_append ((GtkMenuShell *)menu_ab, widg);
352 menul = gtk_menu_new ();
353 gtk_menu_item_set_submenu ((GtkMenuItem *)widg, menul);
359 str = g_strdup_printf (
"Radius [ %f Å ]", (ab) ? view -> anim -> last ->
img -> xyz -> rad : view -> anim -> last ->
img -> abc -> rad);
363 gtk_menu_shell_append ((GtkMenuShell *)menu_ab, view -> ogl_box_axis[ab][5]);
364 menul = gtk_menu_new ();
365 gtk_menu_item_set_submenu ((GtkMenuItem *)view -> ogl_box_axis[ab][5], menul);
371 gtk_menu_shell_append ((GtkMenuShell *)menu_ab, widg);
372 menul = gtk_menu_new ();
373 gtk_menu_item_set_submenu ((GtkMenuItem *)widg, menul);
381 gtk_menu_shell_append ((GtkMenuShell *)menu_ab, widg);
384 view -> ogl_box_axis[
ab][7] = create_color_widget (widg, view, i);
388 widg = create_color_widget (widg, view, i);
397 if (
id == 0 && ab == 0)
399 return view -> ogl_box[0];
420 const gchar * name = g_action_get_name ((GAction *)
action);
421 int lgt = strlen (name);
422 gchar * str = g_strdup_printf (
"%c%c", name[lgt-2], name[lgt-1]);
423 if (g_strcmp0(str,
".1") == 0)
426 str = g_strdup_printf (
"%.*s.0.0", lgt-4, name);
427 g_action_group_activate_action ((GActionGroup *)view -> action_group, (
const gchar *)str, NULL);
434 state = g_action_get_state (G_ACTION (
action));
435 show = ! g_variant_get_boolean (state);
438 switch (the_data ->
c)
450 switch (the_data ->
c)
453 view -> anim -> last ->
img -> abc ->
box =
NONE;
460 view -> create_shaders[the_data ->
c+
MDBOX] = TRUE;
461 update_menu_bar (view);
463 g_action_change_state (G_ACTION (
action), g_variant_new_boolean (show));
464 g_variant_unref (state);
484 const gchar * style = g_variant_get_string (parameter, NULL);
485 int lgt = strlen (style);
486 gchar * name = g_strdup_printf (
"%c%c", style[lgt-2], style[lgt-1]);
487 if (g_strcmp0(name,
".1") == 0)
489 name = g_strdup_printf (
"%.*s.0", lgt-2, style);
490 gchar * str = g_strdup_printf (
"set-%s-style", (i) ?
"axis" :
"box");
491 g_action_group_activate_action ((GActionGroup *)view -> action_group, (
const gchar *)str, g_variant_new_string((
const gchar *)name));
497 gchar * style_name = NULL;
498 gchar * str = g_strdup_printf (
"set-%s-style", (i) ?
"axis" :
"box");
501 style_name = g_strdup_printf (
"%s.%d.0", str, j);
502 if (g_strcmp0(style, (
const gchar *)style_name) == 0)
512 view -> create_shaders[i+
MDBOX] = TRUE;
514 update_menu_bar (view);
523 g_action_change_state (G_ACTION (
action), parameter);
539 GMenu * menu = g_menu_new ();
540 gchar * str = g_strdup_printf (
"%s-style", (ab) ?
"axis" :
"box");
541 append_opengl_item (view, menu,
text_styles[1], str, popm, 0, NULL,
IMG_NONE, NULL, FALSE,
543 TRUE, (abs !=
NONE) ? TRUE : FALSE);
545 str = g_strdup_printf (
"%s-style", (ab) ?
"axis" :
"box");
546 append_opengl_item (view, menu,
text_styles[4], str, popm, 1, NULL,
IMG_NONE, NULL, FALSE,
548 TRUE, (abs !=
NONE) ? TRUE : FALSE);
568 str = g_strdup_printf (
"Width [ %f pts ]", (ab) ? view -> anim -> last ->
img -> xyz -> line : view -> anim -> last ->
img -> abc -> line);
569 key = g_strdup_printf (
"%s-width", (ab) ?
"axis" :
"box");
573 str = g_strdup_printf (
"Radius [ %f Å ]", (ab) ? view -> anim -> last ->
img -> xyz -> rad : view -> anim -> last ->
img -> abc -> rad);
574 key = g_strdup_printf (
"%s-radius", (ab) ?
"axis" :
"box");
578 str = g_strdup_printf (
" length [ %f Å ]", view -> anim -> last ->
img -> xyz -> length);
579 key = g_strdup_printf (
"axis-legnth");
581 GMenu * menu = g_menu_new ();
582 append_opengl_item (view, menu, str, key, popm, ab, NULL,
IMG_NONE, NULL, FALSE,
600 GMenuItem * ab_item = g_menu_item_new ((ab) ?
"Axis" :
"Box", (ab) ? NULL : (
get_project_by_id(view ->
proj) -> cell.ltype) ? NULL :
"None");
601 int i = (ab) ? view -> anim -> last ->
img -> xyz ->
axis : view -> anim -> last ->
img -> abc ->
box;
602 GMenu * menu = g_menu_new ();
603 append_opengl_item (view, menu,
"Show/Hide", (ab) ?
"show-axis" :
"show-box", popm, popm, NULL,
IMG_NONE, NULL, FALSE,
610 item = g_menu_item_new (
"Lines", NULL);
611 g_menu_item_set_attribute (item,
"custom",
"s", (ab) ?
"axis-lines" :
"box-lines", NULL);
613 g_menu_append_item (menu, item);
617 item = g_menu_item_new (
"Cylinders", NULL);
618 g_menu_item_set_attribute (item,
"custom",
"s", (ab) ?
"axis-cylinders" :
"box-cylinders", NULL);
620 g_menu_append_item (menu, item);
625 GMenu * menuc = g_menu_new ();
626 append_opengl_item (view, menuc,
"box-color",
"box-color", popm, popm, NULL,
IMG_NONE, NULL, TRUE, NULL, NULL, FALSE, FALSE, FALSE, FALSE);
627 append_opengl_item (view, menuc,
"More colors ...",
"box-color", popm, popm, NULL,
IMG_NONE, NULL, FALSE,
630 g_object_unref (menuc);
631 append_opengl_item (view, menu,
"Advanced",
"box-advanced", popm, popm, NULL,
IMG_STOCK,
DPROPERTIES, FALSE,
632 G_CALLBACK(to_box_advanced), (gpointer)view, FALSE, FALSE, FALSE, TRUE);
638 g_menu_item_set_submenu (ab_item, (GMenuModel *)menu);
GtkWidget * color_box(glwin *view, int ideo, int spec, int geo)
create the color palette pointers and menus GTK3 version
Structure definitions for color management Function declarations for color management.
G_MODULE_EXPORT void to_run_box_color_window(GtkWidget *widg, gpointer data)
to run box color selection window callback GTK3
Global variable declarations Global convenience function declarations Global data structure defin...
GtkWidget * gtk3_menu_item(GtkWidget *menu, gchar *name, int icon_format, gpointer item_icon, GCallback handler, gpointer data, gboolean accel, guint key, GdkModifierType mod, gboolean check, gboolean radio, gboolean status)
void combo_set_active(GtkWidget *combo, int pos)
set the active item's position
void append_submenu(GMenu *menu, const gchar *label, GMenu *submenu)
append a GMenuItem with a subenu to a GMenu, and use markup for the GMenuItem
void button_set_status(GtkWidget *button, int status)
set status of check / toggle button
GtkWidget * add_advanced_item(GtkWidget *menu, GCallback handler, gpointer data, gboolean accel, guint key, GdkModifierType mod)
void widget_set_sensitive(GtkWidget *widg, gboolean sensitive)
Set sensitivity for a GtkWidget, ensuring it is a GtkWidget.
GtkWidget * create_menu_item(gboolean add_mnemo, gchar *action)
void hide_the_widgets(GtkWidget *widg)
hide GtkWidget
void show_the_widgets(GtkWidget *widg)
show GtkWidget
project * get_project_by_id(int p)
get project pointer using id number
void update(glwin *view)
update the rendering of the OpenGL window
Variable declarations related to the OpenGL window Function declarations related to the OpenGL wind...
struct box box
box layout data structure
char * text_styles[OGL_STYLES]
G_MODULE_EXPORT void set_box_axis_style(GtkWidget *widg, gpointer data)
Function declarations for the creation of the OpenGL window.
void append_opengl_item(glwin *view, GMenu *menu, const gchar *name, gchar *key, int mpop, int item_id, gchar *accel, int image_format, gpointer icon, gboolean custom, GCallback handler, gpointer data, gboolean check, gboolean status, gboolean radio, gboolean sensitive)
GtkWidget * create_layout_widget(gchar *str, GtkWidget *menu, int vab, gpointer data)
void menu_axis(GMenu *menu_ab, glwin *view, int popm)
create the 'Axis' submenu GTK4
gboolean from_box_or_axis
G_MODULE_EXPORT void change_box_axis_radio(GSimpleAction *action, GVariant *parameter, gpointer data)
handle a box/axis radio menu item signal GTK4
GMenuItem * menu_box_axis(glwin *view, int popm, int ab)
create the 'Model -> Box' and 'View -> Axis' submenus GTK4
void update_show_hide_box_axis(glwin *view, int box_or_axis, int status)
update edition buttons with menu show / hide status
G_MODULE_EXPORT void window_bonds(GtkWidget *widg, gpointer data)
create bond(s) configuration window(s) callback GTK3
GMenu * axis_box_style(glwin *view, int popm, int ab, int abs)
create the box/axis '-> Style' submenu GTK4
G_MODULE_EXPORT void box_advanced(GtkWidget *widg, gpointer data)
create the box edition window
GMenu * axis_box_param(glwin *view, int popm, int ab, int style)
create the box/axis '-> Length/Width/Radius' submenus GTK4
G_MODULE_EXPORT void show_hide_box_axis(GSimpleAction *action, GVariant *parameter, gpointer data)
handle the 'box/axis' show/hide signal GTK4